rtl8723Bu在linux驱动异常,hciconfig -a 可以发现本地蓝牙,但是无法搜索远程蓝牙。找厂家要来新驱动,好家伙,本地蓝牙也找不到了,后来追踪驱动,发现是load_firmware出错。啥意思,就是驱动程序要加载文件系统的固件文件才能驱动蓝牙,都说固件文件路径是/lib/firmware,把rtl8723b_fw rtl8723b_config放入/lib/firmware 还是不行。load_firmware出错,追踪到函数是request_firmware(),搜索request_firmware()函数发现要export FIRMWARE=/lib/firmware.busybox要用到,既然是路径问题,肯定看busybox什么地方与/lib/firmware有关了,进入busybox目录打开.config,搜索FIRMWARE关键字,好家伙,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set 。执行make menuconfig 在linux system utilities->support loading of firewares 选择*,重新编译busybox,烧写系统,加载rtk_btusb.ko驱动,ok了。固件正常加载。
吐槽一下,搞了几天,开发版busybox配置不完善导致加载外部固件出错。现在换回原来驱动,发现也能正常驱动了。坑爹啊,从更换驱动,重新编译移植蓝牙协议栈,最终编译busybox,我现在在想RTL8723驱动内有个表,里面有RTL多款类型固件信息,在这里面我直接把rtl8723b_fw、rtl8723config.写成绝对路径/lib/firmware/rtl8723b_fw和/lib/firmware/rtl8723b_config不知道会不会也能找到路径。下午试一下,这样就不用编译busybox,编译文件系统,烧录文件系统了。