)
一、模组概述与接口分配根据移远FC96OK-E规格书该模组采用WiFi: USB 2.0接口RTL8822CU方案蓝牙: UART接口标准HCI over UART┌─────────────────────────────────────────────────────────────┐ │ RK3576 FC96OK-E 连接图 │ ├─────────────────────────────────────────────────────────────┤ │ RK3576 │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ USB 2.0 │◄────────────────►│ WiFi │ │ │ │ 控制器 │ USB数据线 │ (RTL8822CU) │ │ │ └──────────────┘ └──────────────┘ │ │ │ │ │ │ USB差分对(D/D-) │ │ ▼ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ UART4 │◄────────────────►│ 蓝牙 │ │ │ │ (GPIO复用) │ TX/RX/CTS/RTS │ (HCI) │ │ │ └──────────────┘ └──────────────┘ │ │ │ │ │ │ 电平转换(如需) │ │ ▼ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ 电源管理 │─────────────────►│ VBAT/WL_REG │ │ │ │ (PMIC) │ 3.3V供电 │ ON/BT_REG │ │ │ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘二、硬件连接表必须核对原理图FC96OK-E引脚功能RK3576连接电压注意事项VBAT_WLWiFi电源PMIC_VCC3V3_SYS3.3V至少500mA电流能力VBAT_BT蓝牙电源PMIC_VCC3V3_SYS3.3V可与WiFi共用WL_REG_ONWiFi使能GPIO3_A51.8V/3.3V高电平使能BT_REG_ON蓝牙使能GPIO3_A61.8V/3.3V高电平使能USB_DPWiFi USB数据USB0_DP-USB差分对需90Ω阻抗USB_DNWiFi USB数据-USB0_DN-同上UART_TXD蓝牙发送UART4_RX(GPIO2_B1)1.8V交叉连接(TX-RX)UART_RXD蓝牙接收UART4_TX(GPIO2_B2)1.8V交叉连接(RX-TX)UART_CTS蓝牙清除发送UART4_RTS(GPIO2_B3)1.8V流控必需UART_RTS蓝牙请求发送UART4_CTS(GPIO2_B4)1.8V流控必需WL_HOST_WAKEWiFi唤醒主机GPIO3_B01.8V可选省电用BT_HOST_WAKE蓝牙唤醒主机GPIO3_B11.8V可选省电用三、设备树配置3.1 USB WiFi部分RTL8822CU/** * file arch/arm64/boot/dts/rockchip/rk3576-fc96oke.dts * brief 移远FC96OK-E WiFi/蓝牙模组设备树配置 * * 基于RK3576 PDK参考设计 */ /** * USB控制器配置 * WiFi使用USB 2.0接口连接USB0控制器 * * 设计模式适配器模式 * - USB控制器提供通用接口 * - RTL8822CU驱动通过USB适配到此接口 */ usb_host0_ehci { status okay; /** * brief USB PHY配置 * 使用RK3576内置USB2.0 PHY * 无需外部PHY芯片 */ phys u2phy0_host; phy-names usb; /** * brief 电源控制 * 可选WiFi模组供电由PMIC控制 * 如果WL_REG_ON单独控制需添加 * vcc-supply vcc_wifi_reg; */ }; /** * USB 2.0 PHY配置 * RK3576集成USB2.0 PHY支持Host/OTG模式 */ u2phy0 { status okay; /** * brief USB Host端口 * 连接FC96OK-E的USB D/D- */ u2phy0_host: host-port { #phy-cells 0; status okay; }; }; /** * WiFi电源控制可选 * 如果WL_REG_ON由GPIO控制需添加regulator-fixed */ / { /** * brief WiFi电源稳压器 * 控制WL_REG_ON引脚 */ vcc_wifi: vcc-wifi-regulator { compatible regulator-fixed; regulator-name vcc_wifi; regulator-always-on; regulator-boot-on; regulator-min-microvolt 3300000; regulator-max-microvolt 3300000; /** * brief 使能GPIO * GPIO3_A5对应WL_REG_ON * 高电平使能WiFi模组 */ gpio gpio3 RK_PA5 GPIO_ACTIVE_HIGH; enable-active-high; pinctrl-names default; pinctrl-0 wifi_pwr_en; }; }; /** * GPIO配置组 */ pinctrl { /** * brief WiFi电源控制引脚 * 功能: GPIO输出控制模组电源 */ wifi_pwr: wifi-pwr { rockchip,pins 3 RK_PA5 RK_FUNC_GPIO pcfg_pull_none; }; /** * brief WiFi唤醒引脚 * 可选用于省电模式 */ wifi_wake: wifi-wake { rockchip,pins 3 RK_PB0 RK_FUNC_GPIO pcfg_pull_down; }; };3.2 蓝牙UART部分H4协议/** * file arch/arm64/boot/dts/rockchip/rk3576-fc96oke.dts * brief 蓝牙UART配置 * * 设计模式分层模式 * - UART硬件层物理传输 * - HCI层协议封装 * - 蓝牙核心层协议栈 */ /** * UART4控制器配置 * 连接FC96OK-E蓝牙UART接口 * * 性能分析 * - 波特率: 4Mbps (3.2.0-rc1支持4Mbps速率 ) * - 硬件流控: CTS/RTS必须启用 */ uart4 { status okay; /** * brief 引脚复用 * 使用UART4默认引脚组 */ pinctrl-names default; pinctrl-0 uart4m0_xfer uart4m0_ctsn uart4m0_rtsn; /** * brief 硬件流控 * 必须启用否则蓝牙丢包严重 */ uart-has-rtscts; /** * brief DMA支持 * 可选启用DMA可降低CPU占用 */ dmas dmac0 8, dmac0 9; dma-names tx, rx; /** * brief 蓝牙设备子节点 * 内核通过serdev框架将串口设备注册为蓝牙HCI接口 * * 设计模式观察者模式 * - 蓝牙核心监听串口数据 * - 收到HCI命令时转发到串口 */ bluetooth { /** * brief 兼容性 * brcm,bcm43438-bt: 通用Broadcom蓝牙H4协议 * realtek,rtl8822cs-bt: Realtek专用驱动可选 */ compatible brcm,bcm43438-bt, realtek,rtl8822cs-bt; /** * brief 控制引脚 * BT_REG_ON: 蓝牙电源使能 * BT_HOST_WAKE: 蓝牙唤醒主机 * BT_DEV_WAKE: 主机唤醒蓝牙 */ enable-gpios gpio3 RK_PA6 GPIO_ACTIVE_HIGH; host-wakeup-gpios gpio3 RK_PB1 GPIO_ACTIVE_HIGH; device-wakeup-gpios gpio3 RK_PB2 GPIO_ACTIVE_HIGH; /** * brief 最大波特率 * 支持4Mbps高速模式 */ max-speed 4000000; /** * brief 固件名称 * 存放位置: /lib/firmware/ */ firmware-name rtl8822cs/rtl8822cs_fw.bin; config-name rtl8822cs/rtl8822cs_config.bin; pinctrl-names default; pinctrl-0 bt_pwr_en bt_wake_host bt_wake_dev; }; }; /** * 蓝牙相关引脚配置 */ pinctrl { /** * brief 蓝牙电源使能 * GPIO3_A6 BT_REG_ON */ bt_pwr_en: bt-pwr-en { rockchip,pins 3 RK_PA6 RK_FUNC_GPIO pcfg_pull_none; }; /** * brief 蓝牙唤醒主机 * GPIO3_B1 BT_HOST_WAKE * 配置为上拉输入 */ bt_wake_host: bt-wake-host { rockchip,pins 3 RK_PB1 RK_FUNC_GPIO pcfg_pull_up; }; /** * brief 主机唤醒蓝牙 * GPIO3_B2 BT_DEV_WAKE */ bt_wake_dev: bt-wake-dev { rockchip,pins 3 RK_PB2 RK_FUNC_GPIO pcfg_pull_none; }; /** * brief UART4引脚复用 * 包含TX/RX/CTS/RTS */ uart4m0_xfer: uart4m0-xfer { rockchip,pins 2 RK_PB1 1 pcfg_pull_up, // TX 2 RK_PB2 1 pcfg_pull_up; // RX }; uart4m0_ctsn: uart4m0-ctsn { rockchip,pins 2 RK_PB3 1 pcfg_pull_none; // CTS }; uart4m0_rtsn: uart4m0-rtsn { rockchip,pins 2 RK_PB4 1 pcfg_pull_none; // RTS }; };四、内核配置必须开启的选项4.1 USB WiFi驱动配置# 进入内核配置 make menuconfig # USB WiFi (RTL8822CU) 配置 Device Drivers → Network device support → Wireless LAN → [*] Realtek devices * Realtek RTL8822CU/RTL8822CE USB Wireless Network Adapter # 或 RTL8XXXU # 备选如果使用r8188eu驱动 # * Realtek 8188EU 8188EUS 8188ETV USB WiFi # USB核心支持 Device Drivers → [*] USB support → * USB Serial Converter support # 可选某些方案需要 * USB Wireless Device Management support # 802.11无线协议栈 Networking support → Wireless → * cfg80211 - wireless configuration API * Generic IEEE 802.11 Networking Stack (mac80211)4.2 蓝牙UART驱动配置# 蓝牙核心 Networking support → Bluetooth subsystem support → * Bluetooth Classic (BR/EDR) features * Bluetooth High Speed (HS) features * Bluetooth Low Energy (LE) features [*] Bluetooth device drivers * HCI UART driver [*] UART (H4) protocol support [*] Broadcom protocol support # 使用Broadcom H4协议 [*] Realtek protocol support # 如果使用Realtek专用驱动 * Realtek Bluetooth support # Realtek专用驱动 # 串口DMA支持提升性能 Device Drivers → DMA Engine support → * Rockchip DMA support4.3 Buildroot配置如使用Buildroot# 进入Buildroot配置 make menuconfig # 内核版本选择 Kernel → Linux Kernel → Kernel version: Custom Git tree Custom Git repository: https://github.com/rockchip-linux/kernel Custom Git version: rk3576-dev # 或具体分支 # 固件文件 Target packages → Hardware handling → Firmware → [*] rtl8822bu-firmware # Realtek USB WiFi固件 [*] linux-firmware # 包含多种蓝牙固件 # 蓝牙工具 Target packages → Networking applications → [*] bluez5-utils # BlueZ 5.x蓝牙协议栈 [*] client utilities # bluetoothctl工具 [*] monitor tools # btmon工具 # WiFi工具 Target packages → Networking applications → [*] wpa_supplicant # WiFi连接管理 [*] wireless tools # iwconfig, iwlist等 [*] hostapd # AP模式支持五、固件文件获取与安装5.1 USB WiFi固件# 从Linux-firmware仓库获取 git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git # RTL8822CU固件 sudo cp linux-firmware/rtlwifi/rtl8822cufw.bin /lib/firmware/rtlwifi/ # 或 sudo cp linux-firmware/rtl_bt/rtl8822cu_fw.bin /lib/firmware/rtl_bt/ # Realtek官方驱动自带固件如果使用驱动包 # 从https://www.realtek.com下载驱动解压后复制 sudo cp rtl8822cu_fw.bin /lib/firmware/ sudo cp rtl8822cu_config.bin /lib/firmware/5.2 蓝牙固件# 从linux-firmware获取 sudo cp linux-firmware/rtl_bt/rtl8822cs_* /lib/firmware/rtl_bt/ # 预期文件 # rtl8822cs_fw.bin # 蓝牙固件 # rtl8822cs_config.bin # 配置文件 # rtl8822cs_ap_config.bin # AP模式配置 # 检查文件权限 sudo chmod 644 /lib/firmware/rtl_bt/rtl8822cs_*5.3 模组初始化脚本#!/bin/bash # 文件名: /usr/local/bin/fc96oke_init.sh # 功能移远FC96OK-E模组初始化脚本 # 加载USB WiFi驱动 modprobe rtl8xxxu # 或 r8822cu / r8188eu # 启用蓝牙电源 echo 1 /sys/class/gpio/gpio123/value # BT_REG_ON # 等待模组稳定 sleep 0.5 # 加载蓝牙HCI UART驱动 echo 加载蓝牙HCI UART驱动... modprobe hci_uart # 通过串口注册蓝牙设备 # 方法1使用btattach推荐 btattach -B /dev/ttyS4 -S 4000000 -P broadcom # 方法2通过hciattach旧方式 # hciattach -s 4000000 /dev/ttyS4 any 4000000 flow # 方法3如果内核支持serdev设备树会自动创建hci0 # 验证 sleep 1 hciconfig -a echo 初始化完成5.4 systemd服务开机自动启动# 文件名: /etc/systemd/system/fc96oke.service [Unit] DescriptionFC96OK-E WiFi/BT Module Initialization Aftermulti-user.target [Service] Typeoneshot ExecStart/usr/local/bin/fc96oke_init.sh RemainAfterExityes [Install] WantedBymulti-user.target# 启用服务 sudo systemctl daemon-reload sudo systemctl enable fc96oke.service sudo systemctl start fc96oke.service六、调试流程与工具6.1 USB WiFi调试#!/bin/bash # 文件名: 01_wifi_debug.sh # 功能USB WiFi调试脚本 echo 1. 检查USB设备 lsusb | grep -i realtek # 应看到: ID 0bda:c820 Realtek Semiconductor Corp. (RTL8822CU) echo 2. 查看USB详细信息 lsusb -v -d 0bda:c820 echo 3. 检查驱动加载 lsmod | grep -E rtl8xxxu|r8822cu|r8188eu echo 4. 查看内核日志 dmesg | grep -i rtl\|usb\|wlan echo 5. 查看网络接口 ip link show # 应出现 wlan0 或 wlx* 接口 echo 6. 扫描WiFi if command -v iw /dev/null; then iw dev wlan0 scan | grep SSID else iwlist wlan0 scan | grep ESSID fi echo 7. 连接测试WPA2-PSK cat /tmp/wpa_supplicant.conf EOF network{ ssidYour_SSID pskYour_Password } EOF wpa_supplicant -B -i wlan0 -c /tmp/wpa_supplicant.conf udhcpc -i wlan0 -n -q echo 8. 测试连通性 ping -I wlan0 -c 4 8.8.8.8 echo 9. 查看WiFi信号质量 iwconfig wlan0 cat /proc/net/wireless6.2 蓝牙UART调试#!/bin/bash # 文件名: 02_bluetooth_debug.sh # 功能蓝牙UART调试脚本 echo 1. 检查UART设备 ls -l /dev/ttyS4 stty -F /dev/ttyS4 -a echo 2. 检查引脚电平 # 需要gpio命令 gpioinfo | grep -E BT_REG|UART echo 3. 手动初始化蓝牙 # 如果设备树未自动创建hci0 sudo btattach -B /dev/ttyS4 -S 4000000 -P broadcom sleep 2 echo 4. 查看蓝牙适配器 hciconfig -a # 应看到 hci0: Type: Primary Bus: UART echo 5. 查看蓝牙详细信息 btmon hciconfig hci0 up hciconfig hci0 lestates echo 6. 扫描蓝牙设备 bluetoothctl power on bluetoothctl scan on sleep 10 bluetoothctl devices echo 7. 查看HCI日志 hcidump -X hcitool scan echo 8. 流控测试 # 测试硬件流控 echo 测试CTS/RTS... stty -F /dev/ttyS4 crtscts cat /dev/ttyS4 /tmp/bt_dump echo -e -n \x01\x02\x03\x04 /dev/ttyS4 echo 9. 性能测试蓝牙吞吐量 # 需安装l2ping l2ping -f -s 1000 -c 100 00:11:22:33:44:55 # 替换为目标设备地址6.3 一体化诊断脚本#!/bin/bash # 文件名: 03_fc96oke_diag.sh # 功能FC96OK-E模组完整诊断 echo echo 移远FC96OK-E WiFi/蓝牙模组诊断工具 v1.0 echo date echo -e \n[硬件检测] echo --- USB检测 --- if lsusb | grep -q 0bda:c820; then echo ✅ USB设备识别成功 (RTL8822CU) lsusb -d 0bda:c820 else echo ❌ USB设备未识别检查硬件连接 fi echo -e \n--- 电源检测 --- for gpio in $(gpiofind GPIO3_A5) $(gpiofind GPIO3_A6); do if [ -n $gpio ]; then echo GPIO $gpio: $(gpioget $gpio) fi done echo -e \n[驱动检测] echo --- WiFi驱动 --- lsmod | grep -E rtl8xxxu|r8822cu|r8188eu|cfg80211|mac80211 if ip link show | grep -q wlan; then echo ✅ WiFi接口已创建: $(ip link show | grep wlan) else echo ❌ WiFi接口未创建 fi echo --- 蓝牙驱动 --- lsmod | grep -E hci_uart|bluetooth|btusb if hciconfig | grep -q hci; then echo ✅ 蓝牙设备已创建: $(hciconfig hci0 | grep Name) else echo ❌ 蓝牙设备未创建 fi echo -e \n[固件检测] echo --- WiFi固件 --- find /lib/firmware -name *8822c* 2/dev/null | xargs ls -la echo -e \n--- 蓝牙固件 --- find /lib/firmware/rtl_bt -name rtl8822cs* 2/dev/null | xargs ls -la echo -e \n[设备节点] echo --- 网络接口 --- ip link show | grep -E wlan|eth|usb echo --- 串口设备 --- ls -l /dev/ttyS4 echo -e \n[连接测试] echo --- WiFi扫描 --- if command -v iw /dev/null; then iw dev wlan0 scan 2/dev/null | grep SSID: | head -5 || echo WiFi扫描失败 else iwlist wlan0 scan 2/dev/null | grep ESSID: | head -5 || echo WiFi扫描失败 fi echo --- 蓝牙扫描 --- timeout 5 bluetoothctl devices 2/dev/null | head -5 || echo 蓝牙扫描超时 echo -e \n[推荐下一步] if ! lsusb | grep -q 0bda:c820; then echo → 检查USB硬件连接 echo → 检查VBAT_WL供电 elif ! ip link show | grep -q wlan; then echo → 检查WiFi驱动加载 echo → 尝试手动加载: modprobe rtl8xxxu elif ! hciconfig | grep -q hci; then echo → 检查蓝牙UART连接 echo → 尝试手动初始化: btattach -B /dev/ttyS4 -S 4000000 -P broadcom else echo ✅ 模组检测正常可进行功能测试 fi七、常见问题与解决方案7.1 USB WiFi问题问题可能原因排查方法解决方案lsusb看不到设备USB电源/连接问题dmesg \| grep -i usb检查VBAT供电USB差分对看到设备但无wlan0驱动未加载lsmod \| grep rtlmodprobe rtl8xxxuwlan0存在但扫描不到网络射频开关rfkill listrfkill unblock wifi连接失败固件缺失dmesg \| grep firmware复制rtl8822cufw.bin到/lib/firmwareUSB传输错误USB信号质量lsusb -t检查PCB布线加ESD保护7.2 蓝牙UART问题问题可能原因排查方法解决方案/dev/ttyS4不存在设备树未启用dmesg \| grep uart4检查设备树statusokaybtattach失败流控未使能stty -F /dev/ttyS4确保uart-has-rtsctshci0创建后马上消失固件下载失败btmon查看错误检查固件文件存在蓝牙扫描无结果天线/功率hcitool rssi检查BT_REG_ON供电传输速率低波特率不足btmon -T设置max-speed4000000数据丢包流控问题示波器看CTS/RTS确保硬件流控正确连接7.3 电源管理问题/** * brief 电源管理调试 * * WiFi省电模式导致断流 * 查看WiFi省电状态 */ iwconfig wlan0 | grep Power Management // 禁用省电模式 iwconfig wlan0 power off /** * 蓝牙挂起/恢复问题 * 查看蓝牙电源状态 */ cat /sys/class/bluetooth/hci0/rfkill/state // 强制重启蓝牙 rfkill block bluetooth rfkill unblock bluetooth八、性能测试与优化8.1 WiFi吞吐量测试#!/bin/bash # WiFi性能测试 echo WiFi吞吐量测试 # 需要iperf3服务器 # 测试TCP吞吐量 iperf3 -c 192.168.1.100 -t 30 -i 1 -P 4 # 测试UDP吞吐量 iperf3 -c 192.168.1.100 -u -b 100M -t 30 # 测试实际传输 dd if/dev/zero bs1M count100 | nc 192.168.1.100 99998.2 蓝牙吞吐量测试#!/bin/bash # 蓝牙性能测试 echo 蓝牙吞吐量测试 # 使用l2ping测试延迟和丢包 l2ping -s 1000 -c 100 00:11:22:33:44:55 # 测试实际数据传输需配对 # 接收端 # rfcomm listen /dev/rfcomm0 1 # 发送端 # rfcomm connect /dev/rfcomm0 00:11:22:33:44:55 1 # dd if/dev/zero bs1M count10 /dev/rfcomm0九、总结清单完成以下所有项FC96OK-E模组即可正常工作硬件连接USB D/D-、UART TX/RX/CTS/RTS、电源、复位设备树USB控制器、UART4、蓝牙子节点、pinctrl内核配置USB WiFi驱动、蓝牙HCI UART、Realtek支持固件文件rtl8822cufw.bin、rtl8822cs_fw.bin、rtl8822cs_config.bin电源时序WL_REG_ON/BT_REG_ON正确上电顺序驱动加载rtl8xxxu、hci_uart模块加载成功设备创建wlan0接口、hci0设备创建成功网络连接WiFi可扫描连接蓝牙可扫描配对性能测试iperf3测速达标l2ping无丢包