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 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
Luego llamo 'escuchar' con rfcomm:
rfcomm listen /dev/rfcomm0 22
que bloquea
Waiting for connection on channel 22
Aparentemente, rfcomm creará / dev / rfcomm0 luego de 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 con éxito 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. Usé 'sdptool browse' en mi dispositivo local y en el dispositivo Android para asegurarme de que no haya conflictos de canales RFCOMM.
Los pasos a continuación funcionaron para mí:
Primero tienes que emparejar los dispositivos. El emparejamiento es relativamente fácil. Llamaré al cliente (que comienza a hablar) y al servidor (que responde)
Debe configurar el servidor antes: Lado del servidor (como root):
Lado del cliente (como root):
Ahora para abrir una terminal en serie en el cliente:
Comentarios:
Cuando llame al último comando rfcomm connect ... en el cliente, se
/dev/rfcomm0
creará un dispositivo y se asociará al servidor/dev/recomm0
. Esto representa el enlace en serie entre ambosEl último comando del servidor:
rfcomm watch
.... escuchará las conexiones entrantes. En la conexión perdida, el comando reiniciará un nuevo estado de 'escucha'.fuente
--compat
opción especial ; de lo contrario, agregar un SP puede fallar. Ver aquí . Ajuste / modifique sus scripts de inicio de inicio systemd / initd para que estén--compat
allí.Resolví esto con una ligera variación de los comandos de Pris. Déles una oportunidad si alguien todavía tiene problemas para configurar una conexión rfcomm.
Esto ^ asegura que está comenzando con una pizarra limpia cada vez que intenta configurar una conexión.
Este número de canal debe ser diferente de cualquier canal asignado actualmente.
(OPCIONAL) Para verificar canales:
No estoy seguro de por qué se necesita este próximo comando, pero funcionó para mí.
Luego, para escuchar las conexiones entrantes:
NOTA: la dirección bt MAC en /etc/bluetooth/rfcomm.conf pero sea la bt MAC de su teléfono. Además, el canal en este archivo debe ser el mismo que el elegido para a_channel_ #.
Una vez que hice todo esto, utilicé un emulador de terminal bt en mi teléfono para verificarlo todo.
fuente
He probado diferentes herramientas de bluetooth y ha sido difícil encontrar la secuencia correcta de comandos para conectar e intercambiar datos con un módulo bluetooth. Intente usar rfcomm y minicom:
Este es mi /etc/bluetooth/rfcomm.conf
Escanear en busca de dispositivos bluetooth:
Enlazar usando rfcomm
NB: el enlace 0 se refiere al número de dispositivo 0 (rfcomm0) y 1 es el canal.
Luego use minicom con sudo y guarde una configuración en la que especifique la velocidad en baudios y el puerto. Puedes encontrar más información aquí .
fuente