Jak na USB modemy a ISDN Terminal AdaptΘry
Jak na USB modemy a ISDN Terminal AdaptΘry
Rostoucφ obliba USB se projevila i u v²robc∙ modem∙ a ISDN terminal adaptΘr∙.
Jak si s t∞mito kousky ╛eleza rozumφ Linux, na to se te∩ podφvßme trochu podrobn∞ji.
╚lßnek jsem se sna╛il napsat tak, aby byl k n∞Φemu p°edev╣φm zaΦßteΦnφkovi. Za zjednodu╣enφ,
p°φpadnΘ nep°esnosti a jinΘ vady na krßse mne tedy prosφm nekamenujte. Dßle jsem zvolil princip
vφce praxe, mΘn∞ teorie. Pokud bude nßvod fungovat, nenφ nutnΘ znßt vφce,
aΦkoli je podle mΘho nßzoru u╛iteΦnΘ znßt problematiku pon∞kud do hloubky. Pokud je na n∞kterΘm mφst∞
pou╛ito fixme, pak to znamenß, ╛e v tΘto oblasti nejsem p°φli╣ kovan² a uvφtßm odezvu
publika.
Nßsledujφcφ postup byl odzkou╣en na distribucφch SuSE 7.3 a Mandrake 8.2. U SuSE jsem pou╛il jßdro
2.4.18 a 2.2.20, u Mandrake jßdro p°φmo z distribuce(2.4.18-6mdk).
Je moje za°φzenφ podporovßno?
Znßme to v╣ichni. V²robce p°ijde s n∞jak²m kusem ╛eleza, vychvaluje jeho vlastnosti, prodß nßm
jej za v²hodnou cenu, ale jaksi se nezmφnφ, ╛e jeho za°φzenφ je podporovßno pouze pod WIN OS, a
podporu Linuxu rozhodn∞ rozjφ╛d∞t nehodlß. Za°φzenφ funguje pod WIN dφky proprietßrnφm ovladaΦ∙m,
a dokud se n∞jak² machr nerozhodne vyrobit ovladaΦ pod Linux, mßme prost∞ sm∙lu. Tohle se t²kß
v poslednφ dob∞ hlavn∞ internφch Winmodem∙, ale takΘ mnoha USB za°φzenφ. Externφ USB modemy a
ISDN T/A bohu╛el nejsou v²jimkou.
Na╣t∞stφ existuje specifikace USB CDC ACM (Universal Serial Bus Communication Device Class
Abstract Control Model), kterou n∞kterΘ modemy pou╛φvajφ pro komunikaci s USB rozhranφm. Ty
pak pod Linuxem fungujφ bez problΘm∙.
(fixme: Jestli se nepletu, tyto modemy bez problΘm∙ b∞hajφ i pod Macy)
Proto doporuΦuji p°ed nßkupem takovΘho za°φzenφ ov∞°it na strßnkßch v²robce, Φi u prodejce, zda-li
je ACM kompatibilnφ.
V²chozφ podmφnky
Linux je velice variabilnφm operaΦnφm systΘmem. V praxi to znamenß, ╛e konkrΘtnφ postup nemusφ
fungovat ve v╣ech p°φpadech stejn∞. Proto si nejd°φve ze v╣eho musφme o svΘm Linuxu zjistit tyto
informace:
- pou╛φvßme devfs (device file system)?
- To zjistφme pomocφ p°φkazu mount:
localhost:~ # mount |grep devfs
devfs on /dev type devfs(rw)
Vypsala se °ßdka s devfs, takze systΘm pou╛φvß devfs.
- pou╛φvßme hotplug helper?
localhost:~ # ls /etc/hotplug
. .. blacklist net.agent pci.rc usb.distmap usb.rc
hotplug.functions pci.agent usb.agent usb.handmap usb.usermap
Vidφme, ╛e je hotplug nainstalovßn. Pokud ne, objevφ se nßm toto:
localhost:~ # ls /etc/hotplug
ls: /etc/hotplug: nenφ souborem ani adresß°em
Jdeme na ten modem
Na jednΘ konzoli budeme kontrolovat systΘmovß hlß╣enφ(jako root), a to p°φkazem
localhost:~ # tail -f /var/log/messages
Te∩ odpojφme modem z USB portu.
Nemßme hotplug helper
Tato Φßst je pro star╣φ distribuce Linuxu, p°edpoklßdßm, ╛e jich bude mΘn∞. Ti, kte°φ majφ hotplug,
p°eskakujφ na Zapojenφ modemu. Na druhΘ konzoli p°ejdeme do re╛imu superu╛ivatele (root). Nejd°φve zjistφme,
zda-li je nahrßn n∞jak² z nßsledujφcφch modul∙: uhci , usb-uhci , nebo usb-ohci .
localhost:~ # lsmod
uhci 24160 0 (unused)
Mßme nahran² modul uhci.
Pokud nic nahrßno nenφ, tak postupn∞ zkusφme n∞jak² z modul∙ uhci , usb-uhci , nebo usb-ohci
nahrßt p°φkazem modprobe:
localhost:~ # modprobe uhci
Jakmile se nahraje bez chybov²ch hlß╣enφ n∞jak² z nich, poznamenßme si, kter² to byl a pokraΦujeme.
Dßle nahrajeme moduly usbcore a acm t∞mito p°φkazy:
localhost:~ # modprobe usbcore
localhost:~ # modprobe acm
Na konzoli, kde sledujeme systΘmovß hlß╣enφ, si ov∞°φme, jak to zafungovalo. M∞lo by se objevit n∞co
jako:
acm.c: v0.21:USB Abstract Control Model driver for USB modems and ISDN adapters
Doposud bychom nem∞li narazit na problΘm.
Zapojenφ modemu
Modem zapojφme do USB portu. Nynφ peΦliv∞ sledujeme konzoli se systΘmov²mi hlß╣enφmi. Pokud se objevφ
n∞co jako:
hub.c: USB new device connect on bus2/2, assigned device number 5
ttyACM0: USB ACM device
mßme vyhrßno. Modul acm prßv∞ rozpoznal nß╣ modem jako ACM kompatibilnφ a umφ s nφm komunikovat.
Pokud se objevφ v logu pouze n∞co jako:
hub.c: USB new device connect on bus2/2, assigned device number 2
usb.c: USB device 2 (vend/prod 0x7b0/0x3) is not claimed by any active driver.
tak zkontrolujeme, zda je aktivnφ modul acm p°φkazem:
localhost:~ # lsmod | grep acm
acm 5216 0 (unused)
Pokud se nic nevypφ╣e, p°φkazem:
localhost:~ # modprobe acm
nahrajeme pot°ebn² modul. Te∩ by se m∞lo objevit to hledanΘ
ttyACM0: USB ACM device
Pokud se nic neobjevφ, znamenß to ╛e pat°φme mezi mΘn∞ ╣╗astnΘ jedince.
Modem nenφ ACM kompatibilnφ a tento Φlßnek bohu╛el nepom∙╛e.
T∞m, kte°φ pokraΦujφ ve Φtenφ, se jejich postup bude li╣it podle toho, jestli
pou╛φvajφ devfs.
Pou╛φvßme devfs
Modul acm nßm nynφ vytvo°il za°φzenφ v /dev/usb/acm , a to s Φφsly 0, 1 nebo 2. P°evedeno do
Φe╣tiny to znamenß, ╛e pokud pou╛φvßme jeden USB modem, m∞lo by existovat za°φzenφ /dev/usb/acm/0 .
localhost:~ # ls -l /dev/usb/acm/
crw-r--r-- 1 root root 166, 0 Apr 1 10:49 /dev/usb/acm/0
Toto za°φzenφ pak pou╛φvßme pro komunikaci s modemem.
Pro zjednodu╣enφ si m∙╛eme si vytvo°it symlink p°φkazem:
localhost:~ # ln -s /dev/usb/acm/0 /dev/modem
Dßle se budeme odkazovat pouze na /dev/modem .
(fixme: Vzhledem k tomu, ╛e devfs nepou╛φvßm, bych prosil n∞koho se zku╣enostmi, jak tento
link zachovat i po restartu poΦφtaΦe, p°φpadn∞ jestli to danß distribuce d∞lß automaticky.)
Nepou╛φvßme devfs
Abychom mohli pou╛φvat modem, musφme mφt (nejlΘpe v adresß°i /dev )
specißlnφ soubor, kter² na modem odkazuje.
U SuSE Linuxu 7.3, je ji╛ p°edem vytvo°en /dev/ttyACM0 . Pokud jej nemßme, podφvßme se
je╣t∞, jestli nßhodou neexistuje /dev/usb/ttyACM0 .
localhost:~ # ls /dev/ttyACM*"
crw-rw---- 1 root uucp 166, 0 °φj 8 2001 /dev/ttyACM0
crw-rw---- 1 root uucp 166, 1 °φj 8 2001 /dev/ttyACM1
crw-rw---- 1 root uucp 166, 2 °φj 8 2001 /dev/ttyACM2
crw-rw---- 1 root uucp 166, 3 °φj 8 2001 /dev/ttyACM3
localhost:~ # ls /dev/usb/ttyACM*
ls: /dev/usb/ttyACM*: nenφ souborem ani adresß°em
Pokud nic nenajdeme, musφme specißlnφ soubor vytvo°it. To ud∞lßme p°φkazem:
localhost:~ # mknod /dev/ttyACM0 c 166 0.
localhost:~ # chgrp uucp /dev/ttyACM0.
Pak, abychom si v∞ci trochu zjednodu╣ili, vytvo°φme symlink
localhost:~ # ln -s /dev/ttyACM0 /dev/modem
Dßle se budeme odkazovat pouze na /dev/modem .
V souboru /etc/group pak do skupiny uucp p°idßme v╣echny u╛ivatele, kte°φ majφ mφt p°φstup k modemu.
KonkrΘtnφ °ßdek ze souboru /etc/group pak bude vypadat nap°. takto:
uucp:x:14:uucp,fax,root,fnet,milan,marika
Pou╛φvßnφ modemu s va╣imi oblφben²mi programy
Nynφ mßme modem funkΦnφ, tak╛e v∞c je stejnß, jako s modemem p°ipojovan²m k sΘriovΘmu portu.
Zadßme pouze kde se modem nachßzφ, tj. /dev/modem , /dev/usb/acm/0 nebo /dev/ttyACM0 .
Pak u╛ nßm nic nebrßnφ modem pou╛φvat. I kdy╛...
AT init string
Modemy pro svß nastavenφ pou╛φvajφ tzv. AT p°φkazy. Ve zkratce: pot°ebujeme zinicializovat modem tak,
abychom se mohli p°ipojit (vφce informacφ o modemech najdeme
tady).
Je to smutnΘ, ale nejvφce se mi osv∞dΦilo tyto p°φkazy zkopφrovat z logu, kter² vytvß°ejφ WIN p°i
komunikaci s konkrΘtnφm modemem. Pod W98 jej najdeme tady:
Modemy->vlastnosti->p°ipojenφ->up°esnit->zobrazit protokol.
Ty °et∞zce zaΦφnajφ slovy "Send: ATxxxxxxxxxxxx". V∞t╣inou b²vajφ 2-3.
Je to jednoduchΘ, rychlΘ a funkΦnφ.
Druhß mo╛nost pro odvß╛nΘ je: zjistit si kompletnφ seznam AT p°φkaz∙ od v²robce, a nastavit modem
sßm. (fixme: dal╣φ zp∙soby, jako extrakce z .inf soubor∙, oΦekßvßm v diskusi.)
Automatizace nahrßvßnφ modul∙ - nemßme hotplug
(fixme: Tady to nenφ moje parketa, prosφm o p°φpadnΘ dopln∞nφ.)
Do souboru "/etc/modules.conf" p°idßme nßsledujφcφ °ßdky:
alias char-major-166 acm
pre-install acm /sbin/modprobe "usbcore"
pre-install usbcore /sbin/modprobe "uhci"
Modul uhci nahradφme modulem, kter² jsme si poznamenali v sekci Nemßme hotplug helper.
V konzoli spustφme:
localhost:~ # depmod
Nynφ, kdykoli se n∞jak² program pokusφ komunikovat se za°φzenφm /dev/ttyACM* , nahrajφ se moduly
pot°ebnΘ pro komunikaci s modemem.
Automatizace nahrßvßnφ modul∙ - mßme hotplug
V souboru /etc/hotplug/usb.distmap by m∞l b²t °ßdek zaΦφnajφcφ slovem acm . Pokud tam nenφ,
p°idßme jej:
acm 0x0070 0x0000 0x0000 0x0000 0x0000 0x02 0x00 0x00
To nßm zajistφ, ╛e p°i p°ipojenφ modemu do USB portu se automaticky nahraje pot°ebn² modul.
Zßv∞r
Sna╛il jsem se pokr²t v╣echny oblasti, kde bychom mohli narazit na problΘm. Doufßm, ╛e se ozvete
v diskusi, opravφte chyby a doplnφte informace. M∙j modem je Diva 852 T/A od firmy Eicon, funguje
bezproblΘmov∞. Pokud vφm, tak zase USB modemy a T/A od Microcomu problΘmovΘ jsou.
Doufßm, ╛e jsem Φtenß°∙m pomohl a v╣em vßm p°eju hodn∞ zßbavy s Linuxem.
Zdroje informacφ
/usr/src/Linux/Documentation/usb/acm.txt
/usr/src/Linux/Documentation/filesystems/devfs/README
man 5 modules.conf
man 1 mknod
http://Linux-hotplug.sourceforge.net
Diskuse k tomuto Φlßnku
Mßm RH7.3. Modem Diva 852/TA jsem jen p°ipojil k USB, vyrobil link na /dev/ttyACM0 a modem chodφ. Bez devfs s hotplug..
Dφky Pavel
Je mozne tento postup alikovat i na jina zarizeni,napr fotoaparat?
Samozrejmne ne doslovne,ale princip pripojovani USB zarizeni obecne. Diky je to zajimave.
no, jsou tu veci, ktere se daji obecne pouzit:
- sledovani "/var/log/messages"
- kontrola a pripadna modifikace souboru v "/etc/hotplug/"
- uplatneni ruznych postupu pro devfs a specialni zarizeni v adresari "/dev/"
Samozrejme pri pouziti jineho hardware je nutne nejak zjistit, jaky modul je potreba - napr. na www.linux-usb.org, nebo od vyrobce(kdyz ma clovek kliku), pripadne z dokumentace k jadru.
Diky, modem mam sice na seriove linkce, ale nyni mam predstavu, jak funguji USB modemy na linuxu.
Uzitecne.
Jen se obavam, ze tech chodivych USB modemu bude mensina ((.
Mno jß m∙╛u doporuΦit USB modem Well FM-56USB. Spolu s drivery od SmartLinku by to m∞lo fungovat bez problΘm∙.
Asi jo... zrovna ten muj Microcom ISDN USB Porte+ asi nikdy nerozjedu :(.
Taky jsem narazil, Microcom ISDN USB Porte plus opravdu nechodφ a asi ani nikdy chodit nebude. Kdysi jsem se ho sna╛il s kamarßdem rozchodit v jednΘ ╣kole. NicmΘn∞ Microcom nabφzφ i n∞jak² internφ ISDN modem a ten ·dajn∞ v Linuxu pracuje. Mimoto by m∞l b²t i levn∞j╣φ.
Mam v supliku USB modem Planet. Byly s nim problemy pod Win2000 tak se koupil jiny. Na svem desktopu mam Linux. Myslite ze ho takhle rozchodim?
Jinak clanek je pekny a poucny.
podle toho navodu se mi nepoda°ilo modem nainstalovat
jsem zacatecnφk tak nevφm jestli za to muzu ja nebo modem tak prosφm jestli se to n∞komu povedlo tak mi napiste jak mam postupovat mam red hat 7,3
Misa
|