34.2. Bluetooth

Bluetooth è una tecnologia wireless per la connessione di dispositivi diversi, quali ad esempio cellulari, PDA, periferiche, computer portatili o componenti di sistema quali tastiera o mouse. Il nome deriva dal re danese Harold Bluetooth, che riunì diverse fazioni in guerra in Scandinavia. Il logo Bluetooth è basato sulle rune che corrispondono alla lettera "H" (assomiglia a una stella) e alla lettera "B".

Bluetooth si distingue da IrDA sotto molti aspetti importanti. Innanzitutto, non è necessario che i singoli dispositivi si "riconoscano" direttamente e, in secondo luogo, è possibile connettere diversi dispositivi alla rete. La velocità massima dei dati è 720 Kbps (nella versione corrente 1.2). In teoria, Bluetooth è in grado di comunicare persino attraverso le pareti. Nella pratica, tuttavia, la comunicazione dipende dalle proprietà della parete e dalla classe del dispositivo. Esistono tre classi di dispositivi con intervalli di trasmissione compresi tra dieci e cento metri.

34.2.1. Nozioni di base

Nelle sezioni seguenti vengono definiti i principi fondamentali del funzionamento di Bluetooth. Vengono fornite informazioni sui requisiti software necessari, sull'interazione di Bluetooth con il sistema e sul funzionamento dei profili Bluetooth.

34.2.1.1. Software

Per utilizzare Bluetooth, è necessario un adattatore Bluetooth (integrato o esterno), i driver e uno stack del protocollo Bluetooth. Il kernel di Linux contiene già i driver principali per l'utilizzo di Bluetooth. Il sistema Bluez viene utilizzato come stack di protocollo. Per assicurarsi che le applicazioni funzionino con Bluetooth, è necessario installare i pacchetti di base bluez-libs e bluez-utils. Questi pacchetti forniscono diversi servizi e utilità necessari. Alcuni adattatori, quali ad es. Broadcom o AVM BlueFritz!, richiedono inoltre l'installazione del pacchetto bluez-firmware. Il pacchetto bluez-cups consente la stampa tramite connessioni Bluetooth. Se è necessario eseguire il debug dei problemi con le connessioni Bluetooth, installare il pacchetto bluez-hcidump.

34.2.1.2. Interazione generale

Un sistema Bluetooth è composto da quattro strati interconnessi che forniscono la funzionalità desiderata:

Hardware

L'adattatore e il driver adeguato per il supporto del kernel di Linux.

File di configurazione

Utilizzati per il controllo del sistema Bluetooth.

Daemon

Servizi che sono controllati dai file di configurazione e che forniscono la funzionalità.

Applicazioni

Le applicazioni consentono la funzionalità fornita dai daemon che devono essere utilizzati e controllati dall'utente.

Quando si inserisce un adattatore Bluetooth, il sistema hotplug carica il relativo driver. Dopo aver caricato il driver, il sistema verifica i file di configurazione per controllare se è possibile avviare Bluetooth. In questo caso, stabilisce i servizi da avviare. Sulla base di queste informazioni, vengono avviati i rispettivi daemon. Gli adattatori Bluetooth vengono controllati dopo l'installazione. Quando ne viene rilevato uno o più di uno, Bluetooth viene abilitato. In caso contrario il sistema Bluetooth viene disattivato. Eventuali dispositivi Bluetooth aggiunti successivamente devono essere abilitati manualmente.

34.2.1.3. Profili

In Bluetooth, i servizi vengono definiti tramite i profili, quali ad es. il profilo di trasferimento dei file, il profilo principale di stampa e il profilo di rete personale PAN (personal area network). Per abilitare un dispositivo all'utilizzo dei servizi di un altro dispositivo, entrambi devono essere in grado di capire lo stesso profilo; questa parte di informazione di solito manca nel pacchetto e nel manuale del dispositivo. Purtroppo alcuni produttori non si uniformano rigorosamente alle definizioni dei singoli profili. Nonostante ciò, la comunicazione tra i dispositivi di norma funziona correttamente.

Nel testo seguente, i dispositivi locali sono quelli fisicamente connessi al computer. Tutti gli altri dispositivi ai quali è possibile accedere tramite connessioni wireless sono denominati dispositivi remoti.

34.2.2. Configurazione

In questa sezione viene descritta la configurazione di Bluetooth. Vengono fornite informazioni sui file di configurazione utilizzati, gli strumenti necessari e le modalità di configurazione di Bluetooth tramite YaST oppure manualmente.

34.2.2.1. Configurazione di Bluetooth con YaST

Utilizzare il modulo Bluetooth di YaST, mostrato nella Figura 34.2, "Configurazione di Bluetooth con YaST", per configurare il supporto Bluetooth nel sistema. Dopo che hotplug ha rilevato un adattatore Bluetooth nel sistema (ad es. durante l'avvio oppure all'inserimento dell'adattatore), Bluetooth viene avviato automaticamente con le impostazioni configurate in questo modulo.

Figura 34.2. Configurazione di Bluetooth con YaST

Configurazione di Bluetooth con YaST

Stabilire nella prima fase di configurazione se i servizi Bluetooth debbano essere avviati nel sistema. Se sono stati abilitati i servizi Bluetooth, è necessario eseguire due configurazioni. Innanzitutto il Nome dispositivo. Questo è il nome visualizzato da altri dispositivi quando viene individuato il computer. Sono disponibili due segnaposto: %h che indica il nome host del sistema (utile, ad esempio, se viene assegnato in modo dinamico dal server DHCP) e %d che inserisce il numero dell'interfaccia (utile solo se è presente più di un adattatore Bluetooth nel computer). Ad esempio, se si immette computer portatile %h nel campo e il DHCP assegna il nome unit123 al computer, gli altri dispositivi remoti lo riconosceranno come computer portatile unit123.

Il parametro Security Manager si riferisce al comportamento del sistema locale durante il tentativo di connessione di un dispositivo remoto. La differenza è nella gestione del numero PIN. È possibile consentire la connessione di qualsiasi dispositivo senza il PIN oppure stabilire le modalità di scelta del PIN corretto se viene richiesto. Immettere il PIN (memorizzato nel file di configurazione) nell'apposito campo di input. Quando un dispositivo si connette deve utilizzare prima di tutto questo PIN. Se non riesce, tenta di nuovo senza alcun PIN. Per ottenere la sicurezza ottimale, si consiglia di scegliere l'opzione Always Ask User for PIN. Questa opzione consente di utilizzare PIN diversi per dispositivi (remoti) diversi.

Fare clic su Configurazione avanzata del daemon per aprire la finestra di dialogo per la selezione e la configurazione dei servizi disponibili (denominati profili in Bluetooth). Tutti i servizi disponibili vengono visualizzati in un elenco; per attivarli o disattivarli fare clic su Activate oppure Deactivate. Fare clic su Modifica per aprire la finestra di dialogo in cui specificare argomenti aggiuntivi per il servizio selezionato (daemon). Si consiglia di non apportare nessuna modifica fino a quando non si è acquistata familiarità con il servizio. Una volta completata la configurazione dei daemon, per uscire dalla finestra di dialogo fare clic su OK.

Nella finestra di dialogo principale, fare clic su Opzioni di sicurezza per aprire la finestra di dialogo della sicurezza e specificare le impostazioni di cifratura, di autenticazione e di scansione. Quindi uscire dalla finestra di dialogo della sicurezza e tornare alla finestra di dialogo principale. Dopo aver chiuso la finestra di dialogo principale con Finish, il sistema Bluetooth è pronto per l'utilizzo.

Dalla finestra di dialogo principale, è possibile anche aprire la finestra di dialogo Classi di dispositivi e servizi. I servizi Bluetooth sono raggruppati in varie classi di dispositivi. In questa finestra di dialogo, scegliere la classe corretta per il proprio computer, quale ad es. Desktop o Laptop. La classe di dispositivo non è molto importante, a differenza della classe di servizio, anche questa impostata in questa sede. A volte i dispositivi remoti Bluetooth, quali ad esempio i cellulari, consentono soltanto determinate funzioni se sono in grado di rilevare la classe di servizio corretta nel sistema. Ciò avviene spesso per i cellulari che prevedono una classe denominata Transfer oggetto prima di consentire il trasferimento di file dal o al computer. È possibile scegliere più classi. Non risulta utile selezionare tutte le classi "senza motivo." Nella maggior parte dei casi la selezione di default si rivela appropriata.

Per utilizzare Bluetooth per la configurazione di una rete, attivare PAND nella finestra di dialogo Configurazione avanzata del daemon e impostare la modalità del daemon con Modifica. Per una connessione di rete Bluetooth funzionale, un PAND deve funzionare nella modalità Listen e il peer nella modalità Search. Per default, la modalità Listen è preimpostata. Adattare il comportamento del PAND locale. Configurare inoltre l'interfaccia bnepX (X indica il numero del dispositivo nel sistema) nel modulo Scheda di rete di YaST.

34.2.2.2. Configurazione manuale di Bluetooth

I file di configurazione dei singoli componenti del sistema Bluez si trovano nella directory /etc/bluetooth. Con la sola eccezione del file /etc/sysconfig/bluetooth per l'avvio dei componenti, che è modificato dal modulo di YaST.

I file di configurazione descritti di seguito possono essere modificati soltanto dall'utente radice. Attualmente, non esiste alcuna interfaccia utente grafica per la modifica di tutte le impostazioni. Le più importanti possono essere configurate mediante il modulo Bluetooth di YaST, descritto riportato nella Sezione 34.2.2.1, "Configurazione di Bluetooth con YaST". Tutte le altre impostazioni sono rilevanti soltanto per gli utenti esperti che devono affrontare casi speciali. Di norma, le impostazioni di default risultano adeguate.

Un numero PIN fornisce la protezione di base contro connessioni indesiderate. I cellulari in genere chiedono il PIN al momento di stabilire il primo contatto (o quando viene configurato un contatto del dispositivo sul telefono). Perché due dispositivi siano in grado di comunicare, entrambi devono identificarsi con lo stesso PIN. Sul computer, il PIN si trova nel file /etc/bluetooth/pin.

[Important]Sicurezza delle connessioni Bluetooth

Nonostante i numeri PIN, la trasmissione tra due dispositivi potrebbe non essere completamente sicura. Per default, l'autenticazione e la cifratura delle connessioni Bluetooth è disattivata. L'attivazione dell'autenticazione e della cifratura possono causare problemi di comunicazione con alcuni dispositivi Bluetooth.

Diverse impostazioni, quali ad esempio i nomi dei dispositivi e la modalità di sicurezza, possono essere modificate nel file di configurazione /etc/bluetooth/hcid.conf. Di norma, le impostazioni di default risultano adeguate. Il file contiene commenti che descrivono le opzioni delle diverse impostazioni.

Due sezioni nel file incluso sono definite come opzioni e dispositivo. La prima contiene informazioni generali che il file hcid utilizza per l'avvio. La seconda contiene impostazioni per i singoli dispositivi locali Bluetooth.

Una delle impostazioni più importanti della sezione opzioni è sicurezza automatica;. Se viene impostata su auto, il file hcid utilizzerà il PIN locale per le connessioni successive. Se non riesce, passa a nessuna e stabilisce comunque la connessione. Per maggiore sicurezza, si consiglia di configurare questa impostazione di default su utente per assicurarsi che all'utente venga richiesto di immettere il PIN ogni volta che viene stabilita una connessione.

Impostare il nome da visualizzare sull'altro computer nella sezione dispositivo. La classe di dispositivo, quale ad esempio Desktop, Laptop, o Server, viene definita in questa sezione. È inoltre possibile abilitare o disabilitare l'autenticazione o la cifratura.

34.2.3. Componenti e utilità del sistema

L'operabilità di Bluetooth dipende dall'interazione dei diversi servizi. Sono necessari almeno due daemon di background: hcid (host controller interface daemon), che funge da interfaccia per il dispositivo Bluetooth e lo controlla, e sdpd (service discovery protocol daemon), che consente al dispositivo di individuare quali servizi sono resi disponibili dall'host. Se non vengono attivati automaticamente all'avvio del sistema, è possibile attivare sia hcid che sdpd con il comando rcbluetooth start. Questo comando può essere eseguito come utente radice.

Nei paragrafi seguenti vengono descritti in breve i maggiori strumenti shell da utilizzare con Bluetooth. Sebbene siano disponibili diversi componenti grafici per il controllo di Bluetooth, può risultare utile verificare questi programmi.

Alcuni dei comandi possono essere eseguiti solo come utente radice. Tra questi vi è il comando l2ping indirizzo_dispositivo per la verifica della connessione al dispositivo remoto.

34.2.3.1. hcitool

È possibile utilizzare hcitool per stabilire se sono stati rilevati dispositivi locali e remoti. Il comando hcitool dev elenca i dispositivi locali. L'output genera una riga nel formato nome_interfaccia indirizzo_dispositivo per ciascun dispositivo locale rilevato.

È possibile cercare i dispositivi remoti con il comando hcitool inq. Per ciascun dispositivo rilevato vengono restituiti tre valori: l'indirizzo del dispositivo, l'impostazione dell'orologio e la classe di dispositivo. L'indirizzo del dispositivo è importante poiché viene utilizzato dagli altri comandi per identificare il dispositivo di destinazione. L'impostazione dell'orologio serve principalmente per motivi tecnici. La classe specifica il tipo di dispositivo e il tipo di servizio come valore esadecimale.

Il comando hcitool nome indirizzo-dispositivo può essere utilizzato per stabilire il nome del dispositivo di un dispositivo remoto. In caso di computer remoto, la classe e il nome del dispositivo corrispondono alle informazioni contenute in /etc/bluetooth/hcid.conf. Gli indirizzi dei dispositivi locali generano un output di errore.

34.2.3.2. hciconfig

Il comando /usr/sbin/hciconfig fornisce ulteriori informazioni sul dispositivo locale. Se hciconfig viene eseguito senza argomenti, l'output mostra le informazioni sul dispositivo, quali ad esempio il nome del dispositivo (hciX), l'indirizzo fisico del dispositivo (un numero a 12 cifre nel formato 00:12:34:56:78) e le informazioni sulla quantità di dati da trasmettere.

hciconfig nome hci0 visualizza il nome che viene restituito dal computer quando riceve delle richieste dai dispositivi remoti. Come per le richieste di impostazioni del dispositivo locale, hciconfig può essere utilizzato per modificare tali impostazioni. Ad esempio, hciconfig PROVA nome hci0 imposta il nome su PROVA.

34.2.3.3. sdptool

È possibile utilizzare il programma sdptool per verificare quali servizi sono resi disponibili da un dispositivo specifico. Il comando sdptool sfoglia indirizzo_dispositivo restituisce tutti i servizi di un dispositivo. Utilizzare il comando sdptool cerca codice_servizio per cercare un servizio specifico. Questo comando esegue la scansione dei dispositivi accessibili per il servizio richiesto. Se uno dei dispositivi offre il servizio, il programma stampa il nome del servizio completo restituito dal dispositivo con una breve descrizione. Per visualizzare l'elenco di tutti i possibili codici di servizio, immettere sdptool senza parametri.

34.2.4. Applicazioni grafiche

In Konqueror, immettere l'URL bluetooth:/ per elencare i dispositivi Bluetooth remoti. Fare doppio clic su un dispositivo per ottenere una panoramica dei servizi da esso forniti. Spostandosi su uno dei servizi specificati con il mouse, la barra di stato del browser visualizza il profilo utilizzato dal servizio. Facendo clic sul servizio, si apre una finestra di dialogo dove specificare le operazioni da eseguire: salvare, utilizzare il servizio (è necessario avviare un'applicazione per farlo), oppure annullare l'azione. Contrassegnare la casella di controllo se non si desidera visualizzare di nuovo la finestra di dialogo ma si desidera che sia eseguita l'azione selezionata. Per alcuni servizi non è ancora disponibile il relativo supporto. Per altri è invece necessario installare pacchetti aggiuntivi.

34.2.5. Esempi

In questa sezione vengono forniti due esempi tipici di possibili scenari Bluetooth. Nel primo esempio viene mostrato come stabilire una connessione di rete tra due host tramite Bluetooth. Nel secondo viene mostrata la connessione tra un computer e un cellulare.

34.2.5.1. Connessione di rete tra due host

Nel primo esempio, viene stabilita una connessione di rete tra gli host H1 e H2. I due host hanno gli indirizzi del dispositivo Bluetooth baddr1 e baddr2 (stabiliti su entrambi gli host con il comando hcitool dev come descritto sopra). È necessario identificare gli host con gli indirizzi IP 192.168.1.3 (H1) e 192.168.1.4 (H2).

La connessione Bluetooth viene stabilita utilizzando il pand (personal area networking daemon). I comandi seguenti devono essere eseguiti dall'utente radice. La descrizione concerne le azioni specifiche di Bluetooth e non fornisce una spiegazione dettagliata del comando di rete ip.

Immettere pand -s per avviare il pand nell'host H1. Successivamente, è possibile stabilire una connessione nell'host H2 con il comando pand -c baddr1. Se si immette ip link show in uno degli host per elencare le interface di rete disponibili, l'output deve contenere una voce del tipo seguente:

 bnep0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000 
 link/ether 00:12:34:56:89:90 brd ff:ff:ff:ff:ff:ff

Invece di 00:12:34:56:89:90, l'output deve contenere l'indirizzo del dispositivo locale baddr1 oppure baddr2. Ora è necessario assegnare un indirizzo IP a questa interfaccia e attivarla. In H1, l'operazione può essere eseguita con i due comandi seguenti:

ip addr add 192.168.1.3/24 dev bnep0
ip link set bnep0 up

In H2:

ip addr add 192.168.1.4/24 dev bnep0
ip link set bnep0 up

Ora è possibile accedere a H1 da H2 tramite l'IP 192.168.1.3. Utilizzare il comando ssh 192.168.1.4 per accedere a H2 da H1, premesso che H2 esegua sshd, che in SUSE Linux è attivato per default. Il comando ssh 192.168.1.4 può essere eseguito anche da un normale utente.

34.2.5.2. Trasferimento di dati da cellulare a computer

Nel secondo esempio viene mostrata la modalità di trasferimento di una fotografia creata con un cellulare con fotocamera digitale integrata a un computer (senza costi aggiuntivi per la trasmissione di un messaggio multimediale). Anche se la struttura dei menu può variare da cellulare a cellulare, in genere la procedura è piuttosto simile. Fare riferimento al manuale del cellulare, se necessario. In questo esempio viene descritto il trasferimento di una fotografia da un cellulare Sony Ericsson a un computer portatile. È necessario che il computer disponga del servizio Obex-Push e consenta l'accesso al cellulare. Nella prima fase, viene reso disponibile il servizio sul computer portatile. Per ottenere i dati dal telefono, è necessario che sul computer portatile sia in esecuzione uno speciale daemon di servizio. Se il pacchetto kbluetooth è installato, è necessario avviare un daemon particolare. Se kbluetooth non è installato, utilizzare il daemon opd disponibile nel pacchetto bluez-utils. Avviare il daemon con il comando seguente:

opd --mode OBEX --channel 10 --daemonize --path /tmp --sdp 

Vengono utilizzati due parametri importanti: --sdp registra il servizio con sdpd e --path /tmp indica al programma dove salvare i dati ricevuti, in questo caso in /tmp. È anche possibile specificare qualsiasi altra directory per la quale si dispone di accesso in scrittura.

Se si utilizza kbluetooth, quando si riceve la fotografia sul computer portatile viene chiesto di specificare la directory di salvataggio.

Ora il cellulare deve riconoscere il computer. Per eseguire questa operazione, aprire il menu Connect sul cellulare e selezionare Bluetooth. Se necessario, fare clic su Turn On prima di selezionare My devices. Selezionare New device e attendere che il cellulare cerchi il computer portatile. Quando viene rilevato un dispositivo, sul display ne viene visualizzato il nome. Selezionare il dispositivo associato al computer portatile. Se viene richiesto il PIN, immettere il PIN specificato in /etc/bluetooth/pin. A questo punto il cellulare riconosce il computer portatile ed è in grado di scambiare i dati con esso. Uscire dal menu corrente e passare al menu dell'immagine. Selezionare l'immagine da trasferire e premere More. Nel menu successivo, premere Send per selezionare una modalità di trasmissione. Selezionare Via Bluetooth. Nell'elenco deve essere visualizzato il computer portatile come dispositivo di destinazione. Selezionare il computer portatile per avviare la trasmissione. L'immagine viene quindi salvata nella directory specificata con il comando opd. Con la stessa procedura è possibile trasferire sul computer portatile anche le tracce audio.

34.2.6. Risoluzione dei problemi

Nel caso si incontrino difficoltà per stabilire la connessione, si consiglia di procedere come descritto nell'elenco seguente. Tenere presente che l'errore può essere presente sia da una sola parte che da entrambe le parti. Identificare possibilmente il problema con un altro dispositivo Bluetooth per verificare che il dispositivo non sia difettoso.

Verificare che il dispositivo locale sia elencato nell'output di hcitool dev.

Nel caso non sia elencato in questo output, hcid non viene avviato oppure il dispositivo non viene riconosciuto come dispositivo Bluetooth. Le cause possono essere diverse. Il dispositivo potrebbe essere difettoso oppure potrebbe mancare il driver corretto. I computer portatili con Bluetooth integrato in genere dispongono di un comando di accensione e spegnimento per i dispositivi wireless, quali ad esempio WLAN e Bluetooth. Controllare nel manuale del computer portatile se questo comando è presente. Riavviare il sistema Bluetooth con il comando rcbluetooth restart e verificare la presenza di eventuali errori in /var/log/messages.

Verificare se l'adattatore Bluetooth necessita di un file firmware.

In caso positivo, installare bluez-bluefw e riavviare il sistema Bluetooth con il comando rcbluetooth restart.

Verificare se l'output di hcitool inq restituisce altri dispositivi.

Ripetere questo comando più di una volta. Potrebbero esserci interferenze nella connessione poiché la banda di frequenza di Bluetooth viene utilizzata anche da altri dispositivi.

Verificare che i PIN corrispondano.

Verificare che il numero PIN del computer (in /etc/bluetooth/pin) corrisponda a quello del dispositivo di destinazione.

Verificare se il dispositivo remoto"riconosce" il computer.

Stabilire la connessione dal dispositivo remoto. Verificare se questo dispositivo riconosce il computer.

Verificare se è possibile stabilire una connessione di rete (vedere la Sezione 34.2.5.1, "Connessione di rete tra due host").

È possibile che la configurazione descritta nella Sezione 34.2.5.1, "Connessione di rete tra due host" non funzioni per diversi motivi. Ad esempio, è possibile che uno dei due computer non supporti il protocollo ssh. Provare il ping 192.168.1.3 oppure il ping 192.168.1.4. Se funziona, verificare che sshd sia attivo. Un altro possibile problema è che uno dei due dispositivi dispone già di impostazioni di rete che sono in conflitto con l'indirizzo 192.168.1.X dell'esempio. In questo caso, provare indirizzi diversi, quali ad esempio 10.123.1.2 e 10.123.1.3.

Verificare che il computer portatile sia visualizzato come dispositivo di destinazione (vedere Sezione 34.2.5.2, "Trasferimento di dati da cellulare a computer"). Verificare che il dispositivo mobile riconosca il servizio Obex-Push del computer portatile.

In My devices, selezionare il dispositivo rispettivo e visualizzare l'elenco dei Services. Nel caso Obex-Push non sia visualizzato (anche dopo l'aggiornamento dell'elenco), il problema è dovuto a opd sul computer portatile. Verificare che opd si attivo. Verificare se si dispone dell'accesso in scrittura nella directory specificata.

Verificare che lo scenario descritto riportato nella Sezione 34.2.5.2, "Trasferimento di dati da cellulare a computer" funzioni anche nell'altro senso.

Se è installato il pacchetto obexftp, su alcuni dispositivi è possibile utilizzare il comando  obexftp -b indirizzo_dispositivo -B 10 -p immagine. Su alcuni modelli di cellulari Siemens e Sony Ericsson è stata eseguita la prova con risultati positivi. Per ulteriori informazioni, fare riferimento alla documentazione in /usr/share/doc/packages/obexftp.

Se è installato il pacchetto bluez-hcidump, è possibile utilizzare il comando hcidump -X per controllare il contenuto inviato tra i dispositivi. A volte il risultato può aiutare a individuare il punto in cui si verifica il problema, tuttavia questo output è solo parzialmente in "testo normale."

34.2.7. Ulteriori informazioni

Alcuni documenti aggiuntivi, aggiornati, sono disponibili in /usr/share/doc/packages/bluez-utils/ (solo in tedesco e in inglese).

Per una panoramica completa delle varie istruzioni per l'uso e la configurazione di Bluetooth, visitare il sito http://www.holtmann.org/linux/bluetooth/. Per ulteriori informazioni e istruzioni, vedere: