Bluetooth kasutamine Debian Lennyga

Allikas: Kuutõrvaja
Redaktsioon seisuga 18. august 2009, kell 11:57 kasutajalt Imre (arutelu | kaastöö) (Sinihamba riistvara)

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 andmevahtuskiirus, 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)

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 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. Selle väikese energiatarbega lühimaa raadioside lahenduse, mida tähistatakse nimega Bluetooth tehnoloogia initsiatiiv on alguse saanub samuti Skandinaaviast ja konkreetset 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 osaliselt 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 rakendust 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 sinihamba 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

Sinihamba tugi muudes seadmetes, nt telefonid, peakomplektid, fotoaparaadid on selline nagu tootja on paremaks pidanud ja kasutajale vast ei ole see ka otseselt oluline.

Sinihamba tarkvara paigaldamine arvutisse

Debian Lenny tuum sisaldab sinihamba tuge, kuid sinihamba kasutamiseks arvutist, tuleb arvutisse lisada veel sinihamba tarkvara, 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 - arvutis töötavate bluetooth seadmete andmed, tekkivad töötamise käigus

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.

Sinihamba võrgus olevad seadmed ja teenused

Arvutist sinihamba 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 sinihamba 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 sinihamba seadmed, nt mobiiltelefon üle sinihamba 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 sinihamba

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

Bluetooth-1.gif

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

Bluetooth-2.gif

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

Bluetooth-3.gif

Kui tegu on kasutajale kuuluvate seadmetega, mida ta nö järgmistel päevadel ka koos kasutaks, siis peale kaugenemist ja uuesti lähedusse sattumist tunnevad need seadmed üksteist ära ja usaldavad edasi. Kui on tarvis aga usaldus lõpetada, siis tuleb arvutis valida samalt hüpikmenüült Preferences ning avanenud dialoogiaknas valida seade ning öelda Delete

Bluetooth-12.gif

Usalduse loomine seadmete vahel, nt arvuti ja telefoni vahel ei ole mitte eesmärk iseensest, vaid eelduseks, et seadmeid saaks andmevahetuseks koos kasutada, nt teleoni aadressraamatu arvutisse kopeerimiseks või arvuti telefoni abil internetti ühendamiseks.

Käsurealt

TODO

Võrguanalüüs

Sinihamba 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

Bluetooth-11.gif

kust on nähe, et on avastatud seade

  • nimi - Nokia 3110c
  • bdaddr - 00:1F:5C:F0:E2:A7

Lisaks saab vaadata konkreetsete seadmete omadusi

Bluetooth-10.gif

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