Подключение к 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, но я не думаю, что это возможно

Другие вопросы по тегам