Estoy intentando enviar y recibir comandos en serie a través de bluetooth. He instalado la biblioteca pyBluez. El problema es que mientras existe rfcomm.conf, no hay rfcomm0 en el directorio /dev/. Reinicié pero no hubo cambios.
Si ejecuto lo siguiente, aparece el error Permiso denegado.
sudo echo "This is a test" > /dev/rfcomm0
¿Por qué el rfcomm no se agrega automáticamente a /dev después de conectar el módulo bluetooth USB? El módulo Bluetooth es compatible y puedo escanear y encontrar dispositivos a través de la línea de comando. Bluez y bluez-utils ya estaban instalados.
Respuesta1
Incluso si se iniciara el servicio bluetooth, el /dev/rfcomm0
dispositivo no aparecería automáticamente.
Como mínimo, el subsistema Bluetooth necesitaría conocer la dirección del dispositivo Bluetooth y el canal que contiene, de modo que un /dev/rfcomm*
nombre de dispositivo particular pueda vincularse a una combinación particular de dispositivo Bluetooth+canal.
Puedes utilizarlo rfcomm bind 0 <bdaddr> [channel]
para hacer la encuadernación /dev/rfcomm0
. Si no especifica el número de canal, el canal 1 se utilizará de forma predeterminada. Si su versión de rfcomm
todavía admite el /etc/bluetooth/rfcomm.conf
archivo y tiene la dirección y la información del canal para /dev/rfcomm0
escribir en él, entonces puede omitir la dirección y la información del canal del comando, pero aún necesita usar el comando para realizar el enlace.
Las versiones más nuevas de las herramientas BlueZ ya no parecen documentar el /etc/bluetooth/rfcomm.conf
archivo. Es posible que tengas que usar siempre la forma completa del rfcomm bind
comando para configurar tus enlaces. Es posible que desee agregar estos comandos /etc/rc.local
o algún script de inicio personalizado para que se ejecuten automáticamente en el momento del arranque, ya que las asociaciones no persistirán durante el reinicio.
Parece que la última reconstrucción importante de los componentes internos de BlueZ nos costó algunas de las funciones relacionadas con RFCOMM, como el /etc/bluetooth/rfcomm.conf
archivo. Pero al menos el rfcomm
comando todavía está disponible y puede hacer el trabajo.
Respuesta2
¿Por qué no se hace esto automáticamente? Primero, el servicio bluetooth necesita iniciar un demonio y, si no está en una lista de inicio, debe ir a la terminal e iniciarlo manualmente hasta que reconfigure la lista de inicio para incluirlo.
El motivo de esto es permitirle probar su configuración antes de comprometerse a hacerla todo automática en la computadora. El razonamiento detrás de esto se basa en los conceptos de Unix sobre cómo debería funcionar un sistema operativo, cómo se asignan derechos a las comunicaciones a los usuarios y grupos, etc.