Orvieto Linux Users Group

Official Site

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri

Linux e il Bluetooth

E-mail
Introduzione


Questo “how to” spiega come configurare la propria linux box, in modo da sfruttare il modem del vostro smartphone, via Bluetooth, di trasferire i file tra cellulare e PC e di comandare la propria linuxbox dal telefono.

Come premessa non garantisco che la seguente guida sia compatibile con altre distribuzioni GNU/Linux e con altri accessori e periferiche, in quanto il test è limitato solo a un PC con le seguenti caratteristiche:


PC: Portatile Toshiba A60 Satellite P4

Sistema operativo: Slackware 10.2 con kernel 2.6.13-2

Adattatore: Bluetooth adapter USB “ROPER” class 2 (ROBTC2SW-USB)

Cellulare: Nokia 6600


Indice

  • Configurazione del kernel

  • Installazione del software (BlueZ)

  • Configurazione interfaccia Bluetooth

  • Configurazione degli script di connessione per il GPRS

  • Dati di accesso di provider italiani

  • Utilizzo del DNS

  • Trasferimento file con il Bluetooth

  • Comandare il PC con il Nokia 6600

  • Licenza e condizioni d'uso

  • Contatti

 

 

Configurazione del kernel


Da shell digitiamo:


# su


ed inseriamo la password di root, poi


# cd /usr/src/linux-2.6.13.2/

# make menuconfig


ci portiamo nella sezione “Networking” e abilitiamo nel seguente modo i moduli:

 

 


Abilitiamo come in figura qui sopra, il “Bluetooth Subsystem support” e entriamo (tasto INVIO) nella sottosezione:

 

 


Entriamo nella sezione Bluetooth device drivers e selezioniamo i seguenti moduli:

 

 



usciamo dal menu, selezionando exit, e alla domanda se salvare o no il config, diamo si.

Poi digitiamo dentro la cartella /usr/src/linux-2.6.13.2:

# make -j5 bzImage

# make -j5 modules

# make modules_install

# mv arch/i386/boot/bzImage /boot/vmlinuz-2.6.13.2

# mv .config /boot/config-2.6.13.2

# mv System.map /boot/System.map-2.6.13.2

# cd /usr/src

# rm linux

# ln -s /usr/src/linux-2.6.13.2 /usr/src/linux

# lilo


Riavviamo la nostra linux box!


Attenzione: al posto di 2.6.13.2 mettete la versione del vostro kernel! Se non la sapete digitate da shell:


# uname -r

 

Installazione del software (BlueZ)


Per interfacciare la nostra chiavetta Bluetooth abbiamo bisogno dei pacchetti BlueZ, cioe' di uno stack per le periferiche Bluetooth che consente loro, di comunicare col nostro pc.

Gli archivi dei sorgenti sono presenti sul sito http://www.bluez.org/ e sono i seguenti:


bluez-libs

bluez-utils

bluez-pin

bluez-firmware

bluez-hcidump

bluez-hciemu

bluez-sdp


scompattiamo tutti i pacchetti tranne bluez-pin e uno per uno in successione, digitiamo:


# tar xzvf bluez-$pacchetto.tar.gz

# cd bluez-$pacchetto

# ./configure

# make && make install


dove $pacchetto e' il nome dell'archivio (es.libs, utils, hciemu,...)

per bluez-pin, invece facciamo cosi:


# tar xzvf bluez-pin.tar.gz

# cd bluez-pin

# make install-program


Ora che abbiamo installato tutto il pacchetto software per il Bluetooth, passiamo a configurare il nostro PC!


Configurazione interfaccia Bluetooth


A questo punto, una volta installati i pacchetti necessari, configuriamo il nostro pinguino.

Prima di inserire il nostro Bluetooth adapter nella porta USB, avviamo (se gia' non lo è) il sistema di logging a messaggi istantaneo di Slack, digitando:


# su


inseriamo la pass di root, poi


# syslogd

# tail -f /var/log/messages


inseriamo il dongler USB. Quindi dovrebbe apparire la conferma che il sistema ha riconosciuto l'inserimento della chiavetta.

Altro metodo è digitare, dopo avere inserito la chiave Bluetooth:


# dmesg


dove apparira' il log di sistema


hub 1-0:1.0: over-current change on port 2

usb 2-3: new full speed USB device using ohci_hcd address 2


Ora carichiamo l'interfacciamento USB con


# modprobe hci_usb

Bluetooth: HCI USB driver ver 2.8

usbcore: registered new driver hci_usb


e controlliamo se è stato caricato con


# lsmod


Se tutto è andato a buon fine, cioè se appare una lista in cui è presente anche hci_usb, allora attiviamo il bluetooth sul nostro nokia e carichiamo l'interfaccia della chiave usb con


# hciconfig hci0 up


e facciamo uno scan dei dispositivi bluetooth con


# hcitool scan


il risultato dovrebbe essere questo


Scanning ...

00:0E:6T:62:F9:7E Nokia6600


dove 00:0E:6T:62:F9:7E è il MAC del cellulare, cioè il suo indirizzo fisico.


N.B. Ovviamente il MAC cambia da dispositivo a dispositivo!



Ora dobbiamo modificare il file del pin, che si trova in /etc/bluetooth/ e si chiama appunto pin.


# cd /etc/bluetooth

# pico pin



ed inseriamo una stringa numerica che sara' il nostro pin (sara' richiesto come autenticazione dal Nokia 6600)


Per quanto riguarda i permessi decidete voi se volete che il file sia condiviso con altri utenti;

il comando, comunque, è


# chmod PERMESSI pin


es. chmod 777 pin oppure chmod +x pin ...


Ora bisogna modificare il file di configurazione hcid.conf


# pico /etc/bluetooth/hcid.conf


e settarlo nel modo seguente:


options {

autoinit yes;

security auto;

pairing multi;

pin_helper /etc/bluetooth/pin;

}

device {

name “QuelloCheVolete”;

#lasciate la classe locale inalterata

class ...

iscan enable; pscan enable;

lm accept;

lp rswitch,hold,sniff,park;

}


ora attiviamo il servizio hcid con


# hcid


e creiamo un collegamento fra il nostro computer e il nokia, con


# rfcomm bind 0 MAC_DEL_CEL 1

Bluetooth: RFCOMM ver 1.5

Bluetooth: RFCOMM socket layer initialized

Bluetooth: RFCOMM TTY layer initialized


dove bind 0 setta il numero del dispositivo e 1 è il canale di comunicazione.

Questo comando ha appena creato un link al nokia, che si trova in /dev/rfcomm0 .



Ora dobbiamo inserire il MAC del cellulare nel file di configurazione di rfcomm0:

# pico /etc/bluetooth/rfcomm.conf


rfcomm0 {

bind no;

device MAC_DEL_CEL;

channel 1;

comment “commento sulla connessione”;

}


Per sapere i servizi del cellulare che possiamo sfruttare digitiamo da riga di comando:


# sdpd

Bluetooth: L2CAP ver 2.7

Bluetooth: L2CAP socket layer initialized

# sdptool browse MAC_DEL_CEL


e apparira' una cosa del genere:


...

...

Service Name: Dial-up Networking

Service RecHandle: 0x10001

Service Class ID List:

"Dialup Networking" (0x1103)

"Generic Networking" (0x1201)

Protocol Descriptor List:

"L2CAP" (0x0100)

"RFCOMM" (0x0003)

Channel: 1

Language Base Attr List:

code_ISO639: 0x656e

encoding: 0x6a

base_offset: 0x100

Profile Descriptor List:

"Dialup Networking" (0x1103)

Version: 0x0100

...

...


La parte che ci interessa è la sezione Dial-up Networking, che indica il canale del servizio e i protocolli utilizzati per eseguirlo: essi sono


Channel 1

Protocol “L2CAP”

Protocol “RFCOMM”


che abbiamo, infatti, appena utilizzato per l'interfacciamento del nostro device!


N.B. Quando il Nokia richiedera' un'autenticazione, inseriamo il codice numerico contenuto nel file del pin, quindi nel menu del Nokia nella cartella Connettivita' scegliamo Bluetooth e passando con il joystick verso destra associamo il nostro computer, in modo che non richieda piu l'autenticazione.

Configurazione degli Script di connessione per il GPRS


Ora che abbiamo installato e caricato tutti i servizi, demoni e moduli, passiamo alla parte di configurazione degli script di connessione.

Di seguito sono riportati esempi di file per avviare la connessione GPRS sul nostro Nokia (che svolgera' il ruolo di modem) attraverso il Bluetooth.

Abbiamo bisogno innanzitutto di uno script per ppp che richiami la chat col modem.

Quindi digitiamo:


# pico /etc/ppp/peers/gprs-connect


ed inseriamo:


nodetach

debug

show-password

connect /etc/ppp/chatscripts/chat-up

/dev/rfcomm0

#115200

57600

crtscts

local

:10.0.0.1

noipdefault

ipcp-accept-local

defaultroute

usepeerdns

novj

nobsdcomp

novjccomp

nopcomp

noaccomp

noauth


Editiamo ora il file che invece svolge la fase di chat col modem:


# pico /etc/ppp/chatscripts/chat-up


ed inseriamo:


exec chat \

TIMEOUT 5 \

ECHO ON \

ABORT '\nBUSY\r' \

ABORT '\nERROR\r' \

ABORT '\nNO ANSWER\r' \

ABORT '\nNO CARRIER\r' \

ABORT '\nNO DIALTONE\r' \

ABORT '\nRINGING\r\n\r\nRINGING\r' \

'' \rAT \

TIMEOUT 12 \

SAY "Press CTRL-C to close the connection" \

SAY "\ndefining PDP context...\n" \

OK ATH \

OK ATE1 \

OK 'AT+CGDCONT=1,"IP","internet.wind"' \

OK ATD*99# \

TIMEOUT 60 \

SAY "\nwaiting for connect...\n" \

CONNECT "" \

SAY "\nConnected." \

SAY "\nIf the following ppp negotiations fail,\n" \

SAY "try restarting the phone.\n"


Mettiamo down il link a eth0:


# ifconfig eth0 down


Per avviare la connessione, lanciamo da shell, dopo essere diventati root:


# pppd call gprs-connect


Il risultato dovrebbe essere simile a quello nella figura:


 

 


Per disconnetterci dovremo usare la combinazione di tasti CTRL+C per stoppare l'applicazione (ovviamente nella shell in cui è in esecuzione gprs-connect!).




Dati di accesso di provider italiani per il GPRS


WIND

apn: internet.wind

no nome utente

no pass

ip dinamico

dns 212.245.255.2

dns 212.141.84.12


TIM

apn: ibox.tim.it

nome utente: numero cel

pass: password di registrazione su tim.it

ip dinamico

dns 213.230.155.94

dns 213.230.130.222

dns 195.120.29.30


Utilizzo del DNS


Per utilizzare i dns dei diversi provider, dobbiamo inserire i loro IP nel file /etc/resolv.conf:


# echo nameserver dns >> /etc/resolv.conf


dove dns sara' per esempio 212.245.255.2



Trasferimento file con il Bluetooth


Per quanto riguarda, invece, il trasferimento di file dal pc al telefono e viceversa ci occorrono diversi programmi (oltre, ovviamente, a BlueZ) :


openobex

openobex-apps

obexserver.c

ussp-push


Possiamo scaricare i sorgenti di openobex e openobex-apps su http://openobex.sourceforge.net/ , di obexserver.c su http://www.frasunek.com/sources/unix/obexserver.c e di ussp-push all'indirizzo http://unrooted.net/hacking/ussp-push.tgz oppure cercarlo con Google.


Per utilizzare il trasferimento di file attraverso il nostro Smartphone, dobbiamo cercare il canale di utilizzo del nostro telefonino del servizio Object Push:


# sdpd

# sdptool browse MAC_CEL

...

...

Service Name: OBEX Object Push

Service RecHandle: 0x10003

Service Class ID List:

"OBEX Object Push" (0x1105)

Protocol Descriptor List:

"L2CAP" (0x0100)

"RFCOMM" (0x0003)

Channel: 9

"OBEX" (0x0008)

Language Base Attr List:

code_ISO639: 0x656e

encoding: 0x6a

base_offset: 0x100

Profile Descriptor List:

"OBEX Object Push" (0x1105)

Version: 0x0100

...

...


Per quanto riguarda il Nokia 6600, il canale e' il 9.

Quindi a questo punto dobbiamo editare il file /etc/bluetooth/rfcomm.conf per aggiungere un nuovo device che utilizzi il canale 9:


# pico /etc/bluetooth/rfcomm.conf


rfcomm0 {

bind no;

device MAC_CEL;

channel 1;

comment “GPRS”;

}

rfcomm1 {

device MAC_CEL;

channel 9;

comment “OPUSH”;

}


Abbiamo aggiunto al device per la connessione GPRS, un altro per il trasferimento file, quindi:


# sdptool add --channel=9 OPUSH


Ora estraiamo i file dagli archivi di openobex & co:


# tar xzvf $pacchetto-x.xx.tar.gz

# cd $pacchetto

# ./configure

# make && make install


dove $pacchetto sara' openobex, openobex-apps e ussp-push e x.xx la versione del programma.

Ora compiliamo obexserver.c :


# cp obexserver.c /openobex-apps-x.xx/src/

# cd openobex-appsx.xx/src/

# cc -o obexserver obexserver.c libmisc.a -lopenobex


Creiamo ora il device che sfruttera' il canale 9:


# rfcomm bind 1 MAC_CEL 9


e sempre all'interno della cartella /openobex-apps/src/ :


# cp obexserver /sbin/


Per quanto riguarda ussp-push, che ci permettera' di mandare file al cellulare, entriamo nella sua cartella:


# cd ussp-push-x.xx

# cp ussp-push /sbin/


Finalmente possiamo provare i programmi:


# ussp-push /dev/rfcomm1 nome_file_locale nome_file_remoto


Accettiamo sul cellulare (oppure aspettiamo il completamento del trasferimento se abbiamo associato il computer col Nokia) e avremo il nostro file nella sezione Messaggi.

Invece per ricevere file dal nostro cellulare dobbiamo avviare l'obexserver e inviare un file dal 6600:


# obexserver


Concluso il trasferimento, troveremo il file che il Nokia ci ha mandato nella cartella /tmp!


Comandare il PC con il Nokia 6600


Per l'ultimo capitolo dell'How to, viene descritta la procedura di controllo remoto del PC, da parte del Nokia.
Occorrente per la procedura:


btcid

bemusedlinuxserver

bemusedclient.sis


btcid è la sigla di Bluetooth Caller ID, che permette di visualizzare il numero del chiamante sul cellulare, nel nostro monitor; bemusedlinuxserver è la parte server di bemused che comanda il PC e bemused.sis è la sua parte client da installare sul nostro 6600.
Installiamo btcid che si puo' trovare anche in formato .tgz, googleando un po, e quindi è facilmente installabile da riga di comando con:


# installpkg btcid-x.xx.tgz


Per quanto riguarda il pacchetto di Bemused, possiamo trovare gli archivi all'indirizzo web http://bemused.sf.net/ e scaricare il server e il client. Decomprimiamo quindi il server:


# tar xzvf bemusedlinuxserver.tar.gz


Il client inviamolo al Nokia 6600 con ussp-push:


# ussp-push /dev/rfcomm1 bemused.sis bemused_client.sis


e nella sezione Messaggi, possiamo trovarlo e installarlo.


A questo punto dobbiamo decidere quale comando eseguire sul nostro PC, nel momento in cui arriva una chiamata verso il cellulare. Digitiamo quindi da shell:


# btcid -p /dev/rfcomm0 -c 'xmms –pause'


dove 'xmms -–pause' è un comando (in questo caso di esempio) che Bemused lancera' su Linux: xmms all'arrivo di una chiamata si mettera' in pausa, verra' mostrato l'ID del chiamante e potremo rispondere tranquillamente senza dover mettere mano alla tastiera o al mouse!


Quindi ci spostiamo nella cartella di bemusedlinuxserver e modifichiamo il file di configurazione:


# pico bemusedlinuxserver/bemused.conf


xmmsdir=xmms

mp3dir=directory-che-volete/

autostartxmms=1


e scegliamo la directory di xmms (che dovrebbe essere quella di default nel .conf) e la directory dove abbiamo i file musicali.

Poi compiliamo lanciando un:


# make && make install


e quindi lanciamo bemused:


# bemusedlinuxserver


ed eseguiamo bemused sul nostro 6600, scegliendo Opzioni poi Refresh List, con il quale si cercheranno le periferiche Bluetooth.
Selezioniamo il nostro PC e sull'interfaccia del client di Bemused verra' caricata tutta la lista dei file musicali presenti sul computer, che potranno essere scelti con la schermata dei controlli.


Licenza e condizioni d'uso


 

 


Questo How-to è rilasciato sotto licenza Creative Commons

Attribution-NonCommercial 2.0 Italy

(http://creativecommons.org/licenses/by-nc/2.0/it/).


In particolare, chiunque è libero di:

distribuire, comunicare al pubblico, rappresentare o esporre in pubblico l’opera;

di creare opere derivate alle seguenti condizioni:


    deve riconoscere la paternità dell'opera all'autore originario (citando in modo

visibile nella prima e ultima pagina: "Versione originale di Marco Ciammella

( Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo. ). Questo libro, in tutte le sue versioni

per volontà dell'autore, può essere riprodotto anche integralmente senza

violare nessuna legge in quanto questo libro è rilasciato sotto licenza

Creative Commons Attribution-NonCommercial 2.0

Italy (http://creativecommons.org/licenses/by-nc/2.0/it/)”.

non può utilizzare quest'opera per scopi commerciali.


In particolare, questo libro potrà essere:

modificato parzialmente o integralmente creando manuali per persone;

distribuito sia in forma originale che in forma modificata, in formato elettronico come in formato cartaceo;


Contatti


Marco Ciammella, email: marco (at) orvietolug (dot) org

Orvietolug, sito web: www (dot) orvietolug (dot) org



Condividi questo articolo su
 

Mancano
al Linux Day 2010
< Ottobre 2008 >
Lu Ma Me Gi Ve Sa Do
    1 2 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31