地平线旭日®X3派(下文简称旭日X3派)作为一款用于机器人的板子,在应用中除了需要高性能BPU的支持,也需要周边硬件的支持。不同的应用对硬件的性能有不同的需求。如果旭日X3派要连接到带有热点的设备上的时候,就可以通过USB WiFi模块构建链接。
如何提升WiFi传输速度以满足不同场景下的开发需求?本次内容《平平无奇纵享丝滑,旭日X3派高速网络新体验》,地平线开发者社区2022年度开发者小玺玺将会帮助大家在旭日X3派编译WiFi驱动,以便开发者们家直接上手“盘”它,真正实现了即拿即用!相关问题欢迎大家注册加入地平线开发者社区交流讨论,配置文件及代码详见地平线开发者社区。
普通模块
运行编译kernel
驱动激活
输入sudo nmcli dev wifi查看当前环境的WiFi信息,将USB WiFi模块插上开发板之后,输入lsusb看到系统识别这个设备。但由于目前还没有安装驱动,所以WiFi的灯是不会亮的。
下载WiFi驱动库相关文件,拷贝到用户目录,即/home/sunrise/。输入指令sudo cp /home/sunrise/8188eu.ko /lib/modules/4.14.87/拷贝驱动文件,最终文件路径如下所示。紧接着输入sudo /sbin/depmod -a 4.14.87,值得注意的是4.14.87是通过指令uname -r得到,输入depmod指令前请注意一下。
正常输入sudo modprobe 8188eu是可以激活驱动的,但是在这个板子上,会出现如下错误:modprobe: ERROR: could not insert ‘8188eu’: Required key not available(原因就是这个驱动没有签名)。将签名所需文件放进开发板,输入指令如下:
tar -zxvf x3pi_sign_ko.tar.gz
cd x3pi_sign_ko/
sudo ./sign-file-arm64 sha512 ./hobot_fixed_signing_key.pem ./signing_key.x509 /lib/modules/4.14.87/8188eu.ko
随后输入sudo modprobe 8188eu,错误即可消失,WiFi的灯也亮起来了。再次输入sudo nmcli dev wifi可以发现,WiFi的数目变多了,信号也更强了。
连接WiFi
输入sudo nmcli dev,可以看到当前WiFi的连接情况,系统里识别到了两个WiFi模块,一个是wlan0,一个是wlxe0e1a993d822。以下指令,用于连接与断开WiFi。
#### 使用指定模块连接wifi,利用ifname来指定设备
# 连接到 wlan0
sudo nmcli dev wifi connect "wifi名" password "密码" ifname wlan0
# 连接到 wlxe0e1a993d822
sudo nmcli dev wifi connect "wifi名" password "密码" ifname wlxe0e1a993d822
# 关闭指定wifi
sudo nmcli dev dis wlan0
利用上述指令连接和关闭WiF。
速度测试
利用wget -c ftp://vrftp.horizon.ai/Open_Explorer/eval_dataset/cifar-10.tar.gz下载文件,来测试不同WiFi的下载速度。
永久启动
输入sudo vim /etc/modules,如下所示,在空白行添加8188eu,这样模块就永久启用了,无论是重启还是开机都会自动激活该模块。
源码编译驱动
下载源码包并按照如下指令解压,并给安装脚本赋予执行权限。
unzip RTL8188EUS_linux_v5.3.9_28540.20180806.zip
cd RTL8188EUS_linux_v5.3.9_28540.20180806/
chmod +x install.sh
环境准备
在编译驱动前,请先安装所需的依赖工具。
sudo apt-get install bc
# ※ 使用以下命令前,请先用命令uname -r 确认下是不是4.14.87
sudo apt-get install linux-headers-4.14.87
# ※使用以下命令前,先确认当前路径下是不是只有arm64没有aarch64
sudo ln -s /usr/src/linux-headers-4.14.87/arch/arm64 /usr/src/linux-headers-4.14.87/arch/aarch64
编译驱动
进入目标文件夹RTL8188EUS_linux_v5.3.9_28540.20180806/,直接执行./install.sh,经过一段时间的编译之后,会出现如下错误:
在出现上述问题之后,保证当前命令行在RTL8188EUS_linux_v5.3.9_28540.20180806/下,之后请按序输入以下指令。
# 与前面一样,注意4.14.87版本问题
mkdir -p /lib/modules/4.14.87/kernel/drivers/net/wireless/
# 进入驱动源码文件夹
cd driver/rtl8188EUS_linux_v5.3.9_28540.20180627
# 安装编译好的驱动
sudo su -c "make install"
后续,请按需完成驱动激活、连接WiFi、永久启动的工作。
高频模块
编译运行kernel
如果系统版本在20221104及之后,使用cd /lib/modules/4.14.87/进入文件夹,输入sudo hobot-sign-file 88x2bu.ko对ko文件进行签名,之后输入sudo /sbin/depmod -a 4.14.87以及sudo insmod 88x2bu.ko更新并加载驱动,这时候我们就能看到WiFi模块已经亮起来了(如果系统版本在20221104之前驱动使用方式参考上文)。
连接WiFi时候可以利用指令sudo nmcli dev wifi connect "wifi名" password "密码" ifname wlx200db0c5992c,其中wlx200db0c5992c就是网卡的设备名。
同样地,如果想永久启用,输入sudo vim /etc/modules,在里面添加88x2bu即可。
(启动驱动后wifi模块会亮灯)
如果在落地项目中只用USB WiFi模块,需要关闭板端WiFi来降低信号干扰的话可以,输入如下指令:
# 关闭板端wifi,板端wifi一般为wlan0,可以通过ifconfig查看
sudo nmcli dev dis wlan0
# 禁用板端wifi
ifconfig wlan0 down
源码编译驱动
由于不同系统版本编译方式不同,最近三个系统版本三种编译方式,版本20220623编译的ko文件可以拿到20220819上直接使用,但是无法拿到20221104版本上使用(系统版本20220623编译方式参见地平线开发者社区)。
代码准备
下载相关文件RTL8812BU.tar.gz和Makefile,将这两个文件放在旭日X3派的某个文件夹下并进入,执行以下指令:
# 解压代码
tar -zxvf RTL8812BU.tar.gz
# 替换Makefile文件
cp -f Makefile RTL8812BU_for_Raspbian/
cd RTL8812BU_for_Raspbian
RTL8812BU.tar.gz可以通过git clone https://github.com/fastoe/RTL...下载;
Makefile中添加了针对X3的配置编译选项,所以要替换掉原始的Makefile文件,添加的部分如下所示:
驱动编译
- 系统版本20220819
编译前先安装一些环境依赖库:
# 安装X3内核文件,之前的版本都是利用sudo apt-get install linux-headers-4.14.87安装
# 以后内核基本都是以hobot-linux-headers 为主了
sudo apt-get install hobot-linux-headers
sudo apt install -y dkms bc # 安装一些依赖库
进入代码文件夹cd RTL8812BU,输入make -j4开始编译代码(如果编译时候内存不够了,记得改为-j2或者不加),代码编译完之后会在当前文件夹下生成88x2bu.ko,利用指令拷贝到系统驱动目录下sudo cp 88x2bu.ko /lib/modules/4.14.87/。注册启动驱动即可。
- 系统版本20221104
编译前先安装一些环境依赖库:
sudo -i # 切换root账号
# 下面的操作是防止出现错误:/bin/sh:scripts/basic/fixdep:not found
cd /usr/src/linux-headers-4.14.87/
make scripts
sudo apt-get install dkms bc
使用su sunrise切换回用户账号,准备好代码文件后,进入文件夹RTL8812BU_for_Raspbian,输入make -j4开始编译代码(如果编译时候内存不够了,记得改为-j2或者不加),代码编译完之后会在当前文件夹下生成88x2bu.ko,利用指令拷贝到系统驱动目录下sudo cp 88x2bu.ko /lib/modules/4.14.87/。注册启动驱动即可。
本文转自地平线开发者社区
原作者:小玺玺
原链接:https://developer.horizon.ai/...