V pondělí cca 18:30 jsem si blaženě odnášel domů smlouvu, obálku s heslem a obrovskou krabici obsahující CDMA modem, baterku, externí magnetickou anténu, kvůli které je ta krabice tak obrovská, redukci na připojení do modemu a USB kabel (s prodlužovačkou) pro připojení k počítači. Aktivace mého zařízení proběhla až okolo jedenácté v úterý, takže jsem měl mezitím spoustu času prostudovat dostupné materiály na Internetu, a teď se s vámi podělím o to, jak takový USB CDMA modem rozběhnout pod Linuxem.
Sestavení je bezproblémové, stačí vložit baterku, lehkým tahem vytáhnout integrovanou anténu, zapojit anténu externí a zacvaknout do modemu USB kabel. Zatím zařízení nezapojujte do počítače, má to tu neblahou vlastnost, že když je zařízení vypnuté, tak se přesto hlásí na USB sběrnici, ale pak už nechce přijmout přidělovanou adresu a v syslogu jsou nehezké hlášky. Takže dalším krokem je připojení nabíječky a zapnutí. Modem se zapíná malým tlačítkem spodní straně. Po zapnutí lze stisknutím kulatého tlačítka vyvolat menu, ve kterém lze nastavit podsvícení displeje a to, zda má modem vydávat zvuky. Pro testování bych vám doporučil zapnout display na trvalé svícení a zapnout ozvučení.
Můj počítač běží na jádře 2.6.7 s udev a hotplug daemonem, takže budu popisovat konfiguraci pro tuto kombinaci. Ti, kteří používají distribuční jádra, tento krok nejspíš můžou přeskočit, ale ostatní si poctivě zapnou podporu USB Modem (CDC ACM) support v Device Drivers"->"USB support a dokompilují tento modul, který se jmenuje cdc_acm. Dále je potřeba mít zapnutou podporu PPP a PPP support for async serial ports. Když budete mít zapnutou podporu deflate a bsd komprese, také to ničemu neuškodí. Pokud nepoužíváte udev, tak bude zřejmě potřeba vytvořit ttyACM0 v /dev/ a buď tyto moduly zakompilovat přímo do jádra, nebo je před připojováním do jádra nahrát.
Takže v tuto chvíli máme podporu pro USB modemy v jádře a zapnutý modem, zbývá tyto dvě zařízení propojit do sebe. V syslogu by se vám mělo objevit hláška o tom, že zařízení bylo nalezeno a bylo vytvořeno zařízení /dev/ttyACM0.
Příklad:
Aug 3 08:49:30 ondrej kernel: usb 3-2: new full speed USB device using address 2
Aug 3 08:49:30 ondrej kernel: cdc_acm 3-2:1.0: ttyACM0: USB ACM device
Aug 3 08:49:30 ondrej usb.agent[5106]: cdc-acm: loaded successfully
Aug 3 08:49:30 ondrej kernel: usbcore: registered new driver cdc_acm
Aug 3 08:49:30 ondrej kernel: drivers/usb/class/cdc-acm.c: v0.23:USB Abstract Control Model driver for USB modems and ISDN adapters
Aug 3 08:49:30 ondrej udev[5154]: creating device node '/dev/ttyACM0'
Jelikož se ve své podstatě jedná pouze o speciální druh sériového portu, stačí teď už jenom nakonfigurovat připojení přes PPP. Což by mělo jít přes pppconfig, nebo ručně. Osobně preferuju vytvořit nastavení přes pppconfig, a to pak ručně poupravit. Pro připojení přes CDMA se používá celosvětově číslo #777, jako uživatelské jméno použijete MSISDN, které je napsáno na smlouvě, a připojíte k němu „@etcz“, heslo dostanete v zalepené obálce.
Příklad:
telefonní číslo: #777 uživatelské jméno: 601000111@etcz heslo: foobar
Rychlost připojení nastavte na 921600, což je nad limitem udáváným Eurotelem (800 kbps), ale použitím libovolného (vyššího) čísla z /usr/include/bits/termios.h nic nezkazíte. Port na připojení je už zmiňovaný /dev/ttyACM0. Výsledný soubor v/etc/ppp/peers/ by měl vypadat takto:
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/eurotel"
debug
/dev/ttyACM0
921600
defaultroute
noipdefault
user "601xxxxxx@etcz"
Chatscript v /etc/chatscripts/eurotel by měl vypadat takto:
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
'' ATZ
# ispnumber
OK-AT-OK "ATDT#777"
# ispconnect
CONNECT \d\c
V /etc/ppp/chap-secrets by měl být řádek
"601xxxxxx@etcz" * "foobar"
Abyste mohli spouštět připojení i z pozice uživatele, je potřeba, aby pppd bylo suid root a uživatel byl ve skupině, která má oprávnění pppd spouštět. V Debianu se tato skupina jmenuje dip.
Pak už by mělo stačit mít službu na straně poskytovatele správně aktivovanou, spustit pon s názvem připojení, a měli byste být na síti.
Moje dojmy z prvního dne používání jsou velmi pozitivní. Spojení se ani jednou nerozpadlo, spojení je velmi svižné, výsledky pingu jsou taktéž dobré:
--- www.globe.cz ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 20038ms
rtt min/avg/max/mdev = 125.092/164.798/360.814/26.683 ms, pipe 2, ipg/ewma 202.408/171.845 ms
Jediné, co bych z mého pohledu Eurotelu vytknul, je neexistence pevné IP adresy, konkrétně se jedná o PAT (Port Address Translation), což znamená, že jednu venkovní adresu používá více uživatelů. To mě zřejmě donutí k tomu, abych si na svém notebooku rozběhnul IPsec do firemní sítě, o čemž by také mohl být pěkný článek :-), a přinese to také zvýšenou bezpečnost.