Instalar bluetooth
sudo apt update && sudo apt install bluetooth
Ejecutar:
bluetoothctl default-agent pairable on devices
Si sale el mismo que hay que parear mejor olvidarlo:
remove F8:4D:89:25:92:89
Poner el dispositivo bluetooth a parear en modo “descubrible”. En mi caso unos airpods
scan on
Encontrar el ID del dispositivo
pair F8:4D:89:25:92:89
En futuras ocasiones:
bluetoothctl connect F8:4D:89:25:92:89
bluetooth bluez obexftp obexftpd bluetoothd
Requisitos:
Lo interesante de esta receta es poder enviar/recibir archivos sin tener que instalar KDE/Gnome y sus applets
1. Habilitar módulos del kernel
modprobe btusb
Creo que no hace falta, pero por si las moscas:
modprobe uhci_hcd ehci_hcd
2. Instalar paquetes:
aptitude update && aptitude install bluetooth obexftp obexpushd
Por si ascaso listo los paquetes que yo tengo instalados:
ii bluetooth 4.42-2 Bluetooth support ii bluez 4.42-2 Bluetooth tools and daemons ii bluez-alsa 4.42-2 Bluetooth ALSA support ii bluez-cups 4.42-2 Bluetooth printer driver for CUPS ii bluez-firmware 1.2-2 Firmware for Bluetooth devices rc bluez-gnome 0.27-1 Bluetooth utilities for GNOME ii bluez-gstreamer 4.42-2 Bluetooth GStreamer support rc bluez-utils 4.42-2 Transitional package rc libbluetooth2 3.36-1 Library to use the BlueZ Linux Bluetooth sta ii libbluetooth3 4.42-2 Library to use the BlueZ Linux Bluetooth sta ii mplayer-skin-blue 1.6-2 blue skin for mplayer
rc gnome-vfs-obexftp 0.4-1+b1 GNOME VFS module for OBEX FTP ii libmulticobex1 0.23-1 multi-protocol cable OBEX library ii libobexftp0 0.23-1 object exchange file transfer library ii libopenobex1 1.5-2 OBEX protocol library ii obex-data-server 0.4.4-2 D-Bus service for OBEX client and server sid ii obexftp 0.23-1 file transfer utility for devices that use t ii obexpushd 0.7-1.1 program for receiving files via Bluetooth or
3. Arrancar el demonio de bluetooth:
/usr/sbin/bluetoothd
Para comprobar que tenemos un dispostivo bluetooth funcionando:
hcitool dev
Devices: hci0 00:16:41:8A:27:B6
http://wiki.archlinux.org/index.php/Bluetooth#Pairing
1. Lanzar como root el comando(parte del paquete 'bluez'):
sudo bluez-simple-agent
Si todo va bien, se tiene que ver:
Agent registered
Si aparece algun error de python, reiniciar el demonio bluetooth:
sudo /etc/rc.d/bluetooth restart
2. Lanzar como usuario, y pasando la direccion MAC del dispositivo a parear:
bluez-simple-agent hci0 MAC_DISPOSITIVO_A_PAREAR
3. (Movil) confirmar que se quiere parear
4. (Pc) teclear el codigo que se quiere usar
5. (Movil) Teclear el mismo codigo que el paso 4.
Otra:
4.1.1 Situarse en el directorio en el que se quiere recibir los archivos y escribir:
bluetooth-agent 1234
4.1.2 Desde el móvil buscar dispositivos, seleccionar el nombre susceptible de ser el ordeñador y teclear '1234'
4.2.1 Situarse en el directorio en el que se quiere recibir los archivos y escribir:
bluetooth-agent 1234
4.2.2 Teclear:
rfcomm connect mac_telefono_movil
Error:
Can't find a config entry for rfcomm0
Tengo que depurarlo
4.3.1 Situarse en el directorio en el que se quiere recibir los archivos y escribir:
bluetooth-agent 1234
4.3.2 Desde otra consola averiguar la dirección mac del móvil:
hcitool scan
Scanning ... 00:17:83:ED:AD:14 HTC_P3650 00:09:DD:50:6E:1C airis-0
4.3.3 Listar el contenido del móvil (no se si todos los móviles soportan esta opción):
obexftp -b 00:17:83:ED:AD:14 -l
4.3.4 En el móvil teclear '1234'
1. Arrancar el demonio para recibir archivos:
obexpushd
2. Hacer visible nuestro dispositivo:
dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
hciconfig hci0 piscan
Para comprobar que nuestro dispositivo es visible:
hciconfig
hci0: Type: USB BD Address: 00:16:41:8A:27:B6 ACL MTU: 384:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN RX bytes:786030 acl:1915 sco:0 events:1467 errors:0 TX bytes:19928 acl:1227 sco:0 commands:112 errors:0
Tienen que estar presente los valores 'ISCAN PSCAN'
3. Ahora podemos recibir archivos de dos formas:
3.1.1 Rastrear dispositivos. Lógicamente hay que habilitar el usb del móvil y situarlo cerca:
hcitool scan
Scanning ... 00:17:83:ED:AD:14 HTC_P3650 00:09:DD:50:6E:1C airis-0
3.1.2 NOTA No se si todos los móviles soportan la capacidad de ser examinados.
Listar el directorio que el móvil comparte. En este ejemplo usamos la dirección MAC de la HTC P3650:
obexftp -b 00:17:83:ED:AD:14 -l
Browsing 00:17:83:ED:AD:14 ... Connecting..\done Tried to connect for 27ms Receiving "(null)"...|<?xml version="1.0"?> <!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"> <folder-listing version="1.0"> <parent-folder name="" /> <folder name="100MEDIA" created="20090921T165014Z"/> </folder-listing> done Disconnecting../done
En mi caso vemos que el directorio que comparte contiene únicamente otro directorio, '100MEDIA', por lo que para listar el contendio de '100MEDIA':
obexftp -b 00:17:83:ED:AD:14 -l 100MEDIA
Browsing 00:17:83:ED:AD:14 ... Connecting..\done Tried to connect for 16ms Receiving "100MEDIA"...-<?xml version="1.0"?> <!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"> <folder-listing version="1.0"> <parent-folder name="" /> <file name="VIDEO0001.mp4" created="20090922T181420Z" size="503311"/> <file name="IMAG0005.jpg" created="20091015T191332Z" size="368229"/> <file name="VIDEO0006.mp4" created="20091020T182922Z" size="435611"/> </folder-listing> done Disconnecting..\done
3.1.3 Situarnos en el directorio en el que queramos recibir el archivo:
cd /tmp/
3.1.4 Recibir el archivo:
obexftp -b 00:17:83:ED:AD:14 -g 100MEDIA/VIDEO0001.mp4 * Desde el móvil
3.2.1 Seleccionamos el archivo (depende del modelo de móvil el como hacerlo)
3.2.2 Seleccionar 'transferir' o 'enviar por bluetooth' o algo así (depende del modelo de móvil el como hacerlo)
El archivo irá a parar al directorio desde el cual se ejecutó la instrucción 'bluetooth-agent 1234'
1. Enviar archivos
Seleccionar el archivo, 'transferir' o algo así y seleccionar el pc. En el pc aparecerá un mensaje:
Pincode request for device /org/bluez/2884/hci0/dev_00_17_83_ED_AD_14
El archivo se dejará en el directorio desde el cual se lanzó el comando 'bluetooth-agent 1234'
obexftp -b MAC_MOVIL -c DIRECTORIO_REMOTO -p ARCHIVO_LOCAL
o
obexftp -b MAC_MOVIL -p ARCHIVO_LOCAL
Browsing 00:17:83:ED:AD:14 ... Connecting..\done Tried to connect for 69ms Sending "/tmp/log.txt".../done Disconnecting..-done
Módulos instalados:
hci_usb 18460 3 bluetooth 57636 9 rfcomm,l2cap,hci_usb ehci_hcd 36620 0 uhci_hcd 26272 0
Paquetes:
ii bluetooth 3.36-3 Bluetooth stack utilities ii bluez-audio 3.36-3 Bluetooth audio support ii bluez-gnome 0.27-1 Bluetooth utilities for GNOME ii bluez-utils 3.36-3 Bluetooth tools and daemons ii gnome-bluetooth 0.9.1-1 GNOME Bluetooth tools ii libbluetooth2 3.36-1 Library to use the BlueZ Linux Bluetooth stack ii gnome-vfs-obexftp 0.4-1 GNOME VFS module for OBEX FTP ii libopenobex1 1.3+cvs20070425-2 OBEX protocol library ii obex-data-server 0.3.4-1 D-Bus service for OBEX client and server side functionality ii obexftp 0.19-7 file transfer utility for devices that use the OBEX protocol ii obexpushd 0.7-1 program for receiving files via Bluetooth or IRDA
Servicios corriendo:
3885 ? Ss 1:12 /usr/sbin/dhcdbd --system 14599 ? Ss 0:00 /usr/sbin/hcid -x -s 14612 pts/0 S 0:00 /usr/bin/bluetooth-applet 14614 ? S 0:00 /usr/bin/obex-data-server --no-daemon 14616 ? S 0:00 gnome-obex-server 14704 pts/0 S 0:00 /usr/bin/bluetooth-applet
Hay algunos problemillas de instalación:
http://lists.alioth.debian.org/pipermail/pkg-bluetooth-maintainers/2008-July/001636.html
Pulir una miaja
#!/bin/bash directorio="100MEDIA" mac="00:17:83:ED:AD:14" rm /tmp/mobil.txt; for i in `obexftp -c $directorio -l`;\ do name="` echo \"$i\" | grep name | sed 's/"//g' | sed 's/^name=//g' `";\ echo $name >> /tmp/mobil.txt; done; \ echo `cat /tmp/mobil.txt|sed 's/\n//g'` > /tmp/mobil2.txt; sleep 1;\ obexftp -b $mac -g $directorio/`cat /tmp/mobil2.txt`
Lanzamos el scan y mientras está el scan el btmon:
hcitool lescan
4A:F6:C7:2E:D3:DE (unknown) 44:9B:E0:3A:70:DA (unknown) E7:9F:D3:88:87:66 (unknown) 42:AA:DA:C2:5D:5C (unknown) 14:51:9A:A1:9C:E3 (unknown) F8:DF:15:C8:E0:E2 JBL Flip 4
sudo btmon
> HCI Event: LE Meta Event (0x3e) plen 42 [hci0] 662.852030 LE Advertising Report (0x02) Num reports: 1 Event type: Connectable undirected - ADV_IND (0x00) Address type: Random (0x01) Address: E7:9F:D3:88:87:66 (Static) Data length: 30 Flags: 0x06 LE General Discoverable Mode BR/EDR Not Supported Company: Apple, Inc. (76) Type: iBeacon (2) UUID: 25786407-ebc6-cfaf-b14f-e2a49306a5fd Version: 256.512 TX power: -40 dB RSSI: -61 dBm (0xc3)
Para buscar dispositivos que también nos sirve para ver la señal:
sudo btmgmt find
Discovery started hci0 type 7 discovering on hci0 dev_found: 67:27:CE:8B:B9:47 type LE Random rssi -89 flags 0x0000 AD flags 0x1a eir_len 30 hci0 dev_found: 73:02:AE:3E:48:1D type LE Random rssi -72 flags 0x0000 AD flags 0x1a eir_len 30 hci0 dev_found: 72:9B:24:DA:2E:6D type LE Random rssi -63 flags 0x0004 AD flags 0x00 eir_len 31 hci0 dev_found: 0F:CE:FC:59:11:D2 type LE Random rssi -92 flags 0x0004 AD flags 0x00 eir_len 31 hci0 dev_found: 28:11:A5:33:A0:B7 type LE Public rssi -87 flags 0x0000 AD flags 0x19 eir_len 25 hci0 dev_found: 49:ED:F5:D8:8E:FA type LE Random rssi -87 flags 0x0000