Provided by: manpages-pl_20060617-4_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ą.

INFORMACJE O TŁUMACZENIU

       Powyższe   tłumaczenie   pochodzi   z   nieistniejącego   już  Projektu
       Tłumaczenia Manuali i moe nie by aktualne. W razie zauważenia  różnic
       między powyższym opisem a rzeczywistym zachowaniem opisywanego programu
       lub funkcji, prosimy o zapoznanie się z oryginalną  (angielską)  wersją
       strony podręcznika.