di balla & fe
Ogni linuxiano che si rispetti, dopo aver comprato un qualsiasi oggetto elettronico si aspetta di poterlo utilizzare in tutte le sue caratteristiche, nel nostro caso abbiamo testato la possibilità di poter creare delle piccole reti ( si parla di non più di 8 computer) utilizzando dispositivi bluetooth.
Il dispositivo provato è un pennino usb, (la marca non importa) in primis per cercare dell’hardware supportato dal nostro OS è d’obbligo una ricerca nel web, un sito utile è: http://www.bluez.org qua si trova sia la documentazione, i dispositivi supportati e i programmi utili per poter gestire le periferiche del “dente blu” :)
(si possono consultare anche le ottime guide di imu e AAAle in questo stesso sito – N.d.R.)
Il protocollo bluetooth non necessita di enormi quantità di energia, la distanza di utilizzo tra due dispositivi varia da 10 a 100 metri, non è stato costruito per gestire elevate quantità di dati come il wi-fi, (banda media di 721 Kbps) però se si è alle strette e non si vuole inciampare nei cavi può rimanere utile sapere che esiste una alternativa.
Kernel:
Iniziamo con la gestione della configurazione del kernel per poter attivare le opzioni necessarie allo scopo.
I kernel precedenti al 2.4.20 hanno bisogno di una patch (scaricabile all’indirizzo http://bluez.sf.net/patches/patch-2.4.19-bluetooth-*), per tutti gli altri basta aggiungere le varie opzioni per il bluetooh:
Percorsi per il Kernel 2.4.x:
bluetooth support: Bluetooth subsystem support BNEP protocol support Multicast filter support Protocol filter support Bluetooth support - Bluetooth device drivers HCI USB driver HCI VHCI (Virtual HCI device) driver Networking-support>Networking-Options 802.1d Eterner Bridging
percorsi per il kernel 2.6.x:
Device driver - Networking-support - Bluetooth-subsistem-support: bnep Multicast filter support protocol fiter support Device driver - Networking-support - Bluetooth-subsistem-support - Bluetooth-Device-Drivers: HCI-USB-driver Qua dobbiamo cercare il driver del nostro dispositivo. Device driver - Networking-support - Networking-Options 802.1d Eternet Bridging
IMPORTANTE IL DRIVER BLUETOOTH PRESENTE NELLA SEZIONE USB VA IN CONFLITTO CON I DRIVER DELLA SEZIONE NETWORK!!!!
Software:
Tutto il software necessario è raccolto in questi pacchetti
bluez-libs-2.10 bluez-utils-2.10 bluez-pin-0.24 bluez-firmware-1.0 bluez-hcidump-1.11 bluez-hciemu-1.0
Per un utilizzo minimo bastano i primi due, ma gli autori del programma consigliano di installare anche gli altri.
Veniamo all’opera; la modalità di connessione utilizzata non permette simmetria di ruoli: un dispositivo bluetooth dovrà svolgere la funzione “server”, uno quella di “client”. Il procedimento può essere espletato con sfumature diverse, ma in questa sede ci occuperemo della situazione in cui il server agisca da “NAP” (Network Access Point), il client da “PANU” (Pan User). Caliamoci inoltre in un ambiente facile: le macchine sono soltanto due. Nel seguito generalizzeremo il discorso a otto macchine (un NAP che accoglie sette connessioni PANU).
I software che verranno utilizzati in un primo momento (hcid e pand) sono contenuti nel pacchetto “bluez-utils” che deve essere installato badando alle dipendenze. Se il kernel è stato ben compilato e il demone hcid avviato, il comando:
$ hcitool dev
ci darà conferma sul fatto che il dispositivo bluetooth è pronto all’uso.
Per avere meno scrupoli nel caso qualcosa non funzionasse, si cominci con l’accertarsi che i dispositivi bluetooth si vedano l’un l’altro: attiviamo il demone hcid su entrambe le macchine; il comando:
$ hcitool scan
permette di rilevare il dispositivo remoto, leggendo inoltre il suo “BDA”, (BT Device Address); ecco un esempio:
$ hcitool scan $ $
Hcid è avviato; i dispositivi si “sentono”; questa è la prima tappa. Proseguiamo.
Occorre mettere in ascolto il dispositivo sul NAP: per effettuare questo passo modifichiamo il file /etc/bluetooth/hcid.conf: nella sezione “device” dovrà essere presente la linea:
lm accept,master;
Sui Panu potremo lasciare l’impostazione di default che con tutta probabilità risulterà:
lm accept;
Nel caso in cui fosse stato necessario modificare il file riavviamo hcid e prepariamoci a mettere in ascolto, pronto a ricevere connessioni, il dispositivo bluetooth lato NAP:
# pand -listen -role NAP
Ora spostiamoci sul PANU e connettiamoci (hcid deve essere avviato, ricordatevi):
# pand -role PANU -connect
dove “nap-bda” è il bluetooth device address del dispositivo presente sul NAP, facilmente individuabile eseguendo un “$ hcitool scan”.
Se tutto è andato liscio, su entrambe le macchine sarà possibile gestire l’interfaccia bnep0, alle quali dovremo assegnare un ip e una netmask; un ping decreterà il successo dell’opera:
NAP: ifconfig bnep0 192.168.0.1 netmask 255.255.255.0 PANU: ifconfig bnep0 192.168.0.2 netmask 255.255.255.0 PANU: ping 192.168.0.1
Qui termina la seconda tappa; vediamo ora che cosa accade nei particolari: ci sarà utile per automatizzare la configurazione delle interfacce bnep0.
Quando PANU e NAP entrano in comunicazione tramite la chiamata “connect” di pand, essi lanciano lo script:
/etc/bluetooth/pan/./dev-up bnep
dove “n” è il minor intero tale che l’interfaccia bnep sia utilizzabile; in altre parole, se dovessimo aver attivato bnep0 e bnep1 per altri oscuri scopi, pand lancierà lo script “dev-up bnep2”.
Il file dev-up deve essere eseguibile e può contenere ciò che vogliamo: su PANU, ad esempio, potrà essere simile a questo:
#!/bin/bash ifconfig $1 192.168.0.2 netmask 255.255.255.0 up
Sul NAP provvederemo a sostituire l’opportuno ip; in questo modo la configurazione delle interfaccie non dovrà essere più gestita manualmente, e non solo: modificando lo script dev-up potremo eseguire qualsiasi direttiva sia lato PANU che lato NAP (firewall, log, routing etc.), direttiva che verrà eseguita appena verrà installata la connessione.
La quarta ed ultima tappa, il passaggio alle otto macchine, si basa sull’ethernet bridging; si crea un’interfaccia virtuale, non legata a nessun dispositivo fisico, e si convogliano su di essa le connessioni bluetooth; sarà sufficiente scrivere opportunamente, lato NAP, lo script dev-up; le procedure lato PANU rimarrranno identiche.
Installiamo bridge-utils.
Creiamo l’interfaccia virtuale sul NAP:
# brctl addbr pan0 # ifconfig pan0 192.168.0.1
I seguenti comandi servono ad ottimizzare lo scambio dati, eliminando lo “Spanning Tree Protocol” e il “Listening and Learning States”:
# brctl setfd pan0 0 # brctl stp pan0 off(oppure disable)
Il dado sta per essere tratto: modifichiamo lo script dev-up in modo che le interfacce bnep che verranno a crearsi si leghino a pan0:
#!/bin/bash brctl addif pan0 $1 ifconfig $1 0.0.0.0
Che succede? Ogni volta che pand (lato NAP) inizializza una connessione con un dispositivo che ne fa richiesta, l’interfaccia che si crea (e che viene passata allo script dev-up come primo argomento) è rediretta prima sull’interfaccia pan0, in seguito privata di un ip vero e proprio.
In questo modo pan0 sostituisce in toto le bnep presenti sul NAP, permettendo di gestire la situazione multi-PANU in maniera più elegante ed efficace.
Non resta che sbizzarrirsi: grazie allo script dev-up si potrà gestire la tabella di routing, il firewall e qualsiasi cosa possa saltare in mente; sui PANU, ad esempio, si potrà impostare il NAP come default gateway.
Considerazioni:
Creare una rete bluetooth non è difficile anche se la banda non è altissima comunque a nostro parere è utile per lo scambio di piccoli file, per leggere la posta e navigare, (alla fine quasi l’80%)
Riferimenti:
http://www.bluez.org/redirect.php?url=http%3A%2F%2Fbluez.sf.net%2Fcontrib%2FHOWTO-PAN
Balla & Fe
nb: grazie a imu per aver convertito l’sxw in txt :-)
ma quante ne sai!
dev-up è proprio quello che mi serve!
come non detto
/etc/bluetooth/pan/dev-up
sembra non funzionare con bluez-utils 3.7
ma perchè io no???
ho un HP dv2055ea con modulo bluetooth interno che però non viene per niente riconosciuto da linux. Ho installato ogni pacchetto possibile e immaginabile ma il modulo non viene per niente visto da ubuntu. Alcuni dicono che sia proprio un problema della distro perchè con Debian sembra andare alla grande ma prima di dover riconfigurare tutto vorrei esserne certo. Ho anche controllato sulla sezione laptop del wiki di ubuntu e il mio non è menzionato però ci sono modelli equivalenti in cui, gurdacaso, il bluetooth non è stato testato o risulta compatibile senza alcuna configurazione. In un altra guida ho letto di un certo omnibook che sembrerebbe essere una sorta di panacea per qualsiasi modulo bt ma, evidentemente, non per il mio visto che tutto resta uguale.
Insomma voi cosa mi consigliate???
come non detto… ho risolto attivando il modulo da windows, per la questione degli ACPI…
@ beeryourself e @ tutti quelli che possono aiutarmi
come hai fatto? anche il mio bluetooth interno non da segni di vita con ubuntu…
com’è questa storia di acpi?
ho cercato su google ma…
grazie anticipatamente
io ho un toshiba satellite a100 ma non riesco ad attivare il bluetooth interno in ubuntu… :(
qlcnuno sa come aiutarmi?
E se volessi mettere in rete bluetooth (ovviamente una rete molto molto semplice) una macchina Win XP (che uso in sala, spesso come media center) e una Ubuntu 7.04 (pc principale e unico collegato in rete) volendo condividere anche la connessione?
Samba funziona su rete bluetooth?
Se la risposta è affermativa domani me ne vado a comprare un dongle ulteriore.
Saluti!
ma quante ne sai!
ciao a tutti io avrei una domanda da fare perchè sto lavorando ad un progetto per l’università che richiede la creazione di una particolare rete bluetooth. Volevo sapere se è possibile, all’intero della stessa PAN attivare due nodi NAP contemporaneamente che si colleghino tra di loro ed ai quali si possano collegare dei PANU. Sapete se è possibile? Grazie.