O dispositivo RFCOMM parece estar ausente (dev/rfcomm0)

O dispositivo RFCOMM parece estar ausente (dev/rfcomm0)

Estou tentando enviar e receber comandos seriais via bluetooth. Eu instalei a biblioteca pyBluez. O problema é que, embora o rfcomm.conf exista, não há rfcomm0 no diretório /dev/. Eu reiniciei, mas nenhuma alteração.

Se eu executar o seguinte, recebo um erro de permissão negada.

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

Por que o rfcomm não é adicionado automaticamente a/dev depois que o módulo usb bluetooth é conectado? O módulo Bluetooth é compatível e posso digitalizar e encontrar dispositivos via linha de comando. Bluez e bluez-utils já foram instalados.

Responder1

Mesmo que o serviço Bluetooth fosse iniciado, o /dev/rfcomm0dispositivo não apareceria automaticamente.

No mínimo, o subsistema Bluetooth precisaria saber o endereço do dispositivo Bluetooth e o canal nele contido, para que um /dev/rfcomm*nome de dispositivo específico possa ser vinculado a uma combinação específica de dispositivo Bluetooth + canal.

Você pode usar rfcomm bind 0 <bdaddr> [channel]para fazer a ligação para /dev/rfcomm0. Se você não especificar o número do canal, o canal 1 será usado por padrão. Se a sua versão rfcommainda suportar o /etc/bluetooth/rfcomm.confarquivo e você tiver as informações de endereço e canal para /dev/rfcomm0gravação nele, poderá omitir as informações de endereço e canal do comando - mas ainda precisará usar o comando para fazer a ligação.

Versões mais recentes das ferramentas BlueZ não parecem mais documentar o /etc/bluetooth/rfcomm.confarquivo. Pode ser que você tenha sempre que usar a forma completa do rfcomm bindcomando para configurar suas ligações. Você pode querer adicionar esses comandos /etc/rc.localou algum script de inicialização personalizado, para fazê-los executar automaticamente no momento da inicialização, pois as associações não persistirão durante uma reinicialização.

Parece que a última grande reconstrução dos componentes internos do BlueZ nos custou alguns dos recursos relacionados ao RFCOMM, como o /etc/bluetooth/rfcomm.confarquivo. Mas pelo menos o rfcommcomando ainda está disponível e pode fazer o trabalho.

Responder2

Por que isso não é feito automaticamente? Primeiro, o serviço bluetooth precisa iniciar um daemon e se ele não estiver em uma listagem init, você terá que entrar no terminal e iniciá-lo manualmente até reconfigurar a listagem init para incluí-lo.

A razão para isso é permitir que você teste sua configuração antes de se comprometer a tornar tudo automático no computador. O raciocínio por trás disso é baseado nos conceitos do Unix de como um sistema operacional deve funcionar, como os usuários e grupos recebem direitos de comunicação e assim por diante.

informação relacionada