|
Przed Tobą Linux Serial-HOWTO. Wszystko na temat konfiguracji modemów i terminali pod Linux-em. Trochę sztuczek na temat portów szeregowych i porad na temat najczęstszych kłopotów. Niniejszy dokument koncentruje się na sytemech pracujących na komputerach klasy x86, choć zawarte w nim informacje mogą być prawdziwe również dla innych architektur sprzętowych.
Prawa autorskie Linux Serial HOWTO należą do Grega Hankinsa. Dokumenty HOWTO mogą być powielane i redystybuowane w całości lub w części, na dowolnym nośniku fizycznym lub elektronicznym, tak długo, jak niniejsza notka o prawach autorskich jest umieszczana na wszystkich kopiach. Dystrybucja komercyjna jest dozwolona, a wręcz do niej zachęcamy. Autor chciałby być poinfirmowany o takim fakcie.
Wszelkie tłumaczenia, prace powstałe na bazie tego dokumentu lub prace zawierające fragmenty tego dokumentu muszą być objęte tymi samymi warunkami, co oryginał. To znaczy, że nie możesz na dokumenty powstałe z HOWTO nakładać dodatkowych ograniczeń na ich rozpowszechnianie. W pewnych warunkach możemy odstąpić od tej reguły; prosze skontaktować się w tym celu z koordynatorem HOWTO - adres można znaleźć dalej w dokumencie.
Chcemy aby ten dokument był rozpowszechniany na wszelkie możliwe sposoby, chcemy również zachować prawa autorskie do tego dokumentu i chcielibyśmy być informowani o wszelskich nowych planach redystrybucji dokumentów HOWTO.
Jeśli masz jakieś pytania, skontaktuj się z Gregiem Hankinsem,
koordynatorem projektu Linux HOWTO -
gregh@sunsite.unc.edu
tel. +1 404 853 9989.
Nowe wersje Serial HOWTO będą dostępne pod adresem
ftp://sunsite.unc.edu:/pub/Linux/docs/HOWTO/Serial-HOWTO
i na wszystich kopiach (mirrorach). Dokument jest dostępny również w innych
formatach, mozna je znaleźć w katalogu
other-formats
. Serial-HOWTO jest dostęne również pod
adresem
http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html
i co miesiąc będzie wysyłane na
comp.os.linux.answers
.
Najnowsze wersje tłumaczenia można jak zwykle znaleźć na stroanch
http://www.jtz.org.pl/
.
Prosze, przysyłajcie wszelkie uwagi, komentarze oraz dodatkowe
materiały. Zawsze jestem chętny usłyszeć co myślicie o HOWTO. Zawsze staram
się wprowadzać ulepszenia. Powiedzcie mi dokładnie czego znie zrozumieliście,
lub co mogłoby być napisane jaśniej. Możecie się ze mną skontakować pisząc na
adres
greg.hankins@cc.gatech.edu
. Na każdy list odpiszę, choć może mi
to zając tydzień albo więcej, w zależności jak jestem aktualnie
zajęty. Otrzymuje mnóstwo listów od root
-a i ze źle skonfigurowanych
komputerów. Wysyłajcie do mnie listy, ze sprawdzonych kont pocztowych. Jeśli
nie odpowiem w ciągu dwóch tygodni, napiszcie do mnie raz jeszcze.
Można mnie złapać pod adresem:
Greg Hankins
College of Computing
801 Atlantic Drive
Atlanta, GA 30332-0280
to pocztą slimaczą, lub
http://www.cc.gatech.edu/staff/h/Greg.Hankins/
.
Proszę, podawajcie wersje dokumentu, ten dokument nosi numer 1.10.
Podane tutaj przykłady lub odpowiedzi nie muszą być odpowiednie dla wszystkich komputerów.
Linux potrafi współpracować z następującymi urządzeniami szeregowymi.
Uwaga: ze względu na konflikt adresów nie możesz używać jednocześnie portu COM4 i karty video IBM8514.
Modemy PnP będą pracowały pod Linux-em. Jednakże odradzam ich użytkowanie, ponieważ są trudne we współżyciu. Jest kilka rzeczy, których możesz spróbować:
loadlin
.
http://www.redhat.com/linux-info/pnp
.
Zasadniczo Linux obsługuje dowolną kartę portów szeregowych, która wykorzystuje układy UART 8250, 16450, 16550, 16550A (lub zgodne) lub modemy wewnętrzne emulujące jeden z tych układów.
Specjalna uwaga na temat BB-1004 i BB-1008. Obie nie obsługują linii DCD i RI, i dlatego nie nadają się do obsługi modemów wejściowych. Zastosowane do innych celów będą się sprawować poprawnie.
info@comtrol.com
lub
http://www.comtrol.com
ftp://tsx-11.mit.edu/pub/linux/packages/comtrol
mhw@wittsend.atl.ga.us
sales@cyclades.com
or
http://www.cyclades.com
ftp://ftp.cyclades.com/pub/cyclades
w jądrze Linux-a.
pccom8@signum.se
ftp://ftp.signum.se/pub/pccom8
sales@dgii.com
lub
http://www.dgii.com
ftp://ftp.dgii.com/drivers/linux
w dystrybucji jądra
Linux-a od wersji 2.0.
si@wimpol.demon.co.uk
fray@krypton.mankato.msus.edu
zgłosił się
dobrowolnie udostępnić sterownik, jęsli będziesz go
potrzebować. Jednakże Mark nie zapenia żadnego wsparcia.
sales@equinox.com
lub
http://www.equinox.com
ftp://ftp.equinox.com/library/sst
spot@gtek.com
lub
http://www.gtek.com
ftp://ftp.gtek.com/pub
arobinso@nyx.net
lub
http://www.nyx.net/~arobinso
http://www.nyx.net/~arobinso
i w dystrybucji jądra
Linux-a od wersji 2.1.15.
info@maxpeed.com
lub
http://www.maxpeed.com
ftp://maxpeed.com/pub/ss
info@moxa.com.tw
lub
http://www.moxa.com.tw
ftp://ftp.moxa.com.tw/drivers/c218-320/linux
sales@sdlcomm.com
lub
http://www.sdlcomm.com
ftp://ftp.sdlcomm.com/pub/drivers
vpetree@infi.net
simonallen@cix.compulink.co.uk
ftp://sunsite.unc.edu/pub/Linux/kernel/patches/serial
sales@stallion.com
lub
http://www.stallion.com
ftp://ftp.stallion.com/drivers/ata5/Linux
i w
dystrybucji jądra Linux-a od wersji 1.3.27.Przegląd urządzeń Comtrol, Cyclades, Digi i Stallion można
znaleźć w numerze Czerwiec 1995 Linux Journal. Artykuł
jest dostępny pod adresem
http://www.ssc.com/lj/issue14
.
Modemy, które nazywają siebie ``Winmodems'', np. USR Sportster Winmodem i IBM Aptiva MVAVE, nie są obsługiwane przez Linux-a. Te modemy korzystają z prywatnych, niedostępnych rozwiązań technicznych i wymagają specjalnych sterowników. Unikaj modemów tego typu. Co więcej, z tych samych powodów, trzymaj się z daleka od modemów wymagajacych sterowników RPI Rockwella.
Każdy port I/O umożliwia wymianę danych pomiędzy komputerem i otoczeniem. Istnieje wiele rodzajów portów I/O, porty szeregowe, równoległe, sterowniki dysków, karty ethernetowe itp. My będziemy omawiać porty szeregowe, ponieważ modemy i terminale są urządzeniami korzystającymi z portów szeregowych. Każdy port szeregowy musi posiadać adres I/O i przerwanie (IRQ). Istnieją 4 porty szeregowe odpowiadające odpowiednio COM1-COM4:
ttyS0 (COM1) adres 0x3f8 IRQ 4
ttyS1 (COM2) adres 0x2f8 IRQ 3
ttyS2 (COM3) adres 0x3e8 IRQ 4
ttyS3 (COM4) adres 0x2e8 IRQ 3
Jeśli podczas startu Linux nie rozpozna żadnego portu
szeregowego upewnij się, że obsługa portów szeregowych jest
wkompilowana w jądro. W tym dokumencie
przyjeliśmy, że ttyS0
odnosi się do portu COM1,
ttyS1
do COM2, ttyS2
do COM3 i ttyS3
do
COM4. Zauważ, że domyślnie porty współdzielą przerwania
IRQ. Jednakże nie można korzystać ze wszystkich portów w konfiguracji
domyślnej, trzeba na nowo przydzielić przerwania. Informacje
na temat ustawiania IRQ znajdziesz w rozdziale
Czy mogę używać więcej niż dwóch urządzeń portów szeregowych?
W niektórych systemach tworzone są dodatkowe dwa pliki
urządzeń, /dev/modem
dla modemu i /dev/mouse
dla myszy. Oba są dowiązaniami symbolicznymi do właściwych
urządzeń w katalogu dev
, które podałeś podczas
Instalacji systemu (chyba, że posiadasz mysz sbus, wtedy
/dev/mouse
będzie wskazywać na urządzenie bus mouse).
Wiele dyskutowano na temat użyteczności /dev/mouse
i
/dev/modem
. Ja mocno odradzam korzystania z tych
dowiązań. W szczególności, jeśli planujesz korzystać ze
swojego modemu do dzwonienia do twojego komputera (dialin), a będziesz
korzystał z /dev/modem
, to możesz napotkać na problemy
związane z plikami blokad (lock files). Jeśli ten pomysł podoba Ci się,
korzystaj z niego, lecz upewnij się, że wspomniane dowiązania wskazują na
właściwe urządzenia. Jednakże jeśli usuniesz te dowiązania, wtedy
niektóre aplikacje będą wymagać zmianiy konfiguracji
(np. minicom
).
dev
.
/dev/ttyS0 major 4, minor 64 /dev/cua0 major 5, minor 64
/dev/ttyS1 major 4, minor 65 /dev/cua1 major 5, minor 65
/dev/ttyS2 major 4, minor 66 /dev/cua2 major 5, minor 66
/dev/ttyS3 major 4, minor 67 /dev/cua3 major 5, minor 67
Proszę zwróć uwagę, że wszystkie dystrybucje powinny same
utworzyć pokazane powyżej pliki urządzeń. Czy tak się stało możesz to sprawdzić
wydając polecenie:
linux% ls -l /dev/cua*
linux% ls -l /dev/ttyS*
/dev
. Jeśli nie znalazłeś pliku urządzenia, musisz go utworzyć za
pomocą polecenia mknod
.
Przykład: załóżmy, że potrzebujesz utworzyć urządzenie ttyS0
:
linux# mknod -m 666 /dev/cua0 c 5 64
linux# mknod -m 666 /dev/ttyS0 c 4 64
Możesz w tym celu wykorzystać skrypt MAKEDEV
, dostępny w
katalogu /dev
lub archiwach ftp. Znacznie upraszcza
tworzenie plików urządzeń. Na przykład jeśli chesz utworzyć
urządzenie ttyS0
wystarczy napisać:
linux# cd /dev
linux# ./MAKEDEV ttyS0
Skrypt zajmie się utowrzeniem urządzeń wyjściowych (cua) i wejściowych (ttyS).
Pliki urządzeń wykorzystywane przez karty wieloportowe zależą
od rodzaju karty. Szczegóły można znaleźć w
rc.serial
, który znajduje się w dystrybucji programu
setserial
. Jeśli starasz się uruchomić kartę
wieloportową bardzo polecam zaopatrzyć się w najnowszą
wersję programu setserial
. Prawdopododobnie będziesz
musiał własnoręcznie utworzyć pliki specjalne
urządzeń. Skorzystaj albo z programu mknod
albo skryptu
MAKEDEV
. Pliki urządzeń kart wieloportowych
charakteryzują się tym, że numer główny (major number) jest
równy 64 + numer portu karty. Jeśli chiałbyś utworzyć plik
urządzenia dla portu ttyS17
muszisz wydać polecenie:
linux# mknod -m 666 /dev/cua17 c 5 81
linux# mknod -m 666 /dev/ttyS17 c 4 81
Zauważ, że ``64 + 17 = 81''. Korzystając ze skryptu MAKEDEV
trzeba
napisać:
linux# cd /dev
linux# MAKEDEV ttyS17
Uwaga: dokumentacja SIIG dla IO1812 dotycząca portów COM5-COM8 zawiera błąd. Powinno być COM5=0x250, COM6=0x258, COM7=0x260 i COM8=0x268.
Uwaga: Rejestr stanu (status register) karty DIGI PC/8 znajduje się pod adresem 0x140.
Uwaga: Korzystając z karty AST Fourport może być potrzebne
umiesczenie w skrypcie rc.serial
parametru skip_test
.
Przeczytaj dokumentacje dostarczaną ze sterownikiem. Te karty korzystają ze specjalnych urządzeń, nie ze standardowych. Informacje ich dotyczące różnią się w zależności od posiadanego sprzętu.
getty
to program, który obsługuje proces wejścia do
systemu Unix. Będziesz musiał używać getty
jeśli chcesz
dzwonić do swojego Linux-a. Nie potrzebujesz getty
jeśli
zamierzasz jedynie dzwonić ze swojego Linux-a w świat. W
świecie Linux-a rozpowszechnione są trzy wersje tego programu:
getty_ps
, mgetty
i agetty
. Każdy z nich
posiada własną składnie i pramatery wywołania, upewnij się, że
korzystach z poprawnych dla wersji getty
, której używasz.
getty_ps
.
Większość dystrybucji instaluje pakiet getty_ps
. Zawiera on
dwa programy getty. getty
stosowany do konsoli
wirtualnych i terminali, oraz uugetty
wykorzystywany do
modemów. Skoncentruję się na getty_ps
, ponieważ korzystam
z tej właśnie wersji getty
.
mgetty
. mgetty
jest wersja getty
przeznaczoną do
modemów. Pozwala na logowanie się przez modem, dostarcza
obsługę FAXu i rozpoznaje połączenia PPP. Dokumentacja
mgetty
jest bardzo dobra i nie potrzebuje
uzupełnień. Znajdziesz w niej informacje na temat instalacji i
konfiguracji programu. Najnowsze informacje o pakiecie możesz
znaleźćpod adresem
http://www.leo.org/~doering/mgetty/
.
agetty
. agetty
to trzeci wariant getty
. Jest to prosta, w
pełni funkcjonalna implementacja getty
bardzo dobrze
nadająca się do obsługi wirtualnych konsol i teminali.
setserial
?
setserial
to program, który pozwala na sprawdzanie i
zmianę różnego rodzaju atrybutów portów szeregowych, adresów,
przerwań i innych parametrów. Aby dowiedzieć się, która wersja
jest zainstalowana na twoim komputerze należy uruchomić
program bez żadnych argumentów.
Kiedy twój Linux startuje, konfigurowane są tylko porty
ttyS{0-3}
, wykorzystane są standardowe ustawienia IRQ
równe 3 i 4. Dlatego jeśli posiadasz inne karty portów
szeregowych lub porty ttyS{0-3}
nie mają standardowych
ustawień przerwań IRQ, to aby zostały prawidłowo sonfigurowane
musisz skorzystać z programu setserial. Pełny spis
dostępnych opcji znajduje się na stronach podręcznika (man
setserial).
Po pierwsze upewnij się czy masz dobry kabel. Modem wymaga kabla prostego, bez żadnych krzyżowań przewodów. Każdy sklep komputerowy posiada w swej ofercie taki kabel. Pamiętaj aby miał odpowiednie wtyczki. Jeśli używasz gniazda DB25, to zawsze bedzie to męskie DB25. Nie pomyl go z gniazdem portu równoległego, którego gniazdo to damskie DB25. Podłącz modem do jednego z portów szeregowych. Jeśli potrzebujesz pomocy skorzystaj z dokumentacji modemu.
Do podłączenia modemu wewnętrznego nie potrzebujesz kabla modemowego. Modem wewnętrzny nie potrzebuje również portu szeregowego, posiada własny. Muszisz jedynie poprawnie skonfigurować przerwanie, oraz adresy portów We/Wy, tak aby nie było wykorzystywane przez inne urządzenia. Jeśli utknąłeś skorzystaj z dokumentacji modemu. Jeśli potrzebujesz rady na temat wyboru przerwania IRQ zobacz Czy mogę używać więcej niż 2 porty szeregowe?.
Na niektórych płytach głównych musisz wyłączyć port szeregowy, który ma zostać zastąpiony przez modem. Robi się to przełączając odpowiednnie zworki lub zmieniając ustawienia w BIOSie. Przeczytaj instrukcje do płyty głównej.
Z powodu błędu w karcie graficznej IBM8514, możesz napotkać na
kłopoty konfigurując twój modem wewnętrzny na porcie
ttyS3
. Jeśli linux nie znajdzie modemu na porcie
ttyS3
możesz wykorzystać setserial
, wtedy modem
będzie pracował prawidłowo. Modemy wewnętrzne skonfigurowane
na portach ttyS{0-2}
nie powinny mieć klopotów z wykrycem
ich przez system.
Zanim zaczniesz korzystać z bardziej skomplikowanych programów
komunikacyjnych, do testów skorzystaj z kermit-a lub innego
prostego programu (minicom?). Ostanią wersję kermita można
zawsze znaleźć pod adresem
ftp://sunsite.unc.edu:/pub/Linux/apps/comm
i na jego
kopiach. Powiedzmy, że twój modem jest przyłączony do portu
ttyS3
i potrafi obsłużyć prędkość 115200
bps. Powinieneś wtedy napisać:
linux# kermit
C-Kermit 6.0.192, 6 Sep 96, for Linux
Copyright (C) 1985, 1996,
Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help.
C-Kermit>set line /dev/ttyS3
C-Kermit>set carrier-watch off
C-Kermit>set speed 115200
/dev/ttyS3, 115200 bps
C-Kermit>c
Connecting to /dev/ttyS3, speed 115200.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
ATE1Q0V1 ; wpisz to i naciśnij Enter
OK ; modem powinien odpowiedzieć w ten
; sposób
Jeśli modem odpowie na polecenie AT
możesz założyć, że
twój modem po stronie Linux-a działa poprawnie. Spróbuj
połączyć się z innym modemem (np. numer 0202122 - nasza
kochana TPSA - przyp. tłumacza). Napisz
ATDT0202122,,
Jeśli twoja linia nie obsługuje wybierania tonowego zamiast
ATDT
napisz ATDP
. Jeśli nawiązałeś połączenie, to
znaczy, że twój modem działa.
Aby wróćic na konsole Kermita
trzymajac wciśniety Ctrl
wciśnij backslasz '\', zwolnij Ctrl i wciśnij C.
Ctrl-\-C (Back at linux) C-Kermit>quit linux#
To był prosty test przy wykorzystaniu prymitywnych, ręcznych metod wybierania numeru. Normalnie należy pozwolić Kermitowi na automatyczne wybranie numeru, korzystając z jego bazy numerów i zaawansowanych metod nawiązywania połaczeń. Np. korzystając z modemu USR Robotics należy zrobić tak:
linux# kermit
C-Kermit 6.0.192, 6 Sep 1997, for Linux
Copyright (C) 1985, 1996,
Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help
C-Kermit>set modem type usr ; wybuerz rodzaj modemu
C-Kermit>set line /dev/ttyS3 ; wybierz urządzenie
C-Kermit>set speed 115200 ; ustaw domyślną prędkość
C-Kermit>dial 7654321 ; wybierz numer
Number: 7654321
Device=/dev/ttyS3, modem=usr, speed=115200
Call completed.<BEEP>
Connecting to /dev/ttyS3, speed 115200
The escape character is Ctrl-\ (ASCII 28, FS).
Type the escape character followed by C to get back,
or followed by ? to see other options.
Welcome to ...
login:
Jeśli potrzebujesz wskazówek zobacz rozdział Programy komunikacyjne.
Kiedy dzwonisz wykorzystując swój modem, ustaw prędkość portu
szeregowego na największą jaka jest obsługiwana przez twój
komputer. Instalacje Linux-a z biblioteką libc
w wersji
5.x lub nowszej obsługują prdkości do 115200bps. libc
znajduje się zwykle w katalogu /lib
, zobacz jaką
wersję posiadasz. Jeśli twój Linux nie rozpoznaje prędkości
57600 lub 115200bps, musisz skorzystać z programu
setserial
aby ustawić port na większą prędkość. Jak to
zrobić jest opisane w rozdziale
Jak ustawić port szeregowy na większe predkości?. Następnie w
programi komunikacyjnym ustaw prędkość portu na 38400.
Jeśli będziesz korzystał z modemu tylko do dzwonienia, możesz
go skonigurować w niemal dowolny sposów. Jeśli jednak chcesz
go wykorzystywać jako modem wejściowy, musisz skonfigurowac
modem w taki sposób, aby wykorzystywał tę samą prędkość z jaką
zamierzasz uruchomić program getty
. Więc jeśli zamierzasz
uruchomić getty
z prędkościa 38400 bps. podczas
konfigiracji modemu ustaw prędkość na 38400. Ma to na celu
zpobiec nieporzumienim wynikłym ze złego dopasowania prędkości
między portem szeregowym, a modemem. Zasadniczo, ustawienia
fabryczne włączające korekcję błędów i sprzętowe sterowanie
przepływem danych są najlepszymi ustawieniami modemów
wyjściowch. Dokładne informacje o tych ustawieniach znajdziesz
w dokumentacji modemu.
Jeśli twój modem obsługuje sprzętowe sterowanie przepływem
danych (RTS/CTS), stnowczo polecam wykorzystanie tego. Jest to
szczególnie ważne w przypadku modemów posiadającą
kompresję. Wpierw musisz włączyć RTS/CTS na samym porcie
szeregowym. Najlepiej jest to zrobić w skryptach startowych
/etc/rc.d/rc.local
lub
/etc/rc.d/rc.serial
. Upewnij się ze te pliki są
uruchamiane z głównego skryptu rc.sysinit
. Dla
każdego portu, dla którego chcesz uruchomic CTR/CTS należy
wykonać polecenie:
stty crtscts < /dev/ttyS3
Musisz również włączyć RTS/CTS w modemie. Jak to zrobić znajdzesz w dokumentacji modemu, ponieważ różni się to między modelami. Pamiętaj o zapamiętaniu konfiguracji modemu (w jego pamięci stałej), oczywiście jeśli twoj modem to potrafi.
getty_ps
? Skonfiguruj modem w taki sposób, aby prawidłowo wybierał numery. Jeśli nie czytałeś rozdziału Jak mogę zadzwonić z mojego modemu? zrób to teraz! Podałem tam bardzo ważne informacje. Nie musisz czytać tego rozdziału, jeśli zamiesza jedynie dzwonic ze swojego modemu.
Aby mieć wyjście przez modem i jednocześnie obsługiwać
przychodzące połączenia, musisz skonfigurować modem w
specjalny sposób (znów za pomocą poleceń AT
.):
E1 wyświetlane wprowadzanych poleceń
Q0 wyświetlanie kodów rezultatów
V1 bądź bardziej rozgadany, podawaj więcej informacji
S0=0 nigdy nie odpowiadaj na połączenie (uugetty obsługuje
przychodzące połączenia, za pomocą opcji waitfor).
Jeśli nie ustawisz tych opcji, ciąg znaków inicjujący modem, może nie wykonać poprawnie swej pracy, niwecząc całą procedurę. Lecz o plikach konfiguracyjnych później.
&C1 DCD włączone tylko po nawiązaniu połączenia
&S0 DSR zawsze włączone
Przełączenie DTR resetuje modem (w zależności od producenta - RTFM).
Powyższe ustawienia mają wpływ na zachowanie modemu podczas nawiązywania i zakańczania połączenia.
Jeśli twój modem nie potrafi zapamiętać konfiguracji, możesz wcześniej opisane ustawienia zapamiętać w tzw. "INIT string". Zaraz o tym napiszemy. Niektóre modemy posiadają mikroprzełączniki służące do zmiany konfiguracji modemu (zmiany wartości rejestrów). Upewnij się że są poprawnie ustawione.
Zacząłem zbierać listę sprawdzonych konfiguracji, dla różnych
typów modemów. Jeśli masz ochotę przysłać mi swoją, proszę
bardzo. Jeśli chciałbyś otrzymać jedną z konfiguracji, po
prostu przyslij list. Posiadane przez mnie informacje są
dostępne pod adresem
ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs
.
Uwaga: aby zmusić mój Courier V.34 do poprawnego zerowania po
spadku DTR musiałem ustawić &D2
i S13=1
(ustawienie bitu 0 rejestra S13). Otrzymałem potwierdzenia, że
ten sposób działa również w przypadku USR Sportster V.34.
Uwaga: Niektóre modele Supra traktują DCD inaczej niż inne
modemy. Jeśli używasz Supry spróbuj ustawić &C0
, a
nie &C1
. Aby poprawnie obsługiwać DTR trzeba również
ustawić &D2
.
getty_ps
.
Pobież najnowszą wersję z
sunsite.unc.edu:/pub/Linux/system/serial
. Jeśli
planujesz korzystać z wysokich prędkości (57600 i 115200bps),
musisz zdobyć wersję 2.0.7j lub nowszą. Muszisz mieć również
libc 5.x lub nowszą.
getty_ps
jest domyślnie skonfigurowane zgodnie ze
standardem FSSTND (FileSystem
STaNDard). To znaczy, że programy binarne będą w
katalogu /sbin, a pliki konfiguracyjne będą się nazywały
/etc/conf.{uu}getty.ttyS
N. Pliki blokady (lock
files) będą umieszczane w katalogu /var/lock
. Upewnij
się, że katalog /var/lock
istnieje.
Jeśli nie chesz zgodności z FSSTND, programy binarne zostaną
umieszczone w /etc
, pliki konfiguracyjne zostaną
nazwane /etc/default/{uu}getty.ttyS
N, a pliki
blokady będą umieszczane w katalogu
/usr/spool/uucp
. Jeśli korzystasz z UUCP, zaleceamy
ten drugi sposób, ponieważ Taylor UUCP napotka na problemy,
jeśli przeniesiesz pliki blokady w miejsce, które nie bedzie
sprawdzane (przez uucp w poszukawaniu plików blokady).
W
celu rejestracji komunikatów getty_ps
korzysta z
syslogd
. Jeśli chesz skonfigurować syslogd
przeczytaj strony podręcznika dla syslogd(1)
i
syslog.conf(5)
. Komunikaty są rejestrowane z priorytetem
LOG_AUTH, błędy wykorzystują LOG_ERR, a informacje
odpluskwiające LOG_DEBUG. Jeśli nie chcesz korzystać z
syslogd
tylko chesz aby komunikaty były zapisywane do
pliku (domyślnie będzie to /var/adm/getty.log
) , to
musisz zmodyfikować plik tune.h
w zrodłach getty_ps
.
Zastanów się i zdecyduj się czy chcesz zachować zgodność ze
standardem FSSTND i czy chesz korzystać z syslogd
,
zmodyfikuj odpowiednio pliki Makefile
, config.h
i
tune.h
znajdujące się w katalogu źródłowym pakietu
getty_ps
. Następnie zainstaluj programy zgodnie z
instrukcjami.
Od tej chwili, wszystkie odwolania do getty
należy
traktować jako odwołania do getty_ps
. Natomiast
uugetty
będzie odnosiło się do uugetty
pochodzącego
z pakietu getty_ps
.
uugetty
. Dla przychodzących i wychodzących połączeń modemowych, chcemy
zastosować uugetty
. uugetty
sprawdza czy odpowiednie
pliki nie są zablokowane. Trzeba poprawić plik
/etc/gettydefs
, aby zawierał pozycje dotyczące modemu
(pamiętaj, że te pozycje wzajemnie na siebie wskazują (są od
siebie zależne), jednak nie mają zastosowania do połączeń z
ustaloną prędkością - między każdą pozycją konieczny jest
pusty wiersz):
# Modem entries
115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600
57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400
38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200
19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600
9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400
2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #115200
Jeśli posiadasz modem 9600 bps lub szybszy, z kompresją
danych, wtedy możesz zablokować prędkość portu szeregowego i
pozwolić aby modem sam wykonywał przejścia na inne prędkości
bps. W takim przypadku zamiast wypróbowywania poszczególnych
pozycji pliku /etc/gettydefs
, wystarczy aby była
tylko jedna pozycja opisujaca ustawienia modemu:
# 115200 fixed speed
F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #F115200
Jeśli tój modem obsługuje sprzętowe sterowanie RTC/CTS, możesz
do pliku /etc/gettydefs
dodac opcję CRTSCTS:
# 115200 fixed speed with hardware flow control
F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200
Jeśli chcesz możesz zmusic uugetty
do wyświetlania
ciekawych informacji w nagłówku (login banner). W dalszych
przykładach pokazuję jak wyświetlić nazwę systemu (komputera),
numer portu, prędkość bps. Możesz dodać własne informacje:
@B Aktualna (sprawdzona w momencie napotkania @B ) prędkość bps.
@D Aktualna data w formacie MM/DD/YY.
@L Linia szeregowa do któej przyłączone jest getty.
@S Nazwa systemu (komputera).
@T Aktualny czas, w formacie HH:MM:SS (24-godziny).
@U Liczba aktualnie przcujących użytkowników. Jest to liczba
pozycji w pliku /etc/utmp o niezerowym polu ut_name.
@V Warość stałej VERSION, zdefiniowanej w plkiku ustawień
standardowych.
Aby wyświetlić pojedynczy znak @ musisz napisac '\@\ lub '@@'.
Następnie upewnij się, że istnieją odpowiednie pliki urządzeń
wejściowych i wyjściowych, i że modem jest włączony. Jeśli
twoj modem jest podłączony do portu ttyS3
muszą istnieć
pliki /dev/cua3
i /dev/ttyS3
. Jeśli
odpowiendnie pliki urządzeń nie istnieją wróć do rozdziału
Tworzenie plików urządzeń w katalogu <tt>/dev</tt> i utwórz niezbędne pliki urządzeń. Jeśli
chcesz mieć możliwość dzwonienia, podczas gdy uugetty
czeka na nadejscie połączeń z zewnątrz, skorzystaj z urządzeń
/dev/cua
zamiast /dev/ttyS
.
Po zakończeniu edycji /etc/gettydefs
możesz
sprawdzić, czy składnia pliku jest poprawna wydając polecenie:
linux# getty -c /etc/gettydefs
uugetty
. Istniej mnóstwo parametrów, które możesz modyfikować
oddzielnie dla każdego posiadanego portu. Przechowywane są w
odzielnych plikach, każdy port może miećswój plik. Program
uugetty zawsze wpierw sprawdza zawartość pliku
/etc/conf.uugetty
zawierajacego wspólne parametry dla
wszystkich portów, a dopiero później wczytuje z
/etc/conf.uugetty.ttyS
N konfiguracje konkretnego
portu. Przykładowe pliki konfiguracyjne można znaleźć w
zródłach pakietu. Zwykle są w każdej dystrybucji Linux-a. Nie
przedstawiamy ich tutaj ze wzgledu na ich objętość. Jeśli
używasz starszych wersji getty_ps
(tzn. wcześniejszych od
2.0.7e) lub nie korzystasz ze schematu FSSTND, domyślnym
plikiem konfiguracyjnym będzie
/etc/default/uugetty.ttyS
N. Mój plik
/etc/conf.uugetty.ttyS3
wygląda tak:
# przykładowy plik konfiguracyjny modemu standardu Hayes
# umożliwiający przyjmowanie połączeń z zewnątrz
#
# alternatywny plik blokaty, który należy sprawdzać. Jeśli istnieje,
# wtedy uugetty jest uruchamiane ponownie, a więc modem jest
# równiez powtórnie inicjowany
ALTLOCK=cua3
ALTLINE=cua3
# uzywana linia
INITLINE=cua3
# czas po jakim przerywamy, jeśli brak reakcji użytkownika
TIMEOUT=60
# Ciag znaków zaierające polecenia inicjujące modem
# format: (oczekiwane) (wysyłane) ... (sekwencja)
INIT="" AT\r OK\r\n
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
# istawiamy opóżnienie przez pokazaniem nagłówka Loginu.
DELAY=1
#DEBUG=010
Aby uugettty
było uruchomione i nasłuchiwało na porcie,
musisz do pliku /etc/initab
dopisać wiersz
(wstawiając odpowiednie informacje typu port,prędkość,typ terminala):
S3:456:respawn:/sbin/uugetty ttyS3 F38400 vt100
Zrestartuj proces init
:
linux# init q
Parametr podany w pliku /etc/inittab
określający
predksość w bps powinien wskazywać możliwie jak największą
prędkość.
Teraz Linux będzie oczekiwał na połączenia przychodzące przez port szeregowy. Zadzwoń z innego komputera i wejdź do swojego systemu.
uugetty
posiada mnóstwo opcji. Zobacz stronę podręcznika
dla getty(1m)
. Prócz innych ciekawych cech dostępne są
funkcje ringback i udostępnianie modemu w zależnośći od pory
dnia/nocy. RTFM :-).
Instrukcje zawarte w tym rozdziale przedstawiają w jaki sposób przyłączyc do portu szeregoweg onaszego Linux-a terminal lub inny komputer.
Upewnij się, że posiadasz dobry kabel. Kabel bezmodemowy (null modem cable) kupiony w sklepie komputerowym będzie dobry. Tylko to musi być kabel bezmodemowy!. Wiele sklepów nazywa ten kabel kablem do drukarki szeregowej. Pamiętaj aby podłączyć modem do portu szeregowego (męski DB25 lub DB9), a nie równoległego.
Gniazdo DB25 potrzebuje co najmniej kabla o takich połączeniach:
PC male DB25 Terminal DB25 TxD Transmit Data 2 --> 3 RxD Receive Data RxD Receive Data 3 <-- 2 TxD Transmit Data SG Signal Ground 7 --- 7 SG Signal Ground
Jeśli chesz korzystać ze sprzętowego uzgadniania prędkości, musisz mieć pełny kabel bezmodemowy:
PC male DB25 Terminal DB25 TxD Transmit Data 2 --> 3 RxD Receive Data RxD Receive Data 3 <-- 2 TxD Transmit Data RTS Request To Send 4 --> 5 CTS Clear To Send CTS Clear To Send 5 <-- 4 RTS Request To Send DSR Data Set Ready 6 | DCD Carrier Detect 8 <-- 20 DTR Data Terminal Ready SG Signal Ground 7 --- 7 SG Signal Ground 6 DSR Data Set Ready | DTR Data Terminal Ready 20 --> 8 DCD Carrier Detect
Jeśli masz gniazdo DB9 spróbuj takich połączeń:
PC DB9 Terminal DB25 RxD Receive Data 2 <-- 2 TxD Transmit Data TxD Transmit Data 3 --> 3 RxD Receive Data SG Signal Ground 5 --- 7 SG Signal Ground
I na koniec pełny kabel DB9-DB25 wygląda tak:
PC DB9 Terminal DB25 RxD Receive Data 2 <-- 2 TxD Transmit Data TxD Transmit Data 3 --> 3 RxD Receive Data 6 DSR Data Set Ready | DTR Data Terminal Ready 4 --> 8 DCD Carrier Detect GND Signal Ground 5 --- 7 GND Signal Ground DCD Carrier Detect 1 | DSR Data Set Ready 6 <-- 20 DTR Data Terminal Ready RTS Request To Send 7 --> 5 CTS Clear To Send CTS Clear To Send 8 <-- 4 RTS Request To Send (RI Ring Indicator 9 not needed)(Tak, piny 2 i 3 w złączkach DB9 i DB25naprawdę mają przeciwne znaczenie).
Jeśli nie używasz pełnego kabla bezmodemowego, możesz być zmuszony do zrobienia następującej sztuczki: po stronie komputera połącz ze sobą RTS i CTS, oraz DSR,DCD i DTR. W ten sposób jeśli komputer zażyczy sobie sygnału uzgadniania, otrzyma go, od samego siebie.
Teraz, kiedu masz już dobry kabel podłącz terminal do komputera. Jeśli możesz powiedz terminalowi aby ignorował sygnały sterujące modeme. Spróbuj ustawić następujące parametry terminala: prędkosć 9600 bps, 8bitów danych, 1 bit stopu, brak bitu parzystości.
getty
. Zainstaluj getty_ps
zgodnie z instrukcjami zawartymi w
rozdzaiale 7.2. Dodaj do pliku /etc/gettydefs
pozycję
opisującą twój terminal:
# 38400 bps Dumb Terminal entry
DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400
# 19200 bps Dumb Terminal entry
DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200
# 9600 bps Dumb Terminal entry
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
Jeśli chesz możesz w zachęcie do sysytemu wyświetlać różne interesujące informacje. W moich przykładach wyświetlana jest nazwa systemu i nazwa linii. Możesz dodać inne rzeczy:
@B Aktualna (sprawdzona w momencie napotkania @B ) prędkość bps.
@D Aktualna data w formacie MM/DD/YY.
@L Linia szeregowa do któej przyłączone jest getty.
@S Nazwa systemu (komputera).
@T Aktualny czas, w formacie HH:MM:SS (24-godziny).
@U Liczba aktualnie przcujących użytkowników. Jest to liczba
pozycji w pliku /etc/utmp o niezerowym polu ut_name.
@V Warość stałej VERSION, zdefiniowanej w plkiku ustawień
standardowych.
Aby wyświetlić pojedynczy znak @ musisz napisac '\@\ lub '@@'.
Po zmodyfikowaniu /etc/gettydef
możesz się upewnić, że
składnia pliku jest poprawna wydając polecenieL
linux# getty -c /etc/gettydefs
Każdemu z istniejących portów szeregowych można przydzielić
mnóstwo parametrów. Umieszcza się je w odzielnych plikach, po
jednym dla każdego z portów. Każdy proces uugetty
będzie korzystał z parametrów zawartych w pliku
/etc/conf/uugetty
, a z
/etc/conf.uugetty.ttyS
N będzie korzystał jedynie
proces obsługujący port ttySN. Przykładowe pliki z
opcjami można znaleźć w źródłach pakietu getty_ps
, który
jest dostarczany niemal z każdą dystrybucją. Aby aoszczędzić
miejsca nie prezentujemy ich tutaj. Pmiętaj, że jeśli
korzystasz z getty
w wersji starszej niż 2.0.7e, lub nie
stosujesz się do zasad FSSTND, to domyślny plik konfiguracyjny
będzie nosił nazwę /etc/default/conf.uugetty
. Mój
plik /etc/conf.uugetty.ttyS3
wygląda następująco:
# sample uugetty configuration file for a Hayes compatible modem to allow
# incoming modem connections
#
# alternate lock file to check... if this lock file exists, then uugetty is
# restarted so that the modem is re-initialized
ALTLOCK=cua3
ALTLINE=cua3
# linia, którą należy zainicjować
INITLINE=cua3
# timeout po jakim nalezy się rozłaczyć jeśli nie ma ruchu
TIMEOUT=60
# ciąg znaków konfigurujący modem
# format: <oczewiname> <dowyslania> ... (sekwencja pogawedki)
INIT="" AT\r OK\r\n
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
#niniejszy wiersz wprowadza opóźnienie przed wysłaniem
#informacji (login banner)
DELAY=1
#DEBUG=010
Aby uruchomić getty
na porcie szeregowym wprowadż
odpowiednie zmiany do pliku /etc/inittab
(podmieniając odpowiednio informacje, tak aby pasowały do
twojego systemu):
S1:456:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F115200 vt100
Zrestartuj init
:
linux# init q
W tym momencie powinieneś zobaczyć zachętę wejścia do systemu. Być może musisz wcisnąć wpierw kilkakrotnie <return>, aby zwrócić na siebie uwagę terminala.
Wielu ludzi konfiguruje swoje komputery PC do pracy jako
terminal przyłączony do serwera z Linux-em. Stare komputery 8088
lub 286 są do tego celu doskonałe. Wszystko co potrzebujesz to
dyskietka startowa z DOSem i program komunikacyjny emulujący
terminal. Do tego celu bardzo dobrze nadaje się
kermit
. Skompilowane wersje kermita
niemal dla
każdego systemu operacyjnego można znaleźć pod adresem
http://www.columbia.edu:/kermit
. Do tego celu
nadają się również takie dosowe programy jak telix
czy
procomm
. Pamiętaj aby prawidłowo skonfigurować program
komunikacyjny, wprowadź poprawny numer portu.
Nie musisz czytać tego rozdziału jeśli nie chcesz używać więcej niż 2. portów szeregowych (pod warunkiem, że nie masz karty wieloportowej).
Jeśli masz jeszcze jakiś wolny port szeregowy, to odpowiedź brzmi: tak, możesz go wykorzystać.
Liczba wykorzystanych portów szeregowych jest ograniczona liczbą dostępnych przerwań IRQ i adresów portów We/Wy.Jest o ograniczenie szyny komputera PC, nie Linux-a. Każde urządzenie szeregowe musi mieć przydzielone własne przerwanie IRQ i adres portu. Urządzeniem szeregowym może być port szeregowy, wewnętrzny modem lub karta wieloportowa.
Wieloportowe karty portów szeregowych są projektowane w specjalny sposób, który umożliwia posiadanie wielu portów szeregowych, które współdzielą jedno przerwanie IRQ. Linux pobiera z nich dane wykorzystując do tego rózne adresy dla każdego z portów na karcie.
Twój komputer standardowo ma przerwanie IRQ=4 przydzielone
portom ttyS0
, ttyS2
i IRQ=3 do portów ttyS1
,
ttyS3
. Aby skorzystać z więcej niż jednego urządzenia
szeregowego będziesz musiał dla niego przeznaczyć oddzielne
przerwanie IRQ. Dobrym pomysłem jest przydzielenie przerwania
wykorzystywanego przez port równoległy. Twój PC jest zwykle
konfigurowany w ten sposób, że portom równoległym przydzielane
są przerwania 5 i 7. Bardzo rzadko używa się dwóch portów
równoległych. Co więcej możesz przydzielić przerwanie poru
rónoległedo do portu szeregowego i nadal korzystać z portu
równoległego. Zmiany przerwań IRQ i innych parametrów można
wykonać za pomocą programu setserial
. Czasami możesz być
zmuszony do zmiany ustawień mikroprzęłączników, zobacz w
dokumentacji karty.
Będziesz musiał tak to wszystko skonfigurować, aby każde z
urządzeń szeregowych miało jedno i tylko jedno
przerwanie. Poniżej moja konfiguracja - umieszczona w pliku
/etc/rc.d/rc.local
:
/etc/setserial /dev/cua0 irq 3 # myszka
/etc/setserial /dev/cua1 irq 4 # terminal Wyse
/etc/setserial /dev/cua2 irq 5 # Zoom modem
/etc/setserial /dev/cua3 irq 9 # USR modem
Standardowe przydziały IRQ:
IRQ 0 Timer channel 0 IRQ 1 Keyboard IRQ 2 Cascade for controller 2 IRQ 3 Serial port 2 IRQ 4 Serial port 1 IRQ 5 Parallel port 2 IRQ 6 Floppy diskette IRQ 7 Parallel port 1 IRQ 8 Real-time clock IRQ 9 Redirected to IRQ2 IRQ 10 not assigned IRQ 11 not assigned IRQ 12 not assigned IRQ 13 Math coprocessor IRQ 14 Hard disk controller 1 IRQ 15 Hard disk controller 2
Nie ma Najlepszego wyboru przerwań IRQ. Po prostu upewnij się, że nie jest wykorzystywane przez kilka urządzeń jednocześnie. Dobrym wyborem jest jedno z 2, 3, 4, 5 i 7. ``not assigned'' (nie przydzielone) oznacza, że aktualnie żadne urządzenie go nie używa. Pamiętaj, że IRQ 2 to to samo co IRQ 9. Możesz je nazwyac jak chcesz, sterownik portów szeregowych jest bardzo wyrozumiały. Jeśli posiadasz kartę z 16-to bitową szyną, możesz wtedy dodatkowo korzystać z przerwań 10,11,12 i 15.
Upewnij się, że nie korzystasz z przerwańIRQ 0, 1, 6, 8, 13 lub
14. Są wykorzystywane przez płytę główną. Bedzie bardzo
nieszczęśliwa jeśli będziesz próbował zabrać jej
przerwanie. Jak już wszystko zrobisz, sprawdź ponownie, zobacz
/proc/interrupts
i upewnij się, że nie ma konfliktów.
Następnie musisz ustawić adres portu. Sprawdź podręcznik do karty, gdzie są opisane ustawienia mikroprzełączników. Podobnie, jak w przypadku przerwań, jeden adres może być wykorzystywany tylko przez jedno urządzenie. Porty szeregowe są zwykle skonfigurowane dla następujących adresów:
ttyS0 address 0x3f8
ttyS1 address 0x2f8
ttyS2 address 0x3e8
ttyS3 address 0x2e8
Wybierz adresy dla każdegu urządzenia szeregowego, następnie
odpowiednio ustaw mikroprzełączniki. Ja mam swój modem na
porcie ttyS3
, mysz na ttyS0
i terminal na ttyS2
.
Kiedy zrestartujesz system, Linux powinien zobaczyć porty
szeregowe pod adresami, które ustawiłeś. IRQ raportowane
podczas startu mogą nie odpowiadać tym ustawionym przez
mikroprzełączniki na karcie. Nie martw się tym. Linux podczas
startu nie wykonuje rozpoznania przerwań IRQ, ponieważ jest to
trudne i może być mylne. Aby powiedzić Linux-owi, które
przerwanie jest używane przez dany port trzeba skorzystać z
programu setserial
.
Ta część powinna pomóc w doborze prędkości z jaką modem
komunikuje się z programem lub getty
.
setserial
i ustaw flagę
spd_hi
, aby skonfigurować port na prędkosć 57600 bps (4 *
14400 = 57600).
Dla modemów 28800 (V.FC lub V.34) ustaw flagę spd_vhi
(4
* 28800 = 115200).
Następnie pamietaj aby w programie komunikacyjnym (lub pliku
inittab
) wybrać prędkosć portu 38400. Upewnij się, że
masz układ 16550A UART.
Jeśli używasz biblioteki libc w wersji 5.x lub nowszej, to
definiowane są jescze prędkości 57600 i 115200. libc
znajduje się w katalogu /lib
, zajżyj tam i zobacz,
której wersji używasz. Jeśli programy, których używasz zostały
skomplilowane dla tej wersji biblioteki, możesz używać tych
prędkosci zamiast posługiwać się programem
setserial
. Ponieważ obecnie jest dostępnych wiele
dystrybucji Linux-a, najlepiej próbować korzystać z definicji
tych wyższych prędkości, jeśli posiada się nową dystrybucje Linux-a.
Przetestuj swoje ustawienia uruchamiając setserial
z
wiersza komend i jeśli wszystko pracuje poprawnie umieść
odpowiednie polecenia w pliku
/etc/rc.d/rc.serial
lub w
/etc/rc.d/rc.local
, wtedy będą wykonywane przy
starcie systemu. Ja ustawiam prędkość 115200 portu ttyS3
poleceniem:
/sbin/setserial /dev/cua3 spd_vhi
Upewnij się, że korzystasz z odpowiedniej ścieżki dostępu do programu setserial i poprawnych nazw urządzeń. Możesz sprawdzić aktualne ustawienia portu szeregowego wydając polecenie
setserial -a /dev/ttyS3
Jak już wszystko zacznie działać, możesz przyjżeć się tym bardziej zaawansowanym programom. Jeśli nie ma ich w twojej dystrybucji, wszystkie są dostępne w standardowych archiwach FTP.
ecu
- program komunikacyjnyminicom
- program komunikacyjny zbliżony do telix
aprocomm
- program komunikacyjny z transmisją zmodemseyon
- program komunikacyjny pracujący w
środowisku Xxc
- pakiet komunikacyjny xcomm
term
i
SLiRP
. Umożliwiają posiadaczom zwykłych kont korzystanie
z aplikacji wymagających protokołu TCP/IP.
screen
jest kolejnym programem umożliwiającym
prowadzenie wielu sesji na jadnym połączeniu. Zachowuje
się podobnie do wirtualnych konsoli.
callback
to program, który umożliwia oddzwanianie.
mgetty+fax
obsługuje FAXy i stanowi alternatywę dla
getty
.
ZyXEL
to program sterujący pracą modemów ZyXEL
U-1496. Obsługuje połączenia przychodzące i wychodzące,
zwiekszające bezpieczeństwo połączenia z oddzwanianiem,
obsługę FAX-ów i głosowych skrzynek pocztowych.
ftp://sunsite.unc.edu/pub/Linux/system/network/serial
.
ftp://sunsite.unc.edu/pub/Linux/system/serial
lub
ftp://sunsite.unc.edu/pub/Linux/apps/comm
lub na
jednej z wielu kopii sunsite-a. Są to katalogi, w których
przechowuje się oprogramowanie dla portów szeregowych.
Kilka sztuczek, które mogą Ci się przydać ...
Kermit
i zmodem. Abu korzystać z protokołu zmodem w programie kermit
,
dodaj do pliku .kermrc
następujace dane:
define rz !rz < /dev/cua3 > /dev/cua3
define sz !sz \%0 > /dev/cua3 < /dev/cua3
Pamiętaj o podaniu prawidłowego portu, tego, do którego
przyłączone jest modem. Nastepnie w wierszu zachęty programu
kermit
po prostu napisz rz
lub sz
<filename>
.
Aby automatycznie ustawiac typ terminala dla wszystkich sesji
prowadzonych przez daną linie, dodaj do pliku
/etc/inittab
odpowiednią informację. Gdybym miał
terminala vt100
przyłączony do portu ttyS1
dodałbym
opcję wt100 do wiersza opisującego tę linię:
S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100
Możesz również korzystać z programu tset
, który
potrafi określić rodzaj terminala i nie jest zależny od
żadnych ustawień domyślnych.
ls
przy połączeniach przez porty szeregowe. Jeśli użycie kolorów ls
bruździ w ustawieniach terminala
trzeba to wyłączyć. ls --color
i ls --colour
wykorzystuje kolory. Niektóre dystrybucje korzystają domyślnie
z "kolorowego" ls
. Sprawdz /etc/profile
i
/etc/csh.cshrc
czy nie znajdziesz tam aliasów dla
ls
. Możesz również sam zrobić alias ls
na ls
--no-color
, jeśli nie chcesz zmieniać domyślnej konfiguracji
systemu.
Istnieje program o nazwie vtprint
, który potrafi to
zrobić.
ftp://ftp.sdsu.edu/pub/vtprint
lub
http://www.sdsu.edu/~garrett
.
Inny program, który to umożliwia nosi nazwę
xprt
.
ftp://sunsite.unc.edu/pub/Linux/system/printing
.
Tak. Aby Linux mógł rozpoznać i skonfigurować urządzenie
szeregowe dodaj do pliku startowego
(/etc/rc.d/rc.local
lub
/etc/rc.d/rc.serial
) następujące polecenie:
/sbin/setserial /dev/cuaN auto_irq skip_test autoconfig
Zrób to dla każdego portu, który chcesz
skonfigurować. Pamiętaj aby podać nazwę pliku urządzenia,
które rzeczywiście istnieje w twoim komputerze.
Informacje o adesach portów i przerwaniach dla kart
wieloportowych znajdziesz w pliku rc.serial
w pakiecie
setserial
. Zawiera mnóstwo szczegółów na temat kart
wieloportowych, włączając adresy portów i nazwy urządzeń.
W numerze 36 znajdzesz artykuł Linux Journal,
http://www.ssc.com/lj/issue36/index.html
wyjaśniający w jaki sposób korzystać z konsoli przez port
szeregowy. Niestety listy wysyłane do autora powracają. Mam
nadzieje, że wkrótce artykuł pojawi się w serwisie Linux
Journal pod podanym wcześniej adresem.
Jeśli w systemach z dyskami (E)IDE zauwazysz niskią szybkość
transmisji przez porty szeregowe i bledy (overruns) portu
szeregowego skorzystaj z programu hdparm
. Jest to
narzędzie, które umożliwia modyfikacje parametrów urządzeń
(E)IDE, włączając odblokowywanie innych przerwań w czasie
trwania przerwani IRQ dysku. Zwiększy to czułość systemu i
ułatwi mu szybszą reakcję na wydarzenia eliminując błędy
występujące na porcie szeregowym (overruns). Pamiętaj aby
bardzo dokładnie przeczytać dokumentacje programu ponieważ
niektóre sterowniki/dyski nie lubią takich ustawień i mogą
zniszczyć system plików znajdujący sie na dysku.
Zwróć również uwagę na narzędzie o nazwie irqtune
umożliwiające zmianę prirytetów przerwań IRQ poszczególnych
urządzeń, na przykład portu szeregowego, na którym pracuje
Twój modem. Może to z zwiększyć szybkość przesyłania
informacji przez port szeregowy twojego komputera. Dokumnet
FAQ dotyczący irqtune
jest dostępny pod adresem
http://www.best.com/~cae/irqtune
.
Nie musisz czytać tego rozdziału, jego celem jest wprowadzenie czytelnika w świat telekomunikacji i wnętrze UNIXa.
Plik blokady to zwykły plik, którego istnienie po prostu
oznacza, że dane urządzenie jest w użyciu. Przechowywane są w
katalogu /usr/spool/uucp
lub
/var/lock
. Pliki blokady pod Linux-em noszą nazwę
LCK..
name. name
oznacza nazwę urządzenia lub
nazwą komputera w formie UUCP. Pewne procesy tworzą pliki
blokady aby mieć wyłączny dostęp do urządzeń. Np. jeśli
będziesz dwonił swoim modemem pojawi się plik blokady mówiący
innym procesom, że ktoś już używa tego urządzenia. Pliki
blokady zwierają zwykle PID procesu zajmującego
zasób. Większość programów odczytuje pliki blokady i sprawdza
czy proces o podanym w tym pliku identyfikatorze PID nadal
istnieje. Jeśli sprawdzenie wykaże, że taki proces istnieje,
czyli plik blokady jest ważny, to proces który sprawdzał plik
blokady powinien zakończyć działanie.
Jeśli taki proces już nie istnieje, niektóre programy usuwają
przeterminowany plik blokady i korzystają z urządzenia zakładając
nowy własny plik blokady. Inne programy po prostu kończą
działanie informując Cię, że urządzenie jest w użyciu.
``baud'' i ``bps'' są prawdopodobnie najczęściej niepoprawnie używanymi terminami w branży komputerowo/telekomunikacyjnej. Wiele osób używa tych terminów zamiennie, podczas gdy każdy z nich oznacza coś innego!
Prędkość modulacji (baud rate) jest miarą ile razy na sekundę
zmienia się sygnał wysyłany przez modem
(mo
dulator-dem
odulator). Spotykane zwykle prędkości
wynoszą 50, 75, 110, 300, 600, 1200 i 2400. Większość szybkich
modemów działa z prędkością 2400. Ze względu na ograniczenia
linii telefonicznych ciężko jest uzyskać prędkości większe niż
2400 i działają tylko w specyfcznych warunkach. Nazwa ``baud''
pochodzi od nazwiska Emila Baudot, wynalazcy asynchronicznego
telegrafu.
Prędkość bps jest miarą przesyłane jinformacji w jednostce czasu (bity na sekunde). Standardowe prędkości bps wynoszą 50, 75, 110, 300, 1200, 2400, 9600, ... 115200. Modemy z kompresją V42bis (kompresja 4:1) posiadają teoretyczną prędkość do 115200 bps. O tym zwykle myslą ludzie, kiedy używają mylnie pojęcia ``baud''.
Skoro szybkie modemy dzialają z prędkościs 2400 bodów, w jaki sposów przesyłają informacje z prędkościa 14400 bps? Modemy uzyskują zależność bps > bod-y dzięki kodowaniu w jednym bodzie kilku bitów. Jeśli 2 lub więcej bitów jest zakodowanych w jednym bodzie, prędkość bps przekracza liczbę bodów na sekunde. Jeśli twój modem łączy się z prędkością 14400 to znaczy, że przesyła 6 bitów w jednym bodzie.
Jak powstało całe to zamieszanie? Dawniej, kiedy dzisiejsze przestarzałe modemy były jednymi z najszybszych, prędkośc bps była zwykle równa ilości bodów na sekunde. Jeden bod zawieral jeden bit. Ludzie używali tych nazw wymiennie, oba pojęcia miały te ame wartości. Np. modem o prędkości 300 bps wysyłał 300 bodów na sekunde. Wszystko się zmieniło, kiedy pokazały się szybsze modemy i prędkość przesyłanych bitów przekroczyła prędkość wysylanych bodów.
UART ((Universal Asyncronous Receiver Transmitter) są układami znajdującymi się na karcie portów szeregowych. Ich zadaniem jest zamiana danych na bity, przesyłanie bitów przez linię szeregową i odbudowa danych na podstawie otrzymanych bitów. Układy UART operują na informacji podzielonej na bajty, który może być również reprezentacją znaku ASCII.
Powiedzmy, ze posiadasz terminal przyłączony do twojego PC. Kiedy wprowadzasz znak, terminal przekazuje go do nadajnika (również pewnego rodzaju układu UART). Nadajnik przesyła ten bajt przez linię szeregową, bit po bicie z określoną prędkościa. Po stronie PC, odbierający układ UART pobiera kolejne bity i buduje z nich bajty, które wstawia kolejno do bufora.
Istnieją dwa różne rodzaje układów UART. Powszechnie znane głupe 8250 i 16450, oraz zawierające kolejkę FIFO, sprytniejsze 16550A. Aby zrozumieć róznicę przestudiujmy co się dzieje, kiedy układ UART wysyła lyb otrzymuje bajt informacji.
Układ UART sam z siebie nie potrafi nic zrobić. Tylko wysyła i odbiera bity. Za akżdym razem, kiedy jeden bajt został wysłany lub odebrany CPU otrzymuje sygnał przerwania od urządzenia szeregowego. Wtedy procesor przenosi otrzymany bajt z bufora układu UART gdzieś do pamięci, lub przekazuje układowi UART do wysłania kolejny bajt. Układy 8250 i 16450 posiadają bufor o rozmiarze jednego bajtu. To oznacza, że za każdym razem, kiedy jeden bajt jest wysłany lub odebrany procesor otrzymuje sysgnał przerwania. Przy małych prędkościach wszystko jest w porządku. Lecz przy wyższych prędkościach, procesor jest tak zajęty obsługą układu UART, że nie ma czasu na inne zadania. W niektórych przypadkach procesor nie nadąża z samą obsługą układu UART i bajt zawarty w buforze ukladu UART jest nadpisywany (niszczony) ponieważ został tam umieszczony następny bajt, zanim poprzedni został przeniesiony w bezpieczne miejsce.
To jest sytuacja, w której przydaje się układ 16550A. Ten układ posiada bufor FIFO o rozmiarze 16 bajtów. To znaczy, że może wysłać lub odebrać 16 bajtów, zanim jest zmuszony wysłać do procesora sygnał przerwania. Poza tym prócz tego ,ze sam układ może poczekać, to jeszcze procesor może przenieść za jednym razem wszystkie 16 bajtów. Choć poziom generowania przerwań rzadko jest równy 16, jest to nadal ogromna przewaga nad innymi układami UART, posiadajacymi 1-no bajtowy bufor. Procesor otrzymuje mnej przerwań i ma czas na obsługę innych zadań. Dane nie są gubione i wszyscy są szczęśliwi. (Istnieją jeszcze układy 16550, lecz są traktowane tak, jak 16450 ze względu na blędy jakie zawierają).
Zasadniczo układy 8250 i 16450 powinny się sprawować poprawnie do prędkości 38400 bps. Przy wyższych prędkościach możesz mieć okazję zobserwować utratę danych i zmiejszenie czasu odpowiedzi przy pracy zdalnej. Inne systemy operacyjne (nie sprzeczajmy się co to jest sytem operacyjny), jak DOS nie są wielozadaniowe więc mogą sobie lepiej radzić z układami 8250 lub 16450. Dlatego niektórzy nie widzą utraty danych, zanim nie przesiądą się na Linux-a.
Inteligentne karty wieloportowe nie posiadają układów UART, lecz układy DSP, które wykonują dodatkowe buforowanie i sterowanie jescze bardziej odciążając procesor. Np Cyclades Cyclom i Stallion EasyIO korzystają z układu Cirrus Logic CD-1400 RISC.
Pamiętaj, że głupie układy UART nie są złe. Nie są wystarczająco dobre do dużych prędkości. Nie powinieneś mieć żadnych kłopotów podłączająć mysz lub terminal do portu pracującego na takim układzie. Lecz w przypadku modemów o wysokiej prędkości 16550A jest koniecznością.
Karty z układami 16550 możesz kupić niewiele drożej, zapytaj się swego sprzedawcy jakiego rodzaju układy znajdują się na karcie. Lub jeśli chcesz unowocześnić swoją kartę wystarczy nabyć układy 16550A i włożyć w miejsce starych 16450. Mają zgodny rozkład nóżek. Część kart ma montowane układy 16450 na specjalnych podstawkach, jeśli nie możesz sprzedać starą kartę i kupić nową. Prawdopodobnie zaoszczędzisz sobie w ten sposów bielu kłopotów. Ich cena nie powinna przekroczyć US$ 50.
/dev/cua
N itt>/dev/ttySN devices? Różnica polega na sposobie otwierania tych
urządzeń. Urządzenia wejściowe /dev/ttyS
N są
otwierane w trybie blokowania aż do sygnału CD (ktoś się
właśnie połączył). Więc jeśli ktoś chce korzystać z urządzenia
/dev/cua
N nie ma konfliktu z programem
nasłuchującym urządzenie /dev/ttyS
N.
To rozróżnienie jest potrzebne aby umożliwić przez ten sam
modem połączenia przychodzace (ttySN
) i wychodzące (cuaN
).
Upewnij się, że stosujesz odpowiednia składnie w pliku
/etc/inittab
zgodną z twoją wersja programu
init
. Różne wersje tego programu obecne w świecie Linux-a
mają różną składnię. Również upewnij się, że używasz poprawnej
składni dla twojej wersji getty
.
Ten problem może się pojawiać, gdy DCD i DTR nie są ustawione
poprawnie. DCD powinno być włączone tylko wtedy, gdy jest
rzeczywiste połączenie (gdy ktoś do ciebie zadzwonił i w
danej chwili wykorzystuje modem i port szeregowy), a nie kiedy
getty
nasłuchuje na porcie. Sprawdź czy twój modem jest
skonfigurowany, aby włączać DCD tylko podczas trwania
połączenia. DTR powinno być włączone zawsze, gdy coś sprawdza
lub nasłuchuję linię, jak getty
, kermit
lub inny
program komunikacyjny.
Inną powszechną przyczyną omunikatu ``device busy'' (urządenie zajęte) jest skonfigurownie portu szeregowego w taki sposob, że używa przerwania IRQ przydzielonego do innego urządzenia. Podczas inicjowania portu sterownik, pyta się Linux-a o pozwolenie na wykorzystanie przerwania sprzętowego. Linux pamięta, które przerwanie zostało mu przydzielone i jeśli twoje przerwanie zostało już przydzielone, urządzenie (np. port szeregowy) nie bedzie mogło zostać prawidłowo zainicjowane. Urządzenie nie ma za bardzo jak powiedzieć Ci o tym, poza przypadkiem kiedy próbujesz go użyc. Przekazuje wtedy błąd ``device busy''. Sprawdź przerwania wszystkich swoich kart (szeregowych, sieciowych, SCSI, itd.). Szukaj konfliktów przerwań IRQ.
Upewnij się, że Twój modem jest skonfigurowany
poprawnie. Przyjżyj się rejestrom E
i Q
. Przyczyną
może być pogawędka modemu z programem getty
.
Upenij się ,że poprawnie wywołujesz getty
w pliku
/etc/inittab
/. Używanie błędnej składni lub
nieporawnych nazw urządzeń jest przyczyną licznych kłopotów.
Upewnij się, że /etc/gettydefs
ma poprawną składnie.
W tym celu wydaj polecenie:
linux# getty -c /etc/gettydefs
Przyczyna może leżeć w niepoprawnej inicjalizacji programu
uugetty
. Patrz pytanie ``getty
lub uugetty
nadal nie pracuje poprawnie''.
Prawdopodobnie konflikt IRQ. Upewnij się, żę IRQ nie są
wspólne. Sprawdź wszystkie karty (szeregowe, sieciowe, SCSI,
itd.). Upewnij się, że ustawienia mikroprzełączników i
parametry ustawiane przez setserial
są poprawne dla
wszystkich urządzeń szeregowych. Sprawdź
/proc/interrupts
i /proc/ioports
w
poszukiwaniu konfliktów.
uugetty
nie uruchimi się ponownie. Przyczyna może leżeć w tym, że kiedy spada sygnał DTR twój
modem się nie zeruje. Widziałem jak diody RD i SD na moim
modemie szalały, kiedy cos takiego mi się zdarzyło. Twój modem
musi się zerować. Wiekszość modemów zgodnych z Hayes wymaga
ustawienia &D3
, lecz w moim USR Courier musiałem
ustawić &D2
i S13=1
. Sprawdź w dokumnetacji
modemu.
Prawdopodobnie pozycja dotycząca tego terminala w pliku
/etc/gettydefs
nie zawiera opcji CLOCAL
. I
prawdopodobnie nie używasz pełnego kabla bezmodemowego (full
null modem cable). Musisz ustawić opcję CLOCAL, dzieki
której Linux ignoruje sygnały strujące modemem. To powinno
wyglądać mniej więcej tak:
# 38400 bps Dumb Terminal entry
DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400
# 19200 bps Dumb Terminal entry
DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200
# 9600 bps Dumb Terminal entry
DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
zabij (kill)
proces getty
, tak aby
uruchomil się następny, który odczyta nowe ustawienia.
agetty
:
dodaj do wiersza agetty
w pliku /etc/inittab
parametr -L
. W ten sposób zmusisz agetty
do
ignorowania sygnałów sterowania modemem. Następnie zrestartuj
program init
wydając polecenie init q
. Odpowiedni
wpis w pliku /etc/inittab
powinien wyglądać mniej
więcej tak:
s1:345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
Jeśli próbujesz uruchomić swój modem z prędkością co najmniej 19200 bps i nie posiadasz układów UART 16550A, powinieneś je wymienić. Patrz rozdział Co to jest UART.
To prawda. Linux nie wykonuje podczas startu rozpoznania IRQ, jedynie strawdza istnienie urządzeń szeregowych. Dlatego nie przejmuj się tym co wypisuje podczas startu na temat IRQ, ponieważ po prostu zakłada standardową konfiguracje. Dzieje się tak ponieważ wykrywanie przerwań IRQ nie jest pewne i mogą być odczytane niepoprawnie.
Dlatego pomimo, że moj ttyS2
jest skonfigurowany na IRQ
5 nadal widzę:
Jan 23 22:25:28 misfits vmunix: tty02 at 0x03e8 (irq = 4) is a 16550A
Musisz powiedzieć Linux-owi o przerwaniach IRQ, korzystając z
programu setserial
. Po uruchomieniu systemu możesz zajżeć
do pliku /proc/interrupts
i zobaczyć, jak zostały
przydzielone.
rz
i/lub sz
nie działają kiedy pracuje na moim Linux-ie przez modem. Jeśli przy próbie transferu plików Linux szuka urządzenia
/dev/modem
sprawdź zawartość plików
/etc/profile
i /etc/csh.cshrc
. W niektórych
dystrybucjach (szczególnie w Slackware) może tam być
zdefiniowana garść aliasów, które wywołują całe
zamieszanie. Poraw je lub po prostu usuń.
Tak się dzieje, gdy wyślesz na konsolę wirtualną dane binarne,
lub czasami przy połączeniach przez porty szeregowe. Jednym ze
sposobów na przywrócenie normalengo wyglądu ekranu jest
napisanie echo ^v^[c
lub:
linux% echo
<ctrl>v<esc>c
getty
lub uugetty
nadal nie dziala. getty_ps
posiada opcję DEBUG
. Zmień plik
konfiguracyjny /etc/conf.{uu}getty.ttyS
N i dodaj
opcję DEBUG=
NNN. NNN może przyjmować kombinacje
podanych poniżej wartości ( w zależności o tego jakie
informacje chcesz otrzymywać):
D_OPT 001 ustawianie opcji
D_DEF 002 przetwarzanie domyśłnych plików konfiguracyjnych
D_UTMP 004 obsługa utmp/wtmp
D_INIT 010 inicjowanie liniii (INIT)
D_GTAB 020 przetwarzanie pliku gettytab
D_RUN 040 inna diagnostyka czasu wykonania
D_RB 100 odpluskwianie obcji ringback
D_LOCK 200 obsługa pliku blokady
D_SCH 400 obsługa zaplanowanych zdarzeń
D_ALL 777 wszystko
Na początek mozna ustawić DEBUG=010
.
Jeśli korzystasz z syslogd
, informacje odpluskwiające
będą pojawiać się w plikach dzienników. Jeśli syslogd
nie
jest uruchomiony komunikaty dotyczące odpluskwiania getty
będa zachowywane w /tmp/getty:ttyS
N, a dotyczące
uugetty
w pliku /tmp/uugetty:ttyS
N oraz w
pliku /var/adm/getty.log
. Przypatrz się tej informacji
i postaraj się zrozumieć co się dzieje. Prawdobodobnie
będziesz musiał dostroić kilka parametrów w plikach
konfiguracyjnych i ponwnie skonfigurwać modem.
Możesz spróbować mgetty
. Część ludzi miała z nim więcej szczęścia.
agetty(8)
, getty(1m)
, gettydefs(5)
,
init(1)
, login(1)
, mgetty(8)
, setserial(8)
term
polskie:
pl.com.os.linux:
wszystkie pytania dotyczace Linux-a
angielskie
comp.os.linux.answers
FAQs, How-To's, READMEs, etc. about Linux.
comp.os.linux.hardware
Hardware compatibility with the Linux operating system.
comp.os.linux.networking
Networking and communications under Linux.
comp.os.linux.setup
Linux installation and system administration.
majordomo@vger.rutgers.edu
, zawierający
``subscribe linux-serial
''. Jeśli wyślesz słowo
``help
'' otrzymasz list z informacjami jak posługiwać się listą
(po angielsku). Ten serwer obsluguje wiele innych list
poświęconych Linux-owi. Wyśli polecenie ``lists
'', a
otrzymasz spis aktywnych list.
http://www.cyclades.com
.
Nie było możliwe napisania tego dokumentu samemeu. Jego
większa część została napisana przeze mnie, przepisałem również
wiele cudzych poprawek aby zachować ciągłość schematu i
stylu. Dziękuje wszystkim, którzy mi pomogli lub skomentowali
ten dokument. Pełna lista adresów byłaby abyt długa (ponad 50
adresów). Sczególne podziękowania należą sie Tedowi T'so, który
cierpliwie odpowiadał na pytania dotyczące urządzeń szeregowych,
Krisowi Glesonowi, który opiekuje się pakietem getty_ps
i
Gertowi Doeringowi, opiekunowi mgetty
.
Zdaje sobie sprawę, że niniejsze tłumaczenie zawiera mnóstwo błędów. Niestety nie jestem w stanie dokładnie sprawdzić całego dokumentu i świadomie pozostawiam tę pracę czytelnikowi. Będę wdzięczny za wszelkie uwagi na temat tego dokumentu, wytykanie błędów, literówek, składni i wszelkie inne, które mogą przyczynić się do jego ulepszenia.
Wszelkie tego typu uwagi proszę przesyłać na adres piotr.pogorzelski@ippt.gov.pl
Inne przetłumaczone dokumenty można znaleźć na stronie http://www.jtz.org.pl/. Zapraszamy!.
piotr.pogorzelski@ippt.gov.pl.
Koniec Serial-JTZ, polskiego tłumaczenia Serial-HOWTO czy jak to się zwie. # # # #
Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:22