飞凌 ok113i-c 全志t113-i开发板板载一个rtl8723du wifi/蓝牙二合一模块,板子出厂已经移植好了wifi驱动但是蓝牙驱动没有,所以这篇文章我们主要做蓝牙驱动的移植和功能验证。
./build.sh menuconfig在device drivers > network device support > wireless lan下找到realtek 8723d usb wifi选项。
默认是开启的。
默认wifi驱动联网尝试wpa_supplicant -dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf -budhcpc -i wlan0udhcpc: started, v1.29.3 udhcpc: sending discover udhcpc: sending select for 192.168.0.111 udhcpc: lease of 192.168.0.111 obtained, lease time 7200 deleting routers adding dns 192.168.1.1 adding dns 192.168.0.1wpa_supplicant.conf 文件
network={ ssid=tp-link_142c psk=123445678}update_config=1ctrl_interface=dir=/var/run/wpa_supplicant打印网卡信息:
ifconfig eth0 link encap:ethernet hwaddr ba:e9:f2:1c:9d:87 inet addr:192.168.0.232 bcast:0.0.0.0 mask:255.255.255.0 up broadcast multicast mtu:1500 metric:1 rx packets:0 errors:0 dropped:0 overruns:0 frame:0 tx packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 rx bytes:0 (0.0 b) tx bytes:0 (0.0 b) interrupt:39 lo link encap:local loopback inet addr:127.0.0.1 mask:255.0.0.0 inet6 addr: ::1/128 scope:host up loopback running mtu:65536 metric:1 rx packets:41 errors:0 dropped:0 overruns:0 frame:0 tx packets:41 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 rx bytes:3936 (3.8 kib) tx bytes:3936 (3.8 kib) wlan0 link encap:ethernet hwaddr 2c:c3:e6:67:4d:3b inet addr:192.168.0.111 bcast:192.168.0.255 mask:255.255.255.0 inet6 addr: fe80::2ec3:e6ff:fe67:4d3b/64 scope:link up broadcast running multicast mtu:1500 metric:1 rx packets:86 errors:0 dropped:0 overruns:0 frame:0 tx packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 rx bytes:17189 (16.7 kib) tx bytes:3763 (3.6 kib)至此,wifi连接路由器成功,可以ping 百度验证是否联网成功。
蓝牙功能首先打印设备上的蓝牙设备
hciconfig -a输出为空,应该是没有蓝牙驱动。看来出厂并没有带蓝牙驱动,下一步自行移植蓝牙驱动,板上的无线芯片模组使用的是rtl8723du是一款bt4.2和 wifi 2.4g芯片。
蓝牙驱动移植修改kernel config
修改ok113i-linux-sdk/kernel/linux-5.4/arch/arm/configs/ok113i_linux_defconfig文件添加如下一行config_bt_hcibtusb_rtlbtusb=m修改kconfig
添加如下: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).修改makefile
在文档最后添加:obj-$(config_bt_hcibtusb_rtlbtusb) := rtk_btusb.ortk_btusb-objs := rtk_bt.o rtk_misc.o rtk_coex.o将驱动文件中如下文件复制到内核目录ok113i-linux-sdk/kernel/linux-5.4/drivers/bluetooth下:
rtk_bt.c
rtk_bt.h
rtk_coex.c
rtk_coex.h
rtk_misc.c
rtk_misc.h编译内核驱动
./build.sh kernel编译完成后会在ok113i-linux-sdk/out/t113_i/ok113i/longan/dist目录下生成rtk_btusb.ko驱动文件,将该驱动文件和驱动文件对应的固件文件(rtl8723du_fw.bin和rtl8723du_config.bin)放在板子/lib/firmware/下
为了方便查看驱动加载过程报错信息,打开内核打印信息:
echo 8 4 1 7 > /proc/sys/kernel/printk将编译好的驱动文件和固件文件上传到板卡上,并将估计文件存放在板卡/lib/firmware目录下。
scp out/t113_i/ok113i/longan/dist/rtk_btusb.ko root@192.168.0.105:/home/forlinx/scp /home/luoyang/documents/dev/bluetooth/v4-8761蓝牙_linux驱动/20210819_linux_bt_driver/rtkbt-firmware/lib/firmware/rtl8723du* root@192.168.0.105:/home/forlinx/cp rtl8723du_config /lib/firmware/rtl8723du_config.bincp rtl8723du_fw /lib/firmware/rtl8723du_fw.bin加载驱动试试,报错:
insmod rtk_btusb.ko [ 4832.222554] rtk_btusb: module uses symbol (kernel_read) from namespace vfs_internal_i_am_really_a_filesystem_and_am_not_a_driver, but does not import it.[ 4832.238042] rtk_btusb: unknown symbol kernel_read (err -22)[ 4832.298908] rtk_btusb: module uses symbol (kernel_read) from namespace vfs_internal_i_am_really_a_filesystem_and_am_not_a_driver, but does not import it.[ 4832.314387] rtk_btusb: unknown symbol kernel_read (err -22)insmod: can't insert 'rtk_btusb.ko': invalid argument在rtk_bt.c文件最后一行添加:
module_import_ns(vfs_internal_i_am_really_a_filesystem_and_am_not_a_driver);重新编译驱动,然后上传并加载试试。
root@ok113i:/home/forlinx# insmod rtk_btusb.ko [ 7964.303169] rtk_btusb: realtek bluetooth usb driver ver 3.1.32e1d0b.20210819-170430[ 7964.311850] rtk_btcoex: rtk_btcoex_init: version: 1.2[ 7964.317513] rtk_btcoex: create workqueue[ 7964.322343] rtk_btcoex: alloc buffers 1408, 2240 for ev and l2[ 7964.329075] rtk_btusb: btusb_probe intf- >cur_altsetting- >desc.binterfacenumber 0[ 7964.337365] rtk_btusb: btusb_probe can_wakeup 1, may wakeup 0[ 7964.343827] rtk_btusb: patch_add[ 7964.347451] rtk_btusb: auto suspend is disabled[ 7964.352568] rtk_btusb: pid = 0xd723[ 7964.356478] rtk_btusb: patch_add: reset geversion to 0xff[ 7964.362590] rtk_btusb: set_bit(hci_quirk_reset_on_close, &hdev- >quirks);[ 7964.370965] rtk_btusb: btusb_probe: done[ 7964.375679] usbcore: registered new interface driver rtk_btusb[ 7964.377514] rtk_btusb: btusb_open start[ 7964.386578] rtk_btusb: btusb_open hdev- >promisc ==0[ 7964.392129] rtk_btusb: download_patch startroot@ok113i:/home/forlinx# [ 7964.396839] rtk_btusb: chip type value: 0x71[ 7964.403997] rtk_btusb: hci reset.[ 7964.416814] rtk_btusb: read_ver_rsp- >lmp_subver = 0x8723[ 7964.423054] rtk_btusb: read_ver_rsp- >hci_rev = 0xd[ 7964.428449] rtk_btusb: patch_entry- >lmp_sub = 0x8723[ 7964.434017] rtk_btusb: load_firmware start[ 7964.438638] rtk_btusb: lmp_version = 0x8723[ 7964.443325] rtk_btusb: config filename rtl8723du_config[ 7964.449952] rtk_btusb: no bdaddr file /opt/bdaddr[ 7964.455252] rtk_btusb: origin cfg len 22[ 7964.459688] rtk_btusb: 55 ab 23 87 10 00 d9 00 01 0f e4 00 01 08 8d 00[ 7964.467005] rtk_btusb: 01 fa 8f 00 01 bf[ 7964.471497] rtk_btusb: new cfg len 22[ 7964.475600] rtk_btusb: 55 ab 23 87 10 00 d9 00 01 0f e4 00 01 08 8d 00[ 7964.482969] rtk_btusb: 01 fa 8f 00 01 bf[ 7964.487399] rtk_btusb: fw name is rtl8723du_fw[ 7964.492801] rtk_btusb: this is not 8723a, use new patch style![ 7964.499374] rtk_btusb: rtk_get_eversion: geversion 255[ 7964.505815] rtk_btusb: eversion- >status = 0x0, eversion- >version = 0x2[ 7964.513566] rtk_btusb: load_firmware: new geversion 2[ 7964.519331] rtk_btusb: rtk_get_fw_project_id: opcode 0, len 1, data 9[ 7964.526565] rtk_btusb: lmp_version is 8723, project_id is 8723, match![ 7964.533909] rtk_btusb: fw_version = 0x82a8a133[ 7964.538921] rtk_btusb: number_of_total_patch = 3[ 7964.544092] rtk_btusb: chipid 3[ 7964.547606] rtk_btusb: patch_length 0x889c[ 7964.552220] rtk_btusb: start_offset 0x00004940[ 7964.557198] rtk_btusb: svn version: -1433992835[ 7964.562301] rtk_btusb: coexistence: btcoex_20210106-3b3b[ 7964.568274] rtk_btusb: buf_len = 0x88b2[ 7964.572647] rtk_btusb: fw: exists, config file: exists[ 7964.578430] rtk_btusb: load_firmware done[ 7964.582960] rtk_btusb: download_data start[ 7964.855824] rtk_btusb: download_data done[ 7964.860346] rtk_btusb: hci reset.[ 7964.873812] rtk_btusb: read_ver_rsp- >lmp_subver = 0xa133[ 7964.880054] rtk_btusb: read_ver_rsp- >hci_rev = 0x82a8[ 7964.885730] rtk_btusb: patch_entry- >lmp_sub = 0x8723[ 7964.891337] rtk_btusb: rtk patch end 0[ 7964.895538] rtk_btusb: btusb_open set hci_running[ 7964.900945] rtk_btcoex: open btcoex[ 7964.904856] rtk_btusb: btusb_open end[ 7964.911832] rtk_btcoex: btcoex hci_rev 0x82a8[ 7964.916883] rtk_btcoex: btcoex lmp_subver 0xa133[ 7964.943829] rtk_btusb: btusb_notify: hci0 evt 3[ 7967.007992] rtk_btusb: btusb_flush add delay [ 7967.022915] rtk_btusb: btusb_close[ 7967.045574] rtk_btcoex: close btcoex[ 7967.049615] rtk_btcoex: -x以上信息说明蓝牙驱动加载成功。
此时,再一次查看系统的蓝牙设备信息会打印如下:
root@ok113i:/home/forlinx# hciconfig -ahci0: type: primary bus: usb bd address: 2c:c3:e6:67:4d:3c acl mtu: 1021:8 sco mtu: 255:12 down rx bytes:584 acl:0 sco:0 events:30 errors:0 tx bytes:369 acl:0 sco:0 commands:30 errors:0 features: 0xff 0xff 0xff 0xfa 0xdb 0xbd 0x7b 0x87 packet type: dm1 dm3 dm5 dh1 dh3 dh5 hv1 hv2 hv3 link policy: rswitch hold sniff park link mode: slave accept蓝牙工具软件使用蓝牙驱动安装成功后就可以对蓝牙设备进行配对连接并进行播放音频操作了,此处我们选择通过蓝牙连接家里的智能音箱天猫精灵作为蓝牙音频输出设备,涉及的蓝牙工具软件开发板上出厂移植好了,所以此处省去了移植这些工具软件的步骤。
启动系统蓝牙服务bluetoothd,使其在后台运行
bluetoothd -d -n &
root@ok113i:/# bluetoothd[1516]: bluetooth daemon 5.50
bluetoothd[1516]: src/adapter.c:adapter_init() sending read version command
bluetoothd[1516]: starting sdp server
bluetoothd[1516]: src/sdpd-service.c:register_device_id() adding device id record for 0002:1d6b:0246:0532
bluetoothd[1516]: src/plugin.c:plugin_init() loading builtin plugins
bluetoothd[1516]: src/plugin.c:add_plugin() loading hostname plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading wiimote plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading autopair plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading policy plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading neard plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading sap plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading a2dp plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading avrcp plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading network plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading input plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading hog plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading health plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading gap plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading scanparam plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading deviceinfo plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading midi plugin
bluetoothd[1516]: src/plugin.c:add_plugin() loading battery plugin
bluetoothd[1516]: src/plugin.c:plugin_init() loading plugins /usr/lib/bluetooth/plugins
bluetoothd[1516]: src/plugin.c:add_plugin() loading sixaxis plugin
bluetoothd[1516]: profiles/health/hdp.c:hdp_manager_start() starting health manager
bluetoothd[1516]: profiles/input/suspend-none.c:suspend_init()
bluetoothd[1516]: profiles/network/manager.c:read_config() config options: security=true
bluetoothd[1516]: kernel lacks bnep-protocol support
bluetoothd[1516]: system does not support network plugin
bluetoothd[1516]: plugins/neard.c:neard_init() setup neard plugin
bluetoothd[1516]: plugins/sixaxis.c:sixaxis_init()
bluetoothd[1516]: src/main.c:main() entering main loop
bluetoothd[1516]: src/rfkill.c:rfkill_event() rfkill event idx 0 type 1 op 0 soft 0 hard 0
bluetoothd[1516]: bluetooth management interface 1.14 initialized
bluetoothd[1516]: src/adapter.c:read_version_complete() sending read supported commands command
bluetoothd[1516]: src/adapter.c:read_version_complete() sending read index list command
bluetoothd[1516]: src/adapter.c:read_commands_complete() number of commands: 65
bluetoothd[1516]: src/adapter.c:read_commands_complete() number of events: 35
bluetoothd[1516]: src/adapter.c:read_commands_complete() enabling kernel-side connection control
bluetoothd[1516]: src/adapter.c:read_index_list_complete() number of controllers: 0
root@ok113i:/#
通过bluetoothctl对蓝牙设备操作,主要包括:蓝牙设备信息打印查看,蓝牙设备开启和关闭、蓝牙外设扫描、查看扫描到的蓝牙外设设备、配对连接等,下面实例命令行中##开头的行是注释
进入bluetoothctlroot@ok113i:/# bluetoothctl
bluetoothd[1516]: src/agent.c:agent_ref() 0x8c9338: ref=1
bluetoothd[1516]: src/agent.c:register_agent() agent :1.1
agent registered
蓝牙设备信息打印查看[bluetooth]#show
controller 2c:c3:e6:67:4d:3c (public)
name: bluez 5.50 alias: bluez 5.50 class: 0x00000000 powered: no discoverable: no pairable: yes uuid: generic attribute profile (00001801-0000-1000-8000-00805f9b34fb) uuid: a/v remote control (0000110e-0000-1000-8000-00805f9b34fb) uuid: pnp information (00001200-0000-1000-8000-00805f9b34fb) uuid: a/v remote control target (0000110c-0000-1000-8000-00805f9b34fb) uuid: generic access profile (00001800-0000-1000-8000-00805f9b34fb) modalias: usb:v1d6bp0246d0532 discovering: no蓝牙设备开启和关闭[bluetooth]#power on
[bluetooth]# [ 417.686414] rtk_btusb: btusb_open start
bluetoothd[1516]: src/adapter.c:[ 417.691880] rtk_btusb: btusb_open hdev->promisc ==0
property_set_mode() sending set [ 417.700202] rtk_btusb: download_patch start
powered command for index 0
[ 417.707637] rtk_btusb: chip type value: 0x71
[ 417.714939] rtk_btusb: hci reset.
[ 417.727699] rtk_btusb: read_ver_rsp->lmp_subver = 0xa133
[ 417.733654] rtk_btusb: read_ver_rsp->hci_rev = 0x82a8
[ 417.739344] rtk_btusb: patch_entry->lmp_sub = 0x8723
[ 417.744905] rtk_btusb: firmware already exists
[ 417.749914] rtk_btusb: rtk patch end 1
[ 417.754125] rtk_btusb: btusb_open set hci_running
[ 417.759504] rtk_btcoex: open btcoex
[ 417.763412] rtk_btusb: btusb_open end
[ 417.769720] rtk_btcoex: btcoex hci_rev 0x82a8
[ 417.774656] rtk_btcoex: btcoex lmp_subver 0xa133
bluetoothd[1516]: src/adapter.c:property_set_mode_complete() success (0x00)
bluetoothd[1516]: src/adapter.c:new_settings_callback() settings: 0x00000ad1
bluetoothd[1516]: src/adapter.c:settings_changed() changed settings: 0x00000001
bluetoothd[1516]: src/adapter.c:adapter_start() adapter /org/bluez/hci0 has been enabled
bluetoothd[1516]: src/adapter.c:trigger_passive_scanning()
changing power on succeeded
[chg] controller 2c:c3:e6:67:4d:3c powered: yes
蓝牙设备开启和关闭[bluetooth]#scan on
[bluetooth]#scan off
查看扫描到的蓝牙外设设备[bluetooth]#devices
device f1:22:33:1a:48:9b f1-22-33-1a-48-9b
device c4:de:e2:df:e8:22 keep_cc_50200973
device 34:29:ef:5b:d2:d3 34-29-ef-5b-d2-d3
device e8:f5:63:87:03:9d mi band 3
device b8:8c:29:87:72:c9 midea
device 04:7f:0e:40:4a:bd beijing-eu5
device cc:b5:d1:fb:45:3a smi-m14
device 45:b8:cc:87:53:f8 45-b8-cc-87-53-f8
device 84:7c:9b:6d:ff:11 midea_db_2943
device 10:9e:3a:92:2e:da �方�糖(80:7a)
配对连接[bluetooth]#connect 10:9e:3a:92:2e:da
attempting to connect to 10:9e:3a:92:2e:da
bluetoothd[1516]: src/device.c:connect_profiles() /org/bluez/hci0/dev_10_9e_3a_92_2e_da (all), client :1.2
bluetoothd[1516]: profiles/audio/a2dp.c:a2dp_sink_connect() path /org/bluez/hci0/dev_10_9e_3a_92_2e_da
bluetoothd[1516]: a2dp-sink profile connect failed for 10:9e:3a:92:2e:da: protocol not available
failed to connect: org.bluez.error.failed
报错了,因为没有提前运行bluealsa这个程序,运行如下:
bluealsa -p a2dp-source &[2] 1537root@ok113i:/home/forlinx# bluetoothd[1516]: profiles/audio/avdtp.c:avdtp_register_sep() sep 0x8cc378 registered: type:0 codec:2 seid:1bluetoothd[1516]: src/adapter.c:adapter_service_add() /org/bluez/hci0bluetoothd[1516]: src/sdpd-service.c:add_record_to_server() adding record with handle 0x10003bluetoothd[1516]: src/sdpd-service.c:add_record_to_server() record pattern uuid 00000019-0000-1000-8000-00805f9bluetoothd[1516]: src/sdpd-service.c:add_record_to_server() record pattern uuid 00000100-0000-1000-8000-00805f9bluetoothd[1516]: src/sdpd-service.c:add_record_to_server() record pattern uuid 00001002-0000-1000-8000-00805f9bluetoothd[1516]: src/sdpd-service.c:add_record_to_server() record pattern uuid 0000110a-0000-1000-8000-00805f9bluetoothd[1516]: src/sdpd-service.c:add_record_to_server() record pattern uuid 0000110d-0000-1000-8000-00805f9bluetoothd[1516]: src/adapter.c:adapter_service_insert() /org/bluez/hci0bluetoothd[1516]: src/adapter.c:add_uuid() sending add uuid command for index 0bluetoothd[1516]: endpoint registered: sender=:1.3 path=/a2dp/mpeg24/source/1bluetoothd[1516]: src/adapter.c:dev_class_changed_callback() class: 0x080000bluetoothd[1516]: profiles/audio/avdtp.c:avdtp_register_sep() sep 0x8c63f0 registered: type:0 codec:0 seid:2bluetoothd[1516]: endpoint registered: sender=:1.3 path=/a2dp/sbc/source/1至此,再进入bluetoothctl 连接天猫精灵试试,首先输入devices命令打印出扫描到的设备信息,然后使用connect xx:xx:xx:xx:xx:xx连接上想要连接的蓝牙设备,连接成功后提示符会变成[连接的设备]样式,具体如下:
[bluetooth]#devicesdevice f1:22:33:1a:48:9b f1-22-33-1a-48-9bdevice c4:de:e2:df:e8:22 keep_cc_50200973device 34:29:ef:5b:d2:d3 34-29-ef-5b-d2-d3device e8:f5:63:87:03:9d mi band 3device b8:8c:29:87:72:c9 mideadevice 04:7f:0e:40:4a:bd beijing-eu5device cc:b5:d1:fb:45:3a smi-m14device 45:b8:cc:87:53:f8 45-b8-cc-87-53-f8device 84:7c:9b:6d:ff:11 midea_db_2943device 10:9e:3a:92:2e:da �方�糖(80:7a)[bluetooth]#connect 10:9e:3a:92:2e:da...[�方�糖(80:7a)]# listcontroller 2c:c3:e6:67:4d:3c bluez 5.50 [default]## 退出bluetoothctl程序[�方�糖(80:7a)]# exit蓝牙音频播放
因为此处我们使用alsa-utils工具集中的 aplay 进行音频播放测试,所以仅仅支持pcm和wav等音频格式,要是想直接播放 mp3 或者 mp4 等格式音频文件需要借助mpd或者ffmpeg等软件。
上一步我们在bluetoothctl中打印扫描并连接了蓝牙音箱,蓝牙音箱的设备地址如下:[bluetooth]#devicesdevice f1:22:33:1a:48:9b f1-22-33-1a-48-9bdevice c4:de:e2:df:e8:22 keep_cc_50200973device 34:29:ef:5b:d2:d3 34-29-ef-5b-d2-d3device e8:f5:63:87:03:9d mi band 3device b8:8c:29:87:72:c9 mideadevice 04:7f:0e:40:4a:bd beijing-eu5device cc:b5:d1:fb:45:3a smi-m14device 45:b8:cc:87:53:f8 45-b8-cc-87-53-f8device 84:7c:9b:6d:ff:11 midea_db_2943device 10:9e:3a:92:2e:da �方�糖(80:7a)根据上面信息我们可以看到天猫精灵方糖的蓝牙设备地址是10:9e:3a:92:2e:da ,所以我们可以使用如下命令进行音频播放测试:
root@ok113i:/# aplay -d bluealsa:dev=10:9e:3a:92:2e:da ./wishforyou.wavplaying wave './wishforyou.wav' : signed 16 bit little endian, rate 44100 hz, stereobluetoothd[1516]: profiles/audio/transport.c:media_owner_create() owner created: sender=:1.3bluetoothd[1516]: profiles/audio/avdtp.c:avdtp_ref() 0x8cf3c0: ref=2bluetoothd[1516]: profiles/audio/a2dp.c:a2dp_sep_lock() sep 0x8c63f0 lockedbluetoothd[1516]: profiles/audio/avdtp.c:avdtp_ref() 0x8cf3c0: ref=3bluetoothd[1516]: profiles/audio/a2dp.c:setup_ref() 0x8ccad0: ref=1bluetoothd[1516]: profiles/audio/transport.c:transport_set_state() state changed /org/bluez/hci0/dev_10_9e_3a_92_2e_da/fd0: transport_state_idle - > transport_state_requestingbluetoothd[1516]: profiles/audio/transport.c:media_request_create() request created: method=acquire id=4bluetoothd[1516]: profiles/audio/transport.c:media_owner_add() owner :1.3 request acquirebluetoothd[1516]: profiles/audio/transport.c:media_transport_set_owner() transport /org/bluez/hci0/dev_10_9e_3a[ 1901.267056] rtk_btcoex: update_profile_state: btrtl_coex.prof4_92_2e_da/fd0 owner :1.3blueto[ 1901.276315] rtk_btcoex: update_profile_state: btrtl_coex.profile_status = 4othd[1516]: profiles/audio/avdtp[ 1901.287222] rtk_btcoex: rtk_notify_profileinfo_to_fw: buffersize 5.c:session_cb() bluetoothd[151[ 1901.296656] rtk_btcoex: rtk_notify_profileinfo_to_fw: numberofhandles 16]: profiles/audio/avdtp.c:avdtp[ 1901.307101] rtk_btcoex: rtk_notify_profileinfo_to_fw: handle 0x0003_parse_resp() start request succ[ 1901.316801] rtk_btcoex: rtk_notify_profileinfo_to_fw: profile_bitmap 0x04eededbluetoothd[1516]: profile[ 1901.327316] rtk_btcoex: rtk_notify_profileinfo_to_fw: profile_status 0x04s/audio/a2dp.c:start_cfm() sourc[ 1901.337472] rtk_btcoex: rtk_vendor_cmd_to_fw: opcode 0xfc19e 0x8c63f0: start_cfmbluetooth[ 1901.346663] rtk_btcoex: length 629d[1516]: /org/bluez/hci0/dev_10_[ 1901.353083] rtk_btcoex: rtp: v 2, cc 0, pt 969e_3a_92_2e_da/fd0: fd(20) ready[ 1901.360767] rtk_btcoex: syncword: 9cbluetoothd[1516]: profiles/aud[ 1901.367663] rtk_btcoex: freq 48khzio/transport.c:media_owner_remov[ 1901.374144] rtk_btcoex: blocks 16e() owner :1.3 request acquire[ 1901.380646] rtk_btcoex: channel mode joint_stereobluetoothd[1516]: profiles/audio[ 1901.388829] rtk_btcoex: allocation method loudness/transport.c:transport_set_state[ 1901.396877] rtk_btcoex: subbands 8() state changed /org/bluez/hci0[ 1901.403488] rtk_btcoex: bitpool 32/dev_10_9e_3a_92_2e_da/fd0: tran[ 1901.410192] rtk_btcoex: rtk_vendor_cmd_to_fw: opcode 0xfc51sport_state_requesting - > transport_state_activebluetoothd[1516]: profiles/audio/a2dp.c:setup_unref() 0x8ccad0: ref=0bluetoothd[1516]: profiles/audio/a2dp.c:setup_free() 0x8ccad0bluetoothd[1516]: profiles/audio/avdtp.c:avdtp_unref() 0x8cf3c0: ref=2bluetoothd[1516]: profiles/audio/avdtp.c:avdtp_sep_set_state() stream state changed: open - > streamingbluetoothd[1516]: profiles/audio/sink.c:sink_set_state() state changed /org/bluez/hci0/dev_10_9e_3a_92_2e_da: sink_state_connected - > sink_state_playingbluetoothd[1516]: profiles/audio/transport.c:transport_update_playing() /org/bluez/hci0/dev_10_9e_3a_92_2e_da/fd0 state=transport_state_active playing=1[ 1902.124926] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 20[ 1903.164933] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 22[ 1904.204932] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 21[ 1905.244932] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 14[ 1906.284931] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 26[ 1907.324939] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 18[ 1908.364936] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 18[ 1909.404933] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 20[ 1910.444937] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 13[ 1911.484925] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 16[ 1912.524927] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 14[ 1913.564933] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 13[ 1914.604934] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 10[ 1915.644932] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 7[ 1916.684940] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 8[ 1917.724923] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 9[ 1918.764925] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 15[ 1919.804933] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 21[ 1920.844937] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 21[ 1921.884941] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 27[ 1922.924932] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 20[ 1923.964933] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 16[ 1925.004927] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 19[ 1926.044934] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 31[ 1927.084937] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 22[ 1928.124936] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 31[ 1929.164931] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 32[ 1930.204929] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 18[ 1931.244931] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 36[ 1932.284931] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 24[ 1933.324936] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 21[ 1934.364932] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 20[ 1935.404930] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 11[ 1936.444934] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 15[ 1937.484928] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 17[ 1938.524946] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 20[ 1939.564928] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 13[ 1940.604935] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 19[ 1941.644929] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 16[ 1942.684932] rtk_btcoex: count_a2dp_packet_timeout: a2dp_packet_count 28不出意外的话可以听到播放的歌曲声音了。
串联电容器为啥不适用在高压电路?
微波网络的分析方法
铅酸电池充电时间_铅酸电池充电注意事项
空气质量监测站促使化工产业绿色转型
全球航班哪家强,空中WiFi业务发展详解
飞凌OK113i-C全志T113-i开发板rtl8723du WIFI功能测试及蓝牙驱动移植
超声波风速风向传感器有哪些优势
比亚迪全年计划销售12万台,新能源力拔头筹
利用混合信号FPGA推动临床医疗应用设备的发展
新一代微控制器的时代之tron
第三届数字中国建设峰会将在福建福州举办
什么是环绕立体声
直流伺服电机在日常工作中有什么保护措施
苹果将在2021年推出2或3款新的充电器
采用与非门CD4011构成的湿度控制器电路设计
工业机器人将成为新一代工业生产的重要基础
鸿蒙OS登陆其他手机厂商可能性正在上升
智能门锁 手机手电筒20秒就可以充满电!!
工业物联网新型实训系统由什么组成?如何实现?
全固态电视发射机中的高性能开关电源设计