Я пытаюсь настроить виртуальный последовательный порт через адаптер USB-Bluetooth в Linux и отправить ему сообщение через устройство Android. Я на ядре 3.6. Я могу подключиться к устройству успешно используя gnome-bluetooth, а также могу отправлять на него файлы.
Для настройки последовательного порта я сначала добавляю канал с профилем SP в мой адаптер:
sdptool add --channel=22 SP
Затем я вызываю 'listen' с помощью rfcomm:
rfcomm listen /dev/rfcomm0 22
какие блоки на
Waiting for connection on channel 22
Очевидно, rfcomm создаст / dev / rfcomm0 при успешном соединении. Как только это произойдет, я бы хотел использовать что-то вроде cutecom для отправки сообщений туда и обратно на подключенное устройство.
На моем устройстве Android я открываю Bluetooth SPP-терминал (их там несколько, я пробовал несколько разных) и пытаюсь подключиться. Все они терпят неудачу.
Учитывая, что я могу успешно выполнить сопряжение и отправлять файлы без каких-либо проблем, я знаю, что соединение Bluetooth и связь работают.
Я не слишком уверен, что еще я могу попробовать. Я использовал «sdptool browse» на своем локальном устройстве и устройстве Android, чтобы убедиться в отсутствии конфликтов каналов RFCOMM.
Следующие шаги работали на меня:
Во-первых, вы должны выполнить сопряжение устройств. Сопряжение относительно легко. Я позвоню клиенту (который начинает говорить) и серверу (который отвечает)
Вы должны настроить сервер до: Серверная сторона (от имени root):
Клиентская сторона (как root):
Теперь, чтобы открыть последовательный терминал на клиенте:
Комментарии:
Когда вы вызываете последнюю команду rfcomm connect ... на клиенте, устройство
/dev/rfcomm0
будет создано и связано с сервером/dev/recomm0
. Это представляет собой последовательную связь между обоимиПоследняя серверная команда:
rfcomm watch
.... будет прослушивать входящие соединения. В случае потери соединения команда перезапустит новое состояние прослушивания.источник
--compat
опция, иначе добавление SP может завершиться неудачно. Смотрите здесь . Так что настройте / исправьте ваши сценарии запуска systemd / initd, чтобы они--compat
там были.Я решил это с небольшим изменением команд Приса. Сделайте это, если у кого-то все еще есть проблемы с установлением соединения rfcomm.
Это ^ гарантирует, что вы начинаете с чистого листа при каждой попытке установить соединение.
Этот номер канала должен отличаться от любого назначенного канала.
(НЕОБЯЗАТЕЛЬНО) Чтобы проверить каналы:
Я не уверен, зачем нужна следующая команда, но она сработала для меня.
Затем прослушать входящие соединения:
ПРИМЕЧАНИЕ: bt MAC-адрес в /etc/bluetooth/rfcomm.conf, но быть bt MAC вашего телефона. Также канал в этом файле должен быть таким же, как канал, выбранный для a_channel_ #.
Как только я сделал все это, я использовал эмулятор терминала BT на своем телефоне, чтобы проверить все это.
источник
Я пробовал разные инструменты Bluetooth, и было трудно найти правильную последовательность команд для подключения и обмена данными с модулем Bluetooth. Попробуйте использовать rfcomm и minicom:
Это мой /etc/bluetooth/rfcomm.conf
Сканирование для устройств Bluetooth:
Привязка с использованием rfcomm
Примечание: привязка 0 относится к устройству номер 0 (rfcomm0), а 1 - канал.
Затем используйте minicom с sudo и сохраните конфигурацию, в которой вы указываете скорость передачи данных и порт. Вы можете найти больше информации здесь .
источник