Intereting Posts
lxde: активное окно в lxpanel Плагин панели задач (список окон) неотличим от других (неактивных) Почему этот приращение для цикла возвращает плохую переменную? Как я рекурсивно ретранслировать через .gz-файлы? Получение только определенных данных на основе имени в текстовом файле dowload find binary, случайно удаленный / usr / bin / find двоичный файл Запустите файл .sh вместо его открытия. __git_ps1 (текущая ветка) в приглашении bash всегда устарела Почему этот скрипт работает в терминале, но не из файла? Создание папок для определенных элементов в таблице монтирование на debian Как настроить разные сеансы для разных пользователей? Преобразование загрузки BIOS в UEFI в существующей Linux-установке Установка LUN в AIX Объединение содержимого двух файлов со сравнением содержимого столбца где может быть мое дисковое пространство, если оно не является разреженным, удаленным или скрытым точкой монтирования

_Robust_ bluetooth последовательный порт / tty

Мне удалось создать и подключиться к консоли с помощью bluetooth, как описано во многих справочных руководствах по Q & A и т. Д., Найденных с помощью поиска в Google.

Вкратце, в режиме sudo,

/usr/sbin/hciconfig hci0 piscan /usr/bin/sdptool add --channel=3 SP /usr/bin/rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 9600 vt100 

Это хорошо и хорошо, если соединение Bluetooth стабильно.

Мой вопрос заключается в том, как сделать это более надежным для системы без заголовка (малина pi). Если соединение Bluetooth потеряно, мне приходится перезагружать систему без заголовка. В системе может быть несколько (неконкурентных) пользователей, и неизбежно, что один из пользователей выйдет с клиентским устройством bluetooth, не выйдя первым, оставив следующего пользователя не в состоянии войти в систему!

Небольшое редактирование: возможный уродливый workaroud будет следить за отключенными соединениями, а затем убивать / перезапускать соответствующие процессы. Не уверен, что лучший способ сделать это (не уверен, что правильные процессы для убийства (после убийства rfcomm, новые соединения не могут быть сделаны)), ни правильная вещь для мониторинга (tty и / или bluetooth отключается?)!

Хорошо, я сам придумал решение – возможно, это не оптимально, так что комментарии и советы оценены.

Следуя из моего «легкого редактирования», я написал сценарий для мониторинга соединения rfcomm, и если Bluetooth отключен, но tty все еще подключен, а затем уничтожьте процессы на устройстве:

check_rfcomm

 rfcomm show /dev/rfcomm0 2>/dev/null | grep "channel 3 closed" | grep "tty-attached" if [ $? -eq 0 ]; then kill -9 `lsof -t /dev/rfcomm0` fi 

Затем я добавил скрипт к crontab:

 * * * * * /usr/local/bin/check_rfcomm >>/var/log/check_rfcomm.log 2>&1 

Кажется, работает, но с минимальным тестированием. Не уверен, насколько он прочен!