[rk3588]多种wifi模组兼容

硬件部分

M.2接口:
[rk3588]多种wifi模组兼容_第1张图片
[rk3588]多种wifi模组兼容_第2张图片
使用的wifi模组是PCIE接口的RTL8852BE和SDIO接口的AP6256

软件部分

M.2接口介绍

M.2接口是一种用于连接各种扩展设备的接口标准。它最初设计用于连接固态硬盘(SSD),但也广泛用于连接其他设备,如无线网卡、蓝牙模块、GPS模块和其他可选功能模块。
M.2接口的一些特点和特点:
小型化设计:M.2接口采用小型化设计,相比传统的扩展接口(如PCIe插槽和SATA插槽)更为紧凑。它的尺寸和形状可以根据设备的需求进行调整,因此有不同的长度和键位配置。
高速传输:M.2接口支持多种高速传输协议,包括PCI Express(PCIe)和SATA。这使得M.2接口能够提供高速数据传输,适用于要求高带宽和低延迟的设备,如SSD和高性能无线网卡。
多功能性:M.2接口支持多种功能模块,包括无线网卡、蓝牙模块、GPS模块、NFC模块等。这使得用户可以根据需要选择适当的模块来满足特定的应用需求,并在需要时进行灵活更换和升级。
多种键位配置:M.2接口有多种键位配置,包括B键、M键和B+M键。这些键位配置决定了M.2插槽所支持的协议和功能。不同的键位配置兼容不同类型的模块,因此需要根据具体设备的要求来选择正确的键位配置。

wifi模组调试

wifi模组调试功能需要wifi驱动以及wifi固件,以正基模块ap6256为例。

wifi驱动可以向厂家提供驱动包,或者直接使用RK的SDK下kernel\drivers\net\wireless\rockchip_wlan\rkwifi\bcmdhd下的驱动。

Wi-Fi firmware文件:根据实际使用系统的需求存放,通常是/system/etc/firmware/下
fw_bcm43456c5_ag.bin
nvram_ap6256.txt

配置

检查内核Wi-Fi配置,打开如下几个配置:
CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
CONFIG_BCMDHD=y
CONFIG_AP6XXX=m
CONFIG_BCMDHD_PCIE=y #PCIE接口,与SDIO互斥,不是PCIE可不配
CONFIG_BCMDHD_SDIO=y #SDIO接口,与PCIE互斥

Wi-Fi接口初始化

make 编译完会生成ko,这个文件根据你们实际需求存放到对应位置,打开Wi-Fi加载这个ko即可;

drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.ko

打开Wi-Fi

需先加载ko,并在insmod时参数指定firmware/nvram的路径,下面xx_path改成实际使用的:

insmod /ko_path/bcmdhd.ko firmware_path=/fw_path/
nvram_path=/nvram_path/ ifconfig -a #正常的话可以看到wlan0

自动加载WIFI驱动

要在系统启动时自动加载适当的WIFIbt驱动和固件,可以通过编写一个启动脚本并将其添加到系统的启动过程中。

判断模组

系统首先判断你插入的是什么接口的wifi模组,比如M.2接口上接了芯片ap6256,通过SDIO接口连接到主机设备,要查看SDIO设备的信息,可以尝试使用以下命令:

ls /sys/bus/sdio/devices

如果接了SDIO接口模组会有如下打印:

mmc2:0001:1  mmc2:0001:2  mmc2:0001:3

如果接的是PCIE接口的rtl8852模组,可以使用以下命令:

lspci

会有一下打印:

0002:20:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device
3588 (rev 01) 0002:21:00.0 Network controller: Realtek Semiconductor
Co., Ltd. Device b852 0004:40:00.0 PCI bridge: Fuzhou Rockchip
Electronics Co., Ltd Device 3588 (rev 01) 0004:41:00.0 Ethernet
controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller
(rev 05)

启动脚本

创建一个启动脚本,例如wifi_setup.sh,并将其保存在适当的位置,比如/usr/local/bin/目录下

#!/bin/bash

# 获取M.2接口的设备ID
device_id=$(lspci -d 10ec:b852 | awk '{print $1}')

# 根据设备ID判断模组类型并加载相应的驱动
case "$device_id" in
    "21:00.0")
        modprobe rtkm
        modprobe 8852be
        ;;
    *)
        echo "Unknown WiFi module"
        ;;
esac

保存并退出脚本文件后,使用以下命令添加执行权限:

chmod +x /usr/local/bin/wifi_setup.sh

添加脚本到启动过程中,可以通过编辑/etc/rc.local文件实现:

sudo vi /etc/rc.local

在文件的exit 0行之前添加以下内容:

/usr/local/bin/wifi_setup.sh

保存并退出文件。
确保/etc/rc.local文件也具有执行权限:

sudo chmod +x /etc/rc.local

重新启动系统。
上述脚本只是一个示例,你还可以添加逻辑如果执行ls /sys/bus/sdio/devices找到了mmc这个字符就执行对应的加载wifi驱动的命令。

你可能感兴趣的:(网络,linux,运维)