Portál AbcLinuxu, 30. dubna 2025 16:57

HOWTO: Gammu + Nokia 6310i a IBM R40 přes IrDA

1.1.2006 13:27 | Přečteno: 4870× | Linux | poslední úprava: 1.1.2006 14:13

Mě to blogování nějak chytlo poslední dobou...nebo je to spíš euforie, protože jsem po asi pěti hodinách laborování rozchodil připojení přes infraport z mého IBM R40 k Nokii 6310i? Tak či tak, čtěte dál, chcete-li se dozvědět, jakým způsobem se mi to podařilo.

Co tedy budeme vlastně dělat?

Po zjištění, že se mi MSI BToes USB Bluetooth dongle odebral do věčných lovišť, jsem se rozhodl, že to znovu zkusím a rozchodím si infraport na notebooku. Tak nějak jsem tušil, že to asi nebude úplně easy, ale nakonec to nebylo tak hrozné :-)

V následujícím textu se dozvíte, jak rozhchodit připojení přes intergrovaný infraport v počítači IBM R40 do Nokie 6310i kvůli programu Gammu, kterým se dá telefon spravovat.

Co k tomu budeme potřebovat aneb jaderné moduly

V notebooku se nalézá infra chip IBM SC 20H2987, ke kterému použijeme modul nsc_ircc. Dále budeme potřebovat zapnutou podporu IrDA v jádře. Jednotlivé komponenty je potom lepší modularizovat, protože když něco pokazíte, je tu ještě pořád rmmod ;-).

Odpovídající čast .config by tedy měla vypadat asi takto:

CONFIG_IRDA=m
CONFIG_IRCOMM=m
CONFIG_IRTTY_SIR=m
CONFIG_NSC_FIR=m

Pokud tedy tyto moduly přeložené nemáte už teď, směle do toho. Podporu pro IRTTY_SIR jsem nechal zapnutou, kdyby se někdy hodila, ale není to nutné.

Budete taky potřebovat nainstalovat utilitu setserial. Gentooisti ji najdou v sys-apps/setserial.Dále by se asi hodilo mít nainstalované Gammu (app-mobilephone/gammu), když jej budeme chtít použít ;-).

Teď už máme všechno potřebné a můžene se vrhnout na konfiguraci.

Konfigurace

Modul nsc_ircc sám nepozná konfiguraci vašeho počítače ve vztahu k IrDA, tak je nutné mu sdělit pár informací tímto nastavením /etc/modules.conf nebo /etc/modules.d/nsc_ircc (Gentoo). Do tohoto souboru, který buď již existuje, nebo jej vytvoříme v závislosti na distribuci, dopíšeme následující volby:

alias tty-ldisc-11 irtty
alias char-major-161 ircomm-tty
alias irda0 nsc-ircc
options nsc-ircc dongle_id=0x09 io=0x2f8 irq=7
install nsc-ircc /bin/setserial /dev/ttyS1 uart none port 0 irq 0; /sbin/
modprobe --ignore-install nsc-ircc

Velmi důležitá je volba IRQ v options nsc-ircc. Pokud totiž bude existovat konflikt mezi jiným zařízením a IrDA chipem, dál se nedostaneme. Já jsem byl nucen v BIOSu nastavit IRQ7. Když už jsem u toho BIOSu - nezapomeňte si tam hlavně podporu IrDA aktivovat, ať se pak nepotýkáte s podivnými chybami.

Tím jsme hotovi s konfigurací systému, musíme ale ještě nastavit Gammu, aby vědelo, kam chceme telefon připojit. Takto vypadá můj ~/.gammurc:

[gammu]
port = /dev/ircomm0
connection = irda
logfile = gammulog
logformat = textall
gammucoding = utf8

Kódování si nastavte dle vašeho systému.

Nyní příjde ta zábavnější část...

Zavádíme moduly

Nyní by váš systém měl být připraven na zavedení modulů a zprovoznění komunikace s telefonem.

modprobe irda nám do logu vyplivne NET: Registered protocol family 23.

modprobe ircomm má obdobný efekt: IrCOMM protocol (Dag Brattli).

Následuje modprobe ircomm-tty a nakonec nejdůležitější modul modprobe nsc_ircc, který je o něco upovídanější:

nsc-ircc, Found chip at base=0x02e
nsc-ircc, driver loaded (Dag Brattli)
IrDA: Registered device irda0
nsc-ircc, Using dongle: IBM31T1100 or Temic TFDS6000/TFDS6500

Pokud se vám poslední operace nepovede, můžete ještě zkusit čip aktivovat, což se také někde doporučuje. Nejdříve si vygrepujte jeho adresu: grep 0x2f8 /sys/devices/pnp*/*/resources, kterou potom použijete v příkazech

echo disable > /sys/devices/pnp0/00\:0a/resources
echo activate > /sys/devices/pnp0/00\:0a/resources
Ne každý má totiž teto chip na stejné adrese. Tato deaktivace a aktivace spolu s vyhozením a opětným zavedením modulu do jádra je nutná i kvůli suspendu, který prý Fast IR něpřežije.

Může se taktéž objevit nějaká hláška o IRQ - v tom případě si je v BIOSu změňte.

Dále ještě provedeme irattach irda0 -s, po čemž se v logu objeví

irattach: executing: '/sbin/modprobe irda0'
irattach: executing: 'echo ibm > /proc/sys/net/irda/devname'
irattach: executing: 'echo 1 > /proc/sys/net/irda/discovery'
irattach: Starting device irda0

Poslední věcí je příkaz echo 57600 > /proc/sys/net/irda/max_baud_rate, který je nutný - bez něj se mi nepodařilo k telefonu v Gammu připojit a po prvním použití šel celý IrDA systém okamžitě do kytek a musel jsem reloadovat moduly.

Komunikujeme

Na otestování funkčnosti je nejlepší se nejdříve podívat, zda vám ifconfig vyplivne síťový interface irda0:

irda0     Zapouzdření:IrLAP  HWadr 00:00:00:00  
          AKTIVOVÁNO BĚŽÍ NEARP  MTU:2048  Metrika:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:154 errors:0 dropped:0 overruns:0 carrier:0
          kolizí:0 délka odchozí fronty:8 
          RX bytes:0 (0.0 b)  TX bytes:4752 (4.6 Kb)
Další informace získáme programem irdadump. Před připojením telefonu vypadá výstup asi takhle:
11:08:06.742381 xid:cmd 0dd8a15d > ffffffff S=6 s=0 (14) 
11:08:06.830269 xid:cmd 0dd8a15d > ffffffff S=6 s=1 (14) 
11:08:06.918278 xid:cmd 0dd8a15d > ffffffff S=6 s=2 (14) 
11:08:07.006279 xid:cmd 0dd8a15d > ffffffff S=6 s=3 (14) 
11:08:07.094288 xid:cmd 0dd8a15d > ffffffff S=6 s=4 (14) 
11:08:07.182289 xid:cmd 0dd8a15d > ffffffff S=6 s=5 (14) 
11:08:07.270294 xid:cmd 0dd8a15d > ffffffff S=6 s=* ibm hint=0400 [ Computer ] (19) 
11:08:09.742455 xid:cmd 0dd8a15d > ffffffff S=6 s=0 (14) 
11:08:09.830455 xid:cmd 0dd8a15d > ffffffff S=6 s=1 (14)
Pokud zapneme na telefonu IrDA, výstup se změní a uvidíme telefon ve výpisu:
10:30:53.106756 xid:cmd 222b8958 > ffffffff S=6 s=0 (14) 
10:30:53.194671 xid:cmd 222b8958 > ffffffff S=6 s=1 (14) 
10:30:53.282678 xid:cmd 222b8958 > ffffffff S=6 s=2 (14) 
10:30:53.365522 xid:rsp 222b8958 < 0000e31e S=6 s=2 Nokia 6310i
hint=b125 [ PnP Modem Fax Telephony IrCOMM IrOBEX ] (28) 10:30:53.370682 xid:cmd 222b8958 > ffffffff S=6 s=3 (14) 10:30:53.458687 xid:cmd 222b8958 > ffffffff S=6 s=4 (14) 10:30:53.546693 xid:cmd 222b8958 > ffffffff S=6 s=5 (14) 10:30:53.634698 xid:cmd 222b8958 > ffffffff S=6 s=* ibm hint=0400 [ Computer ] (19)

Nyní můžeme přistoupit ke konečné fázi a ta vypadá tak, že požádáme Gammu, aby nám identifikoval telefon:

# gammu --identify
Výrobce       : Nokia
Model         : 6310i (NPL-1)
Firmware      : 5.51 H (08-07-03)
Hardware      : 1763
IMEI          : 35155000XXXXXXX
Původní IMEI  : 351550/00/XXXXXX/X
Vyrobeno      : 12/2003
Kód produktu  : 0507853
Bluetooth     : device address 006057e4fc76
UEM           : 8
Nokia 6310i vedle IBM R40

Tímto jsme zvítězili a zbývá už jen man gammu, kde se dočtete další příkazy, které můžete pro správu telefonu použít.

Informace jsem čerpal z ThinkWiki, stránek Gammu, Linux-IrDA quick tutorialu, ale hlavně ze spousty diskusních fór a mailing listů.

Mimochodem, než se mě budete v diskusi ptát na podrobnosti o IrDA (třeba i obecně), musím vás upozornit, že až zas tak dalece tomu nerozumím rozchodil jsem to hlavně díky Googlu, velké trpělivosti a RTFM :-)

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.