RK3588S Android13 适配EW-7611UXB无线网卡:从内核驱动到HAL层框架的完整移植指南

发布时间:2026/7/17 9:31:39

RK3588S Android13 适配EW-7611UXB无线网卡:从内核驱动到HAL层框架的完整移植指南 1. 开发环境准备与SDK获取在开始RK3588S Android13适配EW-7611UXB无线网卡之前我们需要先搭建好开发环境。我建议使用Ubuntu 22.04 LTS作为开发系统这个版本经过长期测试稳定性较好。硬件方面建议准备一台性能足够的x86_64主机至少16GB内存和200GB硬盘空间因为Android系统编译对资源消耗很大。安装必要的编译工具链是第一步。打开终端执行以下命令安装基础依赖sudo apt-get update sudo apt-get install -y git ssh make gcc libssl-dev liblz4-tool expect g patchelf chrpath gawk texinfo diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g-multilib unzip device-tree-compiler ncurses-dev libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev libmpc-dev bc python-is-python3特别注意Python版本要求3.6以上可以通过python3 --version检查。如果版本不满足可以通过源码编译安装PYTHON3_VER3.8.12 wget https://www.python.org/ftp/python/${PYTHON3_VER}/Python-${PYTHON3_VER}.tgz tar xf Python-${PYTHON3_VER}.tgz cd Python-${PYTHON3_VER} sudo apt-get install libsqlite3-dev ./configure --enable-optimizations sudo make install -j$(nproc)接下来需要获取RK3588S的Android13 SDK。这个SDK包含了完整的BSP支持是驱动移植的基础。解压SDK时要注意由于文件较大建议使用以下命令确保完整性cat android13_rk35xx_20250106_sdk.tar.gza* android13_rk35xx_20250106_sdk.tar.gz tar xvf android13_rk35xx_20250106_sdk.tar.gz解压完成后建议先进行一次完整编译测试确认基础环境没有问题cd android13-dev source build/envsetup.sh lunch rk3588s_lubancat_4_v1_hdmi-userdebug ./build.sh -UACKu -J$(nproc)2. WiFi驱动移植与修改EW-7611UXB的WiFi部分采用Realtek 8851BU芯片我们需要将驱动集成到Android13系统中。首先将驱动包中的WIFI/driver目录改名为rtl8851bu并放置到SDK的external/wifi_driver目录下。接下来修改Makefile配置。打开external/wifi_driver/Makefile添加以下内容CONFIG_RTL8851BU m export CONFIG_RTL8851BU obj-$(CONFIG_RTL8851BU) rtl8851bu/然后进入rtl8851bu目录修改驱动的主要配置启用WIFI_HAL支持CONFIG_RTW_WIFI_HAL y修改平台配置CONFIG_PLATFORM_I386_PC n CONFIG_PLATFORM_ARM_RK3188 y添加Rockchip平台支持块ifeq ($(CONFIG_PLATFORM_ARM_RK3188), y) EXTRA_CFLAGS -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS EXTRA_CFLAGS -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT EXTRA_CFLAGS -DCONFIG_CONCURRENT_MODE EXTRA_CFLAGS -DRTW_SUPPORT_PLATFORM_SHUTDOWN ARCH : arm CROSS_COMPILE : KSRC : /path/to/android13-dev/kernel MODULE_NAME : 8851bu endif驱动入口函数需要特别处理修改os_dep/linux/usb_intf.c文件#include linux/rfkill-wlan.h extern int get_wifi_chip_type(void); extern int rockchip_wifi_power(int on); extern int rockchip_wifi_set_carddetect(int val); int rockchip_wifi_init_module_rtkwifi(void) { printk(Realtek 8851BU WiFi driver init\n); rockchip_wifi_power(1); rockchip_wifi_set_carddetect(1); return rtw_drv_entry(); } void rockchip_wifi_exit_module_rtkwifi(void) { rtw_drv_halt(); rockchip_wifi_set_carddetect(0); rockchip_wifi_power(0); }此外还需要修改几个关键文件在rtw_ieee80211.c末尾添加空MAC地址函数void platform_wifi_mac_addr(u8 *mac_addr) {}修改phl_regulation_def.h中的6GHz频段定义u8 size sizeof(_chdef_tbl_) / sizeof(struct chdef_6ghz);3. 蓝牙驱动移植与配置EW-7611UXB的蓝牙部分采用Realtek 8851B芯片支持蓝牙5.3。移植工作分为内核层和HAL层两部分。首先处理内核驱动将驱动包中BT_Android_Linux_Driver/ANDROID_BT_DRIVER/linux/drivers/bluetooth目录下的rtk_btusb.c和rtk_btusb.h复制到kernel-5.10/drivers/bluetooth目录。修改内核配置文件kernel-5.10/arch/arm64/configs/rockchip_defconfigCONFIG_BT_HCIBTUSBn CONFIG_BT_RTKBTUSBy CONFIG_RTL8851BUmHAL层驱动需要将BT_Android_Linux_Driver/ANDROID_BT_DRIVER/rtkbt目录下的所有文件复制到hardware/realtek/rtkbt目录。修改hardware/realtek/rtkbt/rtkbt.mk文件CUR_PATH : hardware/realtek/rtkbt BOARD_HAVE_BLUETOOTH_RTK_TV : false LOCAL_MODULE : libbt-vendor-realtek更新设备节点配置修改hardware/realtek/rtkbt/vendor/etc/bluetooth/rtkbt.confBtDeviceNode/dev/rtkbt_dev添加设备支持修改hardware/realtek/rtkbt/code/libbt-vendor/src/hardware_usb.c{ 0x7392, 0xE611, 0x8851, 0, 0, mp_rtl8851bu_fw, rtl8851bu_fw, rtl8851bu_config, NULL, 0, CONFIG_MAC_OFFSET_GEN_4PLUS, MAX_PATCH_SIZE_65_2K},4. 系统框架层适配为了让系统正确识别和使用EW-7611UXB需要在框架层进行适配。首先修改WiFi HAL配置编辑frameworks/opt/net/wifi/libwifi_hal/rk_wifi_ctrl.cpp#define RTL8851BU_DRIVER_MODULE_PATH WIFI_MODULE_PATH8851bu.ko #define RTL8851BU_DRIVER_MODULE_NAME 8851bu {RTL8851BU, 7392:e611}, {RTL8851BU, RTL8851BU_DRIVER_MODULE_NAME, RTL8851BU_DRIVER_MODULE_PATH, UNKOWN_DRIVER_MODULE_ARG, REALTEK_WIFI_HAL},设备权限配置是确保功能正常的关键。创建device/rockchip/rk3588/rk3588s_lubancat_4_v1_hdmi/init.rk3588s.rc文件on boot # For WiFi chmod 0660 /sys/class/rkwifi/power chmod 0660 /sys/class/rkwifi/driver_loaded write /sys/class/rkwifi/power 1 # For Bluetooth mkdir /data/misc/bluedroid 0770 bluetooth bluetooth chown bluetooth bluetooth /data/misc/bluedroid修改ueventd.rockchip.rc添加设备节点权限/dev/rtkbt_dev 0666 bluetooth net_bt_admin /dev/ttyUSB* 0666 radio radioSELinux策略需要相应调整在device/rockchip/common/sepolicy/vendor目录下Bluetooth.te添加allow bluetooth rtkbt_device:chr_file rw_file_perms;device.te添加type rtk_bt_device, dev_type;file_contexts添加/data/vendor/bluetooth(/.*)? u:object_r:bluetooth_vendor_data_file:s05. 系统编译与验证完成所有修改后可以开始系统编译。建议先清理之前的编译结果cd android13-dev make clean然后执行完整编译source build/envsetup.sh lunch rk3588s_lubancat_4_v1_hdmi-userdebug ./build.sh -UACKu -J$(nproc) 21 | tee build.log编译完成后生成的固件位于rockdev/Image-rk3588s_lubancat_4_v1_hdmi/update.img。使用Rockchip提供的烧录工具将固件写入设备。烧录完成后可以通过以下命令验证驱动是否正常加载adb shell lsmod | grep 8851bu adb shell dmesg | grep -i rtkWiFi功能测试adb shell cmd wifi status adb shell iwconfig蓝牙功能测试adb shell btconfig -a adb shell hciconfig -a如果遇到问题可以检查内核日志adb shell dmesg dmesg.log常见问题包括驱动加载失败检查内核配置和驱动版本是否匹配权限问题确认SELinux策略和设备节点权限设置正确功能异常检查框架层配置和设备树配置

相关新闻