USB Infraport a BFU

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 16542×

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.

Nákup

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.

Rozběhání

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ů.

Ladění

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.

Aplikace

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.

Epilog

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.

Odkazy

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1237