Pokud koketujete s myšlenkou rozšířit svůj počítač o
možnost komunikace přes infraport, může vám následující článek posloužit
jako návod pro jeden konkrétní USB infraport nebo jako inspirace, jak
rozběhávat podobné kousky hardwaru.
19.5.2006 06:00 | František Bublík | přečteno 16544×
Poté co se mi odporoučel do věčných lovišť můj milovaný telefon Alcatel jsem po prozkoumání cen mobilních telefonů na trhu zakoupil nový Siemens ME 75. Cena do čtyř tisíc, zhruba deseti megová paměť, emailový klient a podpora javových aplikací bylo to, co jsem od mobilu žádal. Krátce nato, co jsem se seznámil s jeho základními funkcemi, začala mne zajímat možnost připojení k počítači pod Linuxem. Protože tento telefon nedisponuje technologií bluethooth, zaměřil jsem se na přenos dat přes infra port.
Prvním úkolem bylo koupit USB infraport k mému stolnímu počítači, který bude podporovaný linuxovým jádrem. Nákupu předcházela rozsáhlá příprava, hledání různých článků a listování v internetových obchodech. Výchozím bodem pro mne byla stránka o infračervených zařízeních podporovaných Linuxem (viz Odkazy). Vyzbrojen informacemi o podporovaných čipech, jsem vyrazil do obchodů. Příliš jsem nepochodil. Většina prodejců měla jedno společné - udivený výraz ve tváři, když jsem po nich chtěl, aby mi prozradili jaký že má čip právě ten jediný, neznačkový USB infraport, co jim visí na zdi. Někteří aktivnější prodavači mi vnucovali myšlenku riskovat ... "vždyť to stojí jen dvě stovky", což jsem jako nesystematický postup odmítl. Měl jsem štěstí. V posledním obchůdku (Hardex v Teplicích) mi ochotný prodavač otevřel krabičku s infraportem značky "Aligator mini" a k mému překvapení z ní vypadl malý papírek s českým návodem a na něm uvedený seznam podporovaných operačních systémů. Věřte nebo ne, mezi jiným tam bylo uvedeno Linux 2.4 a vyšší. V duchu jsem zajásal a daný kousek za 225 Kč zakoupil.
S napětím jsem čekal co se stane až připojím infraport k mému počítači. Mám
přeci moderní distribuci Mandrivu 2006 a ještě modernější desktop KDE 3.5,
tam bývají vychytané věci, například pro připojení USB flashdisku není nutno
nic nastavovat, system jej najde a nabídne připojení do dynamicky vytvořeného
adresáře /mnt/removable
. Po připojení infraportu do USB se však zdánlivě nic
nedělo. Zkusil jsem tedy konsoli a příkaz dmesg
a hle, přeci něco!
SigmaTel STIr4200 IRDA/USB found at address 4, Vendor: 66f, Product: 4200
drivers/net/irda/stir4200.c: IrDA: Registered SigmaTel device irda0
usbcore: registered new driver stir420
Takže mám podporovaný čip, papírek s českým návodem nelhal. Zdá se, že se
nějaké moduly natáhly, konkrétně stir4200
, irda
a crc_ccitt
. Ale ať jsem
hledal jak jsem hledal, nevytvořilo se mi žádné nové zařízení v /dev
. To je
problém, pokud budu chtít použít s telefonem nějaký program typu wammu nebo
gscmxx. Všechny tyto programy totiž používají soubor zařízení v adresáři /dev
,
například sériový port /dev/ttyS0
, nebo emulovaný USB port /dev/ttyUSB0
,
v případě infraportu zařízení /dev/ircomm0
. Požádal jsem tedy o radu strýčka
Googla napřed v českém jazyce. Nejčastěji jsem se dostal na portál
www.abclinuxu.cz do jejich hardwarové sekce, kam jsem také dříve přispíval.
Dále na jejich fórum a stále častěji se mi na monitoru objevovalo jméno Michal
Čihař. Jde o pána, který vyvíjel program Kalcatel a v současné době patří
k vývojářům programu Wammu. Zde jsem se dozvěděl o příkazu irattach irda0 -s
a také o irdadump
. Dobrým nápadem je, před vyzkoušením obou příkazů,
nainstalovat balíček irda-utils, který tyto prográmky obsahuje. Po vyzkoušení
příkazů ve výše uvedeném pořadí, se začaly vypisovat do konsole pravidelné
řádky:
22:41:34.427767 xid:cmd 15784306 > ffffffff S=6 s=0 (14)
22:41:34.527727 xid:cmd 15784306 > ffffffff S=6 s=1 (14)
22:41:34.627731 xid:cmd 15784306 > ffffffff S=6 s=2 (14)
22:41:34.727730 xid:cmd 15784306 > ffffffff S=6 s=3 (14)
22:41:34.827730 xid:cmd 15784306 > ffffffff S=6 s=4 (14)
22:41:34.927731 xid:cmd 15784306 > ffffffff S=6 s=5 (14)
22:41:35.027729 xid:cmd 15784306 > ffffffff S=6 s=* modrak hint=0400 [ Computer ] (22)
No a poté co jsem na mobilu zapnul infra a nastavil jej portem k počítači, se objevila řádka:
22:46:10.710855 xid:rsp 15784306 < 05049320 S=6 s=2 SIEMENS ME75 hint=b124 [PnP Modem Fax IrCOMM IrOBEX]
Tak to už vypadalo velmi slibně, teď už jen aplikaci, kterou se dostanu
do telefonu. Při studiu dalších a dalších návodů od pana Googla (teď už jsem
louskal i anglicky) se mi stále objevovalo slovo "obex", což znamená Object
Exchange a jedná se o komunikační protokol v současnosti používaný hlavně
pro bluetooth zařízení. Zmožen studiem návodů jsem si dal namátkou vyhledat
slovo obex v instalačních zdrojích Mandrivy a výsledkem bylo několik balíčků,
které jsem promptně nainstaloval. Nejvíce se mi líbil obex_ftp
, který
ale zklamal. Po zadání obex_ftp -i -x
, což by mělo vypsat různé informace
z telefonu, se spojení nezdařilo.
Connecting...failed: connect
Still trying to connect
Connecting...failed: connect
Další informace mne potěšila. KDE (rovněž i Gnome) prý umí komunikovat se
zařízeními prostřednictvím obex protokolu. Zkrátím to a prozradím, že k tomu
abyste obex pod KDE mohli použít, je potřeba nainstalovat "kbluetoothd", který
tento protokol teprve do KDE přináší. Po nainstalování výše uvedeného
"kbluetoothd" jsem tedy v konqueroru do adresového řádku zadal obex://irda/
a k mé radosti se objevil adresář /Data
, kterým jsem mohl procházet a
přistupovat k souborům v mobilu. Protože nemám v oblibě zobrazení typu
windows - průzkumník, tak jsem zkusil, zda to bude fungovat i v krusaderu.
Fungovalo, a teď už jsem mohl pohodlně mazat, kopírovat a přesouvat soubory
ve dvoupanelovém správci souborů.
Mou radost pokazilo zjištění, že přenosová rychlost mezi mobilem a počítačem
se pohybuje v průměru kolem 731B/s. Dalším nemilým zjištěním byla častá
ztráta spojení mezi počítačem a mobilem. I vzpomněl jsem na Michala Čihaře
a jeho časté rady ohledně nastavení parametrů. Začalo být jasné, že bez
ponoření se hlouběji do systému to nepůjde. Vlastně jsem měl napoprvé štestí,
protože později se mi už nepodařilo spojení uskutečnit, aniž bych
do modprobe.conf
nepřidal následující řádky:
alias irda0 stir4200
options stir4200 rx_sensitivity=6 qos_mtt_bits=1
Spojení pak začalo být stabilnější, ale rychlost stále stejná. Říká se
"kolik řečí znáš, tolikrát jsi člověkem. Následující řešení jsem objevil
na jednom německém, linuxovém fóru. Ví Bůh, že bych zde rád uvedl odkaz, ale
už jsem tu zprávu podruhé nenašel. Byl tam uveden skript, který předává
několik parametrů běžícímu jádru, to znamená příkazem echo
do adresáře /proc
.
Tady se objevil drobný chyták, spočívající v tom, že tyto parametry musí
být poslány do /proc
ještě "před" příkazem irattach irda0 -s
, který aktivuje zařízení irda0
a zároveň natáhne moduly. Jenže virtuální soubory v /proc
nám
vzniknou teprve "po" natažení modulů. Po určitém experimentování jsem nakonec
zcela rezignoval na mandrivácké init skripty a vytvořil vlastní s názvem
irda_start
, který je umístěn v /etc/rc.d/init.d/
. K němu je vytvořen
symbolický link v /etc/rc.d/rc5.d/S97irda_start
. Pro větší přehlednost
jsem přidal komentáře.
#!/bin/bash modprobe stir4200 # Natáhne moduly stir4200, crc_ccitt a irda. # V /proc vzniknou virtuální soubory, # do kterých posíláme echem parametry. # Následují parametry z německého fóra: echo 115200 > /proc/sys/net/irda/max_baud_rate echo 1 > /proc/sys/net/irda/max_tx_window echo 2000 > /proc/sys/net/irda/max_tx_data_size echo 100 > /proc/sys/net/irda/min_tx_turn_time rmmod stir4200 # odstraní modul stir4200, modul irda zustane aktivni # takže soubory v /proc zůstanou i s nastavenými hodnotami. irattach irda0 -s # díky zápisu v modprobe.conf (alias irda0 stir4200 ) # znovu natáhne modul a přiřadí jej k zařízení irda0.
Hned jak se mi povedlo tyto parametry zadat a spustit startovací skript, přenosová rychlost mezi mobilem a počítačem vzrostla na 6KB/s. Zdá se, že první dva "echo parametry" mají univerzální platnost a mohly by fungovat i s jinými USB infraporty, u kterých zlobí rychlost přenosu. Uvádí je ve svých odpovědích i pan Michal Čihař, kterého zde opět musím zmínit.
Nakonec ještě zbývalo vyřešit neexistenci zařízení v /dev
, ke kterému by mohly
přistupovat aplikace pro mobilní telefony. Zatím moc tyto programy nepoužívám
z prostého důvodu, že žádný z nich neumí u ME sedmdesát pětky přistoupit
k telefonnímu seznamu. Z mobilu dostanu do počítače SMS zprávy, seznam na SIM,
stav baterie a sílu signálu. Zbývá mi jen doufat, že se to časem zlepší (třeba
zrovna zmíněný pan Čihař pomůže :-) ). Ale pro ty z vás, kteří mají jiný,
podporovaný typ telefonu mám jednoduchý návod. Poté co rozběháme výše uvedeným způsobem infraport, stačí ručně natáhnout modul ircomm_tty
(pomocí modprobe
)
a v /dev
se vytvoří řada zařízení typu ircomm. Aplikace pro mobilní telefon
pak použijí první z nich, což je /dev/ircomm0
.
Asi dvakrát se mi také stalo, že infraport přestal vidět telefon. Irdadump
vypisoval jen své pravidelné řádky, ale po přiložení telefonu jej neobjevil.
Pomohlo pouze "killnutí" procesu irattach, odstranění modulů a odpojení
a opětné připojení infraportu (česky replugnutí). Po spuštění startovacího
skriptu irda_start
, komunikace opět naskočila.
Tak, pro telefony Siemens existuje řádkový program scmxx. Nedoporučuji v současné době používat jeho grafickou nadstavbu gscmxx, protože ta je tvořená pro starší verzi a s novější verzí nefunguje korektně. Dále mi celkem uspokojivě běhala aplikace kmobiletools a aplikace wammu. Také firma Benq-Siemens má vlastní Mobil Phone Manager pro Linux s názvem XMPM. Lze nalézt na jeho stránkách. Zatím má verzi pro Suse a Mandrivu 2006. Aplikace potřebuje pro svů běh javu a podporuje jen vybrané typu telefonu. V budoucnu se prý má podpora rozšiřovat. Zatím podporuje jen telefony S75 a SL75.
Autor článku je počítačový samouk a dané problematice v podstatě skoro vůbec nerozumí.
Poté, co absolvoval výše popsanou peripetii, se pokusil opravit svůj starý telefon Alcatel, což se mu po nemalém úsilí podařilo, a věnoval jej jako dědictví dalšímu členu rodiny.
Zkratka BFU v tomto případě znamená "Bublík František Uživatel".
Cílem tohoto článku je poskytnout inspiraci méně zkušeným uživatelům linuxu ohledně použití a rozchození výše popisovaného hardwaru.