Linux tips and tricks/Bluetooth

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

Due righe per raccontare come ho imparato a smettere di avere paura e ad amare la tecnologia Bluetooth...

Introduzione[modifica]

Di seguito trovate un piccolo esempio pratico di collegamento bluetooth tra un sistema Linux ed un dispositivo Bluetooth (in questo caso un telefono Nokia), questo contributo non vuole certo essere completo, ma intende essere un punto di partenza, uno spunto aperto al contributo di tutti gli utenti Linux.

Si parte dal presupposto di aver installato sul computer Linux Mandrake 10.0 (Kernel 2.6.13).

Configurazione e Connessione[modifica]

Dunque, per far funzionare una periferica bluetooth bisogna aver installato il protocollo Bluez (fortunatamente e gentilmente fornito dall'amico Mandrake tramite una serie di pacchetti RPM), ed avere avviato il servizio bluetooth, per far questo basta,da riga di comando (as root of course), digitare il comando:

[utente@dominio.org utente]# service bluetooth start

ora bisogna impostare il pin e (se proprio lo si vuole) il nome del proprio dispositivo, a tal fine si deve editare, con il vostro editor di fiducia (io uso joe), il file /etc/bluetooth/hcid.conf così:

[utente@dominio.org utente]# joe /etc/bluetooth/hcid.conf

dove si devono apportare le seguenti modifiche:

stralcio per il pin:

# PIN helper 
pin_helper /etc/bluetooth/miopin.sh;  

file da creare ad-hoc.

Stralcio per il nome:

# Local device name
# %d - device id 
# %h - host name
name "utentedominio (%d)";

N.B.: il file miopin.sh deve contenere:

#!/bin/bash
echo "PIN:XXX"

dove al posto di XXXX mettete il vostro pin.

A questo punto si può procedere ad esplorare per i dispositivi presenti in zona, io consiglio:

[utente@dominio.org utente]# hcitool scan

se tutto è ok si dovrebbe vedere qualcosa del tipo:

12:34:56:78:90:12 utente1

in pratica il bdaddr (l'indirizzo BT) ed il nome del dispositivo, consiglio vivamente di copiarsi il bdaddr, ora si devono scoprire i servizi disponibili nella periferica remota e su quali canali sono:

[utente@dominio.org utente]# sdptool browse 12:34:56:78:90:12

si dovrebbe vedere una serie piuttosto lunga di profili accessibili, supponiamo ora per un attimo di essere interessati ad usare il profilo dialup e che il dispositivo remoto lo renda disponibile sul canale 1:

Service Name: Dial-Up Networking
Service RecHandle: 0x10007
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

poi si procede come segue:

[utente@dominio.org utente]# rfcomm bind 0 12:34:56:78:90:12 1

in pratica ho detto al tool rfcomm di creare una porta seriale virtuale rfcomm0 (/dev/bluetooth/rfcomm/0) "bindata" al modem del dispositivo remoto.. non collegata, ma pronta ad intervenire su richiesta del SW, vediamo che è successo:

[utente@dominio.org utente]# rfcomm show

si dovrebbe vedere qualcosa del tipo:

rfcomm0: 12:34:56:78:90:12 channel 1 clean

in pratica adesso abbiamo a nostra disposizione il modem BT come periferica all'indirizzo /dev/bluetooth/rfcomm/0

si potrebbe creare un nodo con il comand mknod per avere un nome più facilmente digitabile, ma questo esula dallo scopo del presente articolo.

Uso del dispositivo Bluetooth come Modem[modifica]

Adesso passiamo a vedere come poter usare il dispositivo remoto come modem, ad esempio tramite il dialer wvdial, editiamo il file /etc/wvdial.conf, ad esempio con joe, in modo da ottenere qualcosa del genere:

[Dialer Defaults]
Modem = /dev/bluetooth/rfcomm/0
Baud = 460800
Dial Attempts = 1
Init1 = ATZ
Init3 = AT+CGDCONT=1,"IP","web.omnitel.it"
Phone = *99#
Carrier Check = no
Stupid Mode = yes
Username = ""
Password = ""

N.B.: risulta evidente come i parametri qui sopra riportati siano specifici per la rete Vodafone.

Adesso non resta che digitare:

[utente@dominio.org utente]# wvdial

Incrociate le dita ed in bocca al lupo!