Wdzwanianie przez modem analogowy
Oryginalnie zaprojektowałem Puppy do dostępu do Internetu przez klasyczny
modem wdzwaniający się do ISP (Dostawcy Usług Internetowych), przez Public Switched Telephone Network (PSTN). Modem jest zwany analogowym modemem,
jako że wysyła i odbiera dane poprzez tony częstotliwości słyszalnej --
które można słyszeć jak modem wdzwania się do ISP.
Przeniosłem się na różne rodzaje dostępu cyfrowego
szerokopasmowego, jednak wiele osób, w niektórych
częściach świata, wciąż używa analogowego wdzwaniania. Dlatego, ta
sekcja jest wciąż bardzo istotna!
Tradycyjnie, Linuks tylko rzeczywiście działał z tym co nazywamy
"sprzętowymi" modemami szeregowymi -- gdzie wiele modemów było
tym co nazywamy
"programowymi" modemami, tylko sprzedawanymi ze sterownikami dla
Microsoft Windows. Jeśli twój PC ma wewnętrzny modem, lub
zewnętrzny modem podłączony przez kabel USB, to jest najczęściej modem
programowy.
Proszę zauważyć że opisuję analogowe modemy tutaj, do wdzwaniania do
ISP (Dostawcy Usług Internetowych) -- one są inne niż 3G, ADSL i modemy
kablowe używane do dostępu cyfrowego szerokopasmowego do Internetu.
- Zewnętrzny modem szeregowy.
Jeśli masz zewnętrzny modem szeregowy, łatwo rozpoznawalny przez
charakterystyczny kabel -- dość duży płaski prostokątny kształt, z 9 lub
25
pinami. To jest sprzętowy modem, i będzie zdecydowanie działał w Puppy.
- Wewnętrzna karta PCI modem.
'PCI' odnosi się do gniazd na płycie głównej, do których
wewnętrzny
modem może być włożony. Aż do około 2002, prawdziwie sprzętowe modemy
PCI były produkowane, od tego czasu wszystkie były modemami programowymi
-- zatem to jest najczęściej to co masz.
- Modem wbudowany w płytę główną.
Technicznie, one są wciąż modemami PCI, jako że termin "PCI" aktualnie
odnosi się do szyny głównego interfejsu na płycie głównej,
do której wszystkie urządzenia wejścia/wyjścia są połączone. To
są wszystko modemy programowe.
- Zewnętrzny modem USB. Obecnie USB jest używane dla prawie wszystkich zewnętrznych urządzeń -- mysz, klawiatura,
modem, drukarka, skaner. Są prawdziwie sprzętowe modemy USB, ale najczęściej to jest modem programowy.
- Modem PCMCIA. Też znany jako cardbus. To jest gniazdo w laptopach. Może być programowe lub sprzętowe, nowoczesne są zwykle programowe.
Co to jest modem programowy? W zasadzie, to jest tańszy modem
który robi mniej przetwarzania w sobie i czyni CPU robiącym
niektóre działania procesowe. To znaczy że umieszcza proces w
CPU, którego nie zauważysz w nowoczesnych szybkich CPU, ale to
jest czynnik dla starego PC. Też moim osobistym doświadczeniem jest że
modemy sprzętowe mają tendencję większej szybkości
transferu nawet z nowoczesnymi PC.
Rzeczywistym minusem modemu sprzętowego jednak, jest to że powoduje CPU
robiącym niektóre działania procesowe, wymaga specjalnego
sterownika dla tego szczególnego modemu, i większość
producentów ma tylko napisane sterowniki dla Windows. Jednak,
niektórzy producenci stają się bardziej
"świadomymi Linuksa" i też niektórzy entuzjaści Linuksa rozwinęli
sterowniki.
Bądź ostrzeżony, jeśli masz modem programowy, on może nie
działać w Puppy.
Entuzjasta Puppy 'ezeze5000' (nazwa na forum) przesłał mi pół
tuzina starych kart modemów programowych PCI do testowania. To
było w 2008, i w tym czasie ja tylko miałem jeden z nich działający w
Puppy. Od tamtego czasu, współczynnik powodzenia polepszył się, i
w 2010 miałem połowę z nich działającą.
Zauważ, jeśli modem programowy nie działa w Linuksie, jest żargonowa nazwa używana dla tego -- on jest zwany "linmodem".
Jak wdzwaniać się
Krótko mówiąc, Puppy automatycznie wykryje modem
analogowy, i jeśli on jest obsługiwanego typu to wszystko będzie
automatycznie ustawione i będzie gotowe do połączenia. Dla
modemów szeregowych to jest bezpośrednio, jednak
Puppy teraz obsługuje wiele modemów programowych. Jeśli on jest
obsługiwany, najczęściej będzie
automatycznie wykryty.
Zauważ: automatyczne wykrycie i automatyczne ustawienie
niektórych modemów to praca w toku, i jest trwająca
dyskusja na ten temat na forum Puppy.
By wdzwonić się, wszystko co musisz zrobić to kliknąć ikonę 'połącz' na
pulpicie. To wywoła "Kreator Połączenia Internetowego" w którym
zobaczysz przycisk oznaczony "Internet przez zwykły analogowy lub
bezprzewodowy modem" -- po prostu kliknij go i po sprawie -- program
który rozwinąłem zwany PupDial uruchomi się, i powie czy modem jest wykryty.
Zauważ, w Kreatorze Połączenia Internetowego zobaczysz przyciski radiowe
na dole. One umożliwiają konfigurację pulpitu ikony 'połącz' by
bezpośrednio wystartować PupDial, nie Kreator -- jedno kliknięcie mniej
by być
online!
Jednak jedna sprawa, chociaż Puppy może automatycznie wykryć
wiele modemów i automatycznie ustawić rzeczy by ten modem był
gotowy, w niektórych przypadkach można mieć do zrobienia nieco
dodatkowego podrasowania. Na przykład, Puppy wykryje modem, ale on nie
chce wdzwaniać się -- robisz małe poszukiwania i znajdujesz że "ciąg
inicjujący" modemu musi być zmieniony, potem działa. W ogóle,
jeśli podrasujesz modem programowy i zadziała,
proszę proszę daj mi znać o tym i ja będę mógł wbudować to
podrasowanie do następnego wydania Puppy.
Przykład: niektóre modemy programowe wymagają by "sprawdzenie połączenia" w PupDial było wyłączone.
Dalsze użyteczne informacje
Jeśli musisz rozwiązać problem zwykłego modem dialup, zalecam
zajrzeć na Forum Puppy. Tam jest specjalna sekcja o zwykłych modemach
dialup, z dużym wsparciem i rozwiązaniami. Główny człowiek
który może pomóc to członek forum 'rerwin', który
obecnie pracuje by modemy były automatycznie wykrywane i automatycznie
ustawione. Rerwin aktualizuje też PupDial.
Jeśli z jakiegoś powodu PupDial nie działa, Puppy ma dwa inne programy do wdzwaniania modemem, zwane Gkdial i Xeznet,
to są pakiety PET które można zainstalować (zobacz ikonę
'instaluj' na pulpicie) -- ostrzegam że pierwsza to aplikacja GTK1,
druga to aplikacja Tcl/Tk i w przypadku Puppy 4.x i późniejszego
to są zależności które też muszą być zainstalowane (chociaż 4.20 i
4.21 miały Tcl/Tk, 4.3 i późniejsze nie mają) -- zatem pozostań z
PupDial jeśli to możliwe. Uwaga o Xeznet: gdy dodawane konto, pole
"tty" i pole "szybkość" nie muszą mieć niczego wprowadzonego do nich niż
domyślne
/dev/modem i 115200bps.
Jeśli chcesz eksperymentować z wysyłaniem komend Hayes do modemu, Puppy ma mały schludny program lini komend zwany modem-stats. Otwórz okno terminala i uruchom go jak to:
# modem-stats -c "ATZ" /dev/ttyS0
To ma lokalny plik pomocy. Puppy ma też inne malutkie narzędzie linii komend komunikacji port-szeregowy zwane picocom. Pomoc online dla picocom: http://linux.die.net/man/8/picocom.
Jest inna aplikacja, zwana Cutecom,
program GUI terminala portu szeregowego, który znajdziesz w menu
Narzędzia (zauważ, najświeższe wydania Puppy nie mają tego programu
wbudowanego
-- jest pakiet PET: zobacz menu Ustawienia --> Puppy
Manager Pakietów, lub kliknij ikonę 'instaluj' na pulpicie -- on
wymaga pakietu biblioteki
Qt, która będzie automatycznie zainstalowana). Jest bardzo łatwy
do użycia: dla mojego modemu musiałem zaznaczyć
pole wyboru "Wymiana potwierdzeń: programowa" i wybrać "koniec linii
CR,LF" z pola listy blisko dołu okna. Po otwarciu portu szeregowego dla
komend Hayes które wpiszesz pole "Wejście:", odpowiedź modemu
pojawi się w najwyższym polu tekstowym. Na przykład, wpiszesz "AT"
następnie klawisz ENTER, i modem powinien odpowiedzieć "OK".
Ta strona ma więcej informacji o modemach programowych:
linmodems.technion.ac.il/resources.html
Tutaj są URLe z listami ciągów modemu dla poszczególnych
modemów:
www.56k.com/inits
www.west.net/~jay/modem
|
'Dialup' przez modem bezprzewodowy
Modemy bezprzewodowe często odnoszą się do modemów 3G lub
modemów HSDPA. Krótko mówiąc, one dają dostęp do
Internetu bez potrzeby przewodu. One też wymagają "wdzwonienia" operacji
podobnej do analogowych modemów, zatem w Puppy można użyć to
samo narzędzie GUI PupDial dla obu.
Jednak, jest wiele różnic technologicznych użytych dla tych
modemów, innych niż 3G lub HSDPA, takich jak GPRS, główna
różnica z punktu widzenia użytkownika to szybkość transferu
danych. W zasadzie, w porządku zwiększania szybkości GPRS, 3G, HSDPA.
Ja tylko zacząłem pisać tą sekcję (w Grudniu 2010),
bazując na moim doświadczeniu z trzema różnymi modemami 3G.
Prezentuję nieco uwag o nich które mogą być użyteczne. Żyję w
Australii, zatem te uwagi będą szczególnie użyteczne dla innych
Australijczyków.
Vodafone
|
Numer dostępowy: *99#
APN: vfprepaymbb
|
Optus Huwaei E160-E
|
Numer dostępowy: *99#
APN: preconnect
|
Telstra
|
Numer dostępowy: *99#
APN:
|
W PupDial, wypełnij pola 'Numer dostępowy' i 'APN'.
Pola 'Nazwa użytkownika' i 'Hasło' nie mają znaczenia, zatem pozostaw je jak są -- nie ustawiaj ich na puste jak objekty wykonywalne wvdial. Zazwyczaj, wszystko inne może być pozostawione jak jest, i po prostu kliknij przycisk
'Połącz'.
Gdy PupDial startuje i nowy/zmieniony modem jest wykryty,
PupDial
testuje czy ten modem odpowiada i próbuje określić odpowiedni
"ciąg inicjujący" -- to są komendy które są wysyłane do
modemu, znane jako Komendy Hayes. One są też używane dla modemów
analogowych, ale z rozszerzeniami. Ta strona wikipedii jest dobrym
wprowadzeniem, i też nakreśla rozszerzenia modemu 3G/GSM:
http://en.wikipedia.org/wiki/Hayes_command_set
Może być że PupDial nie dostaje dobrego ciągu inicjującego dla
modemu. W tym przypadku, jeśli jesteś zdolny znaleźć alternatywny ciąg
który działa, daj mi znać.
Tutaj są różne informacje które użytkownicy mi wysłali, lub które znalazłem:
Huawei E1550 3G USB modem
|
Członkowie Puppy Forum 'zygo' i 'pakt' zaraportowali że domyślny ciąg nie działa (1 2), ale ten tak:
AT &FE0 V1 X1 &D2 &C1 S0=0 Uaktualnienie:
Wydaje się że jest problem z ponownym włożeniem tego modemu. Po prostu
włóż go raz, i domyślny ciąg wygenerowany przez PupDial powinien
działać. Było też zauważone że najlepiej włożyć modem po rozruchu.
|
Huawei E160-E 3G USB modem
|
Ten modem jest interesujący
gdyż nie wymaga modeswitch. Jest ciągle w obu trybach przechowywania i
modemu. Tak więc, gdy włożysz go zobaczysz ikonę dysku optycznego
która pojawi się na pulpicie, ale równocześnie działa jako
modem (w porcie /dev/ttyUSB0). Chciałbym informacji na temat innych
modemów działających w ten sposób, by zrobić pozycję dla
nich w /etc/udev/rules.d/52-usb_modem_puppy.rules, by wyskoczyło okno
wykrycia gdy włoży się modem.
|
Dalsze wskazówki/porady
- Możesz mieć najlepszy/zgodny rezultat jeśli włożysz modem po rozruchu.
W teorii, jeśli modem jest już włożony przy rozruchu on powinien wciąż
działać, ale niektórzy raportują niezgodne zachowanie w tej
sytuacji.
- Niektóre modemy 3G nie muszą być przełączane w
trybie. Może być że były przełączone raz i potem pozostają ciągle
przełączone. Możesz mieć tę sytuację kiedy ikona dysku optycznego pojawi
się na pulpicie kiedy włożysz modem, ale on wciąż działa jako modem --
znaczy że jest równocześnie w obu trybach.
- Ustaw w Windows najpierw. Nienawidzę zalecać tego, ale jeśli
masz dostęp do systemu Windows, włóż nowy modem i połącz się do
sieci w Windows. Tak można uniknąć niektórych kłopotów
ustawienia. Po tym można użyć modemu w Linuksie. Chciałbym doświadczenia
bez użycia Windows w ogóle, szczególnie opowiadania o
sukcesach!
|
Techniczne informacjeNieco uwag dla tych co chcą zrozumieć jak Puppy robi rzeczy "pod maską". Użytkownicy nie muszą tego wiedzieć.
Są dwa typy modemów, z punktu widzenia wykrycia w
Puppy: wewnętrzny (stały) lub zewnętrzny (podłączany, lub wymienny).
Wewnętrzne modemy są wykryte gdy Puppy startuje, wymienne mogą być
wykryte przy rozruchu ale też jeśli modem jest włożony po rozruchu.
Przy rozruchu, skrypt /etc/rc.d/rc.sysinit powoduje że poprawne sterowniki
(moduły) są załadowane dla wykrycia sprzętu. Jeśli spojrzysz do rc.sysinit, zobaczysz ważną linię kodu:
echo add > ${ONEPATH}/uevent #generates an 'add' uevent.
To mówi kernelowi by wygenerował to co jest zwane 'uevent' dla
wykrytej pozycji sprzętu. Jest program demona, 'udevd' który
czyta te uevents i zgodnie z zasadami w /etc/udev/rules.d i
/lib/udev/rules.d, powoduje załadowanie/instalację właściwego
sterownika, firmware (itp.).
Najważniejszy plik zasad udev to /etc/udev/rules.d/50-udev-puppy-basic.rules, który ma te dwie linie w nim:
# kernel firmware loader SUBSYSTEM=="firmware", ACTION=="add", RUN+="/sbin/pup_event_backend_firmware" # Module autoloading ACTION=="add", SUBSYSTEM=="?*", ENV{MODALIAS}=="?*", RUN+="/sbin/pup_event_backend_modprobe"
Dwa skrypty 'pup_event_backend_firmware' i
'pup_event_backend_modprobe' zadbają o załadowanie sterownika i firmware.
Firmware to pliki danych potrzebne dla niektórych sterowników, i one są przechowywane w
/lib/firmware.
Całe wykrycie sprzętu Puppy i załadowanie modułu jest
opracowane specjalnie dla Puppy i jest różne od wszystkich innych
dystrybucji Linuksa. Także firmware (plus inne pliki danych lub
wykonywalne) wymagane przez sterownik, mogą nie być początkowo w
/lib/firmware, ale w 'firmware tarball' przechowywanym w
/lib/modules/all-firmware -- pup_event_backend_modprobe zadba o
rozszerzenie odpowiednich firmware tarballs.
Ważnym punktem uwagi jest że modemy bezprzewodowe są często
hybrydowe, lub podwójnej osobowości urządzeniami. Moje modemy 3G
USB mają podwójną osobowość -- mogą zachowywać się albo jako
urządzenie przechowywania albo jako modem. W większości
przypadków, gdy włożono pierwszy raz, one są w trybie
przechowywania i nie działają jako
modem. Muszą być przełączone w tryb modemu, i mamy
program zwany 'usb-modeswitch' by to zrobić...
usb-modeswitchSą specjalne zasady udev które wyzwolą aplikację usb-modeswitch, /lib/udev/rules.d/40-usb_modeswitch.rules i
/etc/udev/rules.d/41-usb_modeswitch-puppy.rules.
Gdy podłączasz USB modem, usb-modeswitch powinno być wyzwolone, i modem przełączy się w tryb modemu.
Sekwencją jest że zasada udev dla poszczególnego sprzętu USB powoduje
uruchomienie /lib/udev/usb_modeswitch, co z kolei wystartuje oba
/usr/sbin/usb_modeswitch_dispatcher i /usr/sbin/usb_modeswitch_status.
Pierwszy wykona aktualne przełączenie w tryb modemu i jeśli wymagany
załaduje sterownik potrzebny dla tego modemu. Drugi jest napisany
specjalnie dla Puppy i umieści komunikaty stanu na ekranie.
W niektórych przypadkach usb-modeswitch nie zostanie
wykonane, tak gdy
modem jest już włożony przy rozruchu. W tym przypadku, gdy PupDial jest
uruchomiony, on też uruchomi /usr/sbin/pupdial_init_hotpluggable, co
wykryje poprawny podłączony modem i uruchomi ponownie uevents kernela
jeśli potrzeba (co wykona usb-modeswitch).
|