2

背景

很久以前,我的任务是为 Wii 平衡板制作一个 android 应用程序,经过一番折腾后,我发现 android 不再支持 L2CAP。更多的研究导致它被重新添加到 Android 10 中。随着 Android 10 的推出,我现在一直在尝试破解它。

问题

所以我现在的简单目标是与 Wii 平衡板建立连接。

我的连接方法是:

  • 开始发现

  • 将发现的蓝牙设备添加到列表

  • 当您单击设备时,它会尝试打开一个套接字,如下所示:

    bluetoothSocket = btDevice.createInsecureL2capChannel(port);

  • 正如WiiBrew网站上提到的,我使用 psm 值 0x13 作为输入,使用 0x11 作为输出。

  • 然后我使用bluetoothSocket.connect并继续接收 IOException(超时错误)

  • 我也尝试过使用两者createL2capChannelcreateInsecureL2capChannel获得相同的结果

  • 我能够成功地使用手机 BT 地址与设备配对btDevice.createBond(),然后向后使用手机 BT 地址.setpin(),Wii 平衡板只是充当“哑”输入设备。(不确定是否需要配对/好主意)

以上是我尝试连接的简化流程。我还尝试使用BalanceBoard.javaPaul Burton 的fitscales repo 更新所有旧蓝牙代码,但我仍然会超时。

4

1 回答 1

1

你看过 bt_stack 日志吗?

这是我尝试用 wiimote 打开套接字的过程:

04-05 12:25:04.949 E/bt_stack(4895): [ERROR:btif_sock_l2cap.cc(244)] SOCK_LIST: free(id = 4) - NO app_fd!
04-05 12:25:04.949 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=65535 cid=65:0
04-05 12:25:04.949 E/bt_l2cap(4895): L2CA_FreeLePSM: Invalid PSM=19 value!
04-05 12:25:40.141 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=1 cid=66:64
04-05 12:25:55.736 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=2 cid=67:65

我相信这就是问题所在,我只是一个新手,所以我不确定可以做些什么。我知道旧的连接方式将 fd 作为参数传递给蓝牙套接字构造函数,但我认为这不再可能了

于 2020-04-05T11:47:59.687 回答