Provided by: manpages-pl_20051117-1_all bug

NAZWA

       setserial - pobierz/ustaw informacje o porcie szeregowym

SKŁADNIA

       setserial [ -abqvVWz ] device [ parameter1 [ arg ] ] ...

       setserial -g [ -abGv ] device1 ...

OPIS

       setserial jest programem przeznaczonym do ustawiania i/lub raportowania
       danych  konfiguracyjnych  związanych  z  portem  szeregowym.  Dane   te
       zawierają  port  I/O,  numer  IRQ,  to  czy  klawisz break powinien być
       interpretowany jako Secure Attention Key, itd.

       Podczas normalnego bootowania, inicjalizowane są jedynie porty COM 1-4;
       używane   są   przy  tym  domyślne  wartości  portów  I/O  i  IRQ.  Aby
       zainicjalizować dodatkowe porty szeregowe, lub aby zmienić konfiguracje
       portów  1-4,  musisz użyć programu setserial.  Zazwyczaj jest on wołany
       ze skryptu rc.serial,  który  z  kolei  jest  normalnie  uruchamiany  z
       /etc/rc.local.

       Argument(y)   device   określa,   które  urządzenie  szeregowe  ma  być
       skonfigurowane lub odpytane.  Zazwyczaj przyjmuje postać /dev/cua[0-3].

       Bez  parametrów, setserial drukuje rodzaj portu np. 8250, 16450, 16550,
       16550A), sprzętowy port I/O, sprzętową linię IRQ, szybkość  i  niektóre
       flagi operacyjne.

       Przy podanej opcji -g, argumenty setserial są interpretowane jako lista
       urządzeń, dla których należy wydrukować charakterystykę.

       Bez opcji -g, pierwszy argument jest interpretowany jako urządzenie  do
       zmodyfikowania   lub   do  wydrukowania  charakterystyki,  a  dodatkowe
       argumenty  interpretowane  są  jako  parametry,   które   powinny   być
       zaaplikowane do tego urządzenia.

       W  większości wypadków wymagane są uprawnienia superużytkownika. Jednak
       kilka opcji portów mogą ustawiać zwykli użytkownicy i opcje te  zostaną
       zaznaczone jako wyjątki w tym podręczniku.

OPCJE

       Setserial przyjmuje następujące opcje:

       -a     Podczas raportowania konfiguracji urządzenia szeregowego, drukuj
              wszelkie dostępne informacje.

       -b     Podczas raportowania konfiguracji urządzenia szeregowego, drukuj
              zestawienie    konfiguracji    urządzenia,    które   może   być
              wystarczające do wypisania podczas procesu bootowania w skrypcie
              /etc/rc.

       -G     Wydrukuj  informację o konfiguracji portu szeregowego w postaci,
              która może zostać zassana do  setseriala  jako  argumenty  linii
              poleceń.

       -q     Bądź cicho.  Setserial wydrukuje wtedy mniej linii na wyjściu.

       -v     Bądź  gadatliwy.   Setserial wydrukuje wtedy dodatkowy status na
              wyjściu.

       -V     Wyświetl wersję i zakończ.

       -W     Dokonaj dzikiej inicjalizacji przerwań i zakończ. Opcja  ta  nie
              jest istotna w jądrach po wersji 2.1.

       -z     Zeruj flagi szeregowe przed rozpoczęciem ich ustawiania. Jest to
              związane z automatycznym zachowywaniem flag szeregowych z  flagą
              -G.

PARAMETRY

       Portowi szeregowemu można przyznać niżej wymienione parametry.

       Wszystkie  wartości  argumentów  są  wartościami dziesiętnymi, chyba że
       poprzedzone są "0x".

       port port_number
              Opcja port ustawia port I/O, jak opisano wyżej.

       irq irq_number
              Opcja irq ustawia sprzętowe IRQ, jak opisano wyżej.

       uart uart_type
              Opcja ta jest używana do ustawienia typu UART-a. Dozwolone  typy
              to  none,  8250,  16450,  16550,  16550A, 16650, 16650V2, 16654,
              16750, 16850, 16950, i 16954.  Użycie  typu  UART  none  wyłączy
              port.

              Niektóre modemy wewnętrzne są oznaczone jako mające "UART 16550A
              z buforem 1K" Jest to kłamstwo. Nie mają w rzeczywistości UART-a
              kompatybilnego  z 16550A; zamiast niego mają UART kompatybilny z
              16450 z 1K buforem odbiorczym dla zapobiegania  spustoszeniom  u
              odbiorcy. Jest to istotne, ponieważ nie mają one transmitującego
              FIFO. Dlatego nie są kompatybilne  z  UART-em  16550A  i  proces
              autokonfiguracji  zidentyfikuje  je prawidłowo jako 16450. Jeśli
              spróbujesz obejść  to,  używając  parametru  uart,  pojawią  się
              porzucone znaki podczas transmisji plików. UART-y te mają zwykle
              inne problemy: parametr skip_test powinien  być  również  często
              podawany.

       autoconfig
              Gdy  podano  ten  parametr,  setserial  poprosi  jądro  o  próbę
              automatycznego skonfigurowania portu szeregowego. Port I/O  musi
              być  ustawiony  prawidłowo;  jądro spróbuje określić typ UART, a
              dodatkowo jeśli podano parametr  auto_irq,  Linux  spróbuje  też
              automatycznie  określić  IRQ.   Parametr autoconfig powinien być
              podawany po parametrach port,auto_irq, i skip_test.

       auto_irq
              Spróbuj podczas autokonfiguracji określić IRQ. Właściwość ta nie
              zawsze   musi   dać   prawidłowy  wynik;  niektóre  konfiguracje
              sprzętowe mogą ogłupić jądro.  Ogólnie,  bezpieczniej  jest  nie
              używać  właściwości auto_irq, lecz raczej samemu podawać wartość
              IRQ, używając parametru irq.

       ^auto_irq
              Nie próbuj określić IRQ podczas autokonfiguracji.

       skip_test
              Pomiń  test  UART  podczas  autokonfiguracji.  Niektóre   modemy
              wewnętrzne   nie   mają   UART-ów   kompatybilnych   z  National
              Semiconductor, lecz zamiast nich tanie imitacje. Niektóre z nich
              nie  wspierają  w  pełni  trybu detekcji loopback, którego używa
              jądro  do  upewnienia  się,  czy  pod   podanym   adresem   jest
              rzeczywiście  UART. Dlatego dla niektórych modemów będzie trzeba
              podać  ten  parametr  aby  można   było   zainicjalizować   UART
              prawidłowo.

       ^skip_test
              Nie pomijaj testu UART podczas autokonfiguracji.

       baud_base baud_base
              Opcja  ta  ustawia  podstawową  prędkość (baud rate), która jest
              częstotliwością zegara podzieloną przez 16.  Normalnie  jest  to
              115200,  co  jest  zarazem największą prędkością wspieraną przez
              UART.

       spd_hi Gdy aplikacja żąda 38.4kb, używaj 57.6kb. Parametr ten może  być
              ustawiany przez nieuprzywilejowanego użytkownika.

       spd_vhi
              Gdy  aplikacja  żąda 38.4kb, używaj 115kb. Parametr ten może być
              ustawiany przez nieuprzywilejowanego użytkownika.

       spd_shi
              Użyj 230kb gdy aplikacja żąda  38.4kb.  Parametr  ten  może  być
              podawany przez użytkownika nieuprzywilejowanego.

       spd_warp
              Użyj  460kb  gdy  aplikacja  żąda  38.4kb. Parametr ten może być
              podawany przez użytkownika nieuprzywilejowanego.

       spd_cust
              Gdy  aplikacja  żąda  38.4kb,  użyj  ustawionego  dzielnika   do
              ustawienia  szybkości.  W  tym  wypadku, prędkość jest określona
              przez baud_base podzielone  przez  divisor(dzielnik).   Parametr
              ten może być podawany przez nieuprzywilejowanego użytkownika.

       spd_normal
              Gdy  aplikacja żąda 38.4kb, używaj 38.4kb. Parametr ten może być
              ustawiany przez nieuprzywilejowanego użytkownika.

       divisor divisor
              Opcja  ta  ustawia  konfigurowalny  dzielnik.  Dzielnik   będzie
              używany  gdy  wybrana  zostanie opcja spd_cust, a port szeregowy
              będzie ustawiony przez aplikację na 38.4kb.  Parametr  ten  może
              być podawany przez nieuprzywilejowanego użytkownika.

       sak    Ustaw klawisz break na Secure Attention Key.

       ^sak   wyłącz Secure Attention Key.

       fourport
              Skonfiguruj port jako kartę AST Fourport.

       ^fourport
              Wyłącz konfigurację AST Fourport.

       close_delay delay
              Podaj  ilość  czasu  w  setnych  sekundy,  podczas  których  DTR
              powinien zostać w stanie obniżonym na linii szeregowej  po  tym,
              jak  urządzenie  wydzwaniające  (callout  device) jest zamykane,
              zanim blokowane urządzenie wdzwaniające się (dialin device) znów
              podniesie  DTR.  Domyślną  wartością  tej  opcji jest 50 lub pół
              sekundy.

       closing_wait opóźnienie
              Podaj ilość  czasu  w  setnych  sekundy,  podczas  której  jądro
              powinno czekać na dane nadawane z portu szeregowego podczas jego
              zamykania. Jeśli podane zostanie "none", nie będzie oczekiwania.
              Jeśli   podane   zostanie  "infinite",  jądro  będzie  czekać  w
              nieokreślenie długo na przybycie buforowanych danych.  Domyślnym
              ustawieniem  jest  3000  lub  30  sekund  opóźnienia. Ta wartość
              domyślna jest wskazana dla większości  urządzeń.  Jeśli  wybrane
              zostanie  długie opóźnienie, to port szeregowy może się zawiesić
              na długi czas  podczas  zamykania.  Jeśli  wybrany  będzie  zbyt
              krótki  czas, to istnieje ryzyko utraty danych. Jeśli urządzenie
              jest bardzo wolne, jak  w  ploterze,  to  można  wybrać  większe
              wartości.

       session_lockout
              Blokuj   dostęp   do   portu   wydzwaniającego  (/dev/cuaXX)  na
              przestrzeni różnych sesji. To  znaczy,  że  gdy  proces  otworzy
              port,  to  żaden  inny  proces  nie może go już otworzyć, dopóki
              pierwszy proces go nie zamknie.

       ^session_lockout
              Nie blokuj portu wydzwaniającego na przestrzeni sesji.

       pgrp_lockout
              Blokuj port wydzwaniający (/dev/cuaXX)  na  przestrzeni  różnych
              grup procesów.  To znaczy, że gdy proces otworzył port, to żaden
              inny proces z innej grupy procesów nie może go otworzyć,  dopóki
              ten proces go nie zamknie.

       ^pgrp_lockout
              Nie  blokuj  portu  wydzwaniającego  na przestrzeni różnych grup
              procesów.

       hup_notify
              Poinformuj proces blokowany na otwieraniu  linii  wdzwaniającej,
              gdy  proces  skończy  używać linii wydzwaniającej (zarówno przez
              zamknięcie jej,  lub  przez  zawieszenie  jej)  przez  zwrócenie
              (funkcji?) open EAGAIN.

              Zastosowanie  tego  parametru  odnosi  się  do  getty,  które są
              blokowane  na   liniach   wdzwaniających   portów   szeregowych.
              Umożliwia  to  getty zresetowanie modemu (który może mieć dzięki
              aplikacji  używającej   urządzenia   wydzwaniającego   zmienioną
              konfigurację) przed ponownym blokowaniem.

       ^hup_notify
              Nie   informuj   procesu   blokowanego   na   otwieraniu   linii
              wdzwaniającej, gdy urządzenie wydzwaniające jest odwieszone.

       split_termios
              Traktuj   ustawienia   termios    używane    przez    urządzenie
              wydzwaniające i ustawienia urządzenia wdzwaniającego osobno.

       ^split_termios
              Używaj  tej  samej  struktury termios do przechowywania ustawień
              urządzenia wdzwaniającego i wydzwaniającego.

       callout_nohup
              Jeśli  dany  port  szeregowy  jest  otworzony  jako   urządzenie
              wydzwaniające, nie odwieszaj tty gdy porzucony zostanie CD.

       ^callout_nohup
              Nie  pomijaj  odwieszania  tty gdy port szeregowy jest otworzony
              jako urządzenie  wydzwaniające.  Oczywiście  musi  być  włączona
              flaga HUPCL termios, jeśli odwieszenie ma się pojawić.

       low_latency
              Minimalizuj  opóźnienia odbioru z urządzenia szeregowego kosztem
              większego zaangażowania CPU. (Normalnie jest  5-10ms  opóźnienie
              nim   znaki  zostaną  przekazane  dyscyplinie  linii.)  Jest  to
              domyślnie wyłączone, lecz niektóre aplikacje czasu rzeczywistego
              mogą tego potrzebować.

       ^low_latency
              Optymalizuj efektywne przetwarzanie przez CPU znaków szeregowych
              kosztem płacenia średniego opóźnienia 5-10ms nim  znaki  zostaną
              przetworzone. Jest to domyślne.

ROZWAŻANIA O KONFIGUROWANIU PORTÓW SZEREGOWYCH

       Ważnym  jest,  by  zauważyć iż setserial zwyczajnie mówi jądru Linuksa,
       gdzie powinien spodziewać się znaleźć port I/O i linie IRQ  określonego
       portu  szeregowego.  Nie konfiguruje on sprzętu! Aby to uczynić, musisz
       fizycznie zaprogramować kartę szeregową, zazwyczaj przez  przestawienie
       zworek, lub przełączenie przełączników DIP.

       Sekcja   ta   udostępni  pewne  wskazówki  pomocne  w  decydowaniu  jak
       skonfigurować porty szeregowe.

       "Standardowe powiązania MS-DOS" zostały pokazane niżej:

              /dev/ttyS0 (COM1), port 0x3f8, irq 4
              /dev/ttyS1 (COM2), port 0x2f8, irq 3
              /dev/ttyS2 (COM3), port 0x3e8, irq 4
              /dev/ttyS3 (COM4), port 0x2e8, irq 3

       Z powodu ograniczeń w projekcie  architektury  szyn  AT/ISA,  normalnie
       linia  IRQ  nie  może  być  dzielona  między  dwoma  lub więcej portami
       szeregowymi. Jeśli spróbujesz tak  zrobić,  jeden  lub  obydwa  z  tych
       portów   staną  się  niedostępne,  gdy  spróbujesz  używać  ich  naraz.
       Ograniczenie  to  można  obejść  przez  specjalne  wieloportowe   karty
       szeregowe, które są skonstruowane do dzielenia wielu portów szeregowych
       na jednej linii  IRQ.  Karty  wspierane  przez  Linuksa  zawierają  AST
       FourPort, Accent Async, Usenet Serial II, Bocaboard BB-1004, BB-1008, i
       BB-2016, oraz HUB-6.

       Wybór alternatywnej linii IRQ jest trudny, gdyż prawie wszystkie z nich
       są  już  w  użytku.  Następująca  tabela  zawiera  wykaz "standardowych
       przydziałów MS-DOS" dla linii IRQ:

              IRQ 3: COM2
              IRQ 4: COM1
              IRQ 5: LPT2
              IRQ 7: LPT1

       Wiele osób uważa, że  IRQ  5  jest  dobrym  wyborem,  zakładając  że  w
       komputerze  aktywny  jest  tylko  jeden  port  równoległy. Innym dobrym
       wyborem jest IRQ 2 (aka IRQ 9); chociaż  to  IRQ  jest  czasem  używane
       przez  karty  sieciowe  i bardzo rzadko przez karty VGA (dla przerwania
       vertical retrace). Jeśli  twoja  karta  VGA  jest  tak  skonfigurowana,
       spróbuj  to  wyłączyć, tak być mógł wykorzystać to IRQ dla innej karty.
       Nie jest to niezbędne pod GNU/Linuksem i  większością  innych  systemów
       operacyjnych.

       Jedynymi  innymi  dostępnymi  liniami  IRQ  są  3,  4  i  7,  a  są one
       prawdopodobnie używane przez inne porty szeregowe i równoległe.  (Jeśli
       twoja  karta  szeregowa  ma  16-bitowy  edge connector i wspiera wyższe
       numery IRQ, to dostępne sa też IRQ 10, 11, 12 i 15.)

       W maszynach  klasy  AT,  IRQ  2  jest  widziane  jako  IRQ  9  i  Linux
       interpretuje je w ten sposób.

       Przerwania  inne  niż  2 (9), 3, 4, 5, 7, 10, 11, 12, i 15, nie powinny
       być używane, gdyż są przyznane innym elementom sprzętowym i ogólnie nie
       mogą być zmieniane. Oto "standardowe" przyznania:

              IRQ  0      Kanał timera 0
              IRQ  1      Klawiatura
              IRQ  2      Kaskada kontrolera 2
              IRQ  3      Port szeregowy 2
              IRQ  4      Port szeregowy 1
              IRQ  5      Port równoległy 2 (Zarezerwowane w PS/2)
              IRQ  6      Stacja dysków
              IRQ  7      Port równoległy 1
              IRQ  8      Zegar czasu rzeczywistego
              IRQ  9      Przekierowane na IRQ2
              IRQ 10      Zarezerwowane
              IRQ 11      Zarezerwowane
              IRQ 12      Zarezerwowane (Pomocnicze urządzenie w PS/2)
              IRQ 13      Koprocesor matematyczny
              IRQ 14      Kontroler dysku twardego
              IRQ 15      Zarezerwowane

KONFIGURACJA WIELOPORTOWA

       Niektóre wieloportowe układy szeregowe, dzielące wiele portów na jednym
       IRQ używają jednego lub więcej portów do określania czy są tam  aktywne
       porty,  które  należy obsłużyć. Jeśli twój układ wieloportowy obsługuje
       te porty, to powinieneś z nich  skorzystać  aby  zapobiec  potencjalnym
       zablokowaniom, gdy zginie przerwanie.

       Aby  ustawić  te  porty, musisz przekazać set_multiport jako parametr i
       wypisać  za  nim   parametry   wieloportowe.   Parametry   wieloportowe
       przybierają  postać  podania  sprawdzanego  portu,  maski, wskazującej,
       które  bity  rejestru   są   znaczące   oraz,   ostatecznie   parametru
       dopasowania,  (match), określającego, które bity znaczące tego rejestru
       muszą pasować, gdy nie ma już niczego do zrobienia.

       Można podać do czterech takich kombinacji. Pierwsze kombinacje  powinny
       być  podawane  przez  ustawianie  parametrów  port1,  mask1  i  match1.
       Następne przez ustawianie port2, mask2  i  match2,  itd.  Aby  wyłączyć
       sprawdzanie wieloportowe, ustaw port1 na zero.

       Aby  obejrzeć  bieżące  ustawienia  wieloportowe, podaj w linii poleceń
       parametr get_multiport.

       Oto pewne ustawienia wieloportowe dla popularnych układów szeregowych:

              AST FourPort    port1 0x1BF mask1 0xf match1 0xf

              Boca BB-1004/8  port1 0x107 mask1 0xff match1 0

              Boca BB-2016    port1 0x107 mask1 0xff match1 0
                              port2 0x147 mask2 0xff match2 0

Konfiguracja ESP Hayesa

       Setserial może być również używany do konfigurowania portów na układzie
       ESP Hayesa.

       Można do tego używać następujących parametrów:

       rx_trigger
              Jest  to poziom wyzwalania (w bajtach) FIFO odbiorczego. Większe
              wartości powodują mniej przerwań i lepszą wydajność; jednak zbyt
              duże  wartości powodują utratę danych. Dostępne wartości to 1 do
              1023.

       tx_trigger
              Jest to poziom wyzwalania (w bajtach) FIFO  nadawczego.  Większe
              wartości  mogą  powodować  mniej  przerwań  i  lepszą wydajność;
              jednak  zbyt  duże  wartości  powodują  zdegradowaną   wydajność
              nadawania. Dostępne wartości to 1 do 1023.

       flow_off
              Jest to poziom (w bajtach) przy którym port ESP zrobi "flow off"
              dla zdalnego nadajnika (tj. powie mu by przestał nadawać  więcej
              bajtów).  Dostępne wartości to 1 do 1023. Wartość ta powinna być
              większa od poziomu wyzwalania odbiorczego i poziomu flow on.

       flow_on
              Jest to poziom (w bajtach) przy którym port ESP zrobi "flow  on"
              dla  zdalnego  nadajnika  (tzn.  powie  mu  by wznowił nadawanie
              bajtów) po "flow off".  Dostępne wartości to 1 do 1023.  Wartość
              ta  powinna być mniejsza niż poziom "flow off", lecz większa niż
              poziom wyzwalania odbiorczego.

       rx_timeout
              Jest to ilość czasu, przez którą port  ESP  powinien  czekać  po
              odebraniu  ostatniego  znaku  przed  sygnalizowaniem przerwania.
              Prawidłowe wartości to 0 do  255.  Zbyt  duża  wartość  zwiększy
              opóźnienia, a zbyt mała spowoduje niepotrzebne przerwania.

UWAGA

       UWAGA: Skonfigurowanie portu szeregowego tak, by używał nieprawidłowego
       portu I/O może zablokować twoją maszynę.

PLIKI

       /etc/rc.local /etc/rc.serial

ZOBACZ TAKŻE

       tty(4), ttys(4), kernel/chr_drv/serial.c

AUTOR

       Oryginalna wersja  setserial  została  napisana  przez  Ricka  Sladkeya
       (jrs@world.std.com)  i została zmodyfikowana przez Michaela K. Johnsona
       (johnsonm@stolaf.edu).

       Ta wersja została od tej pory napisana ponownie od zera przez  Theodore
       Ts'o  (tytso@mit.edu)  1/1/93.  Wszelkie  błędy i problemy są wyłącznie
       jego odpowiedzialnością.