Portál AbcLinuxu, 2. května 2025 19:08
Vyždímejte ze svého mobilu s BlueTooth maximum. Mimo jiné vás naučíme z mobilu ovládat xmms. A nejen to.
Kdykoliv čteme nějaké články věnující se BlueTooth pod MS Windows, obvykle se v nich hovoří o roku 2003 jako o roku BlueTooth. My s Linuxem se těmto řečem můžeme jen smát. Podpora BlueTooth je v Linuxu vyřešena excelentně už dlouhou dobu a to hned třemi navzájem si konkurujícími projekty, podporován je veškerý BlueTooth hardware. Uživatelé používající Linux mohou o roku 2003 hovořit jako o roku s levným BlueTooth. Ceny USB adaptérů se dostaly k hranici 1000 korun, což už je levnější než jakýkoliv originální kabel dodávaný výrobcem. Navíc s BlueTooth nám odpadají problémy s několika kabely a rozdílnými konektory. Veškerá komunikace probíhá totiž bezdrátově - vzduchem.
V Linuxu existují tři (v současné době již jen dva) navzájem si konkurující BlueTooth implementace. Jedná se o projekt BlueZ, který je oficiálním BlueTooth stackem, Affix, originálně vyvinutý Nokií, která následně vydala zdrojové kódy veřejně k dispozici, a OpetBT, který je již v současné době mrtvým, v jádře jej ovšem stále nalezneme.
Jakožto fanoušek BlueZ se v tomto článku zaměřím právě na tento stack.
Co nám tedy v současné době BlueTooth umožňuje? Společnost SonyEricsson, která patent na tuto technologii vlastní a aktivně ji podporuje, vydala specifikace svých mobilních telefonů. Z tohoto faktu vyplývá i množství software, které se díky tomu vyrojilo, a tudíž veliká část tohoto článku bude věnována hlavně spolupráci těchto mobilů s Linuxem.
Můžeme dělat opravdu hodně. Počínaje ovládáním našeho oblíbeného
přehrávače MP3 - xmms, přes stahování a uploadování obrázků z mobilu do
počítače a naopak, přes připojování se k Internetu, psaní na Microsoft
BT klávesnici
a konče třeba ovládáním kurzoru myši přes náš mobil.
Zkusme se tedy na některé z těchto věcí podívat blíž a ukážeme si jak na to. Doporučuji nainstalovat jádro 2.4.21, které již obsahuje jaderný modul implementující rfcomm, narozdíl od dřívější implementace skrze démona. Dále potřebujeme software dodávaný s projektem BlueZ, viz download site: bluez-libs, bluez-utils, bluez-sdp, bluez-pan, bluez-hcidump, bluez-bluefw. Celým problémem "rozjetí" BlueTooth pod Linuxem se budu zabývat znovu v následujícím článku, jelikož nová implementace BlueZ jako jaderného modulu je zcela odlišná od konfigurace přes démona rfcommd.
Zkusme si tedy rozchodit ovládání našeho přehrávače MP3 (pouze pro mobily SE)
Stáhneme si knihovnu ruby, kterou potřebuje projekt bluexmms, a to
zde.
Dále zdrojové kódy programu bluexmms
tady.
Program xmms a aumix má na disku snad každý .
Přeložíme knihovnu ruby klasickým příkazem
make
,
nainstalujeme a spustíme ldconfig
. Dále přeložíme program
bluexmms příkazem make
a nainstalujeme.
Následně připojíme serial-device našeho mobilu na zařízení příkazem
rfcomm bind 0 MAC_ADDR_CILE 1
a následně spustíme bluexmms
- zařízení se spojí a v mobilu
máme v záložce accessories funkční ovládač našeho přehrávače.
Co dodat? Snad jen, že přímo modul do xmms se připravuje, nyní je nutné spouštět bluexmms, které následně spustí xmms.
Stáhneme knihovny a aplikace projektu openobex
zde.
Stáhneme implementaci obex-push vytvořenou na základě implementace
projektu Affix:
ussp-push.
Přeložíme knihovny a aplikace klasicky via ./configure && make &&
make install
.
Rozbalíme ussp-push, a aby chodil se současnou implementací BlueZ, patchneme
těmito řádky:
--- obex_main.c.old Sat Feb 1 14:12:54 2003
+++ obex_main.c Sat Feb 1 14:13:13 2003
@@ -221,7 +221,7 @@
return NULL;
}
- custfunc.userdata = gt->userdata;
+ custfunc.customdata = gt->userdata;
custfunc.connect = cobex_connect;
custfunc.disconnect = cobex_disconnect;
custfunc.write = cobex_write;
Přeložíme příkazem make
, nainstalujeme.
Na mobilu SE T68i je OBEX na kanálu 10, proto spojíme linux s tímto
kanálem příkazem
rfcomm bind 1 MAC_ADDR_CILE 10
a následně můžeme již poslat třeba obrázek na plochu jednoduše příkazem
ussp-push /dev/rfcomm1 cesta_k_obrazku.gif
jmeno_obrazku_v_mobilu.gif
Předpokládám, že openobex-apps máme již nainstalované, takže můžeme rovnou kompilovat obexserver. Postupujeme tímto trikem, jelikož potřebujeme jeden soubor přímo z openobex-apps.
tar -xzvf openobex-apps-1.0.0.tar.gz
cd openobex-apps-1.0.0
./configure && make
cd src
wget http://www.frasunek.com/sources/unix/obexserver.c
cc -o obexserver obexserver.c libmisc.a -lopenobex
chown root.root obexserver && cp obexserver /usr/local/bin
Následně spustíme sdp daemona jako root příkazem sdpd
,
připojíme na něj OBEX service příkazem
sdptool add --channel=10 OPUSH
a spustíme
obexserver
Jak vidíte, BlueTooth je pod Linuxem velice dobře a jednoduše implementované, aplikace přibývají každý den, a proto říkám kašlete na kabel, vždyť bez drátů to jde tak krásně a jednoduše! Jediným problémem je výdrž baterií u zařízení, které nejsou nastálo připojené k elektrické síti. :)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.