Wednesday, March 5, 2008

Plavozubi Debian

Gomila kablova iza mog računara redovno čini da mi se momentalno diže kosa na glavi. Osim manjka estetike, kablovi sakupljaju prljavštinu, stvaraju interferenciju i redovno svojom dužinom uslovljavaju raspored nameštaja u kući.
Ljudi pametniji od mene već decenijama smišljaju načine kako da se otarase kablova, i to im manje-više i polazi za rukom. S obzirom da retrospektiva bežičnih uređaja prevazilazi obim ovog skromnog Ilustrovanog vodiča kroz Debian GNU/Linux, pomenuću tehnologiju koja je skoro napunila 10 godina i koja je našla primenu kod širokog spektra uređaja. Reč je o bluetooth tehnologiji, koju je, verovali ili ne, moguće vrlo lako koristiti na svakom Linux-u sa kernelom 2.6 generacije (za stariji kernel nemam pojma :)).
Upotrebljivost bluetooth-a na Linux-u ne zavisi mnogo od distribucije na kojoj je instaliran bluetooth softver već, pre svega, od kvaliteta bluetooth primo-predajnika na računaru i uređaju sa kojim računar komunicira. Tako, pri istim podešavanjima Linux sistema neki uređaji rade bez problema, dok neki rade "ograničeno": napr. razmenjuju podatke sa računarom, ali samo na relaciji Linux>uređaj, a ne i u suprotnom smeru.
Ovaj slučaj se desio mom Nokia 6233 mobilnom telefonu, dok SonyEricsson K750i besprekorno "sarađuje" sa Debianom. Bluetooth često ne radi dobro ni u Windows XP sistemu, uglavnom zbog loših drajvera i programa za bluetooth komunikaciju. Ponekad ni uređaji nisu baš za pohvalu.

Zbog hardverskih i softverskih manjkavosti, ne postoji univerzalno pravilo koje omogućava potpuno iskorišćenje istog bluetooth uređaja na različitim sistemima. Usled ove neprijatne činjenice, meni preostaje da opišem "standardnu proceduru" instalacije i stavljanja u pogon bluetooth-a na Debian-u, kao i moguća rešenja za najčešće probleme (nažalost, nekada ni ova "rešenja" ne pomažu). Kao primer prenosivih uređaja koristiću mobilne telefone sa bluetooth adapterom, pošto nemam notebook računar.
Da bi se ostvarila komunikacija između računara i mobilnog telefona koji ima bluetooth, treba nabaviti bluetooth adapter za PC (ako već nije prisutan), a zatim, uz pomoć Synaptic-a instalirati pakete:
  1. bluez-utils
  2. bluetooth
  3. libbluetooth2
  4. kdebluetooth
  5. bluez-hcidump
  6. bluez-firmware
  7. qobex
Zatim treba uključiti bluetooth na svom mobilnom uređaju i pokušati slanje neke slike ili melodije. Računar će pitati da li želim da se povežem sa dotičnim uređajem i, ukoliko pristanem, tražiti PIN kod (PIN - Personal Identification Number). To može biti bilo kakav višecifren broj, lak za pamćenje.
U praksi to izgleda tako što KBluetoothD meta server, preko dijalog prozora, pita da li da pokrene OBEX Push server (kbtobexsrv). Funkcija KBluetoothD servera je da prati rad bluetooth uređaja i da osluškuje zahteve okolnih uređaja (ili lokalnog uređaja na računaru) za bluetooth komunikacijom. Ukoliko se pojavi potreba za ovom vrstom komunikacije, odgovarajući servis će se pokrenuti. U protivnom će samo KBluetoothD meta server biti aktivan. Na taj način se štedi RAM memorija, jer je malo verovatno da će bluetooth biti stalno potreban. Isti dijalog prozor mi omogućava da biram kako će se kbtobexsrv server ubuduće odnositi prema uređaju koji zahteva bluetooth konekciju (opcije unchanged, ask, allow, deny):



Pošto sam poslao melodiju sa mobilnog telefona (SonyEricsson K750i), program kbtobexsrv će me pitati da li da prihvatim ponuđeni fajl i na kojoj lokaciji na hard disku da ga sačuvam:



Pošto je ovo prva komunikacija mobilnog telefona i računara potrebno je uneti identičan PIN kod na oba uređaja:



Posle uparivanja uređaja, poslata melodija će se naći na računaru... Fajlovi sa računara se lako šalju tako što se desnim klikom na fajl pozove kontekstni meni i u okviru njega se odabere opcija Actions>Send with Bluetooth...





Problemi:

Ukoliko je mobilni uređaj pronašao računar pod Debian-om, priča se završava na prethodnom poglavlju članka. Ako to nije slučaj, nije sve izgubljeno, jer u najvećem broju slučajeva, Debian može da vidi mobilni telefon. Provera se najlakše radi tako što se u adresnu liniju Konqueror-a unese bluetooth:/ ili se pokrene program kbtobexclient iz Internet sekcije K menija.
Ako je uređaj prepoznat biće dodat na listu poznatih uređaja. Tada je moguć dvosmerni transfer podataka između računara i mobilnog telefona ali sa Linux mašine, dok će mobilni, pri pokušaju povezivanja sa računarom davati informacije tipa "Connection Failed". Svejedno, moguće je otvarati direktorijume na mobilnom telefonu uz pomoć Konqueror-a, i na taj način preuzeti fajlove sa telefona.

Ovaj problem se meni desilo sa mojim Nokia 6233 telefonom, a problem još nema jednoznačno rešenje. Navodno, postoji bug u KDE bluetooth paketima, pa je uparivanje otežano ili nemoguće, jer je računar pod Debian-om nevidljiv ostalim uređajima, iako je iscan opcija u hcid.conf fajlu omogućena. Iskreno, nisam baš siguran da je problem u ovom bug-u, jer SonyEricsson bez problema "vidi" Debian, nesmetano se "uparuje" i razmenjuje podatke s njim. Elem, da bi se videlo da li je omogućena iscan opcija, treba iz terminala pozvati hciconfig komandu:

# hciconfig
hci0: Type: USB
BD Address: 00:02:52:BF:81:7C ACL MTU: 1017:8 SCO MTU: 64:0
UP RUNNING PSCAN ISCAN
RX bytes:3768 acl:87 sco:0 events:146 errors:0
TX bytes:15540 acl:84 sco:0 commands:66 errors:0

Ako ISCAN nedostaje, vrlo je verovatno da računar neće biti vidljiv za većinu uređaja... Postoji rešenje za gore pomenuti bug u vidu modifikacije hcid.conf (lokacija /etc/bluetooth/) fajla, ali tweak treba raditi samo ukoliko se uređaji uopšte ne vide.
Dakle, potrebno je izbrisati sadržaj /var/lib/bluetooth/ direktorijuma, da bi se uklonile informacije o eventualno "uparenim" uređajima. Zatim,u sekciju device hcid.conf fajla uneti discovto 0:

# Inquiry and Page scan
iscan enable; pscan enable;
discovto 0

Na ovaj način je opcija ISCAN aktivirana.
Zatim sledi ponovno uparivanje računara i bluetooth uređaja. Pošto se meni ne dopada da mi uređaj bude u "izvol'te" modu, koji parametar discovto 0 omogućava, ja ne koristim ovaj tweak, iako može da pomogne u okruženju bez radoznalih komšija sa bluetooth uređajima :)...

Problemi sa "uparivanjem" uređaja

Ukoliko ne dođe do "uparivanja" uređaja, u direktorijumu /etc/bluetooth treba napraviti fajl link_key:
#   touch     /etc/bluetooth/link_key 
# chmod 644 /etc/bluetooth/link_key

# /etc/init.d/bluetooth restart


...staviti tarabu
(#) ispred PIN koda i dodati putanju do bluez-pin fajla u hcid.conf:


# passkey "XXXX";
pin_helper /usr/bin/bluez-pin;

XXXX - PIN kod unet prilikom uparivanja uređaja

Posle svake promene konfiguracionih fajlova treba restartovati procese koji se tiču bluetooth komunikacije:

# /etc/init.d/bluetooth restart
Restarting bluetooth: hcid sdpd rfcomm

Komandni prompt je uvek koristan za dijagnostiku i administraciju, tako da nije loše znati komande za traženje uređaja:

# hcitool scan
# hcitool dev
# hcitool inq

... kao i za informisanje o podržanim bluetooth servisima:

# sdptool browse (napr. 00:12:65:A3:B2:FC)

Bluetooth servisi

U fajlu rfcomm.conf se nalaze informacije o aktivnim servisima, a ako neki servis nedostaje može se dodati. Recimo, ako su podržani Nokia OBEX PC Suite servisi, a nema ih u rfcomm.conf fajlu, mogu se dodati na sledeći način:
rfcomm0 { 
bind yes;

device
00:12:65:A3:B2:FC;
channel 12;

comment "Nokia OBEX PC Suite Services";

}

Napomena: Ovo je samo primer; parametri u fajlu rfcomm.conf se razlikuju zavisno od bluetooth uređaja koji komuniciraju sa računarom.

U dalju konfiguraciju bluetooth servisa neću da zalazim kako ne bih prekršio pravilo dato samom sebi, a koje me uslovljava da ne pišem o stvarima koje nisam lično radio. Na taj način izbegavam ulogu "pametnjakovića" koji samo prepisuje tuđe prepisane tekstove i pravi se važan. Samo da naglasim, da ću se i dalje truditi da istrajem u ovoj praksi po cenu da ne napišem nijedan tekst u budućnosti (to bi verovatno značilo da sam odbacio tekovine moderne civilizacije i otišao na Tibet).
Više informacija u vezi sa bluetooth komunikacijom na Linux-u sadrži on-line literatura na Debaira, Nokia 6680 and Linux, Gentoo Linux Documentation sajtovima kao i na nezaobilaznom Debian Wiki sajtu...

No comments: