Я пытаюсь соединиться с автомобильным 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]
/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, но это работает для меня, если у вас есть какие-либо другие комментарии или предложения, пожалуйста, дайте мне знать.
Комментариев нет:
Отправить комментарий