Atlas200l DK A2 使用AX210无线网卡连上WIFI

1. 环境信息

内核版本一致的情况下,可以直接用我们编译好的驱动模块。若使用别的版本的内核,也可以参考 4. 开发过程,自己手动编译驱动模块

镜像:Ubuntu 22.04

CANN版本:6.2.RC2.alpha001

内核版本(uname -r查看):5.10.0

2. 安装思路

  1. 开发板可以正常识别到AX210的网卡

# 任意终端调用
lspci
# 显示如下信息
04:00.0 Network controller: Intel Corporation Wi-Fi 6 AX210/AX211/AX411 160MHz (rev 1a)
  1. 只需要给AX210打上合适的驱动:iwlwifi,就能使用wifi了

  2. 打驱动:就是 iwlwif 驱动模块(.ko文件)插入到内核中,需要用到 iwlwifi.koiwldvm.ko 与 iwlmvm.ko。另外需要装载与内核版本对应的Ax210无线网卡固件(iwlwifi-ty-a0-gf-a0-59.ucode等),使内核能够识别无线网卡驱动。

  3. 要注意:cfg80211.ko mac80211.ko 会与当前的 iwlwifi 驱动模块不适配,需要重装。附上两模块的介绍:

    cfg80211.ko : 用于对无线设备进行配置管理。

    mac80211.ko : 是驱动开发者为无线设备写驱动的框架 。

3. 安装驱动

如果内核版本(5.10.0)一致,可以直接使用我们编译好的内核模块.ko文件。

a.卸载旧模块以及USB网卡驱动

进入内核模块根目录,我的是/lib/modules/5.10.0+

cd /lib/modules/$(uname -r) 

卸载模块 mac80211.kocfg80211.ko以及USB网卡驱动(最好以root身份运行)

sudo rmmod rtl8192cu
sudo rmmod rtl8192c_common
sudo rmmod rtl_usb
sudo rmmod rtlwifi
sudo rmmod mac80211
sudo rmmod cfg80211

如果遇到报错类似: ERROR: Module mac80211 is in use by: rtl_usb rtl8192cu rtlwifi

意思是该内核模块被后面的模块使用,所以要先卸载后面的模块,命令是一样的 sudo rmmod 内核模块名称

把RTL8192CU (USB网卡驱动)模块文件删除,(防止开机自启动时自动导入,影响Ax210驱动模块的启动)另外,也可以把它们移动到回收站

sudo rm rtl8192cu.ko
sudo rm rtl8192c_common.ko
sudo rm rtl_usb.ko
sudo rm rtlwifi.ko
sudo rm mac80211.ko
sudo rm cfg80211.ko

b. 上传驱动文件到开发板

百度云下载需要用到的cfg80211.komac80211.koiwlwifi.koiwldvm.koiwlmvm.ko模块文件以及相关的.ucode文件

链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1M7UYh7Prq5EWDG-QRf4FvQ?pwd=416j

把 文件夹:“ko文件” 内的所有.ko 文件上传到/lib/modules/5.10.0+

把 文件夹:“UCODE文件” 内的所有.ucode 文件上传到 /lib/firmware 中

c. 安装内核模块

(在目录/lib/modules/5.10.0+下)

安装顺序是 cfg80211.komac80211.koiwlwifi.koiwldvm.koiwlmvm.ko

sudo insmod cfg80211.ko
sudo insmod mac80211.ko
sudo insmod iwlwifi.ko
sudo insmod iwldvm.ko
sudo insmod iwlmvm.ko 

 用modprobe命令手动将所有模块加载进内核,实现开机自启(root身份运行)

sudo depmod -a  # 更新内核模块的依赖
modprobe cfg80211
modprobe iwlwifi
modprobe iwldvm
modprobe iwlmvm

重启开发板

sudo reboot

现在开发板内屏幕左上角点开 wifi 图标,可以启用 wifi 了

4. 开发过程

这里会详细介绍上面 iwlwifi 驱动所使用的.ko文件是如何获得的,可以类比到别的驱动模块的安装,比如 USB 无线网卡驱动 rtl8192cu

a. 问题背景

由于镜像的内核是官方通过交叉编译手动编译出来的,所以缺少了内核头文件, 因此无法在线安装驱动,也无法下载驱动源码用make编译安装。同时,内核头文件也无法连网安装。所以,我们只能下载官方的内核源码包,把整个内核编译一次。由于官方内核源码包中包含了很多驱动(iwlwifi 的驱动也有),我们仅需设定好对应的配置,编译后,可以在生成的内核模块中找到我们需要的.ko文件。

b.参考教程

下面教程是编译 rtl8192cu 的 USB 无线网卡的教程,我在此基础上调整配置,实现编译 iwlwifi Ax210 驱动

https://www.hiascend.com/forum/thread-0260121075301055016-1-1.html

注意:

  1. 要分清开发环境,我们对开发版的内核是使用交叉编译的,也就是编译内核、获得模块.ko文件的过程都是在电脑中实现(amd架构的ubuntu 双系统 or 虚拟机中,同时,电脑ubuntu系统的版本也没太大要求,18.04、22.04都可以)。安装.ko模块文件在开发版中实现(参考:3. 安装驱动)

  2. 编译内核需要安装相关支撑库(电脑中),(运行 bash build.sh kernel时,根据报错中提示,缺什么包装什么包)

    apt-get install bison
    apt-get install flex
    sudo apt-get install libssl-dev
  3. 编译内核的图形化配置界面中,Save时千万不能改名,保持名字为 .config。内核编译仅使用 .config 里的配置,若改了别的名字,内核仍然按照初始的 .config 编译,问题呈现为:为什么设定了驱动,但编译后没出现对应的.ko文件

配置调整:

1. 生成 mac80211.kocfg80211.ko(这点和教程的一样)

Networking support --> Wireless -> 选择对应的模块(键盘按M或者空格, 上下左右键控制选项)

2. 生成 iwlwifi.koiwldvm.ko与 iwlmvm.ko的配置

Device Drivers --> Network device support --> Wireless LAN --> 选择生成对应的模块

3. 连续按Esc退出配置界面,耐心等待编译完成

4. 生成的 .ko 文件位于 Ascend310B-source/output/kernel_modules/ 

c. 拓展使用

官方源码包的目录中,我们调用 bash build.sh kernel 来编译内核,这个 build.sh 文件中集成了诸多命令,可以单独取出使用。

注意:内核文件开发目录位于:Ascend310B-source/kernel/kernel/kernel/out/linux-4.19(虽然目录写4.19,实际版本还是5.10.0的)

优化:只需编译一次内核, 后续增加驱动,仅仅会编译 .config 新加进来的驱动文件。(下面是第二次编译的流程, 需要位于内核文件开发目录)

支持用户自定义内核配置选项,交互式弹出菜单选项

make ARCH=arm64 CROSS_COMPILE=aarch64-target-linux-gnu- menuconfig

编译内核模块

make ARCH=arm64 CROSS_COMPILE=aarch64-target-linux-gnu- modules -j16

编译的 .ko  文件可能出现在 Ascend310B-source/kernel/kernel/kernel/out/linux-4.19/drivers 中,可以用locate定位

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值