SSD201 移植RTL8723du模块(蓝牙调试)

本文基于SSD201 做RTL8723DU蓝牙移植。

移植驱动:

由于USB是默认配置好的,那么我们只需要对模块单独配置就可以了。

将获取的RTL8723du模块驱动程序拷贝至kernel/drivers/bluetooth/rtl8723du/目录下

attachments-2022-01-hRqiaQOB61e13ca73e36d.png

1、在rtl8723du目录下添加Kconfig:

#  vi  kernel/drivers/bluetooth/rtl8723du/Kconfig

attachments-2022-01-Phtg8VFz61e13cc3200ef.png

config BT_HCIBTUSB_RTLBTUSB

        tristate "Realtek HCI USB driver support"

        depends on USB

        help

                Realtek Bluetooth HCI USB driver.

                This driver is required if you want to use Realtek Bluetooth

                device with USB interface.

 

                Say Y here to compile support for Bluetooth USB devices into the

                kernel or say M to compile it as module (rtk_btusb).


2、在kernel/drivers/bluetooth/ 中添加RTL8723du配置文件路径:

# vi kernel/drivers/bluetooth/Kconfig


attachments-2022-01-b2ucxv2i61e13d379c5b4.png

3、在kernel/drivers/bluetooth/Makefile 中配置编译RTL8723du驱动程序:

# vi kernel/drivers/bluetooth/Makefile

attachments-2022-01-6bJo0Xvk61e13d56a7397.png


4、在kernel中开启RTL8723du模块(可以看到我们移植的环境生效了):

-*- Networking support  --->

         <*> Bluetooth subsystem support  --->  

                   Bluetooth device drivers  --->

                            <M> Realtek HCI USB driver support    



attachments-2022-01-wcBX09rl61e13d6dbbce8.png

5、同步一下defconfig 配置:

# cp .config  arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_cz_defconfig


6、编译:

# /Release_to_customer.sh -f nand -p ssd202 -o cz


调试蓝牙:

编译成功后kernel/drivers/bluetooth/rtl8723du/下会生成rtk_btusb.ko           

 

attachments-2022-01-V0orTyhR61e13dbb01bf9.png

1、将驱动rtk_brusb.ko放置到/opt/

attachments-2022-02-ehxcTBNj62185a6b519ec.png

2、拷贝蓝牙固件至/lib/firmware目录(一般都会在驱动包中):

# mkdir –p /lib/firmware

attachments-2022-02-BpKMEqAi62185ad6b0ca3.png

3、配置模块启动脚本

# vi rootfs/etc/init.d/S31wlan

#!/bin/sh

 

case "$1" in

  start)

        printf "Starting init wifi module: "

        echo 47 > /sys/class/gpio/export

        echo out > /sys/class/gpio/gpio47/direction

        echo 0 > /sys/class/gpio/gpio47/value

        sleep 0.1

        insmod /opt/rtk_btusb.ko

        [ $? = 0 ] && echo "OK" || echo "FAIL"

        ;;

  stop)

        printf "Stopping wifi: "

        ifconfig wlan0 down

        hciconfig hci0 down

        rmmod rtk_btusb

        [ $? = 0 ] && echo "OK" || echo "FAIL"

        ;;

  restart|reload)

        "$0" stop

        "$0" start

        ;;

  *)

        echo "Usage: $0 {start|stop|restart}"

        exit 1

esac

 

exit $?


3、安装蓝牙驱动:

# insmod rtk_btusb.ko

attachments-2022-01-9lBpZy3j61e13defcae70.png

可以看到已经识别模块了:

attachments-2022-02-hSpXZd9662185aa80a330.png


Bluez移植

因为蓝牙需要相应的指令进行控制,所以需要移植bluez获取。

移植方法可以参考:https://blog.csdn.net/wanguofeng8023/article/details/118392983

也可以用buildroot构建,高版本的没带有gatt服务,这里用的是buildroot-2018.05


1、替换好编译的rootfs.tar.gz:

attachments-2022-01-RjjnoAQT61e13e2a4b16b.png

attachments-2022-01-JdXdbKJk61e13e2fdc18d.png

2、可以看到蓝牙有节点出来:

# hciconfig –a


attachments-2022-01-CiUtPDau61e13e474fb09.png

3、启动hci0:

# hciconfig hci0 up


attachments-2022-01-wSR1DN0z61e13e5cea268.png


4、使蓝牙能搜索并能被搜索到:

# hciconfig hci0 piscan


attachments-2022-01-3Ki1M7r561e13e72d2a95.png


5、搜索远程蓝牙设备:

# hcitool scan

attachments-2022-01-9cM6DQrh61e13e86d82bc.png


可以看到能搜索到远程的蓝牙了。

手机上也能搜索到了:

attachments-2022-01-kFYExPvq61e13e9961b40.png


我们可以尝试ping一下远程的蓝牙设备是否能通:

# l2ping    60:AB:67:28:7F:B8

attachments-2022-01-Vcr45Id161e13eae3242d.png

成功ping通。

验证gatt服务

1、系统启动后创建dbus用户

# adduser dbus

2、开启dbus服务

# /etc/init.d/S30dbus start

3、运行bluetoothd服务

# bluetoothd -n -d --compat --plugin=time --experimental &

4、执行gatt服务

# /usr/lib/bluez/test/example-gatt-server &

5hciconfig hci0 up

6hciconfig hci0 leadv

 

7、手机打开nrf connect软件,找到BlueZ 5.50设备并连接

attachments-2022-02-u6xVohNt62185b92469f6.png


8、切换到client页面,并点击开启模拟电量播报服务

attachments-2022-02-SJinQGZD62185ba112498.png


9、板子串口可以看到电量播报信息了。


attachments-2022-02-oYfnWHYe62185baccc03b.png

10、把/etc/passwd/etc/shadow中的dbus信息复制到rootfs.tar.gz里的对应文件,并把3-6步写到一个脚本中:

# vi etc/bluetooth_up.sh

#!/bin/sh

        bluetoothd -n -d --compat --plugin=time --experimental &

        sleep 1

        /usr/lib/bluez/test/example-gatt-server &

        sleep 3

        hciconfig hci0 up

        hciconfig hci0 leadv

        echo -n "------------- bluz service start "

        echo -e "\033[32m[OK]\033[0m ------------"

系统启动只需要执行该脚本,即可开启bluez服务。

 

  • 发表于 2022-01-14 17:13
  • 阅读 ( 1328 )
  • 分类:SSD20X

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
BBelephant
BBelephant

13 篇文章

作家榜 »

  1. BBelephant 13 文章
  2. ronnie 11 文章
  3. FU 9 文章
  4. toca 4 文章
  5. 大飞 3 文章
  6. Vivek 3 文章
  7. jack-fang 2 文章
  8. Bin 1 文章