gpt4 book ai didi

linux - 低功耗蓝牙 : Android Gatt-Client connect to Linux Gatt Server

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:45 51 4
gpt4 key购买 nike

我尝试通过蓝牙低功耗 GATT 模式将 android 连接到 linux。

Bluez 中有一个示例代码:btgatt-server.c ,我用它作为服务器。

Android 端为 Android official example:Connecting to a GATT Server .也就是说,使用函数 BluetoothDevice::connectGatt(Context context, boolean autoConnect, BluetoothGattCallback callback)。

运行后,Android部分返回连接成功,(BluetoothGattCallback::onConnectionStateChange的参数为STATE_CONNECTED),但linux(btgatt-server)中的程序没有得到任何响应,仍然阻塞在等待接受。(第 485 行)。

我还使用了另一个示例代码:l2cap-ble.c ,结果完全一样。

谁能帮帮我?我的目标是:连接后,linux gatt 服务器会向 Android 发送数据。然后断开连接。

非常感谢。

最佳答案

我刚刚遇到了同样的问题。

这似乎是 Android 和 Broadcom 蓝牙模块发生的错误。 Android 以某种方式连接到错误的 l2cap channel 。

解决方法是在广告中明确禁用 BR/EDR 支持。

google 上的错误报告和#8 中的解决方案可以找到here ,对帮助我的提示的引用:

I have obtained information from Broadcom regarding this bug and I don't think its a bug on their part. If one does not specifically set the 'BR/EDR not supported' bit in the advertisement (bit 2), the Broadcom stack will use BR/EDR and BTLE. Changing the leading advertisement package from 020102 to 020106 solved the problem.

使用 bluez btmgmt 在设备 hci0 上配置广告,我发出以下命令:

btmgmt -i hci0 power off 
btmgmt -i hci0 le on
btmgmt -i hci0 connectable on
btmgmt -i hci0 bredr off # Disables BR/EDR !
btmgmt -i hci0 advertising on
btmgmt -i hci0 power on

启动 bluez btgatt-server 示例:

btgatt-server -i hci0 -s low -t public -r -v

关于linux - 低功耗蓝牙 : Android Gatt-Client connect to Linux Gatt Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27552644/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com