Od začátku června 2012 bude původní 4G Combi karta využitelná maximálně jako GPRS/EDGE modem.
Aktuální info pro všechny uživatele! T-Mobile bude stávající sít UMTS TDD (obchodní název Internet 4G) vypínat ke dni 31. 5. 2012. Operátor ale umožňuje výměnu původních 4G modemů za nový UMTS USB modem - více infa naleznete zde na stránkách T-Mobile.
Důvodem k napsání tohoto návodu je skutečnost, že jsem nemohl najít nikde dostatečně podrobný návod, který by i laikovi (a těmi jsme všichni kteří se nespecializujeme na tuto problematiku) popsal nejen vlastní instalaci, ale i možná úskalí. Budu popisovat i věci, o kterých si možná někteří myslí, že jsou zbytečné, v dobré víře, že to pomůže i těm, kteří nejsou příliš zběhlí v konfiguraci nějakého zařízení, nebo produktu. Návod je určený pro Ubuntu 6.06 Dapper Drake (částečně použitelný), 7.10 Gutsy Gibbon, kde byl odladěný, 8.04 Hardy Heron (kde byl zčásti odzkoušený).
Modem je možné objednat přes webové stránky T-Mobile, kde si také zadáte jaký chcete využívat tarif. Současná cena modemu je 4200,-, objednal jsem Internet Standard, tj. dle současných tarifů asi 650,- měcíčně včetně DPH pro max. propustnost 512 kbps (64 kB/s) download a symetricky zřejmě i upload. Parametry připojení jsou 1,9 GHz po Praze, 872 MHz v jiných městech, mapa pokrytí je na Web stránkách T-Mobile. Modem se může údajně během provozu pohybovat, ostatně je to i ve sloganu “web´n´walk”. Hlavní výhodou je, že nepotřebujete mít žádnou hlasovou službu u T-Mobile, jde tedy podle mého vědomí, o jedinou čistě datovou službu v ČR (nevím jak je to u kabelových televizí).
Ostatní operátoři mají datové služby, často i skrytě) připojené k hlasové službě. Jednou poloviční výjimkou je SkyNet od Českých Radiokomunikací. Cena je i u Radiokomunikací skoro stejná, modem je podle smlouvy ale nepřenosný (je vázán na adresu uvedenou ve smlouvě), výhodou může být, že dodatkovou službou je i IP telefonie. Radiokomunikace ale neposkytují žádnou podporu na OS, pouze na kvalitu signálu a funkční modem, a o něčem jiném, než o podpoře na Windows se odmítají bavit. Je možné, že modem, který se propojuje ethernetovým konektorem RJ-45 by se podařilo rozchodit, ale nejsem zběhlý v protokolech modemů, také bych nerad byl pokusným králíkem. Proto moje volba padla na T-Mobile, který se mi zdál nejblíže mým požadavkům a kde je i určitá podpora na Linux.
Dodání modemu proběhlo sice s určitým zpožděním, ale bez problémů přes dodavatele (UPC), podpisem smlouvy jsem se stal zákazníkem. Tento systém se mi zdá dost dobrý, nemusíte nikam chodit.
Modem UMTS TDD 4G Modem, který je údajně totožný s modemen od IPWireless má v příslušenství síťový napáječ, akumulátor (výdrž neznám, baterie je Li-ion 650 mAh), instalační CD web´n´walk pro Windows (jak jinak) a USB kabel. Potože jsem se předtím na Webu dočetl, že daleko výhodnější je ethernet kabel, tak jsem si v prodejně T-Mobile zakoupil ještě kabel s koncovkou RJ-45 asi za 700,-. Kromě toho je možné dokoupit i externí anténu. Součástí dodávky, a to je důležité vědět, je i SIM karta. SIM karta je také použitelná i na GPRS/EDGE, pokud máte telefon, který to podporuje, jak se ukázalo v mém případě, je tato možnost moc důležitá pro toho, kdo nemá rozchozený modem a potřebuje se dostat nějak na internet, aby mohl doinstalovat nějaké balíčky. Velká nevýhoda je, že musíte SIM kartu pořád přehazovat z jednoho zařízení do druhého a karta se do modemu zasouvá trochu těžkopádně; trochu se přitom prohýbá, také trefit se do úzkých šín není úplně snadné. Před vlastním zprovozněním na Ubuntu je potřeba provést přípravné kroky:
Zakázat aktivaci PINu SIM karty. Vložte SIM kartu do nějakého mobilu, zadejte PIN, který je součástí dodávky (PIN1). Můj mobil to má asi takhle: Menu->Nastvení->Nastavení bezpečnosti->Žádost o PIN vypnout.
- Aktivovat modem na nějakém počítači, kde jsou Windows. Vlastní instalace web´n´walk zabere asi 5 minut, po připojení je modem resetovaný i pro použití na Linuxu. Následující text je vlastně ukázka, kolik práce stojí ignorance výrobců, kteří dělají podporu jenom jednomu OS a na ostatní úplně zapomínají.
- Přesvědčete se přes Synaptic package manager, že máte naistalovanou podporu pro pppd (pro Ubuntu 6.06, verze 7.xx, 8.xx už mají pppd zřejmě přímo v jádře), nebo do příkazové řádky napište ´pppd -h´. Mělo by to vypsat nápovědu.
Vlastní instalace a zprovoznění GPRS (na mobilním telefonu)
Původně jsem zkoušel modem na Ubuntu Dapper 6.06 desktop-amd64. Zde jsem měl rozchozené GPRS od Vodafone. Proto nejprve popíšu tuto záložní variantu. Pokud čtenáře zajímá jenom nastavení modemu pro umts, nechť tuto část přeskočí a pak se k ní vrátí pokud bude potřebovat nějaké podrobnosti dodatečně, neboť se týká rozchození GPRS/EDGE se SIM kartou T-Mobile.
Pokusil jsem se použít stejnou metodu (pppd) jako u Vodafone, jenom jsem upravil spouštěcí skript. Skripty a konfigurační soubory pro ppp jsou umístěné v adresáři /etc/ppp (pap-secrets, chap-secrets), a /etc/ppp/pers (další 3 soubory, jejichž pojmenování závisí plně na vás). Do těchto souborů se píše jméno uživatele a heslo, může zde jich být i několik, ale zpravidla vystačíme s tím samým. Jméno a heslo nijak nesouvisí se jménem uživatele, ani s heslem, pod kterým se přihlašujete do OS, nebo kamkoliv jinam. Neznám skutečný význam těchto hesel, rozhodně bych ta pravá ale nikde nezveřejňoval. Pokud se týče nastavení mobilu, předpokládám, že zde musí jméno a heslo pro připojení do internetu souhlasit. Každý mobil je jiný, můj tuto možnost má.
Soubory hesel
Výpis pap-secrets
# # /etc/ppp/pap-secrets # # This is a pap-secrets file to be used with the AUTO_PPP function of # mgetty. mgetty-0.99 is preconfigured to startup pppd with the login option # which will cause pppd to consult /etc/passwd (and /etc/shadow in turn) # after a user has passed this file. Don't be disturbed therefore by the fact # that this file defines logins with any password for users. /etc/passwd # (again, /etc/shadow, too) will catch passwd mismatches. # # This file should block ALL users that should not be able to do AUTO_PPP. # AUTO_PPP bypasses the usual login program so it's necessary to list all # system userids with regular passwords here. # # ATTENTION: The definitions here can allow users to login without a # password if you don't use the login option of pppd! The mgetty Debian # package already provides this option; make sure you don't change that. # INBOUND connections # Every regular user can use PPP and has to use passwords from /etc/passwd * hostname "" * # UserIDs that cannot use PPP at all. Check your /etc/passwd and add any # other accounts that should not be able to use pppd! guest hostname "*" - master hostname "*" - root hostname "*" - support hostname "*" - stats hostname "*" - # OUTBOUND connections # Here you should add your userid password to connect to your providers via # PAP. The * means that the password is to be used for ANY host you connect # to. Thus you do not have to worry about the foreign machine name. Just # replace password with your password. # If you have different providers with different passwords then you better # remove the following line. # * password "username" * "password"
Výpis chap-secrets:
# Secrets for authentication using CHAP # client server secret IP addresses "username" * "password"
Soubory se liší hlavně délkou komentářů, v tom podstatném, tj. jméno/heslo ale musí být stejné.
Další soubory se nachází v /etc/ppp/peers, tyto soubory se mohou jmenovat jakkoli, jenom to musí být korektně s ohledem na odkazy uvnitř (v našem případě gprs, gprs-wwdial.conf a gprs-disconnect-chat), aby se při spuštění z příkazové řádky okna terminálu, např: ´pppd call gprs´ soubor ´gprs´ (a další k němu přináležící) opravdu v adresáři nalézaly.
Soubor gprs
Výpis gprs:
# $Id: gprs,v 1.4 2004/04/28 08:40:32 mcfrisk Exp $ # # File: # gprs # # Description: # Serial cable, IrDA, Bluetooth and USB pppd options for GPRS phones. # See 'man pppd' for detailed option descriptions. # Most GPRS phones don't reply to LCP echo's lcp-echo-failure 0 lcp-echo-interval 0 # Keep pppd attached to the terminal: # Comment this to get daemon mode pppd nodetach # Debug info from pppd: # Comment this off, if you don't need more info debug # Show password in debug messages show-password # Connect script: # scripts to initialize the GPRS modem and start the connection, # wvdial command is for Orange SPV while other phones should work with chat #connect /etc/ppp/peers/gprs-connect-chat connect "/usr/bin/wvdial --chat --config /etc/ppp/peers/gprs-wvdial.conf gprs_usb_spv" # Disconnect script: # AT commands used to 'hangup' the GPRS connection. disconnect /etc/ppp/peers/gprs-disconnect-chat # Serial device to which the GPRS phone is connected: # /dev/ttyS0 for serial port (COM1 in Windows), # /dev/ircomm0 for IrDA, # /dev/ttyUB0 for Bluetooth (Bluez with rfcomm running) and # /dev/ttyUSB0 for USB #/dev/ttyS0 # serial port one #/dev/ttyS1 # serial port two #/dev/ircomm0 # IrDA serial port one #/dev/rfcomm0 # Bluetooth serial port one /dev/ttyACM0 # USB serial device, for example Orange SPV # Serial port line speed 115200 # fast enough #57600 # perhaps usefull with IrDA as some phones don't like # speeds higher than this # Hardware flow control: # Use hardware flow control with cable, Bluetooth and USB but not with IrDA. crtscts # serial cable, Bluetooth and USB, on some occations with IrDA too #nocrtscts # IrDA # Ignore carrier detect signal from the modem: local # IP addresses: # - accept peers idea of our local address and set address peer as 10.0.0.1 # (any address would do, since IPCP gives 0.0.0.0 to it) # - if you use the 10. network at home or something and pppd rejects it, # change the address to something else :10.0.0.1 # pppd must not propose any IP address to the peer! noipdefault # Accept peers idea of our local address ipcp-accept-local # Add the ppp interface as default route to the IP routing table defaultroute # Newer pppd's also support replacing the default route, if one is # already present, when the GPRS connetion should be set as the default route # to the network #replacedefaultroute # DNS servers from the phone: # some phones support this, some don't. usepeerdns # ppp compression: # ppp compression may be used between the phone and the pppd, but the # serial connection is usually not the bottleneck in GPRS, so the # compression is useless (and with some phones need to disabled before # the LCP negotiations succeed). novj nobsdcomp novjccomp nopcomp noaccomp # The phone is not required to authenticate: noauth # Username and password: # If username and password are required by the APN, put here the username # and put the username-password combination to the secrets file: # /etc/ppp/pap-secrets for PAP and /etc/ppp/chap-secrets for CHAP # authentication. See pppd man pages for details. # Example, Radiolinja operator pap-secrets: # "rlnet" * "passwd" * user "username" # The persist tries to reopen the connection if it is dropped. This # is usefull for example with a Nokia 7650 which only manages to # 'dial' with every second attempt or when the network likes to drop the # connection every now and then. It's not fun when the over-night # 'apt-get dist-upgrade -d -y' fails constantly... #persist #maxfail 99 # Asyncmap: # some phones may require this option. #asyncmap 0xa0000 # No magic: # some phones may require this option. #nomagic # Require PAP authentication: # some phones may require this option. #require-pap
Soubor je dosti rozsáhlý a skýtá mnohé možnosti a varianty. Nejsem jeho autorem, získal jsem jej stažením z Webu a jeho autory jsou asi Finové: http://kotinetti.suomi.net/mcfrisk/linux_gprs.html, případně http://www.iki.fi/mikko.rapeli/linux_gprs.html. Důležité je, že jsou zde odkazy na další 2 soubory, které také musí existovat: /etc/ppp/peers/gprs-wvdial.conf ve kterém je oddíl gprs_usb_spv, kde gprs_usb_spv je současně i parametr pro spuštění, kterým se říká, který z oddílů definovaných v souboru se použije, a soubor /etc/ppp/peers/gprs-disconnect-chat. Soubory jsem vytvořil zkopírováním a úpravou z výše uvedených webových stránek. Soubor gprs musí být spustitelný (příkaz ´chmod a+x gprs´). Význam jednotlivých příkazů mi není zcela jasný, některé se mi snad ale podařilo zozpoznat.
Příkaz ´nodetach' způsobí, že se skript po provedení neodpojí od konzole terminálu, ale zůstane tam viset, spojení se pak ukončuje jednoduše Ctrl^c.
Příkaz ´debug´ způsobí, že se vypisují všechna hlášení, jak připojení probíhá. Protože ne vždy se připojení na Ubuntu povede, je to velmi užitečná pomůcka. samozřejmě, že je dobrá i pro odladění.
Naprosto klíčová je ale definice portu, na kterém mobil, nebo modem sedí, Nokia se ohlásí do systému jako ttyACM0, pokud je mobil připojený přes USB kabel. Při příkazu ´ls /dev/ttyACM0´ se vrátí že tam takový soubor v adresáři /dev je. Nápomocné k vyhledání zařízení nám mohou být příkazy ´lsmod | grep tty*', 'lsusb', ´dmesg´, zařízení se většinou jmenuje ttyACM0, případně ttyUSB0.
Soubor gprs-wvdial.conf
Tento soubor obsahuje vlastní příkazy pro připojení modemu. Všechny příkazy modemu začínají (asi) na ´AT´, někdy je syntaxe trochu jiná, ´OK AT´, ale v zásadě je to zřejmě totéž.
Výpis gprs-wvdial.conf:
# File: # # $Id: gprs-wvdial.conf,v 1.3 2004/04/27 21:44:35 mcfrisk Exp $ # # gprs-wvdial.conf # # Description: # Wvdial settings for different GPRS phones and operators. See wvdial man pages # for more help. Below are the service specific settings, which should be given # by the operator - at least the # # Set PDP (Packet Data Protocol) context CID (Context ID) = 1 (an index sort of # since a phone may have many different GPRS settings), protocol = IP, # APN (Access Point Name) = "internet": # AT+CGDCONT=1,"IP","internet","",0,0 # # Set CID=1 QoS (Quality of Service) requirements from the network, not # supported by Nokia phones: # AT+CGQREQ=1,0,0,0,0,0 # # Set CID=1 minimum acceptable QoS parameters, not supported by Nokia phones: # AT+CGQMIN=1,0,0,0,0,0 # # Call CID=1 which activate PDP context one and perform GPRS attach: # ATD*99***1# # # Some phones seem to have only one CID, in which case the CID can be omitted # when calling: # ATD*99# # # Init4 = AT+CGQREQ=1,0,0,0,0,0 # Init5 = AT+CGQMIN=1,0,0,0,0,0 [Dialer radiolinja_usb_orange_spv] #Modem = /dev/ttyUSB0 #Baud = 115200 Init1 = ATH Init2 = ATE1 # Init3 = AT+CGDCONT=1,"IP","internet","",0,0a Init3 = AT+CGDCONT=1,"IP","internet","",0,0 # Some phones like the NEC DB7000 don't like empty strings, so an address must # be provided #Init3 = AT+CGDCONT=1,"IP","internet","0.0.0.0",0,0 # Some phones don't like the quality of service parameters: # Init4 = AT+CGQREQ=1,0,0,0,0,0 # Init5 = AT+CGQMIN=1,0,0,0,0,0 Dial Command = ATD Phone = *99# # Phone = ATD*99***1# Username = username Password = password [Dialer gprs_usb_spv] #Modem = /dev/ttyUSB0 #Baud = 115200 Init1 = ATZ Init2 = ATX1 # Init3 = AT+CGDCONT=1,"IP","internet","",0,0a Init3 = AT+CGDCONT=1,"IP","internet","",0,0 # Some phones like the NEC DB7000 don't like empty strings, so an address must # be provided #Init3 = AT+CGDCONT=1,"IP","internet","0.0.0.0",0,0 # Some phones don't like the quality of service parameters: # Init4 = AT+CGQREQ=1,0,0,0,0,0 # Init5 = AT+CGQMIN=1,0,0,0,0,0 Dial Command = ATD Phone = *99# # Phone = ATD*99***1# Username = username Password = password
Tento skript vyžaduje změnit jenom Username a Password v sekci [Dialer gprs_usb_spv] . Pro T-Mobile by init3 mohl být stejný jako v další kapitole pro modem T-Mobile UMTS USB, ale chodí to i takhle.
Při bližším ohledání souborů zjistíme, že syntaxe je je docela volná, některé příkazy se mohou psát do gprs i do gprs-wvdial.conf. Velmi mnoho řádek je zakomentovaných, a některé příkazy nejsou asi potřeba, nechávám je zde proto, aby bylo snadnější provádět ladění v případě potřeby nějakých změn.
Pro úplnost uvádím i obsah souboru ´gprs-disconnect-chat´, v něm jsem žádné změny nedělal.
Soubor gprs-disconnect-chat:
# # $Id: gprs-disconnect-chat,v 1.3 2004/07/08 22:40:47 mcfrisk Exp $ # # File: # gprs-disconnect-chat # # send break exec /usr/sbin/chat -V -s -S \ ABORT "BUSY" \ ABORT "ERROR" \ ABORT "NO DIALTONE" \ SAY "\nSending break to the modem\n" \ "" "\K" \ "" "\K" \ "" "\K" \ "" "+++ATH" \ "" "+++ATH" \ "" "+++ATH" \ SAY "\nPDP context detached\n"
Kromě toho na výše uvedených stránkách najdete i gprs-connect-chat, v našem případě není potřeba (vyzkoušeno), ale můžete si ho stáhnout. Oba soubory mají na začátku uvedeno !/bin/sh, takže to jsou shell skripty, měly by tedy být spustitelné (příkazy shellu ´chmod a+x gprs-connect-chat´ a ´chmod a+x gprs-disconnect-chat´).
Vlastní spuštění
Spuštění se provede příkazem ´sudo pppd call gprs´ (s právy administrátora) z příkazové řádky terminálového okna, vypíše se něco podobné (výpis se může lišit v závislosti na verzi pppd, toto je už z verze Ubuntu 7.10):
WvDial<*1>: WvDial: Internet dialer version 1.56 WvDial<*1>: Initializing modem. WvDial<*1>: Sending: ATZ WvDial Modem<*1>: ATZ WvDial Modem<*1>: OK WvDial<*1>: Sending: ATX1 WvDial Modem<*1>: ATX1 WvDial Modem<*1>: OK WvDial<*1>: Sending: AT+CGDCONT=1,"IP","internet","",0,0 WvDial Modem<*1>: AT+CGDCONT=1,"IP","internet","",0,0 WvDial Modem<*1>: OK WvDial<*1>: Modem initialized. WvDial<*1>: Sending: ATD*99# WvDial<*1>: Waiting for carrier. WvDial Modem<*1>: ATD*99# WvDial Modem<*1>: CONNECT WvDial Modem<*1>: ~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~ WvDial<*1>: Carrier detected. Waiting for prompt. WvDial Modem<*1>: ~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~ WvDial<*1>: PPP negotiation detected. Serial connection established. using channel 4 Using interface ppp0 Connect: ppp0 <--> /dev/ttyACM0 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x6f210b56>] rcvd [LCP ConfRej id=0x1 <magic 0x6f210b56>] sent [LCP ConfReq id=0x2 <asyncmap 0x0>] rcvd [LCP ConfAck id=0x2 <asyncmap 0x0>] rcvd [LCP ConfReq id=0x0 <auth pap> <mru 1500> <asyncmap 0xa0000>] sent [LCP ConfAck id=0x0 <auth pap> <mru 1500> <asyncmap 0xa0000>] sent [PAP AuthReq id=0x1 user="username" password="password"] rcvd [PAP AuthAck id=0x1 ""] PAP authentication succeeded sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>] sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] rcvd [IPCP ConfReq id=0x0 <addr 10.6.6.6>] sent [IPCP ConfNak id=0x0 <addr 10.0.0.1>] rcvd [LCP ProtRej id=0x0 80 fd 01 01 00 0c 1a 04 78 00 18 04 78 00] Protocol-Reject for 'Compression Control Protocol' (0x80fd) received rcvd [IPCP ConfNak id=0x1 <addr 172.24.168.76> <ms-dns1 62.141.0.2> <ms-dns3 213.162.65.1>] sent [IPCP ConfReq id=0x2 <addr 172.24.168.76> <ms-dns1 62.141.0.2> <ms-dns3 213.162.65.1>] rcvd [IPCP ConfReq id=0x1 <addr 10.0.0.1>] sent [IPCP ConfAck id=0x1 <addr 10.0.0.1>] rcvd [IPCP ConfAck id=0x2 <addr 172.24.168.76> <ms-dns1 62.141.0.2> <ms-dns3 213.162.65.1>] Cannot determine ethernet address for proxy ARP local IP address 172.24.168.76 remote IP address 10.0.0.1 primary DNS address 62.141.0.2 secondary DNS address 213.162.65.1 Script /etc/ppp/ip-up started (pid 7418) Script /etc/ppp/ip-up finished (pid 7418), status = 0x0
Teď byste se měli přes prohlížeč připojit, nastavení prohlížeče je v nastaveních, volba Přímé připojení do internetu.
Ukončení spojení
Spojení ukončíte Ctrl^c:
Terminating on signal 2 Connect time 9.0 minutes. Sent 6108 bytes, received 87752 bytes. Script /etc/ppp/ip-down started (pid 7478) sent [LCP TermReq id=0x3 "User request"] rcvd [LCP TermAck id=0x3] Connection terminated. Sending break to the modem PDP context detached Serial link disconnected. Script /etc/ppp/ip-down finished (pid 7478), status = 0x0
Ověřil jsem, že GPRS funguje mém mobilu celkem spolehlivě na síti Vodafone i T-Mobile, Ubuntu Dapper 6.06 a Gutsy 7.10. Pro T-Mobile mám lepší signál, připadá mi, že síť je v mé lokalitě v mnohem lepším stavu, spojení bylo rychlejší a stabilnější.
Vlastní instalace a zprovoznění UMTS
Až do tohoto bodu byl popis týkající se připojení přes mobil. Výše uvedený postup v podstatě platí s malými odchylkami i pro zprovoznění UTMS T-Mobile modemu pokud použijeme USB kabel s jediným, ale dost podstatným rozdílem. Ani přes USB kabel, ani přes ethernet kabel se mi nepodařilo modem rozchodit na Ubutu Dapper 6.06. Zkoušel jsem rp-pppoe, kppp, upgrade na poslední verzi, ale nic z toho nevedlo k cíli. Modem se nahlásil, někdy došlo i k připojení, takže se dala i nějaká stránka otevřít, a pak se po několika minutách spojení rozpadlo. Nakonec jsem se odhodlal k upgrade na Ubuntu Gutsy 7.10 desktop-amd64. Vlastní instalace Ubunru je velmi jednoduchá, takže jsem si zazálohoval co bylo potřeba a po instalaci jsem vše potřebné nahrál do pracovního adresáře a pak postupně rozcházel.
Oproti Ubuntu Dapper je zde rozdíl i v tom, že podpora jak pro USB (používá se ´pppd´), tak i pro ethernet (používá se ´pon´) je součástí instalace Ubuntu 7.10, 8.04 a není nutno některé části dodatečně instalovat. Další rozdíl je také v tom, že se používá jiný příkaz (nebo se alespoň jinak volá) pro připojení přes ethernet kabel (předtím to bylo nutno rp-pppoe naistalovat a příkazy byly jiné, i když hodně podobné), ´pon´.
Modem má několik režimů, některé nemusí být zpočátku srozumitelné, proto je zde nejprve popíšu
- Zapnutí a vypnutí modemu se provádí tlačítkem mikrospínače na horní části modemu. Po zapnutí i pro vypnutí modem hned nereaguje, musíte ho několik vteřin držet až problikne, a pak ještě několik vteřin čekat než se nastartuje, nebo vypne. Dost mě to mátlo, než mě došlo, že je to jako u mobilu, tam také dlouho trvá, než se nahraje firmware.
- Modem je úplně vypnutý, nic nesvítí. Do tohoto stavu jej dostanete jenom v případě, že odpojíte napájecí kabel od modemu.
- Svítí jenom podsvícené tlačítko pro zapnutí modemu.
- Svítí kromě tlačítka i červená dvojšipka a křidélka indikace úrovně signálu střídavě blikají, modem se zřejmě inicializuje a provádí se (možná) diagnostika.
- Zelená kontrolka modemu uprostřed křidélek bliká, modem je připraven, ale není připojený do datové sítě (standalone).
- Zelená kontrolka trvale svítí, jsme připojeni.
- Křidélka i kontrolka uprostřed trvale svítí, červení dvojšipka poblikává, docházi k datovým přenosům.
Zprovoznění modemu při použití USB kabelu
Soubory v adresáři /etc/ppp 'pap-secrets' a 'chap-secrets' zůstávají beze beze změny (viz. kapitola o GPRS), pokud jste se nerozhodli změnit jméno a heslo. Pokud ano, připište do těchto souborů další řádky. Výpis obsahu souborů je uveden v kapitole o gprs. Pokud budete používat připojení přes ethernet tyto soubory se asi přemažou při konfiguraci (pokud použijete ´sudo pppconfig´) a budete je muset po konfiguraci znovu upravit.
Další soubory se nachází opět v /etc/ppp/peers. Spuštění z příkazové řádky okna terminálu, např: ´pppd call umts´ je obdobné jako pro gprs, soubor ´umts´ (a další k němu přináležící) se opravdu v adresáři musí nalézat.
Soubor umts
Výpis umts:
# $Id: gprs,v 1.4 2004/04/28 08:40:32 mcfrisk Exp $ # # File: # umts # # Description: # Serial cable, IrDA, Bluetooth and USB pppd options for GPRS phones. # See 'man pppd' for detailed option descriptions. # Most GPRS phones don't reply to LCP echo's # lcp-echo-failure 0 # lcp-echo-interval 0 # Keep pppd attached to the terminal: # Comment this to get daemon mode pppd nodetach # Debug info from pppd: # Comment this off, if you don't need more info debug # Show password in debug messages hide-password # The phone is not required to authenticate: noauth # Connect script: # scripts to initialize the GPRS modem and start the connection, # wvdial command is for Orange SPV while other phones should work with chat #connect /etc/ppp/peers/gprs-connect-chat connect "/usr/bin/wvdial --chat --config /etc/ppp/peers/umts-wvdial.conf umts_usb_spv" #connect "/usr/sbin/chat -v -f /etc/chatscripts/umts" # Disconnect script: # AT commands used to 'hangup' the GPRS connection. disconnect /etc/ppp/peers/umts-disconnect-chat # Serial device to which the GPRS phone is connected: # /dev/ttyS0 for serial port (COM1 in Windows), # /dev/ircomm0 for IrDA, # /dev/ttyUB0 for Bluetooth (Bluez with rfcomm running) and /dev/ttyUSB0 # for USB #/dev/ttyS0 # serial port one #/dev/ttyS1 # serial port two #/dev/ircomm0 # IrDA serial port one #/dev/rfcomm0 # Bluetooth serial port one #/dev/ttyACM0 # USB serial device, for example Orange SPV # Serial port line speed 115200 # fast enough #57600 # perhaps usefull with IrDA as some phones don't like # speeds higher than this # Hardware flow control: # Use hardware flow control with cable, Bluetooth and USB but not with IrDA. crtscts # serial cable, Bluetooth and USB, on some occations with IrDA too #nocrtscts # IrDA # Ignore carrier detect signal from the modem: # local # IP addresses: # - accept peers idea of our local address and set address peer as 10.0.0.1 # (any address would do, since IPCP gives 0.0.0.0 to it) # - if you use the 10. network at home or something and pppd rejects it, # change the address to something else # :10.0.0.1 # Add the ppp interface as default route to the IP routing table defaultroute # pppd must not propose any IP address to the peer! noipdefault # Username and password: # If username and password are required by the APN, put here the username # and put the username-password combination to the secrets file: # /etc/ppp/pap-secrets for PAP and /etc/ppp/chap-secrets for CHAP # authentication. See pppd man pages for details. # Example, Radiolinja operator pap-secrets: # "username" * "password" * user "username" ipparam umts # Accept peers idea of our local address # ipcp-accept-local # Newer pppd's also support replacing the default route, if one is # already present, when the GPRS connetion should be set as the default route # to the network #replacedefaultroute # DNS servers from the phone: # some phones support this, some don't. usepeerdns # ppp compression: # ppp compression may be used between the phone and the pppd, but the # serial connection is usually not the bottleneck in GPRS, so the # compression is useless (and with some phones need to disabled before # the LCP negotiations succeed). # novj # nobsdcomp # novjccomp # nopcomp # noaccomp # The persist tries to reopen the connection if it is dropped. This # is usefull for example with a Nokia 7650 which only manages to # 'dial' with every second attempt or when the network likes to drop the # connection every now and then. It's not fun when the over-night # 'apt-get dist-upgrade -d -y' fails constantly... #persist #maxfail 99 # Asyncmap: # some phones may require this option. #asyncmap 0xa0000 # No magic: # some phones may require this option. #nomagic # Require PAP authentication: # some phones may require this option. #require-pap
Důležité jsou nezakomentované řádky, jsou zde rozdíly oproti GPRS.Některé příkazy nejsou asi potřeba, nechávám je zde proto, aby bylo snadnější provádět ladění v případě potřeby nějakých změn. Port je v tomto případě ttyUSB0; při výpisu ´ls /dev/ttyUSB0´ se vrátí že tam takový soubor v adresáři /dev je.
Soubor umts-wvdial.conf
Tento soubor obsahuje vlastní příkazy pro připojení modemu.
Výpis umts-wvdial.conf:
# File: # # $Id: gprs-wvdial.conf,v 1.3 2004/04/27 21:44:35 mcfrisk Exp $ # # gprs-wvdial.conf # # Description: # Wvdial settings for different GPRS phones and operators. See wvdial man pages # for more help. Below are the service specific settings, which should be given # by the operator - at least the # # Set PDP (Packet Data Protocol) context CID (Context ID) = 1 (an index sort of # since a phone may have many different GPRS settings), protocol = IP, # APN (Access Point Name) = "internet": # AT+CGDCONT=1,"IP","internet","",0,0 # # Set CID=1 QoS (Quality of Service) requirements from the network, not # supported by Nokia phones: # AT+CGQREQ=1,0,0,0,0,0 # # Set CID=1 minimum acceptable QoS parameters, not supported by Nokia phones: # AT+CGQMIN=1,0,0,0,0,0 # # Call CID=1 which activate PDP context one and perform GPRS attach: # ATD*99***1# # # Some phones seem to have only one CID, in which case the CID can be omitted # when calling: # ATD*99# # # Init4 = AT+CGQREQ=1,0,0,0,0,0 # Init5 = AT+CGQMIN=1,0,0,0,0,0 [Dialer radiolinja_usb_orange_spv] #Modem = /dev/ttyUSB0 #Baud = 115200 Init1 = ATH Init2 = ATE1 # Init3 = AT+CGDCONT=1,"IP","internet","",0,0a Init3 = AT+CGDCONT=1,"IP","internet","",0,0 # Some phones like the NEC DB7000 don't like empty strings, so an address must # be provided #Init3 = AT+CGDCONT=1,"IP","internet","0.0.0.0",0,0 # Some phones don't like the quality of service parameters: # Init4 = AT+CGQREQ=1,0,0,0,0,0 # Init5 = AT+CGQMIN=1,0,0,0,0,0 Dial Command = ATD Phone = *99# # Phone = ATD*99***1# Username = jmeno Password = heslo [Dialer umts_usb_spv] #Modem = /dev/ttyUSB0 #Baud = 115200 Init1 = ATZ # Init2 = AT Q0 V1 E1 50=0 &C1 &D2 +FCLASS=0 Init2 = AT+CGDCONT=1,"PPP","internet.t-mobile.cz","0,0",0,0 Init3 = ATX3 #Init4 = AT+CPIN=3051 # Init3 = AT+CGDCONT=1,"IP","internet","",0,0a # Init3 = AT+CGDCONT=1,"PPP","internet.t-mobile.cz","0,0",0,0 # Some phones like the NEC DB7000 don't like empty strings, so an address must # be provided #Init3 = AT+CGDCONT=1,"IP","internet","0.0.0.0",0,0 # Some phones don't like the quality of service parameters: # Init4 = AT+CGQREQ=1,0,0,0,0,0 # Init5 = AT+CGQMIN=1,0,0,0,0,0 Dial Command = ATDT Phone = *99# # Phone = ATD*99***1# Username = jmeno Password = heslo
Důležité řádky jsou v sekci ´Dialer umts_usb_spv´, parametry jsou trochu jiné než u GPRS.
Výpis soubou umts-disconnect-chat:
Soubor vznikl prostým okopírováním (příkaz ´cp gprs-connect-chat umts-disconnect-chat´) souboru ´gprs-disconnect-chat´, laskavého čtenáře odkazuji proto na něj.
Výpis soubou umts-disconnect-chat:
Soubor vznikl prostým okopírováním (příkaz ´cp gprs-connect-chat umts-disconnect-chat´) souboru ´gprs-disconnect-chat´, laskavého čtenáře odkazuji proto na něj.
Vlastní spuštění
Spuštění se provede obdobně příkazem ´sudo pppd call umts´ z příkazové řádky terminálového okna, vypíše se něco podobné (výpis se může lišit v závislosti na verzi pppd, toto je už z novější verze Ubuntu 7.10, na starší verzi 6.06 mi spojení nefungovalo):
WvDial<*1>: WvDial: Internet dialer version 1.56 WvDial<*1>: Initializing modem. WvDial<*1>: Sending: ATZ WvDial Modem<*1>: ATZ WvDial Modem<*1>: OK WvDial<*1>: Sending: AT+CGDCONT=1,"PPP","internet.t-mobile.cz","0,0",0,0 WvDial Modem<*1>: AT+CGDCONT=1,"PPP","internet.t-mobile.cz","0,0",0,0 WvDial Modem<*1>: OK WvDial<*1>: Found a good menu option: "1". WvDial<*1>: Sending: ATX3 WvDial Modem<*1>: ATX3 WvDial Modem<*1>: OK WvDial<*1>: Modem initialized. WvDial<*1>: Sending: ATDT*99# WvDial<*1>: Waiting for carrier. WvDial Modem<*1>: ATDT*99# WvDial Modem<*1>: CONNECT WvDial<*1>: Carrier detected. Waiting for prompt. WvDial Modem<*1>: ~[7f]}#@!}!}"} }/}#}%B#}%}%}&"a<%k}"~ WvDial<*1>: PPP negotiation detected. Serial connection established. using channel 1 Using interface ppp0 Connect: ppp0 <--> /dev/ttyUSB0 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9d6e50cf> <pcomp> <accomp>] rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x9d6e50cf> <pcomp> <accomp>] rcvd [LCP ConfReq id=0x3 <auth chap MD5> <magic 0x22e1bc25>] sent [LCP ConfAck id=0x3 <auth chap MD5> <magic 0x22e1bc25>] sent [LCP EchoReq id=0x0 magic=0x9d6e50cf] rcvd [CHAP Challenge id=0x1 <fe9eb6f4eaeeee7e60223a5d16172181>, name = "ctx-mw24-ipw"] sent [CHAP Response id=0x1 <88aaa5b1b8c6d5b82fd8750da3d237b2>, name = "internet"] rcvd [LCP EchoRep id=0x0 magic=0x22e1bc25] rcvd [CHAP Success id=0x1 ""] CHAP authentication succeeded CHAP authentication succeeded sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>] sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] rcvd [IPCP ConfReq id=0x1 <addr 10.231.251.32>] sent [IPCP ConfAck id=0x1 <addr 10.231.251.32>] rcvd [LCP ProtRej id=0x4 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f] Protocol-Reject for 'Compression Control Protocol' (0x80fd) received rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>] sent [IPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] rcvd [IPCP ConfNak id=0x2 <addr 89.24.108.199> <ms-dns1 62.141.0.1> <ms-dns3 213.162.65.1>] sent [IPCP ConfReq id=0x3 <addr 89.24.108.199> <ms-dns1 62.141.0.1> <ms-dns3 213.162.65.1>] rcvd [IPCP ConfAck id=0x3 <addr 89.24.108.199> <ms-dns1 62.141.0.1> <ms-dns3 213.162.65.1>] not replacing existing default route through eth1 Cannot determine ethernet address for proxy ARP local IP address 89.24.108.199 remote IP address 10.231.251.32 primary DNS address 62.141.0.1 secondary DNS address 213.162.65.1 Script /etc/ppp/ip-up started (pid 6012) Script /etc/ppp/ip-up finished (pid 6012), status = 0x0
Ukončení spojení
Spojení ukončíte stejně jako u GPRS Ctrl^c.
Protože výpis při ukončení je podobný tomu při odpojení v kapitole o GPRS, tak ho neuvádím.
Před vlastním připojením musí být modem standby, tj. zapnutý a připravený, viz. bod 5. Někdy je potřeba také vytáhnout a zasunout USB konektor, aby se vytvořilo zařízení /dev/ttyUSB0.
Nejčastější chyby:
WvDial<*1>: Sending: ATDT*99# WvDial<*1>: Waiting for carrier. WvDial Modem<*1>: ATDT*99# WvDial Modem<*1>: NO CARRIER WvDial<Warn>: No Carrier! Trying again.
- Modem není standby
pppd: In file /etc/ppp/peers/umts: unrecognized option '/dev/ttyUSB0'
- Zkuste vysunout a zasunout USB konektor do počítače.
Zprovoznění modemu při použití ethernet kabelu
Tento způsob je opravdu nejjednodušší, také spojení mi připadá výrazně rychlejší než při propojení USB kabelem. Myslím, že se tato investice vyplatí. Bohužel, spojení se mi podařilo uskutečnit jenom na novější verzi Ubuntu 7.10. Potřebujete znát 3-4 příkazy: ´pon´, ´poff´, ´plog´, případně ´tail /var/log/messages´. Zatím jsme si vystačili s příkazovou řádkou, teď udělám jednu výjimku, zajímavý příkaz je ´sudo pppoeconf´, který nakonfiguruje soubory pro použití ethernetového kabelu. Důležitá je nápověda. Zajímají nás dva soubory, které se při konfiguraci vytvoří: ´/etc/chatscripts/provider´ a ´/etc/ppp/peers/dsl-provider´. Je ovšem také možné, že jsou potřeba ještě soubory v adresáři /etc/ppp 'pap-secrets' a 'chap-secrets'. Podle výpisu při pripojování to vypadá (viz. níže), že se nejspíše použije ´chap-secrets´.
Výpis souborů pro připojení přes ethernet
Soubor ´provider´ jsem nijak neupravoval:
# This is the chat script used to dial out to your default service provider. # Please customize the entries enclosed in parenthesis to match your setup. # Only the "provider" file will be handled by poff and pon (unless with # extra command line arguments). # # Remember to edit /etc/ppp/peers/provider accordingly. # # ATZW2 as a default init string # - On all hayes compatible modems, W2 will correctly report the connect # speed. # ABORT BUSY ABORT "NO CARRIER" ABORT VOICE ABORT "NO DIALTONE" "" ATZW2 OK ATDT<put phone number here> ogin <put login name here> word \q<put password here>
Protože tento soubor nemá vyplněné korektně jméno a heslo, budí to ve mě podezření, že není vůbec potřeba.
Soubor ´dsl-provider´ v /etc/ppp/peers jsem zkopíroval do toho samého adresáře pod jménem ´umts-eth´.
Výpis souboru umts-eth:
# Pripojeni T-Mobile 4G ethernet kabelem (koncovka RJ-45) #pty "pppoe -I eth0" #pty "pppoe -I eth0 -m 1452" #pty "pppoe -I eth0 -m 1412" #demand #idle 90 connect /bin/true ipcp-accept-remote ipcp-accept-local noipdefault defaultroute replacedefaultroute noauth #mtu 1492 #maxfail 0 #holdoff 20 persist plugin rp-pppoe.so eth0 user "username" usepeerdns #hide-password #noaccomp #nopcomp #novj #novjccomp #nobsdcomp #nodeflate #noccp #nocrtscts #local lcp-echo-interval 30 lcp-echo-failure 4 #lock # Jen pro testovani v syslog debug # jen pro testovani - neskoci po spusteni do pozadi nodetach
Jediný řádek, který je potřeba modifikovat je ten, kde se musí označit ethernetový port, kam je kabel připojen. Zpravidla to ´eth0´, nebo ´eth1´. To je vše.
Vlastní spuštění
Spuštění se provede příkazem ´sudo pon umts-eth´ z příkazové řádky terminálového okna, vypíše se něco podobné (výpis se může lišit v závislosti na verzi pppd, toto je už z novější verze Ubuntu 7.10, na starší verzi 6.06 mi spojení nefungovalo) Modem musí být standby, tj. zapnutý a připravený, viz. bod 4:
Plugin rp-pppoe.so loaded. PADS: Service-Name: '' PPP session is 4 using channel 1 Using interface ppp0 Connect: ppp0 <--> eth0 sent [LCP ConfReq id=0x1 <mru 1492> <magic 0xb7e915ed>] rcvd [LCP ConfReq id=0x1 <auth chap MD5> <magic 0x2811905d>] sent [LCP ConfAck id=0x1 <auth chap MD5> <magic 0x2811905d>] rcvd [LCP ConfNak id=0x1 <mru 1500>] sent [LCP ConfReq id=0x2 <magic 0xb7e915ed>] rcvd [LCP ConfAck id=0x2 <magic 0xb7e915ed>] sent [LCP EchoReq id=0x0 magic=0xb7e915ed] rcvd [CHAP Challenge id=0x1 <bc270ed09ef907d0d82cf7a898b7bdfe>, name = "ctx-mw25-ipw"] sent [CHAP Response id=0x1 <bc309f8161234e551c3728160b927a3a>, name = "internet"] rcvd [LCP EchoRep id=0x0 magic=0x2811905d] rcvd [CHAP Success id=0x1 ""] CHAP authentication succeeded CHAP authentication succeeded peer from calling number 00:04:D8:51:3C:A5 authorized sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>] rcvd [IPCP ConfReq id=0x1 <addr 10.231.251.32>] sent [IPCP ConfAck id=0x1 <addr 10.231.251.32>] rcvd [IPCP ConfNak id=0x1 <addr 89.24.42.33> <ms-dns1 62.141.0.1> <ms-dns3 213.162.65.1>] sent [IPCP ConfReq id=0x2 <addr 89.24.42.33> <ms-dns1 62.141.0.1> <ms-dns3 213.162.65.1>] rcvd [IPCP ConfAck id=0x2 <addr 89.24.42.33> <ms-dns1 62.141.0.1> <ms-dns3 213.162.65.1>] not replacing existing default route through eth1 Cannot determine ethernet address for proxy ARP local IP address 89.24.42.33 remote IP address 10.231.251.32 primary DNS address 62.141.0.1 secondary DNS address 213.162.65.1 Script /etc/ppp/ip-up started (pid 6173) Script /etc/ppp/ip-up finished (pid 6173), status = 0x0
Pokud se vše povedlo, tak byste se měli přes prohlížeč připojit, nastavení prohlížeče je v nastaveních, volba Přímé připojení do internetu.
Ukončení spojení
Spojení ukončíte stejně jako v předchozích případech Ctrl^c.
Terminating on signal 2 Connect time 65.2 minutes. Sent 233872 bytes, received 1790055 bytes. Script /etc/ppp/ip-down started (pid 7290) sent [LCP TermReq id=0x3 "User request"] Skript /etc/ppp/ip-down finished (pid 7290), status = 0x0 rcvd [LCP TermAck id=0x3] Connection terminated.
Pokud zakomentujete příkaz ´nodetach´ v souboru ´umts-eth´ po připojení modemu se proces skryje na pozadí a terminálové okno se uvolní odpojení modemu se pak provede příkazem ´poff umts-eth´. Nejsem tomuto nakloněn, proto jsem to moc nezkoušel. Důvodem je, že pokud modem není standalone, dojde k chybě, kterou nemusíte zaznamenat. Je zajímavé, že ´pon´ umí nastartovat modem i pokud je vypnutý.
Nejčastější chyby:
Chybové hlášení při pokusu o připojení při vypnutém modemu:
Plugin rp-pppoe.so loaded. PADS: Service-Name: '' PADS: System-Error: Network failure detected (33)
Modem se začne inicializovat, několik vteřin to trvá. Potom stačí příkaz k připojení zadat znovu.
Pokud budete netrpěliví a zkusíte to znovu moc brzo, tak se objevuje jiné chybové hlášení:
Plugin rp-pppoe.so loaded. PADS: Service-Name: '' PADS: System-Error: Call disconnected (3)
Jinak se modem rozjede a dojde ke spojení (stejně jako při zapnutém modemu).
Jak je patrno, připojení přes ethernetový kabel je opravdu nejjednodušší. Jediná nevýhoda je, že si kabel musíte dokoupit.
Závěr
Připojení je vcelku stabilní, nebochází v mé lokalitě (Praha Nusle) k výpadkům. Rychlost se pohybuje mezi 20kB/s - 55kB/s. Teoretických 64 kB/s asi nedosáhnu ani s použitím externí antény. Slibovaných 60% - 70% od T-Mobile většinou ano.
Napsání tohoto článku bylo iniciováno různými kusými informacemi, které mi nedávaly dostatečnou představu o tom, jak spouštěcí utility konfigurovat bez toho, že bych musel naslepo instalovat nějaká nová a nová grafická rozhraní, která mohou, ale nemusí fungovat, protože jsou zrovna optimalizovaná pro jiný typ modemu nebo OS. Chybové výpisy ´pppd´ jsou velmi dobře srozumitelné a velmi rychle mě přivedly o odstranění chyb ve skriptech, ´pon´ je tak jednoduše konfigurovatelný, že jsem ani neměl možnost nějaké chyby ve skriptech odladit.
Chtěl bych upozornit na to, že jsem žádnou knihu o modemech ani připojování do datových sítí nečetl, a hodně věcí jsem udělal intuitivně. Příkazy ve skriptech se určitě nechají minimalizovat a optimalizovat. Některé věci nemusí být přesné. Budu rád, za připomínky i za opravy. Věřím, že článek je napsaný tak podrobně, aby i méně zkušený uživatel byl schopný podle něho modem pro Ubuntu 7.10 Gutsy Gibbon případně i pro 8.04 Hardy Heron rozběhnout.
Upgrade na verzi Ubuntu 8.04 proběhl bez problémů, skripty nebylo nutné jakkoli upravovat.
Použité konvence
Příkazy konzole (terminálu) uvádím do jednoduchých uvozovek, například ´pwd´, ale ne úplně vždy. Nemá to nic společného se syntaxí příkazové řádky, je to vlastně čárka u dlouhých hlásek. Ostatní konvence jsou běžné
Odkazy
Autor návodu: hariprasad