GOOGLE ADS

суббота, 30 апреля 2022 г.

Возникли трудности с сопряжением с устройством Bluetooth OBDII в Ubuntu

Я пытаюсь соединиться с автомобильным Bluetooth-устройством OBDII от Beaglebone Black под управлением Ubuntu Linux, и мне не очень повезло.

Сначала я смог настроить hci0 с помощью bluez-simple-agent, хотя он никогда не запрашивал у меня PIN-код. PIN-код для этого устройства должен быть «1234». Теперь, когда я запускаю bluez-simple-agent, я получаю следующее:

ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo bluez-simple-agent hci0 00:0D:18:A0:4E:35
Creating device failed: org.bluez.Error.AlreadyExists: Already Exists

Что было бы хорошо, если бы оно работало, но когда я пытаюсь выполнить привязку с помощью rfcomm, я неоднократно получаю сообщение «Не удается подключить сокет RFCOMM: неверный обмен» (первый раз после перезапуска устройства), а затем «Не удается подключить сокет RFCOMM».: Отказ в соединении" каждый раз после этого.

Это мой файл /etc/bluetooth/rfcomm.conf:

rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 00:0D:18:A0:4E:35;
# RFCOMM channel for the connection
channel 16;
# Description of the connection
comment "OBDII";
}

И запуск «rfcomm bind 0» успешно создает устройство в /dev/rfcomm0:

rfcomm0: 00:0D:18:A0:4E:35 channel 16 clean 

Однако, пытаясь прочитать из /dev/rfcomm0, я получаю следующее:

ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo cat /dev/rfcomm0
cat: /dev/rfcomm0: Invalid exchange
ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo cat /dev/rfcomm0
cat: /dev/rfcomm0: Connection refused
ubuntu@ubuntu-armhf:/etc/bluetooth$

И после этого rfcomm возвращает это:

ubuntu@ubuntu-armhf:/etc/bluetooth$ rfcomm
rfcomm0: 00:0D:18:A0:4E:35 channel 16 closed

Я думаю, что использую правильный канал (16), основываясь на результате «записей sdptool».

ubuntu@ubuntu-armhf:/etc/bluetooth$ sudo sdptool records 00:0D:18:A0:4E:35 
...
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 16
Profile Descriptor List:
"Serial Port" (0x1101)
Version: 0x0100

Любая помощь будет принята с благодарностью, потому что на данный момент у меня нет идей.

Ссылки:


  • рфкомм

  • Вручную с помощью Bluetooth RFCOMM

  • Как настроить Bluetooth Последовательное соединение через Bluetooth

  • Устройство



Решение проблемы

Я знаю, что это немного поздно, но, поскольку я здесь, возможно, есть другие люди, которые борются с этим, поэтому я опубликую то, что сработало для меня, используя, как я полагаю, то же самое устройство (OBDII ELM327 Blue Connector).

[ИСПОЛЬЗОВАНИЕ BBB С DEBIAN WHEEZY]

  • У меня есть следующий файл rfcomm.conf под/etc/bluetooth/

  • rfcomm0 {
    bind yes;
    device AA:BB:CC:DD:EE:FF; # Remote device's MAC
    channel 16;
    comment "OBDII";
    }

  • # rfcomm connect rfcomm0

  • Каждый раз, когда BBB подключается к устройству, кажется, что он сохраняет свою конфигурацию в /var/lib/bluetooth/XX:XX:XX:XX:XX:XX(MAC-адрес ключа Bluetooth, полученный с помощью hcitool dev)

  • Что я делаю, чтобы убедиться, что он будет подключен в следующий раз, я удаляю все содержимое /var/lib/bluetooth/XX:XX:XX:XX:XX:XXпапки с заданием cron при загрузке, добавляя следующую строку в cron, используя crontrab -eкоманду " " на консоли

  • $ @reboot rm /var/lib/bluetooth/*

    Поэтому каждый раз, когда он снова загружается, я могу восстановить соединение с помощью команд Linux, когда это необходимо.

    Я знаю, что это немного сложно, и я не знаю, насколько хорошо или плохо удаление папки Bluetooth, но это работает для меня, если у вас есть какие-либо другие комментарии или предложения, пожалуйста, дайте мне знать.

    Комментариев нет:

    Отправить комментарий

    Laravel Datatable addColumn returns ID of one record only

    Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...