¿Cómo me conecto y envío datos a un puerto serie bluetooth en Linux?

Pregunta:

Estoy tratando de configurar un puerto serie virtual a través de un adaptador USB-Bluetooth en Linux y enviarle un mensaje a través de un dispositivo Android. Estoy en el kernel 3.6. Puedo emparejarme con el dispositivo con éxito usando gnome-bluetooth y también puedo enviarle archivos.

Para configurar el puerto serie, primero agrego un canal con un perfil SP a mi adaptador:

sdptool add --channel=22 SP

Luego llamo a 'escuchar' con rfcomm:

rfcomm listen /dev/rfcomm0 22

que bloquea en

Waiting for connection on channel 22

Aparentemente, rfcomm creará / dev / rfcomm0 tras una conexión exitosa. Una vez que eso suceda, me gustaría usar algo como cutecom para enviar mensajes de ida y vuelta al dispositivo conectado.

En mi dispositivo Android, abro un terminal Bluetooth SPP (hay varios, probé algunos diferentes) e intento conectarme. Todos fallan.

Dado que puedo emparejar correctamente y enviar archivos sin ningún problema, sé que el emparejamiento y la comunicación por bluetooth funcionan.

No estoy muy seguro de qué más puedo intentar. Usé 'sdptool browse' en mi dispositivo local y en el dispositivo Android para asegurarme de que no haya conflictos de canales RFCOMM.

Respuesta:

Parece que he conseguido que esto funcione ahora. Bluetooth parece un poco delicado. Estoy recapitulando mis pasos por completo en caso de que alguien más lo encuentre útil (aunque es más o menos lo que intenté inicialmente). Esto es para Android JB (4.2.2) en un Nexus 4 y Arch Linux 3.6.7-1, con bluez 4.101 en Gnome 3.6 (con gnome-bluetooth).

(Este paso puede no hacer nada útil) Apague Bluetooth en Android y desconecte su Adaptador USB / Bluetooth de su máquina Linux (o si tiene uno incorporado, reinícielo usando hcitool devname reset)

Conecte / encienda su adaptador bluetooth en Linux. Asegúrese de que su adaptador esté visible (se puede configurar en gnome-bluetooth; debería ver un icono en la bandeja del sistema bluetooth).

Encienda el bluetooth en su dispositivo Android. Use Android para emparejar el adaptador (no pude emparejar al revés desde Linux). Aparecerá un cuadro de diálogo pidiéndole una clave. Ingrese el PIN que desee. Gnome debería mostrar una notificación pidiéndole una clave; ingrese el mismo PIN que ingresó anteriormente. Su dispositivo Android y la clave deben estar emparejados en este punto.

En Linux, abra una terminal y verifique qué servicios bluetooth están disponibles escribiendo

sdptool browse local

Si ya tiene un servicio de puerto serie, tome nota de qué canal es. Si no lo hace, puede agregar el servicio:

sdptool add --channel=22 SP

Ahora escuche en este canal usando rfcomm:

sudo rfcomm listen /dev/rfcomm0 22

rfcomm se bloqueará, escuchando una conexión con un mensaje como

Waiting for connection on channel 22

De vuelta en Android, utilicé la aplicación BlueTerm ( http://pymasde.es/blueterm/ , también disponible gratuitamente en la tienda de Google Play) aunque cualquier aplicación similar debería funcionar. Abra BlueTerm, vaya a opciones> Conectar dispositivo: seleccione el adaptador emparejado.

Con suerte, la aplicación pudo conectarse. Verá una verificación adicional en la terminal donde bloqueó la escucha con un mensaje como:

Waiting for connection on channel 22
Connection from 22:22:22:22:22:22 to /dev/rfcomm0
Press CTRL-C for hangup

Todo lo que escriba en la aplicación BlueTerm debe ir a / dev / rfcomm0. Puede ver que aparecen cosas a medida que escribe abriendo una nueva terminal y haciendo algo como:

cat /dev/rfcomm0

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım