Як підключити необроблений послідовний термінал до з'єднання Bluetooth?


10

Я намагаюся підключитися до Totalstation, який не пропонує драйвери Bluetooth. Оскільки я роблю це з чисто діагностичних причин, я хотів би побачити вихідний вихід із встановленого послідовного зв'язку.

Що мені потрібно зробити, щоб передати весь вихід з Bluetooth-з'єднання на термінал?


Ви робите Bluetooth-> Послідовний, Послідовний-> Bluetooth або двосторонній?
нанофарад

Totalstation Bluetooth <-> Ubuntu Bluetooth. Зважаючи на те, що тотальна станція має стандартну послідовну конфігурацію через USB, я підозрюю, що вона встановлює послідовне з'єднання через Bluetooth. Звичайно, я можу бути абсолютно невірним, і тоді відповідь, що я помиляюся, і Bluetooth використовує XYZ, цілком допустима.
Брайан Балсун-Стентон

З точки зору двостороннього доказування, мені вдалося встановити порожнє послідовне з'єднання через "екран", який викликає звуковий сигнал помилки на пристрої, коли натискаю клавішу на клавіатурі. Тому я підозрюю, що я на півдорозі, я просто не знаю, яка половина.
Брайан Балсун-Стентон

Чи можете ви скласти швидку схему? Я не можу зрозуміти, чи є це серійний або Bluetooth через серійний, а також хто передає дані куди. Просто зробіть це в GIMP або щось таке і завантажте його сюди
nanofarad

Працює дуже добре, але я стикаюся з деякими збоями з RFCOMM. Коли я підключаюся до екрана, деякі AT-послідовності вводяться автоматично "ATE1 E0" <RETURN> тричі. Через те, деякий "Вхід не вдався" з'являється на стороні Распі. Після цього я можу успішно увійти та використовувати термінальний сеанс без будь-яких подальших збоїв.
Коді

Відповіді:



12

1) Використовуйте hcitool scanдля пошуку адреси Mac пристрою.

Пристрій повинен бути встановлений у ведений режим з відомим штифтом. Якщо ви не використовуєте відомий штифт, ubuntu створює його, і ви, як правило, не встигнете ввести його в незграбні меню вашого вимірювального інструменту.

2) Я не зовсім впевнений, що це необхідно, але в меню bluetooth gui з'єднайте пристрій.

3) в /etc/bluetooth/rfcomm.conf

rfcomm0 {
        bind no;
        device 00:07:80:44:4F:37;
        channel 1;
        comment "Serial Port";
        }

Значення "прив'язувати ні" важливо, інакше воно буде намагатися автоматично прив'язувати, що представляє всілякі проблеми для фактичного доступу до пристрою (оскільки це досить вибагливо, коли його пов'язано)

4) sudo rfcomm connect 0

Якщо у вас є помилки, перезапустіть службу Bluetooth.

5) screen /dev/rfcomm0

Для дійсних послідовних команд, що передаються таким чином, зверніться до продавця та прошу.


3
Коли я намагаюся запустити "rfcomm connect 0", я отримую "пропущений параметр dev"
personwithpc

Ви правильно відредагували файл конф?
Брайан Балсун-Стентон

5
Спробуйте sudo rfcomm connect rfcomm0 00: 07: 80: 44: 4F: 37
elopio

@ oneloper @ elopia дуже простий. Це працювало для мене
ptetteh227

10

Ось мій спосіб перейти до підключення Bluetooth-пристрою HC-05, підключеного до мого ардуїно. Не потрібно писати файл, як у відповіді Брайана, але ідея схожа. Я тестував це з налаштуванням швидкості передачі 9600 бод на пристрої HC-05.

Перший крок: з'єднайте пристрій і введіть PIN-код

Я спробував налаштувати з GUI сполучення, але це не спрацювало. Ось спосіб командного рядка перейти, який працював на мене. Спочатку з’єднаємо пристрій з командного рядка. Виконати:

sudo bluetoothctl

Переконайтеся, що Bluetooth-пристрій запущено:

# power on

Тепер ми запускаємо агент, який "запам'ятає шпильку" для rfcomm:

# agent on

Тепер ми вмикаємо в режимі сканування знайти наш пристрій і зможемо з'єднати його:

# scan on

Через кілька секунд MAC вашого пристрою повинен з’явитися. Позначимо це як після. Потім вам просто потрібно спарити пристрій таким чином:

# pair <MAC>

Вам буде запропоновано ввести PIN-код, за замовчуванням він знаходиться 1234на моєму пристрої HC-05. Ви можете зауважити, що можливо підключити пристрій, а потім від'єднатись від такого повідомлення:

[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no

але це не проблема. Вам не потрібно підключатися, тому тепер ви можете вийти bluetoothctl, набравши текст Ctrl + D.

Надайте корисний файл /dev/rfcomm0

По-перше, будьте впевнені, що раніше ви не виконували жодної команди rfcomm. Дійсно, навіть якщо ви закриваєте Ctrl+Cпрограму, вона все одно працює у фоновому режимі.

sudo killall rfcomm

Тепер ви можете бігти

sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &

Зауважте, що якщо ви спробуєте написати на вході rfcom, нічого не сталося. Вам потрібно скористатися іншою програмою.

Третій і останній крок: запишіть у /dev/rfcomm0

Існує кілька способів запису у файл, але зауважте, що всі способи продовження включають root. Я описую тут кілька програм, які можуть це зробити (так що ви можете вибрати залежно від ваших потреб або, наприклад, що встановлено у вашій системі). Якщо ви забудете запустити програму як root, можливо, виникла помилка:

stty: /dev/rfcomm0: Device or resource busy

Перший варіант: підключення за допомогою screen

Екран - дуже потужний інструмент. Ви можете встановити його (це вже завжди корисно), використовуючи:

sudo apt-get install screen

а потім біжи

sudo screen /dev/rfcomm0

Якщо ви забудете запустити його як root, ви отримаєте помилку, на кшталт Aleksander:

[screen is terminating]

Щоб закрити його, введіть "(CTRL + A) +: вийти"

Другий варіант: підключення за допомогою minicom

Встановіть його

sudo apt-get install minicom

а потім біжи

sudo minicom -D /dev/rfcomm0

Якщо ви забудете запустити його як root, у вас виникне помилка на зразок

minicom: cannot open /dev/rfcomm0: Device or resource busy

Щоб закрити його, введіть "Ctrl + A X".

Третій варіант: мінітерм python script

Завантажте цей сценарій та запустіть:

chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0

Запишіть безпосередньо у файл

Спочатку запустіть таку команду (9600 - швидкість передачі даних):

sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

Тепер ви можете записати у цей файл, як у класичний файл:

sudo su -c "echo 'message' > /dev/rfcomm0"

і теоретично читати з нього, використовуючи

sudo tail -f /dev/rfcomm0

Але я не знаю, читання не працює, якщо хтось із вас має ідею ...


/def/rfcomm0повинно бути/dev/rfcomm0
тушкована квадратура
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.