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
Con lo cual 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
Para recibir 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.