Portál AbcLinuxu, 4. května 2025 00:13
Přiznám se, že nastavení připojení přes vytáčené připojení prostřednictvím modemu pro mne byla vždycky magie. Sice se mi většinou podařilo přimět modem k životu, ale nikdy jsem nepochopil, odkud autoři nejrůznějších postupů vědí, jaké příkazy modem chce. Většinou tyto postupy - včetně těch ve zdejším FAQ - byly k ničemu. Na to abych je opravil, se necítím dostatečně věci znalý a kdo ví? Třeba někomu, tak jak jsou napsány, i fungovaly. Proto jsem pro svou potřebu sepsal raději tento blogpost.
pppd
Připojení s využitím pppd
má pro mne několik půvabů. Funguje jednoduše, spolehlivě a z příkazové řádky.
USB modemy Huawei od T-Mobile jsou hybridní zařízení, která se v systému objeví nejenom jako modem, ale i jako CD mechanika. Nicméně s instalačkami aplikací, které jsou v linuxu zcela k ničemu.
Aby se chovaly jako modem, musí se nejprve přepnout. Toto přepnutí obvykle automaticky zajistí usb-modeswitch (instalační balík v Debianu se jmenuje stejně), po zapíchnutí modemu do USB zástrčky. Je ale třeba počítat s tím, že to může chviličku trvat. Podle informací z nejrůznějších postupů co se válí na internetu, se toto automatické přepnutí nemusí provést vždy. U modemů, o kterých píšu tady jsem se s tím ale nesetkal.
Nakonec jsem použil ke konfiguraci výchozí skripty, které se v Debianu po instalaci balíčku ppp u Debianu objeví v adresáři /etc/ppp/peers
a /etc/chatscripts
s názvem provider
.
Dají se najít také v adresáři /usr/share/ppp
, s příponami podle adresářů do kterých patří: provider.peer
a provider.chatscript
/etc/ppp/peer/provider
Tento soubor obsahuje výchozí nastavení pro spouštění démona pppd, a jeho jméno se volá při startu připojení jako parametr příkazu pon.
V něm je důležité opravit cestu k chat skriptu, kterým se provádí vlastní vytáčení modemu (v našem případě půjde o skript /etc/chatscripts/provider
), a nastavení zařízení na kterém se má hledat modem. V případě USB modemů zde zmíněných je to vždy stejné - /dev/ttyUSB0
Aby bylo zřejmé, které výchozí parametry skriptu jsem měnil, jsou v následujícím výpisu ponechány v zakomentované formě i ty výchozí:
hide-password noauth #connect "/usr/sbin/chat -v -f /etc/chatscripts/pap -T ********" connect "/usr/sbin/chat -v -f /etc/chatscripts/provider" #/dev/modem /dev/ttyUSB0 #115200 460800 defaultroute noipdefault #user "myusername@realm" usepeerdns persist demand debug
Důležitý je parametr usepeerdns
. Bez něj se nenastaví obsah souboru /etc/resolv.conf
a tudíž by nefungovalo DNS.
Kromě výchozích položek jsem přidal navíc parametry debug a demand, které lze jinak klidně vyhodit. První způsobuje ukecaný výpis v logu a druhý to, že se začne chatscriptem vytáčet modem teprve tehdy, až přijde nějaký požadavek na síťové připojení - např. zkusíte ping na nějakou IP adresu, nebo si necháte vypsat route.
Podstatné je, že komunikace s modemy se řeší přes chat skript a obsah tohoto souboru není třeba měnit, pokud se nezmění cesta k modemu.
/etc/chatscripts/provider
Veškeré kouzlo připojení tedy spočívá ve správně vytvořeném skriptu pro vytočení modemu. Takto vypadal výchozí obsah, který bylo nutné upravit:
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>
Na přiložených obrázcích vlevo
Bus 001 Device 012: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Ačkoliv pro tento typ modemu existují ve zdejším FAQ dokonce dva postupy - jeden pro Huawei E1750 a Huawei E1750 (02), v době kdy jsem ten modem konfiguroval poprvé zde neexistoval ani jeden. Po pravdě řečeno - stejně by se mi to podle nich nepodařilo. Zkoušel jsem totiž podle nich upravit konfiguraci, když jsem řešil novější typ modemu, ale bezúspěšně. Mě fungoval u tohoto modemu chatskript - který jsem našel bůhví kde:
ABORT BUSY ABORT "NO CARRIER" ABORT ERROR ABORT VOICE ABORT "NO DIALTONE" "" "ATZ" OK AT+CGDCONT=1,"IP","internet.t-mobile.cz" OK "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" OK "AT+IPR=115200" OK "ATE1" "" "ATD*99#" CONNECT 'dc'
Byl to vůbec jeden z prvních USB modemů od T-Mobile, který nabízel připojení ke 3G síti, ale i když se mi ho podařilo rozchodit, choval se divně. Zhruba po 10-15 minutách se odpojoval, a připojení bylo možnéobnovit až po přepíchnutí do jiné díry. Proto sáhla kamarádka po novějším modelu. Jenže ten jí s tímto nastavením chatskriptu nechodil.
na přiložených obrázcích uprostřed
Bus 001 Device 009: ID 12d1:1c0b Huawei Technologies Co., Ltd. E173s 3G broadband stick (modem off) Bus 001 Device 010: ID 12d1:1c05 Huawei Technologies Co., Ltd. E173s 3G broadband stick (modem on)
I pro tento modem existuje ve zdejším FAQ postup - Huawei e173, ale byl mi naprosto k prdu. Připojení podle něj nefungovalo. Zkoušel jsem i tu obskurní aplikaci, ale bylo to k ničemu, protože skončila chybou při kompilaci jaderného modulu. Po detektivním pátrání na netu jsem ale na jedné diskuzní stránce narazil na parametr AT&F a vytvořil chatskript se kterým mi bez problému chodí nejenom tento modem, ale i ten předchozí a následující:
ABORT BUSY ABORT "NO CARRIER" ABORT ERROR "" "AT&F" OK AT+CGDCONT=1,"IP","internet.t-mobile.cz" "" "ATD*99#" CONNECT 'dc'
Jen pro úplnost přidávám ještě třetí typ modemu, který jsem dostal, když jsem před několika měsíci prodlužoval smlouvu s T-Mobile.
Na přiložených obrázcích vpravo
Bus 001 Device 008: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
Chatscript, který používám je naprosto stejný jako je uveden u modemu Huawei E173s-1
Pokud by se vám podobně jako mi stalo, že se zařízení nepřepne na modem - tzn. že se nevytvoří zařízení /dev/ttyUSB?
, tak ho vyzkoušejte i v jiných USB portech. V mém případě totiž nefunguje přepínání na portech, které jsou v systému vidět jako USB 3.0.
Tiskni
Sdílej:
Ja som tiež podobnú vec riešil na ubuntu. Nakoniec bolo treba nainštalovať usb-modeswitch. Chat skritpty som neriešil, použil som network-manager a tam to prekvapivo fungovalo.
ale nikdy jsem nepochopil, odkud autoři nejrůznějších postupů vědí, jaké příkazy modem chceTak třeba já jsem to u ufona před časem vyčetl z originálního návodu k zařízení, který jsem našel přes google. Každé takové zařízení musí mít nějaký manuál, podle kterého se to nastavuje, jen jde o to, jestli je dostupný nebo ne. Kdyby firmy využívající stejné služby, dodržovaly své vlastní bezpečnostní politiky, tak by návody byly zcela běžná věc. Nemohli by totiž použít samoinstalační balíček a museli by zadávat údaje ručně.
Funguje jednoduše, spolehlivě a z příkazové řádky.Joo, jednoduše :D. Dávám přednost wvdialu, když to jde :). Nebo NetworkManageru, když se tomu chce fungovat samo.
Nicméně s instalačkami aplikací, které jsou v linuxu zcela k ničemu.Může se stát, že se tam potřebné údaje najdou.
V případě USB modemů zde zmíněných je to vždy stejné - /dev/ttyUSB0Jo, než to vypojím a znovu zapojím nebo se to nějak zblbe a je z toho /dev/ttyUSB1. Tady třeba ocením ten ModemManager, který by si s tímto měl poradit.
Jo, než to vypojím a znovu zapojím nebo se to nějak zblbe a je z toho /dev/ttyUSB1. Tady třeba ocením ten ModemManager, který by si s tímto měl poradit.Ani to zarizeni, ktere odpovida modemu nemusi byt vzdy /dev/ttyUSB1, nektera starsi zarizeni, napr. CDMA450 od ET si vytvarela dvojici /dev/ttyUSB1 a /dev/ttyUSB0. Doporucuji se presvedcit pomoci dmesg hned po pripojeni.
Nicméně s instalačkami aplikací, které jsou v linuxu zcela k ničemu.Může se stát, že se tam potřebné údaje najdou.
Vzhledem k tomu že jde ve všech případech o binární exáče, tak asi ne..
V případě USB modemů zde zmíněných je to vždy stejné - /dev/ttyUSB0Jo, než to vypojím a znovu zapojím nebo se to nějak zblbe a je z toho /dev/ttyUSB1. Tady třeba ocením ten ModemManager, který by si s tímto měl poradit.
Jak jsem zmínil o kus níže. Tyhle různá udělátka typu network-manager spíš do toho všeho vnášejí chaos. Co jsem je přestal používat a ze systémů odstranil, zmizely i problémy podobného typu.
Abyses toho problému zbavil, musel bys odstranit kernel.V případě USB modemů zde zmíněných je to vždy stejné - /dev/ttyUSB0Jo, než to vypojím a znovu zapojím nebo se to nějak zblbe a je z toho /dev/ttyUSB1. Tady třeba ocením ten ModemManager, který by si s tímto měl poradit.Jak jsem zmínil o kus níže. Tyhle různá udělátka typu network-manager spíš do toho všeho vnášejí chaos. Co jsem je přestal používat a ze systémů odstranil, zmizely i problémy podobného typu.
Stačilo pouze rozkopírovat ty konfiguráky a doinstalovat chybějící balík usb-modeswitch.Jasně, pouze zběsile klepat nějaký konfiguráky a něco doinstalovat...
usb-modeswitch
se dá u některých modelů modemů vyhnout použitím Huawei-specifického AT příkazu, pomocí kterého vypnou jednotlivé subsystémy. Pokud se vypnou všechny mimo modemu, tak se zařízení přepne natvrdo na režim modemu:
AT^U2DIAG=0
- jen modem, není třeba modeswitch (tohle chceme)
AT^U2DIAG=1
- modem + CD-ROM
AT^U2DIAG=255
- modem + CD-ROM + SD čtečka (default režim)
AT^U2DIAG=256
- modem + SD čtečka
Víc viz třeba na wiky Archu, Kdysi jsem našel i tabulku, kde byly popsané i dalši hodnoty, ale už jí nemůžu vygooglit. Na přepnutí stačí poprvé počkat na přepnutí, spustit Minicom
nebo něco na ten způsob, zadat příkaz a vytáhnout zařízení z USB. Po dalším zasunutí by měl naběhnout hned v režimu modem.
Výhoda je nejen to, že není třeba usb-modeswitch
(stejně je třeba na první přepnutí), ale hlavně těch několik sekund, kdy se musí čekat na detekci nového zařízení. Mimo toho, SD čtečka v modemu je stejně nic moc (v tom mojem je dost pomalá a nebere karty nad 8GB) a pokud nepotřebujete funkčnost ve Windows, tak je vestavěná "CD-ROM" s windowsovskými ovladači v Linuxu platná jak mrtvému zimník ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.