Подключение к Android 10 L2CAP IOException timeout Wii Balance Board
Задний план
Давным-давно мне было поручено создать приложение для Android для Wii Balance Board, и после некоторых проблем я обнаружил, что Android больше не поддерживает L2CAP. Дальнейшие исследования привели к пониманию того, что он был повторно добавлен в Android 10. С выходом Android 10 я пытался дать ему взлом.
Проблема
Итак, моя простая цель на данный момент - создать соединение с Wii Balance Board.
Мой подход к подключению:
Начать открытие
Добавить обнаруженные устройства bluetooth в список
Когда вы нажимаете на устройство, оно пытается открыть сокет как таковой:
bluetoothSocket = btDevice.createInsecureL2capChannel(port);
Как упоминалось на сайте WiiBrew, я использую значение psm 0x13 для ввода и 0x11 для вывода.
Затем я использую
bluetoothSocket.connect
и перейти к получению исключения IOException (ошибка тайм-аута)Я также пробовал использовать оба
createL2capChannel
а такжеcreateInsecureL2capChannel
с такими же результатамиМне удалось успешно подключиться к устройству, используя
btDevice.createBond()
а затем используя телефонный адрес BT в обратном направлении для.setpin()
а Wii Balance Board просто действует как "глупое" устройство ввода. (не уверен, нужно ли сопряжение / хорошая идея)
Вышеупомянутое представляет собой упрощенную схему того, как я пытаюсь подключиться. Я также пробовал использоватьBalanceBoard.java
из репозитория Fitscales Пола Бертона, обновляющего весь старый код Bluetooth, я снова получаю тайм-аут.
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 в качестве параметра конструктору сокета bluetooth, но я не думаю, что это возможно