Guida Gentoo Linux al Bluetooth
1.
Introduzione
Cos'è il Bluetooth?
Il Bluetooth è uno standard industriale che permette agli utenti la connessione
e lo scambio di file tra diversi dispositivi come personal computer, palmari o
cellulari. Usando la tecnologia Bluetooth, si possono effettuare trasmissioni
dati e voce senza l'utilizzo di cavi ad un costo ridotto. Il Bluetooth offre
inoltre la possibilità di creare piccole LAN wireless e di sincronizzare
dispositivi diversi.
Contenuto della guida
La prima parte di questa guida tratterà il riconoscimento dei dispositivi che
supportano la tecnologia Bluetooth, permettendo agli utenti di acquistare
apparecchiature che sanno già di poter utilizzare perfettamente. Il passo
successivo sarà la configurazione del kernel e l'identificazione dei dispositivi
Bluetooth installati nel sistema. Infine l'installazione degli strumenti
necessari per la loro gestione e il corretto funzionamento.
La seconda parte tratterà la rilevazione dei dispositivi remoti, come stabilire
una connessione da e verso il dispositivo impostando o una Radio Frequency
Communication (RFCOMM) o una Personal Area Network (PAN).
L'ultima parte della guida elencherà in dettaglio le applicazioni che traggono
vantaggio dalle possibilità che offre la tecnologia Bluetooth.
2.
Dispositivi supportati
Dispositivi certificati e non-certificati Bluetooth
Importante:
Questi prodotti dovrebbero funzionare anche se alcuni di loro non sono
certificati. Gentoo comunque, non garantisce nessun supporto.
|
Una lista dei dispositivi supportati può essere consultata presso questa pagina:
Bluetooth
device features and revision information by Marcel Holtmann.
3.
Configurazione del sistema
Configurazione del Kernel
Dato che l'ultimo ramo stabile del kernel linux è il 2.6, la configurazione
verrà effettuata utilizzando questa versione. La maggior parte dei dispositivi
Bluetooth è connessa tramite porta USB, quindi sarà necessario attivare anche
questo supporto. Fate riferimento alla guida USB e Gentoo Linux.
Codice 3.1: Configurazione del kernel 2.6 |
Networking --->
<*> Bluetooth subsystem support --->
--- Bluetooth subsystem support
<M> L2CAP protocol support
<M> SCO links support
<M> RFCOMM protocol support
[*] RFCOMM TTY support
<M> BNEP protocol support
[*] Multicast filter support
[*] Protocol filter support
<M> HIDP protocol support
Bluetooth device drivers --->
<M> HCI USB driver
[*] SCO (voice) support
<M> HCI UART driver
[*] UART (H4) protocol support
[*] BCSP protocol support
[*] Transmit CRC with every BCSP packet
<M> HCI BCM203x USB driver
<M> HCI BPA10x USB driver
<M> HCI BlueFRITZ! USB driver
<M> HCI DTL1 (PC Card) driver
<M> HCI BT3C (PC Card) driver
<M> HCI BlueCard (PC Card) driver
<M> HCI UART (PC Card) device driver
<M> HCI VHCI (Virtual HCI device) driver
USB support --->
<*> Support for Host-side USB
--- USB Host Controller Drivers
<M> EHCI HCD (USB 2.0) support
[ ] Full speed ISO transactions (EXPERIMENTAL)
[ ] Root Hub Transaction Translators (EXPERIMENTAL)
<*> OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
< > SL811HS HCD support
|
Riavviare il sistema con il nuovo kernel. Se non si verificano errori, il Pc
sarà pronto per il Bluetooth.
Importante:
Il proprio dispositivo USB potrebbe avere due modalità, e quella predefinita
potrebbe essere HID anzichè HCI. In questo caso, usate l'utilità hid2hci
per cambiare la modalità da HID a HCI. Questa modifica non è permanente e dovrà
essere ripetuta al successivo riavvio.
|
Codice 3.2: Verificare la presenza del dispositivo Bluetooth |
# cat /proc/bus/usb/devices | grep -e^[TPD] | grep -e Cls=e0 -B1 -A1
T: Bus=02 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0a12 ProdID=0001 Rev= 5.25
# lsusb
Bus 003 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0db0:1967 Micro Star International Bluetooth Dongle
|
4.
BlueZ - Lo Stack Bluetooth
Installare BlueZ
Ora che il dispositivo è stato riconosciuto dal kernel, c'è bisogno di un layer
che permetta alle applicazioni di comunicare con l'adattatore Bluetooth. BlueZ
fornisce lo stack Bluetooth ufficiale di Linux. Gli ebuild necessari sono
bluez-libs e bluez-utils. I dispositivi che necessitano il
firmware Broadcom hanno bisogno anche di bluez-firmware.
Codice 4.1: Installazione di bluez-libs e bluez-utils |
# emerge net-wireless/bluez-libs net-wireless/bluez-utils
|
Configurazione di BlueZ e allineamento PIN
È arrivato il momento di vedere se il dispositivo è stato rilevato correttamente
dal sistema. Prima però avviare il servizio Bluetooth.
Codice 4.2: Eseguire hciconfig |
# /etc/init.d/bluetooth start
* Starting Bluetooth ...
* Starting hcid ... [ ok ]
* Starting sdpd ... [ ok ]
* Starting rfcomm ... [ ok ]
# hciconfig
hci0: Type: USB
BD Address: 00:01:02:03:04:05 ACL MTU: 192:8 SCO MTU: 64:8
DOWN
RX bytes:131 acl:0 sco:0 events:18 errors:0
TX bytes:565 acl:0 sco:0 commands:17 errors:0
|
L'output precedente mostra che il dispositivo Bluetooth è stato riconosciuto.
Notare come ora sia DOWN. Una volta completata la configurazione sarà
possibile renderlo attivo. Il percorso del file di configurazione è
/etc/bluetooth/hcid.conf. Le modifiche necessarie al file di
configurazione sono indicate qui sotto. Per ulteriori dettagli, consultare
man hcid.conf.
Codice 4.3: Modificare /etc/bluetooth/hcid.conf |
# HCId options
options {
# Automatically initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security auto;
# Pairing mode
pairing multi;
# PIN helper
pin_helper /etc/bluetooth/pin-helper;
}
# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "BlueZ at %h (%d)";
# Local device class
class 0x3e0100;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
lm accept;
# Default link policy
lp rswitch,hold,sniff,park;
# Authentication and Encryption (Security Mode 3)
#auth enable;
#encrypt enable;
}
|
Il passo successivo è quello di configurare il numero PIN. Servirà per
l'allineamento di questo dispositivo con gli altri.
Codice 4.4: Modificare /etc/bluetooth/pin |
123456
|
Importante:
Il numero inserito deve essere lo stesso nei dispositivi che si vuore connettere
alla rete Bluetooth, in modo da garantire il corretto allineamento. Deve anche
essere tenuto segreto, altrimenti sarà possibile, per chiunque ne sia a
conoscenza, stabilire una connessione ai dispositivi della rete.
|
Nota:
Se si stanno usando <=bluez-libs-2.x e <=bluez-utils-2.x
si possono scegliere tra differenti gestori di pin, in base alle proprie
preferenze. Tra i tanti si segnalano: /usr/lib/kdebluetooth/kbluepin
(net-wireless/kdebluetooth), /usr/bin/bluepin o
/etc/bluetooth/pin-helper.
|
Nota:
A partire dalla versione >=bluez-libs-3.x e
>=bluez-utils-3.x, i gestori di pin sono stati sostituiti da agenti di
passkey. Sono disponibili alcuni agenti di passkey con interfaccia grafica che
aiutano a gestire il proprio PIN, per esempio i pacchetti bluez-gnome e
kdebluetooth. Da riga di comando si può anche usare passkey-agent
(appartenente al pacchetto bluez-utils).
|
Configurazione dei servizi
Una volta conclusa la configurazione di BlueZ, si posson far ripartire i servizi
necessari.
Codice 4.5: Avviare il demone Bluetooth |
# /etc/init.d/bluetooth restart
# rc-update add bluetooth default
* bluetooth added to runlevel default
* rc-update complete.
|
Assicurarsi che il demone Bluetooth venga avviato correttamente. Se hcid
e sdpd sono in esecuzione, allora è stato configurato tutto in modo
corretto. Ora non resta che verificare se il dispositivo sia attivo con le nuove
impostazioni.
Codice 4.6: Verificare se il demone Bluetooth è partito correttamente |
# ps -ae | grep hcid
26050 ? 00:00:00 hcid
# ps -ae | grep sdpd
26054 ? 00:00:00 sdpd
# hciconfig -a
hci0: Type: USB
BD Address: 00:0A:0B:0C:0D:0E ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:125 acl:0 sco:0 events:17 errors:0
TX bytes:565 acl:0 sco:0 commands:17 errors:0
Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'BlueZ at bluehat (0)'
Class: 0x3e0100
Service Classes: Networking, Rendering, Capturing, Object Transfer,
Audio
Device Class: Computer, Uncategorized
HCI Ver: 1.1 (0x1) HCI Rev: 0x1e7 LMP Ver: 1.1 (0x1) LMP Subver: 0x1e7
Manufacturer: Cambridge Silicon Radio (10)
|
5.
Rilevare e Connettere i dispositivi remoti
Rilevare i dispositivi Bluetooth di altri host
A questo punto sarà possibile rilevare i dispositivi Bluetooth installati su
altre macchine, indipendentemente dal sistema operativo che le ospita, tramite
il comando hcitool.
Codice 5.1: Controllo dei dispositivi locali |
# hcitool dev
Devices:
hci0 00:01:02:03:04:05
|
Codice 5.2: Scansione dei dispositivi remoti |
# hcitool scan
Scanning ...
00:0A:0B:0C:0D:0E Grayhat
|
Codice 5.3: Interrogazione dei dispositivi remoti |
# hcitool inq
Inquiring ...
00:0A:0B:0C:0D:0E clock offset: 0x5579 class: 0x72010c
|
Una volta conosciuto l'indirizzo MAC del dispositivo remoto, è possibile
controllare se è correttamente allineato.
Codice 5.4: Eseguire l2ping |
# l2ping 00:0A:0B:0C:0D:0E
Ping: 00:0A:0B:0C:0D:0E from 00:01:02:03:04:05 (data size 20) ...
20 bytes from 00:0A:0B:0C:0D:0E id 200 time 69.85ms
20 bytes from 00:0A:0B:0C:0D:0E id 201 time 9.97ms
20 bytes from 00:0A:0B:0C:0D:0E id 202 time 56.86ms
20 bytes from 00:0A:0B:0C:0D:0E id 203 time 39.92ms
4 sent, 4 received, 0% loss
|
Impostare una Radio Frequency Communication (RFCOMM)
Nota:
L'impostazione della Radio Frequency Communication (Comunicazione in
Radiofrequenza) è opzionale.
|
E' possibile stabilire una comunicazione in radiofrequenza con un altro
dispositivo Bluetooth usando il comando rfcomm. Per semplificare le cose,
specialmente per gli utenti con più dispositivi, è consigliabile modificare le
impostazioni predefinite del file di configurazione rfcomm in
/etc/bluetooth/rfcomm.conf.
L'intero segmento che inizia con rfcomm0 { e finisce con }
riguarda la configurazione del dispositivo che, una volta connesso al sistema,
sarà identificato come /dev/rfcomm0. Viene mostrato come esempio la
configurazione per rfcomm0. Aggiungere poi tutti i dispositivi che si desidera
collegare.
Codice 5.5: Modificare /etc/bluetooth/rfcomm.conf |
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device 00:0A:0B:0C:0D:0E;
}
|
Dopo la configurazione di RFCOMM, è possibile connettersi a qualsiasi
dispositivo. Se il file /etc/bluetooth/rfcomm.conf è stato
modificato come sopra indicato, sarà sufficiente digitare solamente il comando
visualizzato qui sotto. In caso contrario, viene illustrato anche un metodo di
connessione alternativo.
Codice 5.6: Stabilire una connessione RFCOMM |
# rfcomm connect 0
Connected /dev/rfcomm0 to 00:0A:0B:0C:0D:0E on channel 1
Press CTRL-C for hangup
# rfcomm connect 0 00:0A:0B:0C:0D:0E 1
Connected /dev/rfcomm0 to 00:0F:DE:69:50:24 on channel 1
Press CTRL-C for hangup
|
Il primo parametro dopo il comando connect è il nodo TTY del dispositivo RFCOMM
che verrà usato (di solito è 0). Il secondo parametro indica l'indirizzo MAC del
dispositivo remoto. Il terzo invece è opzionale e specifica il canale da
utilizzare. Per connettersi ad un dispositivo è necessario che questo sia in
attesa di connessioni in ingresso. Possiamo interrompere la comunicazione in
ogni momento, semplicemente premendo CTRL+C.
Codice 5.7: Attesa per le connessioni RFCOMM in entrata |
# rfcomm listen 0 1
Waiting for connection on channel 1
|
Come per il comando connect, listen può ricevere due parametri. Il primo
specifica il nodo del device TTY RFCOMM (di solito 0) che verrà utilizzato per
le connessioni, mentre il secondo indica il canale.
Tutte le volte che si esegue il comando rfcomm, si può anche specificare
il dispositivo fisico da usare. Qui sotto è riportato un piccolo esempio,
utilizzando due semplici comandi.
Codice 5.8: Selezione del dispositivo fisico per le connessioni RFCOMM |
# rfcomm -i hci0 listen 0 1
Waiting for connection on channel 1
# rfcomm -i hci0 connect 0 00:0A:0B:0C:0D:0E 1
|
Configurare una Personal Area Network (PAN)
Nota:
Notare che impostare una Personal Area Network è opzionale. Questa sezione
descrive come configurare e connettersi ad un Network Access Point. In maniera
molto simile potete impostare anche una Group Ad-Hoc Network.
|
Per prima cosa, bisogna aver caricato il modulo bnep. Probabilmente si
preferisce averlo caricato automaticamente tutte le volte che viene avviato il
computer.
Codice 5.9: Caricare il modulo bnep |
# modprobe bnep
# echo "bnep" >> /etc/modules.autoload.d/kernel-2.6
|
Bisogna quindi avviare il demone pand sull'host che fornirà il NAP. Va
inoltre specificato se si desidera fornire un servizio NAP, dove l'host
in questione sarà il master e gli altri che si connetteranno saranno slave, o un
servizio GN, Group ad-hoc Network.
Codice 5.10: Avviare il demone pand |
# pand --listen --role NAP --master --autozap
|
Una volta messo in ascolto l'host master, agli altri host slave non rimane che
connettersi ad esso.
Codice 5.11: Connettersi al Network Access Point |
# pand --connect 00:0A:0B:0C:0D:0E --service NAP --autozap
|
Se tutto va per il meglio, non rimane che configurare gli indirizzo IP sugli
host slave.
Codice 5.12: bnep configurazione indirizzo IP |
host0 # ifconfig bnep0 192.168.2.1
host1 # ifconfig bnep0 192.168.2.2
host0 # ifconfig bnep0
bnep0 Link encap:Ethernet HWaddr 00:0A:0B:0C:0D:0E
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::210:60ff:fea3:cb41/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:208 (208.0 b) TX bytes:188 (188.0 b)
host1 # ifconfig bnep0
bnep0 Link encap:Ethernet HWaddr 00:01:02:03:04:05
inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::210:60ff:fea2:dd2a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:208 (208.0 b) TX bytes:188 (188.0 b)
|
E' possibile quindi fare alcuni test per verificare il corretto funzionamento
della rete.
Codice 5.13: IP ping tra le interfacce bnep |
host1 # ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=34.0 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=37.3 ms
--- 192.168.2.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 34.045/35.690/37.336/1.656 ms
|
6.
Applicazioni Desktop per Bluetooth
Introduzione
Ci sono numerosi programmi per il desktop, per cui questo capitolo è stato
suddiviso in tre parti, applicazioni per GNOME, per KDE e l'ultimo per quelle
che non utilizzano un windows manager particolare.
Per Gnome
Per gli utenti gnome, una scelta azzeccata può essere il pacchetto
gnome-bluetooth, ch fornisce le funzioni base principalmente usate, come
puoi vedere qui sotto.
-
gnome-bluetooth-manager: Per gestire i dispositivi remoti Bluetooth.
-
gnome-obex-send: Per mandare file verso altri dispositivi.
-
gnome-obex-server: Per ricevere file.
Codice 6.1: Installare gnome-bluetooth |
# emerge gnome-bluetooth
|
Verrà aggiunta una voce nel menù Applicazioni > Strumenti di Sistema dove si
potrà scegliere se eseguire l'applicazione per la gestione dei dispositivi o per
lo scambio dei file.
Per trasferire file (modo più semplice):
-
Dal Telefono al Computer - Manda il file dal Telefono via Bluetooth e questo
verrà prelevato e salvato dal PC nella propria cartella /home.
gnome-phone-manager è un'elegante applicazione che può esser utilizzata
per mandare e ricevere messaggi da e verso il telefono, usando solamente il
proprio pc. Non sarà più necessario l'uso del cellulare per leggere o scrivere
messaggi, dato che si potrà fare tutto tramite questo programma. Comparirà
inoltre a schermo un avviso ogni volta che verrà ricevuto un nuovo messaggio.
L'installazione è, come sempre, molto semplice.
Codice 6.2: Installare gnome-phone-manager |
# emerge gnome-phone-manager
|
Per KDE
Come si può verificare qui sotto, con KDE e kdebluetooth sono presenti
molte più funzionalità rispetto all'applicazione per il desktop Gnome.
-
kbluetoothd: Bluetooth Meta Server.
-
kbtsearch: Utilità per la ricerca dei dispositivi Bluetooth.
-
khciconfig: Monitor Bluetooth.
-
kioclient: KIO client da linea di comando.
-
qobexclient: Coltellino svizzero per testing/sviluppo su OBEX.
-
kbtobexclient: Un Framework Applicativo per Bluetooth.
- kioobex_start
- kbtserialchat
-
kbemusedsrv: Server Bemused per KDE.
-
kbtobexsrv: OBEX Push Server per Bluetooth.
-
kbluepin: Applicazione KDE KPart.
-
auth-helper: Un programma di supporto per kbtobexsrv che invia una
richiesta di autenticazione verso un determinato link ACL.
Codice 6.3: Installare kdebluetooth |
# emerge kdebluetooth
|
Altre applicazioni interessanti
-
app-mobilephone/obexftp: Trasferimento file su OBEX per telefoni
cellulari.
-
app-mobilephone/bemused: Bemused è un sistema che permette di
controllare la propria collezione musicale dal telefono, utilizzando
Bluetooth.
-
app-pda/multisync: Multisync permette di sincronizzare contatti,
appuntamenti e note dal proprio telefono cellulare al computer, utilizzando
una connessione Bluetooth. Include funzionalità di backup e ripristino,
oltre che di sincronizzazione con il client email Evolution. È necessario
impostare la use flag irmc per essere sicuri che multisync
abbia il supporto al Bluetooth.
-
net-wireless/opd e net-wireless/ussp-push sono strumenti da
linea di comando (server e client) che possono essere usati per inviare file
al proprio telefono mobile.
7.
Ringraziamenti
Ringraziamenti speciali a Marcel
Holtmann per il suo tempo dedicato allo sviluppo di Bluetooth e per la
revisione di questa guida. Un grande ringraziamento anche a Douglas Russell per i suoi test hardware e per
averla migliorata.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|