Linux, a porty szeregowe.
Linux, a porty szeregowe.
by Greg Hankins,
greg.hankins@cc.gatech.edu
v1.10, 31 March 1997
Wersja polska: Piotr Pogorzelski
piotr.pogorzelski@ippt.gov.p
w1.0; Listopad 1997
Niniejszy dokument opisuje zagadnienia związane z konfiguracją i obsługą portów
szeregowych i programów komunikacyjnych.
1. Wprowadzenie.
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.
1.1 Prawa autorskie.
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.
1.2 Nowe wersje tego dokumentu.
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/.
1.3 Uwagi i komentarze.
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.
1.4 Zrzeczenie się odpowiedzialności.
Podane tutaj przykłady lub odpowiedzi nie muszą być odpowiednie dla
wszystkich komputerów.
2. Obsługiwany sprzęt.
Linux potrafi współpracować z następującymi urządzeniami szeregowymi.
2.1 Standardowe karty portów szeregowych komputerów PC.
standardowe karty PC z portami szeregowymi (COM1 -
COM4), do których podłącza się urządzenia zewnętrzne (modemy,
myszki, drukarki, itp...)
standardowe wewnętrzne modemy dla komputerów IBM PC
(COM1-COM4).
Quickpath Systems Port-Folio 550e (pozwala na wybór
jednego z przerwań 3, 4, 5, 9, 10, 11, 12, i 15)
Uwaga: ze względu na konflikt adresów nie możesz używać jednocześnie portu
COM4 i karty video IBM8514.
2.2 Modemy Plug And Play (PnP).
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ć:
Spróbuj wyłączyć udogodnienie PnP w BIOSie komputera i w modemie.
Wystertuj Win95, skonfiguruj modem i sprawdź, czy zachowuje
ustawienia po uruchomieniu Linux-a. Jeśli nie, wtedy:
Uruchom Win95, skonfiguruj modem i zrestartuj na ciepło
Linux-a aby zapamiętać ustawienia modemu. Możesz to zrobić korzystając z
ładowacza loadlin.
Zdobądź PnP Tools
http://www.redhat.com/linux-info/pnp.
Zawsze możesz zdobyć prawdziwy modem.
2.3 Karty wieloportowe (z układem 16450/16550A).
AST FourPort and clones (4 ports)
Accent Async-4 (4 ports)
Arnet Multiport-8 (8 ports)
Bell Technologies HUB6 (6 ports)
Boca BB-1004 (4 ports), BB-1008 (8 ports), BB-2016 (16 ports)
Boca IOAT66 (6 ports)
Boca 2by4 (4 serial ports, 2 parallel ports)
Computone ValuePort V4-ISA (AST FourPort compatible)
Digi PC/8 (8 ports)
GTEK BBS-550 (8 ports)
Longshine LCS-8880, Longshine LCS-8880+ (AST FourPort compatible)
Moxa C104, Moxa C104+ (AST FourPort compatible)
PC-COMM (4 ports)
SIIG I/O Expander 2S IO1812 (4 ports)
STB-4COM (4 ports)
Twincom ACI/550
Usenet Serial Board II (4 ports)
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.
2.4 Inteligentne karty wieloportowe.
Comtrol RocketPort (36MHz ASIC; 4, 8, 16 lub 32 porty)
kontakt:
info@comtrol.com lub
http://www.comtrol.com
dostępność sterownika: udostępniany przez Comtrol
lokalizacja sterownika:
ftp://tsx-11.mit.edu/pub/linux/packages/comtrol
Computone IntelliPort II (16MHz 80186; 4, 8, lub 16 portów),
IntelliPort II EXpandable (20MHz 80186; 16 - 64 porty)
kontakt: Michael H. Warfield,
mhw@wittsend.atl.ga.us
dostępność sterownika: pre-ALPHA
Cyclades Cyclom-Y (Cirrus Logic CD1400 UARTs; 8 - 32 porty),
Cyclom-Z (25MHz MIPS R3000; 8 - 128 portów)
kontakt:
sales@cyclades.com or
http://www.cyclades.com
dostępność sterownika: udostępniany przez Cyclades
lokalizacja sterownika:
ftp://ftp.cyclades.com/pub/cyclades w jądrze Linux-a.
Decision PCCOM8 (8 ports)
kontakt:
pccom8@signum.se
lokalizacja sterownika:
ftp://ftp.signum.se/pub/pccom8
Digi PC/Xi (12.5MHz 80186; 4, 8, lub 16 portów),
PC/Xe (12.5/16MHz 80186; 2, 4, lub 8 porty),
PC/Xr (16MHz IDT3041; 4 lub 8 portów),
PC/Xem (20MHz IDT3051; 8 - 64 portów)
kontakt:
sales@dgii.com lub
http://www.dgii.com
dostępność sterownika: udostępniany przez Digi
lokalizacja sterownika:
ftp://ftp.dgii.com/drivers/linux w dystrybucji jądra
Linux-a od wersji 2.0.
Digi COM/Xi (10MHz 80188; 4 lub 8 portów)
kontakt: Simon Park,
si@wimpol.demon.co.uk
dostępność sterownika: ALPHA
note: Simon często jest z dala od swojej poczty, nawet przez
kilka miesięcy (ze względu na charakter swej pracy) Mark
Hatle,
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.
Equinox SuperSerial Technology (30MHz ASIC; 2 - 128 porty)
kontakt:
sales@equinox.com lub
http://www.equinox.com
dostępność sterownika: udostępniany przez Equinox
lokalizacja sterownika:
ftp://ftp.equinox.com/library/sst
GTEK Cyclone (16C654 UARTs; 6, 16 i 32 porty),
SmartCard (24MHz Dallas DS80C320; 8 portów),
BlackBoard-8A (16C654 UARTs; 8 portów),
PCSS (15/24MHz 8032; 8 portów)
kontakt:
spot@gtek.com lub
http://www.gtek.com
dostępność sterownika: udostępniany przez GTEK
lokalizacja sterownika:
ftp://ftp.gtek.com/pub
Hayes ESP (COM-bic; 1 - 8 portów)
kontakt: Andrew J. Robinson,
arobinso@nyx.net lub
http://www.nyx.net/~arobinso
dostępność sterownika: udostępniany prze autora
lokalizacja sterownika:
http://www.nyx.net/~arobinso i w dystrybucji jądra
Linux-a od wersji 2.1.15.
Maxpeed SS (Toshiba; 4, 8 i 16 portów)
kontakt:
info@maxpeed.com lub
http://www.maxpeed.com
dostępność sterownika: udostępniany przez Maxpeed
lokalizacja sterownika:
ftp://maxpeed.com/pub/ss
Moxa C218 (12MHz 80286; 8 portów),
Moxa C320 (40MHz TMS320; 8 - 32 porty)
kontakt:
info@moxa.com.tw lub
http://www.moxa.com.tw
dostępność sterownika: udostępniany przez Moxa
lokalizacja sterownika:
ftp://ftp.moxa.com.tw/drivers/c218-320/linux
SDL RISCom/8 (Cirrus Logic CD180; 8 portów)
kontakt:
sales@sdlcomm.com lub
http://www.sdlcomm.com
dostępność sterownika: udostępniany przez SDL
lokalizacja sterownika:
ftp://ftp.sdlcomm.com/pub/drivers
Omega COMM-8 (8 portów)
kontakt: Vance Petree,
vpetree@infi.net
Specialix SIO (20MHz Zilog Z280; 4 - 32 porty),
XIO (25MHz Zilog Z280; 4 - 32 porty)
kontakt: Simon Allen,
simonallen@cix.compulink.co.uk
dostępność sterownika: BETA
lokalizacja sterownika:
ftp://sunsite.unc.edu/pub/Linux/kernel/patches/serial
Stallion EasyIO-4 (4 porty), EasyIO-8 (8 portów) i
EasyConnection (8 - 32 porty) - każdy
Cirrus Logic CD1400 UART,
Stallion (8MHz 80186 CPU; 8 lub 16 portów),
Brumby (10/12 MHz 80186 CPU; 4, 8 lub 16 portów),
ONboard (16MHz 80186 CPU; 4, 8, 12, 16 lub 32 porty),
EasyConnection 8/64 (25MHz 80186 CPU; 8 - 64 porty)
kontakt:
sales@stallion.com lub
http://www.stallion.com
dostępność sterownika: udostępniany przez Stallion
lokalizacja sterownika:
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.
2.5 Nieobsługiwane urządzenia szeregowe.
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.
3. Jak nazywają sie porty szeregowe?
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).
3.1 Urządzenia portów szeregowych i numery w 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*
Tworzenie plików urządzeń w katalogu /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).
3.2 Uwagi na temat kart wieloportowych.
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.
3.3 Uwagi na temat inteligentnych kart wieloportowych.
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.
4. Interesujące oprogramowania, o którym powinieneś wiedzieć.
4.1 Co to takiego getty?
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.
Trochę o 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.
Kilka słów na temat 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/.
I na koniec 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.
4.2 Co to takiego 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).
5. Jak mogę zadzwonić z mojego modemu?
5.1 Wymagania sprzętowe.
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.
Uwagi na temat modemów wewnętrznych.
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.
5.2 Rozmowy z twoim modemem.
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.
5.3 Konfiguracja modemów wyjściowych.
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.
5.4 Sprzetowe sterowanie przepływem danych.
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.
6. Jak dzwonić na zewnątrz i do mojego komputera, wykorzystując jednocześnie 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.
6.1 Konfiguracja modemu do dzwonienia na zewnątrz i przyjmowania połączeń.
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.
6.2 Instalacja 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.ttySN. 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.ttySN, 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.
6.3 Konfiguracja 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
6.4 Przystosowywanie 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.ttySN 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.ttySN. 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 :-).
7. Jak skonfigurować terminal przyłączony do mojego komputera PC?
Instrukcje zawarte w tym rozdziale przedstawiają w jaki sposób
przyłączyc do portu szeregoweg onaszego Linux-a terminal lub
inny komputer.
7.1 Wymagania sprzętowe.
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.
7.2 Konfigurowanie 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.ttySN 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.
7.3 Uwagi o konfiguracji komputera PC jako 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.
8. Czy mogę używać więcej niż 2 porty szeregowe?
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.
8.1 Wybór przerwań dla urządzeń szeregowych.
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.
8.2 Ustawianie adresów urządzeń szeregowych.
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.
9. Jak ustawić port szeregowy na większe prędkości? Jaką prędkość powinienem stosować do mojego modemu?
Ta część powinna pomóc w doborze prędkości z jaką modem
komunikuje się z programem lub getty.
Jeśli masz modem wolniejszy niż 9600 bps (V.32), ustaw
prędkość poru na największą obsługiwaną przez twój modem. NP
300, 1200, lub 2400 bps.
Jeśli posiadasz modem 9600 bps (v.32) z kompresją V.42bis,
używaj prędkości 38400. Kompresja V.42bis toretycznie zwiększa
przepustowość czterokrotnie :``4 * 9600 = 38400''.
Jeśli twój modem obsługuje prędkość 14400 bps (V.32bis) z
kompresja V.42bis, wykorzystaj 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
10. Narzędzia i programy komunikacyjne.
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 komunikacyjny
C-Kermit -
przenośny, z językiem skryptów, program komunikacyjny do
połączeń przez port szeregowy lub przy wykorzystaniu protokołu
TCP/IP umożliwiający transer plików i przekodowywanie znaków.
minicom - program komunikacyjny zbliżony do telixa
procomm - program komunikacyjny z transmisją zmodem
seyon - program komunikacyjny pracujący w
środowisku X
xc - pakiet komunikacyjny xcomm
Innymi pozytecznymi programami są 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.
Oprogramowanie SLIP i PPP można znaleźć pod adresem
ftp://sunsite.unc.edu/pub/Linux/system/network/serial.
Innych programów można szukać pod adresem
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.
11. Sztuczki i chwyty.
Kilka sztuczek, które mogą Ci się przydać ...
11.1 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>.
11.2 Automatyczne ustawinie rodzaju terminala.
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.
11.3 Kolorowe 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.
11.4 Drukowanie na drukarce przyłączonej do terminala.
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.
11.5 Czy Linux potrafi automagicznie skonfigurować urządzenia szeregowe?
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.
Uwagi na temat kart wieloportowych.
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ń.
11.6 Korzystanie z konsoli przez port szeregowy.
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.
11.7 Wyższe prędkości transmisji.
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.
12. Krok dalej.
Nie musisz czytać tego rozdziału, jego
celem jest wprowadzenie czytelnika w świat telekomunikacji i
wnętrze UNIXa.
12.1 Co to są pliki blokady (lockfiles)?
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.
12.2 ``baud'' vs. ``bps''.
``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!
baudPrędkość modulacji (baud rate) jest miarą ile razy na sekundę
zmienia się sygnał wysyłany przez modem
(modulator-demodulator). 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.
bpsPrę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.
12.3 Co to jest UART? Jaki ma wpływ na osiągi portu szeregowego?
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.
12.4 Jaka jest naprawdę różnica między urządzeniami /dev/cuaN itt>/dev/ttySN devices?
Różnica polega na sposobie otwierania tych
urządzeń. Urządzenia wejściowe /dev/ttySN 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/cuaN nie ma konfliktu z programem
nasłuchującym urządzenie /dev/ttySN.
To rozróżnienie jest potrzebne aby umożliwić przez ten sam
modem połączenia przychodzace (ttySN) i wychodzące (cuaN).
13. Radzenie sobie z kłopotami.
13.1 Cały czas pojawia się komunikat ``line NNN of inittab invalid''.
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.
13.2 Kiedy próbuję zadzwonić dostaję komunikat ``/dev/cuaN: Device or resource busy''.
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.
13.3 Cały czas otrzymuję ``Id SN respawning too fast: disabled for 5 minutes''.
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''.
13.4 Porty szeregowe są powolne, lub mogą przesyłać informacje tylko w jedną strone.
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.
13.5 Moj modem blokuje się po tym, jak ktoś się rozączy, lub 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.
13.6 Mam terminal podłączony do mojego PC, lecz po wpisaniu identyfikatora blokuje się.
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
Następnie zabij (kill) proces getty, tak aby
uruchomil się następny, który odczyta nowe ustawienia.
Jeśli korzystasz z 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
13.7 Moj modem traci dane przy większych prędkościach.
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.
13.8 Podczas startu Linux nie raportuje portów szeregowych w sposób jaki je ustawiłem.
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.
13.9 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ń.
13.10 Widzę na ekranie śmiesznie wyglądające znaczki.
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
13.11 getty lub uugetty nadal nie dziala.
getty_ps posiada opcję DEBUG. Zmień plik
konfiguracyjny /etc/conf.{uu}getty.ttySN 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:ttySN, a dotyczące
uugetty w pliku /tmp/uugetty:ttySN 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.
14. Inne źródła informacji.
Strony podręcznika agetty(8), getty(1m), gettydefs(5),
init(1), login(1), mgetty(8), setserial(8)
Instrukcja modemu
NET-3 HOWTO: wszystko na temat sieci, włączając SLIP, CSLIP i PPP
PPP HOWTO: pomoc przy PPP
Printing HOWTO: jak skonfiguraować drukarkę przez port szeregowy
Term HOWTO: wszystko co chcesz wiedzieć na temat programu term
UPS HOWTO: konfiurowanie komputerow z podłączonym przez port szeregowy UPSem
UUCP HOWTO: informacja na temat konfiguracji UUCP
Grupy nowinkowe:
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.
Lista dyskusyjna na temat portów szeregowych. Aby się zapisać
wyślij list na adres
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.
Dokumentacja dotycząca komunikacji przez porty szeregowe
i kart wieloportowych jest dostępna na serwerze firmy Cyclades
http://www.cyclades.com.
Dokumenty FAQ (czesto zadawane pytania) dotyczące modemów:
Navas 28800 Modem FAQ
Curt's High Speed Modem Page
Programowanie portów szeregowych:
Advanced Programming in the UNIX Environment, by W. Richard Stevens
(ISBN 0-201-56317-7; Addison-Wesley)
http://www.ora.com/catalog/posix/ NAME="POSIX
Programmer's Guide">, by Donald Lewine (ISBN 0-937175-73-0;
O'Reilly)
15. Współpraca przy tworzeniu tego dokumentu.
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.
16. Od tłumacza
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.
Wyszukiwarka
Podobne podstrony:
Serial HOWTO pl 6 (2)Serial HOWTO pl 1 (2)Serial HOWTO pl 2 (2)Serial HOWTO pl 8 (2)Serial HOWTO pl (3)Serial HOWTO pl 14 (2)Serial HOWTO pl 7 (2)Serial HOWTO pl 15 (2)Serial HOWTO pl 9 (2)Serial HOWTO pl 11 (2)Serial HOWTO pl 4 (2)Serial HOWTO pl 5 (2)Serial HOWTO pl 3 (2)Serial HOWTO pl 13 (2)Serial HOWTO pl 16 (2)Serial HOWTO pl 10 (2)Serial HOWTO pl 12 (2)bootdisk howto pl 8PPP HOWTO pl 6 (2)więcej podobnych podstron