Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Jak na Bluetooth pod Linuxem

Ve Vltavě již uplynulo mnoho vody od chvíle, kdy jsme si naposledy pověděli něco o Bluetooth pod Linuxem. Mezitím se v této oblasti mnohé posunulo a téměř nic z toho, co jsme si povídali minule, již neplatí. Ukažme si tedy nové cesty, jak rozjet Bluetooth pod Linuxem.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Naštěstí byl už dávno opuštěn starý systém přidávání nových vlastností BlueZ projektu do jádra a nyní tedy máme klasicky dvě možnosti.

  1. stáhnout poslední verzi jádra – doporučuji 2.4.21-rc2, jelikož ve starších jádrech se vyskytuje velice nepříjemná race condition
  2. použít -mh patche na současné stabilní jádro 2.4.20, 2.4.19 a 2.4.18 z adresy www.holtmann.or­g/linux/kernel

Kdo má starší jádro, měl by urychleně přejít na nové nebo patchnout to současné, jelikož ve všech jádrech od 2.2.0 do 2.4.21-pre5 včetně je race condition, kterou lze lokálně zneužít a získat práva roota.

Poté, co jsme patchli naše současné jádro nebo rozbalili nové – uvádět zde postup nemá smysl, jelikož jej snad už každý z mých předchozích článků zná – přistoupíme k jeho konfiguraci a zapneme Bluetooth podporu:

<M> Bluetooth subsystem support
<M> L2CAP protocol support
<M> SCO links support
<M> RFCOMM protocol support
[*] RFCOMM TTY support
<M> BNEP protocol support
[*] Multicast filter support
[*] Protocol filter support
Bluetooth device drivers --->
<M> HCI USB driver
[*] SCO (voice) support
[ ] USB zero packet support
< > HCI UART driver
< > HCI VHCI (Virtual HCI device) driver

Jaký modul používá váš hardware a jestli vůbec je schopen pod Linuxem fungovat, zjistíte na této stránce: www.holtmann.or­g/linux/blueto­oth/devices.html

Podle ní příslušně upravte sekci drivers. Osobně doporučuji používat USB dongles, už z toho důvodu, že dnes stojí i s daní 1000 korun a navíc fungují bez problémů.

Nyní upravíme soubor /etc/modules.conf a přidáme autoloading příslušných modulů:

#modrozub
alias net-pf-31 bluez
alias bt-proto-0 l2cap
alias bt-proto-2 sco
alias bt-proto-4 bnep
alias tty-ldisc-15 hci_uart
alias char-major-10-250 hci_vhci
alias bt-proto-3 rfcomm

Nyní přeložíme poslední verze utilit ze stránky: bluez.sourcefor­ge.net/downlo­ad/download.htmla stáhneme a přeložíme tyto soubory:

bluez-libs-2.4.tar.gz
bluez-utils-2.3.tar.gz
bluez-sdp-1.1.tar.gz
bluez-pan-1.1.tar.gz
bluez-hcidump-1.5.tar.gz
bluez-bluefw-0.9.tar.gz

Při kompilování postupujeme od bluez-libs k bluez-bluefw přesně tak, jak jsou soubory uvedeny pod sebou.

Po nainstalování nám vznikne adresář /etc/bluetooth, ve kterém se nacházejí soubory potřebné ke správné funkci bluetooth pod Linuxem. Nezbývá nám tedy nic jiného, než se v nich trochu „povrtat“ :)

Ze všeho nejdříve ovšem musíme „nahodit“ Bluetooth zařízení, aby o nich jádro vědělo:

modprobe hci_usb; #popřípadě jiný driver v závislosti na vašem železe
hciconfig hciX up; #hci0 - prvni dongle, hci1 - druha dongle...

Nyní zeditujeme soubor /etc/bluetooth/pin a nastavíme párovací heslo. Doporučuji nastavit nějakou číselnou kombinaci, jelikož v případě párování s mobilním telefonem nebudeme mít možnost zadat písmena.

Poté nastavíme soubor /etc/bluetooth/hcid.conf

Mně se nejvíce osvědčila tato kombinace:

#
# HCI daemon configuration file.
#
# $Id: hcid.conf,v 1.3 2002/07/18 18:12:46 maxk Exp $
#

# HCId options
options {
    # Automatically initialize new devices
    autoinit yes;

    # Security Manager mode
    #   none - Security manager disabled
    #   auto - Use local PIN for incoming connections
    #   user - Always ask user for a PIN
    #
    security auto;

    # Pairing mode
    #   none  - Pairing disabled
    #   multi - Allow pairing with already paired devices
    #   once  - Pair once and deny successive attempts
    pairing multi;

    # 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 incoming connections
    #   master - become master on incoming connections,
    #        deny role switch on outgoing connections
    #
    #lm accept,master;
    #
    lm accept,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,rswitch;

    # Authentication and Encryption
    auth enable;
    encrypt enable;
}

Poté můžeme pustit démona starajícího se o ověřování hesel – hcid takto:

hcid -f /etc/bluetooth/hcid.conf

Dalším krokem je vyeditování souboru /etc/bluetooth/rfcomm.conf  – zde je největší změna. Již se oproti minulosti nepoužívá démon rfcommd, projekt BlueZ přešel na jaderný modul rfcomm.

#
# RFCOMM configuration file.
#
# $Id: rfcomm.conf,v 1.1 2002/10/07 05:58:18 maxk Exp $
#

rfcomm0 {
    # Automatically bind the device at startup
    bind yes;

    # Bluetooth address of the device
    device 00:11:22:33:44:55;

    # RFCOMM channel for the connection
    channel 1;

    # Description of the connection
    comment "";
}

device označuje MAC adresu zařízení, ke kterému se chcete připojit, kanál s danou námi využívanou službou na daném zařízení a rfcomm0 označuje zařízení v /dev/, v tomto případě /dev/rfcomm0. Těchto sekcí si v souboru vyrobíme příslušný počet.

Následuje vytvoření příslušných devices v /dev/, o které se postará tento jednoduchý skript:

I=0
while [ "$I" -lt 256 ]; do
if [ ! -c /dev/rfcomm"$I" ]; then
mknod -m 666 /dev/rfcomm"$I" c 216 "$I"
fi
I=`expr "$I" + 1`
done

Jestliže máte vhci zařízení, vyrobíte jej takto:
  mknod /dev/vhci c 10 250; chmod 644 /dev/vhci

S nastavením systému jsme hotovi a můžeme začít Bluetooth rutinně používat :)

Nejsnazší cestou je asi použití příkazu rfcomm bind all a poté již jen používat daná zařízení ve všech skriptech, kde chceme, jednoduchým přidáním /dev/rfcomm0 na místa, kam bychom jinak psali /dev/ttyS0 nebo /dev/ircomm0.

Rfcomm můžeme obsluhovat i ručně, uvedu zde nejčastěji používané příkazy:

  • rfcomm bind device MAC kanal  – spojení jádra a daného zařízení/kanálu
  • rfcomm release device  – uvolnění jádra od daného zařízení
  • rfcomm connect device kanal  – rovnou se k zařízení připoj a nečekej na inicializaci

Z dalších příkazů se mohou například hodit:

  • hcitool scan  – vyhledá MAC adresy zařízení v dosahu a určí jejich nickname – zařízení musí být v módu zjistitelný
  • hcitool inq  – zjistí pouze MAC adresy a doplňkové informace
  • hcitool dev  – uvede seznam všech adaptérů v počítači
  • hcitool info MAC  – zjistí informace o zařízení
  • hcitool cc MAC  – připojí se k danému zařízení
  • hcitool dc MAC  – odpojí se od daného zařízení
  • hcitool lq MAC  – určí kvalitu linky vedoucí k danému zařízení! (dodáno na mé přání :-) )
  • hciconfig hciX features  – řekne, které vlastnosti vaše zařízení podporuje
  • hciconfig hciX revision  – sdělí vám, zda jste šťastným uživatelem dongle s podporou kolika připojených zařízení v režimu slave/master – daný firmware porovnejte s touto stránkou a dostanete výsledek:
    www.holtmann.or­g/linux/blueto­oth/csr.html

Bluez v dnešní době umí i komunikovat s Bluetooth bondovkami, využívat výhod PAN a SDP. Bohužel ani jedno z těchto dalších potřebných zařízení nevlastním, takže je nemohu vyzkoušet. Zde je prostor pro prodejce těchto zařízení k jejich zapůjčení a za drobnou reklamu napsání další části seriálu. Takže co bych potřeboval? Ještě alespoň dva USB nebo PCMCIA Bluetooth adaptéry a Bluetooth bondovku.

Asi mne nenapadá nic, co bych dodal, takže užívejte, modrejte a popřípadě se ptejte v diskusi pod článkem :-)

Školení: Pokročilejší kurz jazyka Java

Java je multiplatformní programovací jazyk, který vytvořila a vyvíjí společnost Sun. Java je silný, objektově orientovaný jazyk se širokou komunitou, nabízející především vysokou produktivitu vývoje.

  • Práce s řetězci
  • Regulární výrazy
  • Kolekce
  • Generiky
  • Smyčka typu "for" ve verzi Java 1.5
  • Výčty
  • Vlákna, synchronizace
  • Polymorfismus, RTTI
  • Java Beany
  • JDBC (práce s databázemi)
  • GUI (knihovny AWT a Swing)
  • Java na serveru (servlety, JSP)

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,24

Přehled názorů

Dotaz
prasatko 21. 5. 2003 03:37
Nový
└ 
Re: Dotaz
CIJOML 21. 5. 2003 07:14
Nový
 
└ 
Re: Dotaz
prasatko 21. 5. 2003 16:32
Nový
 
 
└ 
Re: Dotaz
Red Head 22. 5. 2003 00:41
Nový
 
 
 
└ 
Re: Dotaz
CIJOML 22. 5. 2003 22:13
Nový
Dotaz - chodi to nekomu opravdu perfektne?
Jiri Svoboda 21. 5. 2003 08:33
Nový
├ 
Re: Dotaz - chodi to nekomu opravdu perfektne?
BigSam72 21. 5. 2003 09:14
Nový
├ 
Re: Dotaz - chodi to nekomu opravdu perfektne?
Peter Santavy 21. 5. 2003 10:31
Nový
└ 
Re: Dotaz - chodi to nekomu opravdu perfektne?
anonymní uživatel 21. 5. 2003 12:22
Nový
 
└ 
Re: Dotaz - chodi to nekomu opravdu perfektne?
Setapoux 22. 5. 2003 15:08
Nový
 
 
└ 
Re: Dotaz - chodi to nekomu opravdu perfektne?
Pav Lucistnik 22. 5. 2003 17:32
Nový
Linux emulace BT HF
Roman DAVID 21. 5. 2003 10:49
Nový
└ 
Re: Linux emulace BT HF
Helm 21. 5. 2003 15:45
Nový
 
└ 
Re: Linux emulace BT HF
Roman DAVID 22. 5. 2003 11:27
Nový
Supr - co to je BlueTooth?
Grumpa 21. 5. 2003 11:51
Nový
├ 
Re: Supr - co to je BlueTooth?
Jan Krupa 21. 5. 2003 13:24
Nový
└ 
Re: Supr - co to je BlueTooth?
CIJOML 21. 5. 2003 17:17
Nový
MAC adresa zarizeni? coze?
Pav Lucistnik 21. 5. 2003 15:09
Nový
└ 
Re: MAC adresa zarizeni? coze?
CIJOML 21. 5. 2003 16:56
Nový
 
├ 
Re: MAC adresa zarizeni? coze?
Solvina 21. 5. 2003 17:45
Nový
 
└ 
Re: MAC adresa zarizeni? coze?
Pav Lucistnik 22. 5. 2003 17:33
Nový
Dotaz : BT HF
Medved 22. 5. 2003 09:16
Nový
├ 
Re: Dotaz : BT HF
Pav Lucistnik 22. 5. 2003 17:34
Nový
├ 
Re: Dotaz : BT HF
CIJOML 22. 5. 2003 17:39
Nový
└ 
Re: Dotaz : BT HF
Medved 23. 5. 2003 09:24
Nový
Kdyz uz si budete trhat vlasy a proste se nesparujou..
Conny 6. 8. 2007 21:24
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem