Tučňák má ostré modré zuby!
Tučňák má ostré modré zuby!
Dnes se zaměříme na Bluetooth pod Linuxem.
Úvod
Doufám, že jsem vás názvem článku nezastrašil. Nebojte se. Naši tučnáci
nekoušou. Právě naopak. Dalším oborem, kde
nám tučnáčci dělají radost, je technologie Bluetooth (modrý zub). Dnes
si povíme něco o tom, jak našeho tučnáčka vybavit pro cestování s
notebookem. Samozřejmě se dá použít jakýkoliv počítač s USB, ale
bezdrátová komunikace dostává tu správnou štávu až při využití na
cestách.
Je přeci úžasné si jen tak položit v autě na klín notebook,
telefon mít v kapse, nemuset řešit kabel, do kterého se v lepším
případě zamotáte a v horším se na něm oběsíte, neřkuli infraport, který
musíte neustále přesvědčovat, že opravdu není dobrý nápad přestat se
koukat vašemu notebooku do červeného očička právě v momentě, kdy šéfovi
odesíláte nejdůležitější e-mail za půl roku. O špatné konstalaci hvězd,
kdy si způsobíte vypálení v lepším případě jednoho a v horším případě
obou očí, ani nemluvě .
Asi se divíte, proč zrovna modrý zub. Nejprve si povíme něco o vzniku
názvu této technologie, protože ten je stejně zajímavý, ne-li zajímavější,
než technologie celá.
Název Bluetooth vznikl dle krále Haralda, zvaném Modrozub (Bluetooth),
který na přelomu 10. století sjednotil Dánsko a Norsko. Jeho velikou
předností byla schopnost komunikace s lidmi. Povedlo se mu do té doby
něco nevídaného. Připojil ke své říši území bez války jen na základě
dohody. Nejspíš proto si společnost Ericsson, která tuto technologii
světu dala, a která stojí v čele sdružení prosazující tento standard,
vzpomněla na tohoto velikána téměř svých dějin (sídlo společnosti je o
pár set kilometrů severovýchodně a to ve Švédsku).
Vlastnosti
Proč tato technologie vznikla? Odpověd je nasnadě už z prvního odstavce.
Prostě tato technologie se snaží o tyto věci:
- eliminaci kabelů a drátů nutných pro propojení s nehybnými i mobilními zařízeními
- podporu datové i hlasové komunikace
- využívání možností Ad hoc sítí za předpokladu nejvyšší synchronizace mezi komunikujícími zařízeními
A jak takové bluetooth zařízení vypadá? Jedná se o malý čip,
velikosti 9x9 milimetrů, komunikujícím v rádiovém pásmu 2.4 GHz.
Technické detaily čipu Bluetooth jsou takovéto:
- Zakladatel: Ericsson
- Cena čipu: 20 dolarů
- Rozměry čipu: 9 x 9 milimetrů
- Spotřeba: stand-by 0,3 mA; při přenosu 30mA
- Provozní pásmo: 2402 až 2483.5 MHz
- Přenosová rychlost: 1 Mb/s (možnost komunikace synchronní a asynchronní)
- asynchronní: uplink 721 kb/s, downlink 57,6 kb/s
- synchronní: 432,6 kb/s oběma směry
- uvedené rychlosti jsou čisté, tj. po započítání řídících a opravných protokolů
- Dosah: až 100 metrů (se zesilovacím stupněm) - bez něj 10 metrů
- Identifikace: 48-bitová adresa z IEEE 802.11 standardu
- Zabezpečení: 128bitovým kódováním
- Frequency hopping: 1600 skoků/s
- Vzdálenost kanálů: 1 MHz => 79 kanálů
- Možné stavy zařízení: master, slave
- Počet dalších najednou komunikujících zařízení přes jeden čip: 7
- Možnost tvořit pikosítě, kdy 1 zařízení ve stavu slave je připojeno ke 2 masterům
- Spolupracující firmy: Ericsson, 3Com, Casion, Intel, Toshiba, Nokia, Motorola a stovky dalších
Kolik je na světě zařízení s podporou Bluetooth? V době psaní tohoto článku
bylo dostupných
622 zařízení.
A nyní se podíváme na specifikaci zařízení. Každé zařízení podporuje
takzvané profily. To je seznam funkcí, které zařízení zná a skrze které
komunikuje se svým okolím. Profilů je několik desítek, ale každé zařízení
zná jen několik. Proto je nutné si nejprve na výše uvedené stránce
zkontrolovat, zdali vaše zařízení spolu budou komunikovat. Jinak se
maximálně najdou, ale poté již nebude další komunikace možná.
Já zvolil tyto 2 zařízení: Mobilní telefon
Nokii 6310
a USB adapter
Mitsumi typu WIF-0402C.
Jak vidíte, shodují se hned v několika profilech, takže komunikace bude
velice snadná. A také byla.
Instalace
První, co následovalo, bylo vložení USB adaptéru do portu a návštěva
značkového servisu Nokia , kde jsem si nechal nahrát poslední verzi firmware
4.20. Poté jsem věděl, že mušky ze strany telefonu budou minimalizované a já
budu moci nadávat pouze sám sobě, když něco nebude fungovat.
Současné distribuce nemají přímo v sobě moduly pro bluetooth komunikaci,
proto následovalo přeložení kernelu poslední verze 2.4.19-pre10 s
podporou Bluetooth:
Bluetooth subsystem support
L2CAP protocol support
SCO links support
HCI USB driver
[*] Firmware download support
Dále jsem se snažil najít v distribuci Debian potřebné ovládací utility. Ty
tam bohužel také nebyly, a tak jsem navštívil stránku
bluez.sf.net, kde je projekt hostovaný
a stáhnul tyto soubory:
- bluefw-0.3.tar.gz
- bluez-libs-2.0-pre9.tar.gz
- bluez-sdp-0.4.tar.gz
- bluez-utils-2.0-pre9.tar.gz
- hcidump-1.2.tar.gz
- rfcommd-1.1.tar.gz
Všechny soubory jsem rozbalil a jal se překládat. Jako první je
potřeba přeložit bluez-libs . Pod distribucí debian nebyla kompilace
možná. Probíhá ale v pořádku pod distribucí RedHat, na které je také
primárně projekt vyvíjen. Proto jsem ze stránek
bluez.sf.net stáhnul
deb balíček a nainstaloval. Kompilace všech ostatních aplikací
již poté byla bez problému. Je samozřejmě nutné stáhnout jak knihovny,
tak i jejich devel verze.
Nyní je už jen třeba vše přinutit fungovat...co vy na to?
Začneme inicializací adaptéru:
modprobe hci_usb; modprobe l2cap
hciconfig hci0 up
Zapneme podporu Bluetooth na Nokii (menu 10) a necháme naším zařízením
nokii nalézt:
hcitool -i hci0 inq
Dostaneme tuto odpověď:
Inquiring ...
00:02:EE:00:AB:B3 clock offset: 0x54b6 class: 0x502204
Telefon byl tedy nalezen. Zkusíme ho pingnout, zda-li funguje:
l2ping 00:02:EE:00:AB:B3
Ping: 00:02:EE:00:AB:B3 from 00:A0:96:1F:B0:0C (data size 20) ...
0 bytes from 00:02:EE:00:AB:B3 id 200 time 29.46ms
0 bytes from 00:02:EE:00:AB:B3 id 201 time 26.83ms
2 sent, 2 received, 0% loss
I zde je tedy vše v pořádku a přistoupíme k nastavování komunikace. Jako
první musíme nastavit hcid , což je démon, starající se o výměnu
hesel mezi oběma zařízeními a jejich spárování.
cijoml@notas:~/bluetooth$ cat /etc/bluetooth/hcid.conf
#
# HCI daemon configuration file.
#
# $Id: hcid.conf,v 1.1.1.1 2002/03/08 21:12:35 maxk Exp $
#
# HCId options
options {
# Automaticaly initialize new devices
autoinit yes;
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incomming connections
# user - Always ask user for a PIN
security auto;
# PIN helper
pin_helper /bin/bluepin;
}
# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
#name "BlueZ (%d)";
name "Linux";
# Local device class
class 0x100;
# Default packet type
pkt_type DH1,DM1,HV1;
# Inquiry and Page scan
iscan enable; pscan enable;
# Default link mode
# none - no specific policy
# accept - always accept incomming connections
# master - become master on incomming connections,
# deny role switch on outgoint connections
#
#lm accept,master;
lm master;
# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
#lp hold,sniff;
lp hold,sniff,park;
# Authentication and Encryption
#auth enable;
#encrypt enable;
}
Nyní je nutné nastavit démona, který pro nás obstarává komunikaci přes
bluetooth - rfcommd . Démon bude nastaven jako slave, master bude
telefon (pro snadnější nastavování).
cijoml@notas:~/bluetooth$ cat /etc/bluetooth/rfcommd.conf
options {
psm 3;
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
firewall /sbin/iptables;
}
na {
channel 1;
up {
ppp "%d call gprsbt";
}
}
Nastavíme komunikaci přes ppp protokol. Zde bych upozornil, že není třeba
cokoliv měnit ve vašich souborech provider a
chatscripts , jen vymažte zmínku o /dev/tty zařízení.
To pro vás bude simulovat rfcommd . Vše ostatní ponechte včetně
rychlosti portu 115200.
Nyní je vše nastavené a komunikace, pakliže máme funkční ppp protokol,
může začít:
rfcommd -n -f /usr/local/etc/rfcommd.conf na
00:02:EE:00:AB:B3
Nokia oznámí připojené zařízení Linux, zvolíme OK, a zadáme číslo. Toto
si nemusíme pamatovat, zadává se pouze jednou.
Abychom nemuseli řešit problém, že na náš desktop se nám připojuje aplikace
běžící pod rootem (hcid ), zadáme xhost + . Vyjede na
nás okénko, kde zadáme to samé číslo a potvrdíme. Zařízení jsou spárována, což
nám Nokia oznámí a začne vytáčet a následně se spojí. Je dobré na Nokii vypnout
u spárovaného zařízení požadavek autorizace spojení, abychom nemuseli toto
potvrzovat při každém připojení přes notebook.
Od té doby má náš tučnák opravdu ostré modré zuby .
Vás to nebolelo, ale já strávil hledáním informací téměř 15 hodin čistého
času čtením specifikace a mailových konferencí. Bohužel k tomuto způsobu
komunikace neexistuje žádná dokumentace . Po vyjití tohoto článku
dávám na stránku projektu BlueZ tento článek uzpůsobený jako howto. To
víte. Linuxová komunita si musí pomáhat.
Užijte si svého tučnáka s modrými zoubky. Je to radost. A bude ještě
větší, až se i u nás začnou prodávat tiskárny nebo chladničky s podporou
této technologie.
Napište nám vaše názory, jsou pro nás důležité.
CIJOML
Diskuse k tomuto článku
Kdyby nekdo chtel ten Mitsumi adapter, tak jej rad prodam :) Omylem jsem si objednal po netu 2 :) Cena je 2450 Kc :)
Zajimalo by me, jestli se ten modrozub propali skrz jednu zed a asi 5 metru vzduchu. A jestli se da udelat ze dvou takovych kousku TCP sitka.
Na oboje zni odpoved ano...o tom, jak z toho udelat sit budu psat clanek pro roota, takze cekejte :)
Adapter prodan. Dekuji za nabidky :)
Howto jiz existuje http://bluez.sourceforge.net/howto/index.html
Pepe
Rad bych opravil nepresnost:
Bezpecnost: 128 bitove kodovani
kodovani - tim se nic moc nezabezpeci.
Spravne slovo ma byt sifrovani 
Koho by to zajimalo, BlueZ neni jediny a ani zdaleka nejlepsi Blutooth stack pro Linux.
Kdo se koukne na stranky konkurencniho Affixu tak zjisti ze se s tim da delat jeste mnohem a mnohem vice.
Instalace je totalne bezproblemova (vyvijeno paralelne na Red Hatu a Debianu), k dostani jako jeden tar.gz (deb a prm balicky jsou taky), funguje se vsemi kernely 2.4.x, neni treba nic patchovat.
A uz se to taky cpe na desktop
Affix jsem zkusil a musim rict, ze ten kod je hrozne zpraseny. A co na to vyvojari BlueZ? S jejich nazorem se musim stotoznit.
>BTW what do u think about affix ?
>I compiled it now and it looks worser than BlueZ...only its graphical
>engine looks fine...
Our lower layers are much better, have more features and about 40-30% smaller.
Also their HCI core does not work on SMP.
The only advantage that they currently have is kernel based RFCOMM socket
implementation.
We're working on RFCOMM and once it's ready I see zero reason why would
people want to use Affix.
Some time ago I wrote sort of review (see list archives) where I pointed
out their problems, most of the
important comments are still valid.
I also offered them to work together. They refused without an explanation.
Which does not make any sense to me.
We can easily port most of their apps, if we wanted to.
Max
mě se nepodařilo affix vůbec zkompilovat a to jsem zkoušel různé verze (i betaberze)
|