Aquí está mi manera de proceder para conectarme a un dispositivo Bluetooth HC-05 conectado a mi arduino. No necesita escribir un archivo como en la respuesta de Brian, pero la idea es similar. Lo probé con una configuración de velocidad en baudios de 9600 en el dispositivo HC-05.
Primer paso: emparejar el dispositivo y proporcionar el PIN
Traté de configurar desde la GUI el emparejamiento, pero no estaba funcionando. Aquí está la forma de proceder de la línea de comando que funcionó para mí. Primero, emparejemos el dispositivo desde la línea de comandos. Correr :
sudo bluetoothctl
Asegúrese de que se inicie el dispositivo bluetooth:
# power on
Ahora iniciamos el agente que "recordará el pin" para rfcomm:
# agent on
Ahora habilitamos el modo de escaneo para encontrar nuestro dispositivo y poder emparejarlo:
# scan on
Después de unos segundos, debería aparecer el MAC de su dispositivo. Lo denotaremos como después. Luego, solo necesita emparejar el dispositivo de esta manera:
# pair <MAC>
Se le pedirá que escriba un PIN, de manera predeterminada está 1234en mi dispositivo HC-05. Puede observar que es posible que su dispositivo se conecte y luego se desconecte con un mensaje como ese:
[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no
Pero no es un problema. No necesita conectarse, por lo que ahora puede salir bluetoothctlescribiendo Ctrl + D.
Proporcionar un archivo utilizable /dev/rfcomm0
En primer lugar, asegúrese de no haber ejecutado ningún comando rfcomm antes. De hecho, incluso si cierra con Ctrl+Cel programa, todavía se ejecuta en segundo plano.
sudo killall rfcomm
Ahora puedes correr
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Tenga en cuenta que si intenta escribir en la entrada de rfcom, no pasó nada. Necesitas usar otro programa.
Tercer y último paso: escriba en el /dev/rfcomm0
Hay varias formas de escribir en el archivo, pero tenga en cuenta que todas las formas de proceder implican la raíz. Describo aquí varios programas que pueden hacer eso (para que pueda elegir dependiendo de su necesidad o de lo que esté instalado en su sistema, por ejemplo). Si olvida ejecutar el programa como root, puede tener un error:
stty: /dev/rfcomm0: Device or resource busy
Primera opción: conectarse usando screen
La pantalla es una herramienta muy poderosa. Puede instalarlo (siempre es útil) usando:
sudo apt-get install screen
y luego correr
sudo screen /dev/rfcomm0
Si olvida ejecutarlo como root, recibirá un error como Aleksander obtuvo:
[screen is terminating]
Para salir, escriba "(CTRL + A) +: salir"
Segunda opción: conectarse usando minicom
Instalarlo
sudo apt-get install minicom
y luego correr
sudo minicom -D /dev/rfcomm0
Si olvida ejecutarlo como root, tendrá un error como
minicom: cannot open /dev/rfcomm0: Device or resource busy
Para salir, escriba "Ctrl + A X".
Tercera opción: miniterm de script de Python
Descargue este script y ejecute:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Escribir directamente en el archivo
Primero ejecute el siguiente comando (9600 es la velocidad en baudios):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Ahora puede escribir en este archivo como en un archivo clásico:
sudo su -c "echo 'message' > /dev/rfcomm0"
y, en teoría, lee de ella usando
sudo tail -f /dev/rfcomm0
Pero no sé leer no funciona, si alguno de ustedes tiene una idea ...