Android 板端 WiFi 无法连接问题排查:从 lsmod、lsusb 到 WiFi 驱动冲突定位

发布时间:2026/8/23 23:43:34
Android 板端 WiFi 无法连接问题排查:从 lsmod、lsusb 到 WiFi 驱动冲突定位 作为一个05后刚入行的小白程序员今天尝试写第一篇博客希望记录下自己的工作和成长经历如果能够帮助到未来的朋友们当然是荣幸之至即使没什么热度多年后回看这些日记应该也会感慨万千。闲话少叙最近在调试一块 Android 板卡时遇到了一个比较典型但容易误判的 WiFi 问题。客制化配置页面中选择的 WiFi 模块是 ATBM6032而板卡本身也确实搭载了 6032 系列 WiFi 芯片。按照最初的判断硬件型号应该是匹配的系统理论上可以正常连接 WiFi。但实际测试时WiFi 始终连接失败。一开始我把问题怀疑在密码、路由器兼容性和 WiFi 配置文件上后来在同事的指导下按照“硬件识别→驱动加载→网络接口→WiFi 服务→连接过程”的顺序重新检查最终定位到了真正原因。1. 先不要从密码和路由器开始查嵌入式 Android 的 WiFi 问题不能只看设置界面上的“连接失败”。WiFi 能否工作至少依赖以下条件系统识别到了正确的 WiFi 硬件对应的内核驱动已经加载驱动成功创建了网络接口WiFi HAL 能够找到该接口wpa_supplicant正常运行最终完成认证和 DHCP。任何一层出错界面上都可能只表现为“无法连接”。2. 使用lsmod检查当前加载的模块首先在串口中执行lsmodlsmod只能查看当前已经加载的内核模块。例如atbm6032x cfg80211如果没有看到预期的 WiFi 模块说明驱动可能没有加载成功。但需要注意lsmod中没有模块不一定代表系统没有这个驱动因为驱动也可能被编译进内核而不是以.ko形式加载。3. 检查模块文件目录继续查看注意这里的模块目录需要以自己的实际项目为准cd /vendor/lib/modules ls重点关注是否存在类似文件atbm6032x.ko这里要区分两个概念模块文件存在 ≠ 模块已经加载因此必须把lsmod和/vendor/lib/modules的结果结合起来判断。本项目的产物清单中可以看到/vendor/lib/modules/atbm6032x.ko这说明最终镜像曾经包含 ATBM6032 系列驱动模块。4. 使用lsusb检查外部 USB WiFi接着执行lsusb这一步非常关键因为它能够确认板子当前是否还插入了其他 USB 设备。当时我在板子上额外插入了一个不同型号的 USB WiFi 模块。系统启动时USB 总线会先枚举这个设备随后 Linux 根据 USB 的 Vendor ID 和 Product ID 匹配对应驱动。如果外部 USB WiFi 和板载 WiFi 同时存在系统可能会出现多个无线设备或者让 Android WiFi HAL 绑定到错误的接口。可以结合以下命令继续确认dmesg | grep -iE usb|wifi|wlan|firmware|probe ip link iw dev重点观察是否出现多个无线接口wlan0对应哪一个设备是否有驱动 probe 失败是否有固件加载失败是否出现接口重复创建。5. 查看 WiFi 相关日志最后执行logcat -b all | grep -iE wifi|wlan|wpa|supplicant|hal同时查看内核日志dmesg | grep -iE wifi|wlan|usb|firmware|modulelogcat主要反映 Android Framework、WiFi HAL 和 supplicant 状态dmesg更适合查看 USB 枚举、驱动加载、固件和内核 probe 错误。从日志可以看到系统识别到的 WiFi 设备和客制化配置中的设备并不一致说明问题已经不在路由器或密码而是在硬件设备和驱动绑定阶段。6. 根因分析最终确认板子上同时存在两个 WiFi 模块板载 WiFiATBM6032 系列 外接 USB WiFi另一型号两个模块同时连接时USB WiFi 会参与系统枚举和驱动匹配。由于平台 WiFi HAL 通常默认使用固定接口例如wlan0外接模块可能抢先注册接口或者加载了与当前客制化配置不匹配的驱动。结果就是客制化配置选择 ATBM6032 实际系统优先绑定了另一个 USB WiFi WiFi HAL 与实际驱动不匹配 最终连接失败拔掉额外的 USB WiFi 模块并重新启动后系统只剩下板载 ATBM6032 WiFi驱动绑定恢复正常WiFi 连接也随之恢复。7. 源码中的配置关系本项目通过以下文件配置 WiFidevice/hisilicon/Hi3751V350/device.mk device/hisilicon/Hi3751V350/wifi_bt.mkdevice.mk引入了include device/hisilicon/$(CHIPNAME)/wifi_bt.mkwifi_bt.mk中通过BOARD_WIFI_ATBM6032 : y启用 ATBM6032 配置并设置BOARD_WIFI_VENDOR : atbm6032同时最终镜像的 vendor 文件清单中包含/vendor/lib/modules/atbm6032x.ko这说明 WiFi 配置并不是一个单独的字符串而是会影响驱动模块、HAL、supplicant、P2P 接口和系统镜像打包。