# 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.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`.

## 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.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 :-).

## 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.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.

## 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 `telix`a
- `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!

baud

  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.

bps

  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.

## 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/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`).

## 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.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.

## 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.