GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo conectar y enviar datos a un puerto serie Bluetooth en Linux?

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 núcleo 3.6. Puedo emparejar con éxito el dispositivo 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

Entonces llamo a 'escuchar' con rfcomm:

rfcomm listen /dev/rfcomm0 22

que bloquea en

Waiting for connection on channel 22

Aparentemente, rfcomm creará /dev/rfcomm0 en 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 sincronizar 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 probar. Utilicé 'sdptool browser' en mi dispositivo local y en el dispositivo Android para asegurarme de que no haya conflictos de canales RFCOMM.

Respuesta aceptada:

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

(es posible que este paso no haga 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 ícono de la bandeja del sistema bluetooth).

Active el bluetooth en su dispositivo Android. Use Android para emparejar con el adaptador (no pude emparejar al revés desde Linux). Aparecerá un cuadro de diálogo pidiéndole una clave. Introduce el PIN que quieras. 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 escucha 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 Google Play Store), aunque cualquier aplicación similar debería funcionar. Abra BlueTerm, vaya a opciones> Conectar dispositivo:seleccione el adaptador emparejado.

Relacionado:Freebsd:¿cómo iniciar FreeBSD en modo consola?

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 cosas que aparecen a medida que escribe abriendo una nueva terminal y haciendo algo como:

cat /dev/rfcomm0

Linux
  1. Cómo eliminar de forma segura y permanente sus datos en Linux

  2. ¿Cómo enviar datos a un puerto serie y ver alguna respuesta?

  3. Linux – ¿Puerto serie Raspberrypi?

  4. Linux:¿cómo encontrar procesos usando el puerto serie?

  5. DAEMON Sync:sincroniza datos de Linux a dispositivos Android e iOS

Cómo hacer un escaneo de puertos en Linux

Cómo usar la terminal de Linux en Android

Cómo hacer una copia de seguridad y restaurar datos usando Ristic en Linux

Cómo encontrar y cerrar puertos abiertos en Linux

Cómo conectar y compartir datos entre dos sistemas Linux

Cómo y por qué usar Linux para instalar Telnet