发表于2023-06-02 16:01:41
0 查看
下面介绍从内核编译WiFi驱动的步骤,从而使能小藤的WiFi功能。
准备一个 x86 Ubuntu 22.04 的系统,以及一款基于USB或M.2接口的WiFi外设。
下载并解压内核源码包:
下载地址:https://www.hiascend.com/zh/hardware/firmware-drivers/community?product=1&model=23&cann=6.2.RC1.alpha001&driver=1.0.19.alpha
下载Ascend-hdk-310b-sdk-soc_23.0.rc1.1.zip,解压后获得工具链安装包toolchain.tar.gz、源码包Ascend310B-source tar.gz、制卡脚本工具包sdtool.tar.gz
解压Ascend310B-source tar.gz
tar -xzvf Ascend310B-source.tar.gz
找到WIFI外设的芯片型号,这里以型号为RTL8192CU的USB WIFI为例,介绍驱动的编译方法。
切换到Ascend310B-source目录,执行内核编译
编译过程中会弹出内核配置主界面,如下所示

配置无线网络依赖。在内核配置主界面,依次选择“Networking support” -> "Wireless",按照如下配置进行勾选。 
配置具体的设备驱动。返回内核配置主界面,依次选择“Device Drivers” -> "Network device support" -> "Wireless LAN",在这里可以看到不同设备的厂家,比如Intel、Cisco、Realtek等,在我们这个示例中,WiFi厂家是Realtek,芯片型号为RTL8192CU,于是可以按照如下配置进行勾选。

保存配置,执行内核编译。在配置界面的下方选择“Save”,之后退出配置界面即可,脚本会继续执行内核编译。
找到ko驱动的正确插入顺序。编译完成后,我们可以在Ascend310B-source/output/kernel_modules看到很多ko格式的驱动文件。
a. 找到无线网络依赖的ko,分别是cfg80211.ko和mac80211.ko,这两个是配置WiFi功能必须要装的驱动。
b. 找到RTL8192CU相关驱动的插入顺序。执行以下命令,可以看到内核配置主界面。
接着在键盘按下“/”,可以看到搜索界面,输入芯片型号8192CU,如下所示: 
我们可以看到如下搜索结果,最后一行即标明了依赖驱动的正确插入顺序,这个要记下来。

随后我们在Ascend310B-source/output/kernel_modules目录下寻找依赖的驱动文件,可以用grep命令进行过滤,比如要找名称带有rtl的ko,可以执行如下命令:
通过以上步骤找到rtl8192CU依赖三个驱动,rtlwifi.ko, rtl_usb.ko, rtl8192c-common.ko,最后,还要找名称为rtl8192cu.ko的文件,这个驱动需要最后插入,即前面的驱动都是它的依赖驱动。
把所有驱动的插入命令写成脚本,方便一次性执行。新建一个文件,比如insert_rtl8192cu.sh,写入如下内容:
执行命令chmod +x insert_rtl8192cu.sh,为脚本加上可执行权限,接着执行以下命令:
执行命令dmesg | tail查看日志,显示如下内容,说明WiFi驱动已加载成功。
(可选) 有些WiFi模块可能还依赖额外的固件,这里以M.2.的8822ce为例,完成以上步骤以后,dmesg会显示如下内容:
这里说明还依赖两个路径下的bin格式的固件:rtw88/rtw8822c_fw.bin和rtw88/rtw8822c_wow_fw.bin。我们可以从这个链接获取对应固件。根据dmesg的回显提示,找到并下载rtw88目录下的两个文件rtw88/rtw8822c_fw.bin和rtw88/rtw8822c_wow_fw.bin。执行以下命令,将固件放在指定目录。
配置好固件后,需要重启系统才能生效。重启系统后,ko要重新插入。
验证WiFi设备是否已加载。执行nmcli device,若回显中含有TYPE为wifi的的设备,且显示disconnected,说明WiFi设备已成功加载。
nmcli的常用命令。
网络连通测试。在小藤的终端执行以下命令,测试网络是否已打通。
本帖最后由 匿名用户 于 2025/04/01 16:57:06 编辑
下面介绍从内核编译WiFi驱动的步骤,从而使能小藤的WiFi功能。
准备一个 x86 Ubuntu 22.04 的系统,以及一款基于USB或M.2接口的WiFi外设。
下载并解压内核源码包:
下载地址:https://www.hiascend.com/zh/hardware/firmware-drivers/community?product=1&model=23&cann=6.2.RC1.alpha001&driver=1.0.19.alpha
下载
Ascend-hdk-310b-sdk-soc_23.0.rc1.1.zip,解压后获得工具链安装包toolchain.tar.gz、源码包Ascend310B-source tar.gz、制卡脚本工具包sdtool.tar.gz解压Ascend310B-source tar.gz
tar -xzvf Ascend310B-source.tar.gz找到WIFI外设的芯片型号,这里以型号为RTL8192CU的USB WIFI为例,介绍驱动的编译方法。
切换到
Ascend310B-source目录,执行内核编译编译过程中会弹出内核配置主界面,如下所示
配置无线网络依赖。在内核配置主界面,依次选择“Networking support” -> "Wireless",按照如下配置进行勾选。
配置具体的设备驱动。返回内核配置主界面,依次选择“Device Drivers” -> "Network device support" -> "Wireless LAN",在这里可以看到不同设备的厂家,比如Intel、Cisco、Realtek等,在我们这个示例中,WiFi厂家是Realtek,芯片型号为RTL8192CU,于是可以按照如下配置进行勾选。

保存配置,执行内核编译。在配置界面的下方选择“Save”,之后退出配置界面即可,脚本会继续执行内核编译。
找到ko驱动的正确插入顺序。编译完成后,我们可以在
Ascend310B-source/output/kernel_modules看到很多ko格式的驱动文件。a. 找到无线网络依赖的ko,分别是cfg80211.ko和mac80211.ko,这两个是配置WiFi功能必须要装的驱动。
b. 找到RTL8192CU相关驱动的插入顺序。执行以下命令,可以看到内核配置主界面。
接着在键盘按下“/”,可以看到搜索界面,输入芯片型号8192CU,如下所示:

我们可以看到如下搜索结果,最后一行即标明了依赖驱动的正确插入顺序,这个要记下来。
随后我们在
Ascend310B-source/output/kernel_modules目录下寻找依赖的驱动文件,可以用grep命令进行过滤,比如要找名称带有rtl的ko,可以执行如下命令:通过以上步骤找到rtl8192CU依赖三个驱动,rtlwifi.ko, rtl_usb.ko, rtl8192c-common.ko,最后,还要找名称为rtl8192cu.ko的文件,这个驱动需要最后插入,即前面的驱动都是它的依赖驱动。
把所有驱动的插入命令写成脚本,方便一次性执行。新建一个文件,比如insert_rtl8192cu.sh,写入如下内容:
执行命令
chmod +x insert_rtl8192cu.sh,为脚本加上可执行权限,接着执行以下命令:执行命令
dmesg | tail查看日志,显示如下内容,说明WiFi驱动已加载成功。(可选) 有些WiFi模块可能还依赖额外的固件,这里以M.2.的8822ce为例,完成以上步骤以后,dmesg会显示如下内容:
这里说明还依赖两个路径下的bin格式的固件:
rtw88/rtw8822c_fw.bin和rtw88/rtw8822c_wow_fw.bin。我们可以从这个链接获取对应固件。根据dmesg的回显提示,找到并下载rtw88目录下的两个文件rtw88/rtw8822c_fw.bin和rtw88/rtw8822c_wow_fw.bin。执行以下命令,将固件放在指定目录。配置好固件后,需要重启系统才能生效。重启系统后,ko要重新插入。
验证WiFi设备是否已加载。执行
nmcli device,若回显中含有TYPE为wifi的的设备,且显示disconnected,说明WiFi设备已成功加载。nmcli的常用命令。
网络连通测试。在小藤的终端执行以下命令,测试网络是否已打通。