Bluetooth kasutamine Debian Lennyga
Sisukord
Sissejuhatus
Bluetooth tehnoloogia võimaldab raadioside abil seadmetel omavahel suhelda. 2009 aastal on levinud mitmete standardite implementatsioone, mis kasutavad raadioside kanalit andmeedastuseks, nt
- WiFi - suhteliselt kallis realiseerida, seadmed tarvitavad suhteliselt palju energiat, möödukas tegevusraadius (sajad meetrid), peamiselt andmesideks, suhteliselt suur andmevahetuskiirus, otsenähtavus on abiks, aga ei ole tingimata vajalik
- Bluetooth - odav realiseerida, seadmed tarvitavad vähe energiat, suhteliselt väike tegevusraadius (tavaliselt kümmekond meetrit), sobiv heli, pildi ja andmeedastuseks; seadmete vahel ei ole oluline otsenähtavus, mõõdukas andmevahetuskiirus; andmevahetus kuni kahekse osalise vahel
- IrDA - seadmete vahel on vajalik otsenähtavus, väike tegevuskaugus (kümneid sentimeetreid kuni mõned meetrid) ja andmevahetuskiirus; andmevahetus kuni kahe osalise vahel
- Zigbee - industriaalseks kasutamiseks, seadmete juhtimine
- RFID - seadmel ei olegi energiaallikat ja energia saadakse RFID lugejalt, äärmiselt odavad ja miniatuursed
Oluline on siinjuures mõista, et kui bluetooth mingis osas kipub mõnda muud raadiosidet kasutavat tehnoloogiat asendama (nt IrDA) on üldiselt erinevad tehnoloogiad mõeldud erinevate vajaduste rahuldamiseks. Nt WiFi ja Bluetooth ei ole selles mõttes otseselt üksteisele konkurendid.
Bluetooth lahendusele on iseloomulik
- avatud spetsifikatsioon
- lühike tegevusraadius, nö kaablite asendamiseks
- heli ja andmeedastus
- kasutatakse üldtunnustatult sarnaseks kasutuseks sobivat 2.4 GHz sagedusvahemikku (Industrial, Scientific, and Medical, ISM vahemik)
- on lihtne kasutada, st ei vaja kasutamiseks märkimisväärseid tehnilisi oskusi
Tüüpilised Bluetooth kasutusalad on
- telefoni ja kõrva juurde kinnitatava peakomplekti (ingl. k. headset) ühendus heli ülekandmiseks
- telefoni ja arvuti ühendamine telefoni arvutist juhtimiseks ja arvuti internetti ühendamiseks
- mitmesuguse koduelektroonika (nt fotoaparaat) ja kontoriseadmete (nt printer) ühendamiseks
- nn ad-hoc arvutivõrgu moodustamine üle Bluetoothi
- bluetooth klaviatuuri ja hiire ühendamine arvutiga
Bluetooth initsiatiiv on algatatud Rootsi päritolu firma Ericsson poolt, tänapäeval juhib Bluetooth arengut Bluetooth SIG (Special Interest Group) http://www.bluetooth.com/.
Bluetooth (ingl. k. sinihammas) nimi pärineb Skandinaaviast ja seda kandis Taani kuningas Harald I, kes ühendas oma tegevusperioodil Taani ja Norra. See väikese energiatarbega lühimaa raadioside lahendus, mida tähistatakse nimega Bluetooth on alguse saanud samuti Skandinaaviast, valitud nime peeti sobivaks seetõttu, et see peaks sümboolselt tähistama sidetehnika ja arvutustehnika maailmade ühendamist (ehk lihtsustatult, telefonide ja arvutite kokkuühendamist) ning rõhutama asjaolu, et tegu on rahvusvahelise koostööga. Bluetooth logo kujutab kuninga nime esitähti, H ja B (Harald Bluetooth), kusjuures folkloor kõneleb, et kuninga hambad oli sinised tema armastusest mustikate vastu.
Tööpõhimõte
Bluetoothi võib paljuski võrrelda Ethernetiga, mõlemad on protokollid ja spetsifitseerivad asjakorralduse kõigis kihtides, alates füüsikalisestest nö elektriginaalidest kuni andmete töötlemiseni rakenduse tasemel. Bluetoothi kohta kehtivad sellised väited
- bluetooth seadmed moodustavad personal-are networki (PAN, ingl. k. personaalne võrk) ehk piconeti (ingl. k. väike võrk) kuhu võivad samaaegselt kuuluda kuni kaheksa töötavat osalist
- bluetooth seadmeid identifitseerib bluetooth aadress ehk bdaddr, mis on etherneti aadressile sarnane järgnevus, nt 00:0B:5D:A5:76:40
- bluetooth lahendus aktsenteerib energiasäästlikkust, seetõttu näeb protokoll ette seadmete asumist mitmetes erinevates režiimides (active, sniff, park, hold)
- bluetooth lahendus aktsenteerib toimetulekut sidehäirete mõttes väljakutsuvas keskkonnas, kasutatakse nn spread-spectrum frequency hopping tehnikat, mis tähendab, et osalised vahetavad suhtlemise ajal tihti sagedust (1600 korda sekundis valides sagedusi 79 erineva seast, tegevus toimub 2.4 GHz ümbruses)
- piconetis valitakse automaatselt välja üks master kusjuures ülejäänud osalised on slave'id, need rollid omavad tähendust ainult kõige madalamates protokolli kihtides
- bluetooth protokoll sisaldab võimalust ühel osalisel küsida teiselt pakutavate teenuste nimekirja, seda alamosa protokollist nimetatakse Service Discovery Protocoliks (SDP)
- bluetooth seadme riistvara ja operatsioonisüsteemis töötava tarvkvara (draiveri) kokkupuude toimub Host Controller Interface (HCI) piiril
- bluetooth sisaldab vahendeid turvalisuse saavutamiseks, nt seadmete sidumine (ingl. k. pairing) võimaldab pääsukoodide (ingl. k. passkey) abil kahte seadet üksteisele tutvustada ning tekitada nende vahel usaldus
- bluetooth võrgus toimub andmevahetus mõni Mbit/s kiirusel (mõnisada kBait/s)
Bluetooth kihilisust võiks illustreerida sellise skeemiga
--------- Rakendused ---- | | | TCP/IP SDP | - Service Discovery Protocol | | TCP - Telephony Control Protocol PPP OBEX | | - Object Exchange Protocol | | | | ---- RFCOMM --- | | - Radio frequency communication | | | ----------- L2CAP ------- - Logical Link Control and Adaptation Protocol | ------------ HCI -------- - Host Controller Interface | Bluetooth riistvara
kust on näha kuidas erinevat tüüpi rakendused kasutavad suhtlemiseks erinevaid teid läbi protokolli kihtide
- kokkuvõttes jõuab erinevate rakenduste liiklus välja läbi sama bluetooth riistvara
- tcp/ip andmevahetust kasutavad rakendused töötavad RFCOMM alamsüsteemi kaudu
- SDP protokolli abil bluetooth võrgust teiste bluetooth seadmetega seotud teenuste kohta info küsimine toimub aga otse rakenduskihist L2CAP kihti pöördudes
Üks 2009 aastal populaarne Linux operatsioonisüsteemis kasutuses olev Bluetooth pinu (ingl. k. stack) implementatsioon on BlueZ http://www.bluez.org/.
Bluetooth riistvara
Tavaliselt esineb bluetooth tugi arvutis kas nö sisese (mis võib olla vaja esmalt BIOSist sisse lülitada) või külgeühendatava USB seadme kujul
# lsusb Bus 004 Device 002: ID 044e:3001 Alps Electric Co., Ltd UGTZ4 Bluetooth
Bluetooth tugi muudes seadmetes, nt telefonid, peakomplektid, fotoaparaadid on selline nagu tootja on paremaks pidanud ja kasutajale vast ei ole see ka otseselt oluline.
Bluetooth tarkvara paigaldamine arvutisse
Debian Lenny tuum sisaldab bluetooth tuge, mis põhineb BlueZ http://www.bluez.org/ lahendusel, kuid bluetooth seadmete kasutamiseks arvutist, tuleb arvutisse lisada veel ka nn user-space tarkvara, nt bluetooth haldusutiliidid. Kõige põhilisemate tarvarakomponentide paigaldamiseks tuleb öelda, mis paigaldab sõltuvusena bluez-utils paketi
# apt-get install bluetooth
Tulemusena paigaldatakse muu seas sellised programmid ja seadistusfailid
- hciconfig - arvutis töötavate bluetooth seadmete seadistusutiliit
- hcid - arvutis töötav nn bluetooth deemon
- hcitool - arvutis ja võrgus olevate bluetooth seadmete andmete esitamiseks
- rfcomm - rfcomm seadmete seadistamise utiliit
- dund - dial-up networking deemon
- l2ping - L2CAP echo pakettide saatmise programm
- pand - private arene network (PAN) deemon, mis võimaldab nt ühendada arvuteid ad-hoc bluetooth võrku
- /etc/bluetooth - Bluetooth tarkvara seadistusfailid
- /var/lib/bluetooth - arvuti bluetooth seadme ümbruses töötavate bluetooth seadmete andmed, tekkivad bluetoothi kasutamise käigus
- /etc/default/bluetooth - seadistusfail
Lisaks sellele on vajalikud sõltuvalt konkreetsest bluetooth kasutusest veel tõenäoliselt muudki paketid
# apt-cache search bluez* | grep ^bluez bluez-audio - Bluetooth audio support bluez-cups - Bluetooth printer driver for CUPS bluez-gnome - Bluetooth utilities for GNOME bluez-hcidump - Analyses Bluetooth HCI packets bluez-pcmcia-support - PCMCIA support files for BlueZ 2.0 Bluetooth tools bluez-utils - Bluetooth tools and daemons bluez-firmware - Firmware for Bluetooth devices
ja veel üks samuti asjakohane nimekiri
# apt-cache search bluetooth
Lisaks peab kasutaja kuuluma gruppi netdev, seda maksab igaks juhuks kontrollida peale tarkvara paigaldamist.
Bluetooth tarkvara käivitamine
Üldiselt peab Bluetooth kasutamiseks arvutis töötama hcid deemoni ja tema kontrollib seadistusfail /etc/bluetooht/hcid.conf, käivitamiseks sobib öelda
# /etc/init.d/bluetooth start
millele vastab protsess
# ps aux | grep hcid root 13871 0.0 0.1 4452 1644 ? Ss 13:31 /usr/sbin/hcid -x -s
Kui riistvara on sisse lülitatud ja tarkvara paigaldatud, siis peaks olema näha arvuti Bluetooth seadmeid, nt nii
# hcitool dev Devices: hci0 00:0B:5D:A5:76:40
Antud juhul on arvutis olemas hci0 nimeline Bluetooth seade.
Bluetooth võrgus olevad seadmed ja teenused
Arvutist bluetooth võrgus olevate muude seadmete kasutamiseks on üldiselt tarvis teada nende seadmete bluetooth aadresse (bdaddr), mis esinevad kujul '00:1F:5C:F0:E2:A7'.
Seadmete leidmine võrgust
Üle bluetoothi näha olevaid seadmeid näeb küsides nt
# hcitool scan Scanning ... 00:1F:5C:F0:E2:A7 Nokia 3110c
Teades seadme bluetooth aadressi saab küsida ka detailsemat infot
# hcitool info 00:1F:5C:F0:E2:A7 Requesting information ... BD Address: 00:1F:5C:F0:E2:A7 Device Name: Nokia 3110c LMP Version: 2.0 (0x3) LMP Subversion: 0x6cc Manufacturer: Cambridge Silicon Radio (10) Features: 0xbf 0xee 0x0f 0xc6 0x9a 0x39 0x00 0x00 <3-slot packets> <5-slot packets> <encryption> <slot offset> <timing accuracy> <role switch> <sniff mode> <RSSI> <channel quality> <SCO link> <HV3 packets> < u-law log> <A-law log> <CVSD> <paging scheme> <power control> <transparent SCO> <EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <inquiry with RSSI> <extended SCO> <EV5 packets> <AFH cap. slave> <AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL> <AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps>
kust on näiteks näha, et seada suudab nt
- encryption - andmevahetust krüptida
- role switch - vahetada rolle st master <--> slave
Teenuste leidmine võrgus töötavalt seadmelt
Reeglina pakuvad bluetooth seadmed, nt mobiiltelefon üle bluetooth erinevaid teenuseid, sdptool abil saab küsida telefonilt teenuste nimekirja nt selliselt, kus 00:1F:5C:F0:E2:A7 on eelmises punktis leitud võrgus töötava seadme bluetooth aadress
# sdptool browse 00:1F:5C:F0:E2:A7 Browsing 00:1F:5C:F0:E2:A7 ... Service Name: Dial-up networking Channel: 1 Service Name: Nokia PC Suite Channel: 15 Service Name: COM 1 Channel: 3 Service Name: Voice Gateway Channel: 13 Service Name: Audio Gateway Channel: 12 Service Name: Network Access Point Service Service Description: Personal Ad-hoc Network Service which provides access to a network ... Service Name: OBEX Object Push Channel: 9 Service Name: OBEX File Transfer Channel: 10 Service Name: SyncML Client Channel: 11 Service Name: SIM ACCESS Channel: 4
kus näeme, et telefon pakub muu hulgas selliseid teenuseid
- Dial-up networking - mobiiltelefonis töötav nö sissehelistamiskeskus
- Nokia PC Suite - nokia proprietary protokolli abil andmevahetus, st kontaktid, kalended jt
- OBEX File Transfer - nt telefoni kaameraga salvestatud pildi ja video failide kopeerimine
Täielik vastus on toodud aadressil Fail:Sdptool-nokia-3110c.patch.
Arvuti ja telefoni sidumine üle bluetooth'i
Nagu üldiselt osaliste suhtlemisel on oluline ka bluetooth puhul, et enne andmevahetuse alustamist saaksid osalised üksteist autentida. Nt arvuti ja telefoni sidumisel (ingl. k. pairing) tuleb mõlemal pool sisestada vastavas menüüs samasugune pääsuvõti (ingl. k passkey). Seejärel öeldakse, et seadmed on seotud.
Kuigi nö madalal tasemel kasutatakse arvuti ja telefoni vahelise ühenduse pidamiseks ikkagi samu komponente, on erinevates keskkondades erinevad kasutajataseme vahendid. Käesolevas tekstis käsitletakse selliseid
- Gnome keskkond - soovitatav kasutada
- nö käsurealt - põhimõtteliselt peaks saama fundamentaaseid asju kontrollida Linuxis käsurealt ja seepärast on see variant samuti esitatud.
Gnome keskkonnas
Eeldame, et Gnome keskkond on paigaldatud ja kasutusel ning seda kasutatakse nö tavakasutajana, kusjuures kasutaja peab kuuluma gruppi netdev. Arvutisse peab olema paigaldatud pakett gnome-bluetooth
# apt-get install gnome-bluetooth
Läheduses asuvate bluetooth seadmete kasutamiseks tuleb kasutajana Gnome keskkonda sisse logida ning seadmed esmalt omavahel siduda (ingl. k. pairing). Olgu näiteks tegu arvuti ja telefoniga, sidumiseks tuleb valida menüüribal Gnome Bluetooth-appletil, millel on abitekst Bluetooth Manager parema hiireklõpsuga avanevast hüpikmenüüst Browse Device ning võiks avaneda nt selline pilt
Valida huvipakkuv seade ning öelda Connect; seejärel ilmub telefonile tekst 'Exchange data with fuji-0?' (fuji-0 asemel on teie arvuti nn bluetooth nimi), vastates jaatavalt küsib telefon nn pääsuvõtit (ingl. k. passkey), sisestage nt '1111'. Järgmisena avaneb arvutis sarnane pääsuvõtme sisestamise dialoog
Siin tuleb valida Enter ja sisestada järgmises aknas sama pääsuvõti. Nüüd on seadmete vahel usaldus loodud. Kui sellist protseduuri ei oleks, siis saaks nt võõra telefoniga arvuti suhtlema hakata.
Usalduse loomise õnnestumise tunnuseks on avanenud telefoni nö failisüsteemi sisuga aken, nt selline, kuigi hetkel ei olnud eesmärk telefoni failisüsteemile ligi pääseda
Tuleb arvestada, et peale seadmete sidumist esitatud viisil säilib seadmete vahel usaldus ka nt peale arvuti alglaadimist. Sidumist puudutavad andmed on salvestatud kataloogi /var/lib/bluetooth failidesse, sh sidumisel kasutatud pääsuvõti, fail linkkeys
$ find /var/lib/bluetooth -type f /var/lib/bluetooth/00:0B:5D:A5:76:40/lastseen /var/lib/bluetooth/00:0B:5D:A5:76:40/names /var/lib/bluetooth/00:0B:5D:A5:76:40/trusts /var/lib/bluetooth/00:0B:5D:A5:76:40/features /var/lib/bluetooth/00:0B:5D:A5:76:40/config /var/lib/bluetooth/00:0B:5D:A5:76:40/lastused /var/lib/bluetooth/00:0B:5D:A5:76:40/classes /var/lib/bluetooth/00:0B:5D:A5:76:40/linkkeys /var/lib/bluetooth/00:0B:5D:A5:76:40/manufacturers
Seejuures tuleb arvestada, et kui arvutil on mitu kasutajat, siis seda bluetooth seadmete usaldust saab samasse arvutisse sisseloginud teine kasutaja samuti kasutada, eeldusel, et vastav telefon on läheduses. Kui tegu on personaalse arvutiga, mida järgmistel päevadel kasutaja kasutaks, siis peale kaugenemist ja uuesti lähedusse sattumist tunnevad need seadmed üksteist ära ja usaldavad edasi ning kasutamine võib jätkuda.
Kui on tarvis aga usaldus lõpetada, siis tuleb arvutis valida samalt hüpikmenüült Preferences ning avanenud dialoogiaknas valida seade ning öelda Delete
Tulemusena kustutatakse faili sisu
/var/lib/bluetooth/00:0B:5D:A5:76:40/linkkeys
Usalduse loomine seadmete vahel, nt arvuti ja telefoni vahel ei ole mitte eesmärk iseensest, vaid eelduseks, et seadmeid saaks andmevahetuseks koos kasutada, nt telefoni aadressraamatu arvutisse kopeerimiseks või arvuti telefoni abil internetti ühendamiseks. Kuidas telefoni abil arvutiga internetti kasutada on kirjeldatud palas Mobiiltelefoni kasutamine Debianiga#Arvuti internetiühendus üle GPRSi.
Käsurealt
Arvuti bluetooth seadme ja nt telefoni bluetooth seadmete sidumise eesmärgiks on tekitada sobiva sisuga /var/lib/bluetooth kataloogi sisu sealhulgas linkkeys fail. Selleks sobib kasutada nt sellist järgnevust
Eelduseks on pääsuvõtme agendi olemasolu, seda saab tekitada nt selliselt kompileerides
# apt-get build-dep bluez-utils # cd /usr/share/doc/bluez-utils/examples # make cc `pkg-config --libs --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE -DVERSION="\"unknown\"" \ -o passkey-agent passkey-agent.c
Esmalt tuleb käivitada arvutis pääsuagent, mis ootab pöördumist telefonilt
$ ./passkey-agent 1234
Seejärel telefonil liikuda Bluetooth sektsiooni ja otsida üles arvuti seade ning valida Seo ning sisestada telefoni sama 1234 pääsuvõti.
Tulemusena on seadmed seotud, arvutisse tekitati kataloogi /var/lib/bluetooth sobiv sisu. Nüüd võib passkey-agent programmi töö lõpetada. Edasiseks kasutamiseks ei ole seda rohkem vaja tarvis kasutada, kuna seadmete sidumist puudutavad andmed on arvuti failisüsteemis olemas.
Telefoni abil arvuti internetti ühendamist on kirjeldatud palas Mobiiltelefoni kasutamine Debianiga#Arvuti internetiühendus üle GPRSi.
Võrguanalüüs
Bluetooth võrgu nähtavate seadmete kohta andmete saamiseks sobib kasutada nt btscanner tarkvara, paigaldamiseks tuleb öelda
# apt-get install btscanner
Ja kasutamisel ta esitab nimekirja avastatud seadmetest
kust on nähe, et on avastatud seade
- nimi - Nokia 3110c
- bdaddr - 00:1F:5C:F0:E2:A7
Lisaks saab vaadata konkreetsete seadmete omadusi
kust on näha, et avastatud telefon Nokia 3110c pakub sellised teenuseid
- Networking
- Capturing
- Object Transfer
- Telephony
Bluetooth liiklust ennast saab jälgida nt paketist bluez-hcidump programmiga hcidump
# hcidump -i hci0 HCI sniffer - Bluetooth packet analyzer ver 1.42 device: hci0 snap_len: 1028 filter: 0xffffffff < HCI Command: Create Connection (0x01|0x0005) plen 13 > HCI Event: Command Status (0x0f) plen 4 > HCI Event: Connect Complete (0x03) plen 11 < HCI Command: Read Remote Supported Features (0x01|0x001b) plen 2 < ACL data: handle 42 flags 0x02 dlen 10 L2CAP(s): Info req: type 2 ...
Bluetooth ping kasutamine
# l2ping 00:1F:5C:F0:E2:A7 Ping: 00:1F:5C:F0:E2:A7 from 00:0B:5D:A5:76:40 (data size 44) ... 0 bytes from 00:1F:5C:F0:E2:A7 id 0 time 11.86ms 0 bytes from 00:1F:5C:F0:E2:A7 id 1 time 29.90ms 0 bytes from 00:1F:5C:F0:E2:A7 id 2 time 42.79ms
BNEP võrgu moodustamine
Bluetooth Network Encapsulation Protocol (BNEP) võrgu moodustamine, TODO.
Kasulikud lisamaterjalid
- Mobiiltelefoni kasutamine Debian Lennyga
- http://wiki.debian.org/BluetoothUser
- http://www.bluez.org/
- http://wiki.bluez.org/
- http://electronics.howstuffworks.com/bluetooth.htm
- http://en.opensuse.org/Bluetooth
- http://www.bluetooth.com/
- http://en.wikipedia.org/wiki/Bluetooth
- http://debian-bluetooth.blogspot.com/
- http://www.thinkwiki.org/wiki/How_to_setup_Bluetooth