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/rfcomm0
dispositivo 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 rfcomm
ainda suportar o /etc/bluetooth/rfcomm.conf
arquivo e você tiver as informações de endereço e canal para /dev/rfcomm0
gravaçã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.conf
arquivo. Pode ser que você tenha sempre que usar a forma completa do rfcomm bind
comando para configurar suas ligações. Você pode querer adicionar esses comandos /etc/rc.local
ou 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.conf
arquivo. Mas pelo menos o rfcomm
comando 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.