• 体验极速——在旭日X3派上使用双频1300M USB无线网卡


    上一篇博客《在旭日X3派开发板上使用USB Wifi来提高网络速度》提供一种低成本¥20的USB Wifi解决方案。这个模块的传输速度在10M/s以内,尽管满足正常的开发需求,但在项目应用时,特别是涉及到wifi图传,带宽就不够了。此外,该模块仅支持2.4gwifi,因此在室外场景下就不适用了。

    为了满足高速室内外的场景需求,调研了一些网卡,最后终于寻到一款能在X3开发板上使用的wifi模块【标准款 1300M】,驱动可以在X3上成功编译使用。
    在这里插入图片描述
    先放结论,路由器wifi频率为270Mbps/S,连接的是5gWiFi,Mbps/8是我们理解的传输速度M/s。

    • 从x3拖文件到本地:传输速率约为9M/s,CPU总占用在20-25%之间。
    • 从本地拖文件到X3:传输速率约为23M/s,CPU总占用在40-50%之间。

    网速传输速度受到多种因素的影响,比如路由器wifi频率收发端网卡性能文件IO读写性能等。如果上述速度仍然不满足,可以考虑从上述三点进行升级。

    本博客所需的文件已经放在百度云(提取码:vp3w,如果失效我会把新连接放在评论区)中,各位可以从这里进行下载使用。

    这次编译驱动遇到系统版本不一致问题,导致编译好的ko文件无法直接拷贝到其他设备上使用,这里做一些说明

    • 本博客会提供两个系统版本的编译教程以及编译文件,系统版本如下图绿色框内的文件。
      • 上一份Wifi驱动编译教程《在旭日X3派开发板上使用USB Wifi来提高网络速度》基于20220623的系统版本编译的,而且可以直接拿到20220819系统版本使用,但并不适合20221104的版本,编译好的ko文件无法直接拿过来使用,且编译流程也发生了变化。
      • 该驱动8818eu在20221104的编译流程在相关博客的置顶评论区。
    • 如果你的系统版本属于红框内,请迅速重刷系统,很多功能已经无法使用,且不兼容新发布的一些功能包了。
    • 如果各位在未来的使用中,使用了新版本系统,且我这里提供的ko文件以及流程均无法直接使用,希望各位能写下相关的编译流程,并放在评论区中,我会给置顶。

    在这里插入图片描述
    该网卡基于的无线驱动型号为88x1eu,下面我给出ko文件的使用以及编译教程。

    一 使用编译好的kernel

    两个系统编译好的ko文件我都放在这里啦,各位可以直接去百度云下载,关于驱动使用方式:

    • 如果系统版本在20221104之前:驱动使用方式参考这个8188eu使用教程博客
    • 如果系统版本在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模块已经亮起来啦,输入ifconfig可以看到网卡信息。

    连接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
    
    • 1
    • 2
    • 3
    • 4

    测试了下文件上传下载速度,5gwifi真的很快哦→_→。
    在这里插入图片描述

    二 源码编译驱动

    由于不同系统版本编译方式不同,最近三个系统版本三种编译方式,版本20220623编译的ko文件可以拿到20220819上直接使用,但是无法拿到20221104版本上使用。三种系统编译流程如下:

    • 系统版本20220623:编译方式参考8188eu使用教程博客
    • 系统版本20220819:编译流程参考本教程2.2部分。
    • 系统版本20221104:编译流程参考本教程2.3部分。

    2.1 代码准备

    请下载百度云中提供的两个文件:RTL8812BU.tar.gzMakefile,并将这两个文件放在x3的某个文件夹下,比如我这里是放在/home/sunrise/tools下,进入这个目录,执行以下指令:

    # 解压代码
    tar -zxvf RTL8812BU.tar.gz
    # 替换Makefile文件
    cp -f Makefile RTL8812BU_for_Raspbian/
    cd RTL8812BU_for_Raspbian
    
    • 1
    • 2
    • 3
    • 4
    • 5

    RTL8812BU.tar.gz可以通过git clone https://github.com/fastoe/RTL8812BU_for_Raspbian下载,防止后续更新无法使用,我就把当前能用的代码打包了。

    Makefile中添加了针对X3的配置编译选项,所以要替换掉原始的Makefile文件,添加的部分如下所示,感兴趣可以看一下。
    在这里插入图片描述

    ## 在114行处,平台支持部分
    ###################### Platform Related #######################
    CONFIG_PLATFORM_ARM_NV_NANO = n 
    CONFIG_PLATFORM_I386_PC = n
    CONFIG_PLATFORM_ARM_RPI = n
    CONFIG_PLATFORM_ARM_SUNRISEX3 = y  # 增加X3的编译选项,记得这里要保证只有一个y
    CONFIG_PLATFORM_ANDROID_X86 = n
    CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
    
    ## 在1244处,补充了如下代码
    ifeq ($(CONFIG_PLATFORM_ARM_SUNRISEX3), y)
    EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
    EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
    ARCH := arm64   # 主要修改地方
    KVER := $(shell uname -r)
    KSRC := /usr/src/linux-headers-$(KVER) # 主要修改地方
    MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
    INSTALL_PREFIX :=
    STAGINGMODDIR := /lib/modules/$(KVER)/kernel/drivers/staging
    endif
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2.2 驱动编译 [系统版本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 # 安装一些依赖库
    
    • 1
    • 2
    • 3
    • 4

    进入代码文件夹cd RTL8812BU,输入make -j4开始编译代码(如果编译时候内存不够了,记得改为-j2或者不加),代码编译完之后会在当前文件夹下生成88x2bu.ko,利用指令拷贝到系统驱动目录下sudo cp 88x2bu.ko /lib/modules/4.14.87/

    之后按照上文“一 使用编译好的kernel”注册启动驱动即可。

    2.3 驱动编译 [系统版本20221104]

    该版本驱动的编译过程非常感谢用户俄武器trews提供的流程。

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

    使用su sunrise切换回用户账号,并按照“2.1 代码准备”的方式准备好代码文件,进入文件夹RTL8812BU_for_Raspbian,输入make -j4开始编译代码(如果编译时候内存不够了,记得改为-j2或者不加),代码编译完之后会在当前文件夹下生成88x2bu.ko,利用指令拷贝到系统驱动目录下sudo cp 88x2bu.ko /lib/modules/4.14.87/

    之后按照上文“一 使用编译好的kernel”注册启动驱动即可。

    三 小结

    目前对于Wifi这个问题,从当前的测试结果下来看,我觉得速度方面已经完全足够我使用了,针对Wifi问题我应该后续不会再出新的了。

    1300M理论上最高可以达到80M/S的,如果速度不够可以考虑升级路由器等硬件。

    在实际项目应用中,是否能够稳定图传、数传等,还需要进一步验证。但如果这个wifi还存在不稳定的问题的话,大概率就要从非wifi的硬件上去找找原因了。

    PS:麻烦大佬们在升级系统的时候考虑下兼容性,系统变动特别大的话,会导致我之前的一些博客直接无效,无法给其他用户作为参考,秋梨膏!!!

  • 相关阅读:
    golang报错fatal error: all goroutines are asleep - deadlock
    Python和RPA之间的区别和联系
    MySQL数据库设计需要注意的点
    【若依vue框架学习】7.权限控制/文件上传下载
    双十一攒幸运值领红包,2022年天猫双11预售活动解读
    Spring Cloud 网关的配置示例
    Docker常见命令介绍
    HTB-Sense
    【TcaplusDB知识库】Tmonitor单机安装指引介绍(二)
    辅助知识-第2 章 项目合同管理
  • 原文地址:https://blog.csdn.net/Zhaoxi_Li/article/details/127975137