Cómo configurar el bluetooth en Linux con bluez y hcitool

Los dispositivos Bluetooth son bastante ubicuos hoy, se encuentran en casi todas partes, es una manera simple y barata de agregar conectividad inalámbrica a un dispositivo.

Un sistema Linux podría utilizar muchos protocolos como OBEX, A2DP, DUN, HID etc. etc. para interactuar con diferentes dispositivos para diferentes propósitos. Así que podemos conectar, sincronizar y administrar esos dispositivos bluetooth desde una PC con Linux, empecemos.

Configuración inicial

La mayoría de los adaptadores bluetoth están basados en USB y pueden configurarse con utilidades HCI, algunos dispositivos bluetooth como los adaptadores bluetooth Atheros pueden requerir firmware del dispositivo instalado en el sistema.

Para instalar los paquetes de software necesarios en Debian u otros derivados de Debian como Ubuntu, Linux Mint ejecute los comandos que se muestran a continuación.

sudo apt-get install bluetooth bluez bluez-tools rfkill rfcomm

El siguiente puede ser necesario para el correcto funcionamiento del adaptador bluetooth, es posible que desee reemplazar el paquete firmware-atheros con el paquete de firmware que coincida con su dispositivo como firmware-realtek.

sudo apt-get install bluez-firmware firmware-atheros

Ahora inicie el servicio bluetooth

sudo service bluetooth start

Exploración de dispositivos bluetooth

Antes de comenzar a escanear, asegúrese de que su dispositivo bluetooth esté encendido y no bloqueado, puede comprobarlo con el comando rfkill.

sudo rfkill list

Si el dispositivo bluetooth está bloqueado (bloqueo blando o duro), desbloquearlo con el comando rfkill nuevamente

sudo rfkill unblock bluetooth

Trae el dispositivo bluetooth con el comando hciconfig y comienza a escanear, asegúrate de que el bluetooth del dispositivo de destino esté encendido y sea detectable.

sudo hciconfig hci0 up
hcitool scan

Espere pocos momentos para completar el escaneo, los resultados serán algo como muestro abajo.

Scanning ... 
83:23:26:15:54:46 Mi-Nokia

Aquí es la dirección MAC bluetooth es 83:23:26:15:54:46 y Mi-Nokia es el nombre del dispositivo bluetooth, es decir, un teléfono Nokia.

Descubrimiento del servicio Bluetooth

Ahora que tenemos la dirección MAC de dispostivo bluetooth de destino, utilice el comando sdptool para saber qué servicios (como DUN, Audio manos libres) están disponibles en ese dispositivo de destino.

sdptool browse 83:23:26:15:54:46

Compruebe la salida del comando sdptool, es posible que desee filtrar el resultado con el comando grep.

sdptool browse 83:23:26:15:54:46 | grep 'Service Name:'

También puede utilizar la herramienta interactiva bluetoothctl para este propósito.

$ bluetoothctl [bluetooth]# info 83:23:26:15:54:46
Device 83:23:26:15:54:46
Name: My-Nokia
Alias: Nokia
Class: 0x580204
Icon: phone
Paired: yes
Trusted: yes
Blocked: no
Connected: no
LegacyPairing: no
UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb)
UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)

Ping a dispositivos bluetooth

Si el dispositivo de destino está presente, puede hacer ping con el comando l2ping, requiere privilegio de root

sudo l2ping <Target device MAC address>
 sudo l2ping 83:23:26:15:54:46 # Ejemplo

Conexión y emparejamiento del dispositivo

Conectando al dispositivo bluetooth con rfcomm, este comando requiere privilegio de root, así que use sudo

sudo rfcomm connect 

Un ejemplo de conexión del bluetooth al dispositivo hci0 a un dispositivo cliente en el canal 2

sudo rfcomm connect hci0 83:23:26:15:54:46 2

El dispositivo /phone le pedirá que acepte esta solicitud de conexión. Ahora el dispositivo cliente bluetooth debe estar disponible como /dev/rfcomm0

Ahora puede enviar un archivo a través de OBEX/OPP a un dispositivo bluetooth remoto, el primer comando es un ejemplo genérico.

sudo bt-obex -p <Bluetooth remote device mac address> /path/a/archivo
 sudo bt-obex -p 83:23:26:15:54:46 ~/img/alguna_imagen.png

Ahora reciba algún archivo del dispositivo remoto, un ejemplo de servidor OBEX, primero inicie bt-obex en modo servidor escuchando la conexión Bluetooth.

bt-obex -s /path/a/directorio/salida

Reemplace la carpeta /path/a/directorio/salida  con una carpeta de su elección, como / tmp. Ahora envíe un archivo desde el dispositivo cliente bluetooth, es decir, un teléfono. El archivo enviado debe estar en la carpeta de salida bt-obex

Start a FTP session with bt-obex

sudo bt-obex -f <Remote device MAC address>

Conclusión

He probado los comandos anteriores con un Nokia 5230 y todas las funciones están funcionando bien, excepto el audio de manos libres. En el próximo tutorial sobre bluetoth voy a mostrar cómo configurar una conexión de acceso telefónico a través de bluetooth en Linux.

La gestión de dispositivos bluetooth podría ser aún más fácil con herramientas gráficas como bluedevil para escritorio KDE, Gnome-Bluetooth para escritorio Gnome o aplicaciones de uso general blueman de Gtk2. Así, ¿cuando estos comandos son útiles? Para los servidores, las máquinas accedidas vía SSH, o simplemente saber lo que está pasando detrás de la escena.

Si tiene alguna sugerencia o pregunta, simplemente deje un comentario, no olvide compartirlo con sus amigos.

 

2 opiniones en “Cómo configurar el bluetooth en Linux con bluez y hcitool”

Deja un comentario