Устройство RFCOMM, похоже, отсутствует (dev/rfcomm0)

Устройство RFCOMM, похоже, отсутствует (dev/rfcomm0)

Я пытаюсь отправлять и получать последовательные команды через Bluetooth. Я установил библиотеку pyBluez. Проблема в том, что хотя rfcomm.conf существует, в каталоге /dev/ нет rfcomm0. Я перезагрузил, но ничего не изменилось.

Если я запущу следующее, то получу ошибку «Отказано в доступе».

sudo echo "This is a test" > /dev/rfcomm0

Почему rfcomm не добавляется автоматически в /dev после подключения модуля usb bluetooth? Модуль Bluetooth совместим, и я могу сканировать и находить устройства через командную строку. Bluez и bluez-utils уже установлены.

решение1

Даже если служба Bluetooth была запущена, /dev/rfcomm0устройство не появилось бы автоматически.

Как минимум, подсистеме Bluetooth необходимо знать адрес устройства Bluetooth и канал на нем, чтобы /dev/rfcomm*можно было связать конкретное имя устройства с конкретной комбинацией устройства Bluetooth+канала.

Вы можете использовать rfcomm bind 0 <bdaddr> [channel]для создания привязки для /dev/rfcomm0. Если вы не укажете номер канала, по умолчанию будет использоваться канал 1. Если ваша версия rfcommвсе еще поддерживает /etc/bluetooth/rfcomm.confфайл и у вас есть адрес и информация о канале для /dev/rfcomm0записи в него, то вы можете опустить адрес и информацию о канале из команды - но вам все равно нужно будет использовать команду для создания привязки.

Новые версии инструментов BlueZ, похоже, больше не документируют файл /etc/bluetooth/rfcomm.conf. Возможно, вам придется всегда использовать полную форму команды rfcomm bindдля настройки привязок. Возможно, вы захотите добавить эти команды в /etc/rc.localкакой-нибудь пользовательский скрипт запуска, чтобы они автоматически выполнялись во время загрузки, поскольку ассоциации не сохранятся после перезагрузки.

Похоже, что последняя крупная перестройка внутренностей BlueZ стоила нам некоторых функций, связанных с RFCOMM, таких как /etc/bluetooth/rfcomm.confфайл. Но, по крайней мере, rfcommкоманда все еще доступна и может выполнять свою работу.

решение2

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

Причина этого в том, чтобы позволить вам протестировать вашу конфигурацию, прежде чем вы решите сделать все это автоматически на компьютере. Обоснование этого основано на концепциях Unix о том, как должна работать ОС, как пользователям и группам назначаются права на коммуникации и т. д.

Связанный контент