在旭日X3派开发板上使用USB Wifi来提高网络速度

对于我来说,开发板自带的wifi模块速度不是很满意,下载或者传文件啥的最多也就2M/s。而且,在之前测评博客[首发] 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 插电!开机!轻松秒杀!的串口转wifi测试中,发现了wifi延迟高的问题。

后续我要学习ROS,对网络要求还是蛮高的,所以我就在寻找能用在Linux上的USB Wifi模块。花了一些功夫,终于给各位寻找了一个低成本的方案(20块钱)。在开发板编译驱动,启动驱动后wifi即可点亮使用!!!-

相关文件已经放在百度云(提取码:vp3w)中了,各位可以直接下载使用。

一 使用编译好的kernel

1.1 驱动激活

开机之后,我们可以输入sudo nmcli dev wifi来查看当前环境的Wifi信息的。把USB Wifi模块插上开发板之后,输入lsusb看到系统识别到了这个设备,但由于目前还没有安装驱动,所以wifi的灯是不会亮的。-

下载百度云中的8188eu.ko文件,拷贝到用户目录,即/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。原因就是这个驱动没有签名。签名所需文件我放在百度云里了,文件名为x3pi_sign_ko.tar.gz,将文件放进开发板里之后,输入如下指令。

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就会发现没有error了,Wifi的灯也亮起来了。再次输入sudo nmcli dev wifi可以发现,Wifi的数目变多了,信号也更强了。

1.2 连接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

下图是利用上述指令连接和关闭wifi的示意图。-

1.3 速度测试

利用wget -c ftp://vrftp.horizon.ai/Open_Explorer/eval_dataset/cifar-10.tar.gz下载文件,来测试不同wifi的下载速度。很明显,新买的USB WiFi模块更快喔,o( ̄▽ ̄)ブ。-

1.4 永久启动

现在我们能激活驱动了,但每次重启开机都要手动激活,很麻烦。

永久启动的办法也很简单,输入sudo vim /etc/modules,如下所示,在空白行添加8188eu,保存退出,完毕!!-

这样模块就永久启用了,无论是重启还是开机都会自动激活该模块。是不是非常的简单。

二 源码编译驱动

从百度云中下载源码包RTL8188EUS_linux_v5.3.9_28540.20180806.zip,按照如下指令解压,并给安装脚本赋予执行权限。

unzip RTL8188EUS_linux_v5.3.9_28540.20180806.zip
cd RTL8188EUS_linux_v5.3.9_28540.20180806/
chmod +x install.sh

2.1 环境准备

在编译驱动前,请先安装所需的依赖工具。

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

为什么要安装这几个,我跟各位说明一下:

  1. sudo apt-get install bc:如果不安装这个,编译内核时候就会显示如下错误:/bin/sh: 1: bc: not found

  2. sudo apt-get install linux-headers-4.14.87:编译内核文件需要一些头文件相关的支持,4.14.87这个可以使用uname -r查看,安装前请确认版本。如果不安装这个会出现如下错误

    make ARCH=aarch64 CROSS_COMPILE= -C /lib/modules/4.14.87/build M=/home/sunrise/tools/RTL8188EUS_linux_v5.3.9_28540.20180806/driver/rtl8188EUS_linux_v5.3.9_28540.20180627 modules make[1]: *** /lib/modules/4.14.87/build: No such file or directory. Stop.

  3. sudo ln -s /usr/src/linux-headers-4.14.87/arch/arm64 /usr/src/linux-headers-4.14.87/arch/aarch64:为什么要创建这个软连接呢,输入uname -m,查看系统架构,返回的是aarch64,但安装linux-headers-4.14.87时,各种框架的编译工具放在/usr/src/linux-headers-4.14.87/arch/里面,值得注意的是,aarch64和arm64是等价的,因此利用软连接创建aarch64的编译工具。如果不这么整的话,就会出现如下错误。

    make ARCH=aarch64 CROSS_COMPILE= -C /lib/modules/4.14.87/build M=/home/sunrise/tools/RTL8188EUS_linux_v5.3.9_28540.20180806/driver/rtl8188EUS_linux_v5.3.9_28540.20180627 modules make[1]: Entering directory '/usr/src/linux-headers-4.14.87’ Makefile:646: arch/aarch64/Makefile: No such file or directory

PPT有展示wifi信息的图片

# 创建文件夹
mkdir tools
cd tools
# 把RTL8188EUS_linux_v5.3.9_28540.20180806文件拷贝到当前文件夹
unzip RTL8188EUS_linux_v5.3.9_28540.20180806.zip
cd RTL8188EUS_linux_v5.3.9_28540.20180806/
chmod +x install.sh
sudo -i
/home/sunrise/tools/RTL8188EUS_linux_v5.3.9_28540.20180806
./install

2.2 编译驱动

进入目标文件夹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"

结束后,驱动将会被放在/lib/modules/4.14.87/kernel/drivers/net/wireless/文件夹下,将其拷贝到/lib/modules/。-
之后,与上一节介绍的一样,请按需完成驱动激活连接Wifi永久启动的工作。-

在这里插入图片描述

这样我们就完成了源码的编译工作。

三 小结

利用不到20块钱的Wifi模块,填了板子的一个小坑。为了写这个教程,我特意买了个16g的内存卡疯狂刷机来恢复原始问题,以方便各位愉快的使用更快速的wifi模块。当然,有几点也要注意一下:

  • wifi模块对应的驱动是8188eu,wifi产品名叫CF-WU810N,也有官方提供对应的驱动文件,CF-WU810N驱动下载地址。如果有更高速度需求的话,可以先去查一下有没有驱动可用。
  • 我_只测了Wifi接收,没测热点_,我其实觉得如果有热点需求,不如买个好点路由器。目前我还是没发现哪些应用一定需要由嵌入式来创建热点的。

本文同步发在https://blog.csdn.net/Zhaoxi_Li/article/details/126694507 欢迎各位多多三联哦o(* ̄▽ ̄*)ブ

1 个赞

非常感谢玺哥,此教程对安装其他USB驱动也有很大帮助。受益匪浅。???

实际测试与结论不符

玺哥这份中秋礼物太强了?-

玺哥 你为什么这么帅???

需要分类,近距离测试,usb和wifi相差不大

远距离5m以上,usb远远没wifi自带的信号效果好

15m左右,x3端wifi测试效果

15m左右,usbwifi测试效果

感谢你的测试,后续我买新板子也发现这个问题了。速度确实差异不大,有时候usb wifi信号反而弱于x3。-
有机会的话,希望能测一下稳定性,特别是大量数据的时候。检查下传输稳定性。