User Tools

Site Tools


informatica:linux:bluetooth

parear cascos (actualizado)

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

bluetooth bluez obexftp obexftpd bluetoothd

Requisitos:

  • Pc con tarjeta de bluetooth integrada o adaptador pinchado (lo vemos con un 'lspci -vv' o un 'lsusb'
  • Móvil con bluetooth activado, configurado como visible y (no se si todos los móviles lo soportan) habilitada la capacidad de ser examinado

Lo interesante de esta receta es poder enviar/recibir archivos sin tener que instalar KDE/Gnome y sus applets

Habilitar bluetooth

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

Parear los dispositivos

Arch Linux

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:

  • Desde el teléfono móvil

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'

  • Desde el pc

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

  • Desde el pc 2 (funciona 14/12/2009)

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'

Recibir archivos

1. Arrancar el demonio para recibir archivos:

obexpushd

2. Hacer visible nuestro dispositivo:

  • NO funciona
dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
  • Funciona
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:

  • Desde el pc (recomendado, más cómodo)

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'

Enviar archivos

1. Enviar archivos

  • Móvil ⇒ pc

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'

  • Pc ⇒ móvil
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

Gnome applet debian lenny

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

Guión para copiar archivos

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`

beacon

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 
informatica/linux/bluetooth.txt · Last modified: 2023/01/27 22:05 by javi