• 在旭日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
    
    • 1
    • 2
    • 3

    然后,在输入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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    下图是利用上述指令连接和关闭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
    
    • 1
    • 2
    • 3

    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
    • 2
    • 3
    • 4
    • 5

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

    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.
    
    • 1
    • 2
    1. 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
    
    • 1
    • 2
    • 3

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结束后,驱动将会被放在/lib/modules/4.14.87/kernel/drivers/net/wireless/文件夹下,将其拷贝到/lib/modules/
    之后,与上一节介绍的一样,请按需完成驱动激活连接Wifi永久启动的工作。
    在这里插入图片描述
    这样我们就完成了源码的编译工作。

    三 小结

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

    • wifi模块对应的驱动是8188eu,wifi产品名叫CF-WU810N,也有官方提供对应的驱动文件,CF-WU810N驱动下载地址。如果有更高速度需求的话,可以先去查一下有没有驱动可用。
    • 只测了Wifi接收,没测热点,我其实觉得如果有热点需求,不如买个好点路由器。目前我还是没发现哪些应用一定需要由嵌入式来创建热点的。
  • 相关阅读:
    【PHP】文件操作
    基于springboot乐器视频学习网站设计与实现(源码齐全可用)
    猿创征文|【云原生之Docker】使用Docker部署Flare个人导航网页
    系统韧性研究(1)| 何谓「系统韧性」?
    SLAM从入门到精通(代码调试)
    为什么要学MySQL数据库,它有什么用?
    QUuid
    算法篇 滑动窗口 leetcode 长度最小的子数组
    阿里云交互式建模(PAI-DSW)训练并微调推理ChatGLM模型
    PostgreSQL 如果想知道表中某个条件查询条件在索引中效率 ?
  • 原文地址:https://blog.csdn.net/Zhaoxi_Li/article/details/126694507