Provided by:
manpages-it_0.3.4-5_all 
NOME
setserial - fornisce/imposta informazioni per le porte seriali in Linux
SINTASSI
setserial [ -abqvVW ] dispositivo [ parametro1 [ arg ] ] ...
setserial -g [ -abv ] dispositivo1 ...
DESCRIZIONE
setserial è un programma inteso a impostare e/o riportare le
informazioni di configurazione associate a una porta seriale. Queste
informazioni includono le porte I/O e l’IRQ che sta utilizzando una
particolare porta seriale, e precisano se il tasto break debba essere
interpretato come il tasto Secure Attention oppure no, e così via.
Durante il normale processo di avvio, vengono inizializzate solo le
porte COM 1-4, usando le porte I/O e i valori IRQ predefiniti, secondo
l’elenco che segue. Per qualunque porta seriale addizionale, o per
assegnare alle porte COM 1-4 una configurazione non standard, dovrebbe
essere usato il programma setserial. Esso viene tipicamente chiamato
da uno script rc.serial, normalmente eseguito tramite /etc/rc.local.
L’argomento (o gli argomenti) dispositivo specifica il dispositivo
seriale che deve essere modificato o interrogato. Avrà normalmente la
seguente forma: /dev/cua[0-3].
Se non viene specificato alcun parametro, setserial stamperà il tipo di
porta (per esempio, 8250, 16450, 16550, 16550A, etc.), la porta
hardware di I/O, la linea hardware di IRQ, la sua "baud base," e
qualcuna delle sue opzioni.
Se viene data l’opzione -g , gli argomenti passati a setserial verranno
interpretati come una lista di dispositivi per la quale devono essere
stampate le caratteristiche dei dispositivi stessi.
Senza l’opzione -g , il primo argomento di setserial viene interpretato
come il dispositivo da modificare o le cui caratteristiche devono
essere stampate, e ogni argomento addizionale verrà interpretato come
un parametro da assegnare a quel dispositivo seriale.
Per la maggior parte, sono richiesti i privilegi da superutente per
impostare i parametri di configurazione di una porta seriale. Alcuni
parametri di porta seriale possono tuttavia essere impostati da utenti
normali e saranno menzionati in questa pagina di manuale come
eccezioni.
OPZIONI
Setserial accetta le seguenti opzioni:
-a Riportando la configurazione di un dispositivo seriale, stampa
ogni informazione disponibile.
-b Riportando la configurazione di un dispositivo seriale, stampa
un sommario della configurazione del dispositivo, che potrebbe
essere adatto alla stampa durante il processo di avvio, durante
l’esecuzione dello script /etc/rc.
-q È silenzioso: setserial stampa meno righe d’informazioni.
-v È prolisso: setserial stampa informazioni addizionali sullo
stato.
-V Mostra la versione ed esce.
-W Esegue un’inizializzazione selvaggia degli interrupt ed esce.
PARAMETRI
A una porta seriale possono essere assegnati i seguenti parametri.
Si presume che per tutti gli argomenti i valori siano espressi in
decimale salvo quando preceduti da "0x".
port numero_della_porta
L’opzione port imposta la porta di I/O, come illustrato sopra.
irq numero_di_irq
L’opzione irq imposta l’IRQ hardware, come illustrato sopra.
uart tipo_di_uart
Questa opzione viene usata per impostare il tipo di UART: i
tipi consentiti sono none (nessuno) oppure 8250, 16450, 16550,
16550A, 16650, 16650V2 e 16750. Poiché gli UART 8250 e 16450
non hanno FIFO, e poiché i 16550 originali hanno bachi che
rendono inutilizzabile la coda FIFO, FIFO sarà usato solo su
chip identificati come UART 16550A. Impostare il tipo UART a
8250, 16450 o 16550 abilita la porta seriale senza cercare di
usare la coda FIFO. Usare il tipo UART none disabilita la porta.
Alcuni modem interni sono reclamizzati come muniti di una
"16550A UART with a 1k buffer": è falso! hanno un UART che in
realtà non è 16550A compatibile; quello che invece posseggono è
un UART 16450 compatibile con un buffer in ricezione di 1k per
prevenire gli intasamenti (overrun) del ricevitore. Ciò è
importante, poiché non dispongono di una coda FIFO in
trasmissione. Pertanto, essi non sono compatibili con un UART
16550A e il processo di autoconfigurazione li identificherà
correttamente come 16450. Se si tenta di forzare ciò usando il
parametro uart , verranno a mancare dei caratteri durante la
trasmissione dei file. Di solito questi UART hanno altri
problemi: spesso deve essere specificato anche il parametro
skip_test.
autoconfigure
Dando questo parametro, setserial chiederà al kernel di tentare
di configurare automaticamente la porta seriale. La porta I/O
deve essere impostata correttamente; il kernel cercherà di
determinare il tipo UART, e se è impostato il parametro
auto_irq, Linux cercherà di determinare automaticamente l’IRQ.
Il parametro autoconfigure dovrebbe essere dato dopo aver
specificato i parametri port,auto_irq, andskip_test.
auto_irq
Durante l’autoconfigurazione, cerca di determinare l’IRQ. Non è
garantito che questa opzione produca sempre il risultato
corretto; qualche configurazione hardware potrebbe ingannare il
kernel Linux. Di solito è più sicuro non usare l’opzione
auto_irq , ma piuttosto specificare esplicitamente l’IRQ da
usarsi, servendosi del parametro irq.
^auto_irq
Durante l’autoconfigurazione, non cerca di determinare l’IRQ.
skip_test
Durante l’autoconfigurazione, salta il test UART. Alcuni modem
interni non hanno UART compatibili National Semiconductor, ma
hanno invece imitazioni economiche. Alcuni di questi UART
imitati non supportano perfettamente il modo di riconoscimento
loopback, usato dal kernel per assicurarsi che ci sia davvero
uno UART a un particolare indirizzo prima di tentare di
configurarlo. Quindi, per certi modem interni, c’è bisogno di
specificare questo parametro onde consentire a Linux di
inizializzare l’UART correttamente.
^skip_test
Durante l’autoconfigurazione, non salta il test UART.
baud_base base_in_baud
Questa opzione imposta la velocità base in baud, che è
rappresentata dalla frequenza di clock divisa per 16.
Normalmente questo valore è 115200, che è anche la massima
velocità in baud che l’UART possa sostenere.
spd_hi Usa 57.6kb quando l’applicazione richiede 38.4kb. Questo
parametro può essere specificato da un utente non privilegiato.
spd_vhi
Usa 115kb quando l’applicazione richiede 38.4kb. Questo
parametro può essere specificato da un utente non privilegiato.
spd_cust
Usa il divisore personalizzato per impostare la velocità quando
l’applicazione richiede 38.4kb. In questo caso, la velocità sarà
la base_in_baud diviso per il divisore. Questo parametro può
essere specificato da un utente non privilegiato.
spd_normal
Usa 38.4kb quando l’applicazione richiede 38.4kb. Questo
parametro può essere specificato da un utente non privilegiato.
divisor divisore
Questa opzione imposta il divisore personalizzato. Verrà allora
usato questo divisore, quindi sarà selezionata l’opzione
spd_cust e la porta seriale verrà impostata dall’applicazione a
38.4kb. Questo parametro può essere specificato da un utente
non privilegiato.
sak Imposta il tasto break come il tasto Secure Attention.
^sak disabilita il tasto Secure Attention.
fourport
Configura la porta come una scheda AST Fourport.
^fourport
Disabilita la configurazione AST Fourport.
close_delay ritardo
Specifica la quantità di tempo, in centesimi di secondo, per la
quale il segnale DTR deve rimanere basso su una linea seriale
dopo che il dispositivo chiamante (callout device) sia stato
chiuso, prima che il dispositivo di chiamata in ingresso (dialin
device) bloccato alzi di nuovo il segnale DTR. Questa opzione è
predefinita a 50, ossia un ritardo di mezzo secondo.
closing_wait ritardo
Specifica la quantità di tempo, in centesimi di secondo, per la
quale il kernel deve attendere la trasmissione di dati dalla
porta seriale mentre chiude la porta, prima che il ricevitore
sia stato disabilitato. Se viene specificato "none", non vi sarà
alcun ritardo. Se viene specificato "infinite" il kernel
attenderà indefinitamente la trasmissione dei dati nel buffer.
L’impostazione predefinita è "none".
closing_wait2 ritardo
Specifica la quantità di tempo, in centesimi di secondo, per la
quale il kernel deve attendere la trasmissione di dati dalla
porta seriale mentre chiude la porta, dopo che il ricevitore sia
stato disabilitato. Come per il comando closing_wait , si
possono specificare sia "none" sia "infinite". L’impostazione
predefinita è di 3000, ossia un ritardo di 30 secondi.
Le impostazioni predefinite di closing_wait e di closing_wait2
sono di solito appropriate per la maggior parte dei dispositivi.
Se viene selezionato un ritardo troppo lungo, allora la porta
seriale potrebbe rimanere appesa per lungo tempo qualora sia
chiusa mentre una porta seriale non è collegata, e abbia dati in
attesa. Se viene specificato un ritardo troppo corto, allora c’è
il rischio che qualcuno dei dati trasmessi non venga affatto
emesso.
Se il dispositivo è estremamente lento, come un plotter, i
valori di closing_wait o closing_wait2 devono essere
ulteriormente allungati.
Se il dispositivo usa normalmente l’handshaking XON/XOFF, i
valori predefiniti di closing_wait and closing_wait2 devono
essere invertiti. Ciò presenta tuttavia il pericolo di non
sopprimere le lotte di echi fra Linux e un modem che continui a
mandare segnali echo.
session_lockout
Blocca gli accessi alla porta chiamante (/dev/cuaXX) fra diverse
sessioni. Cioè, una volta che un processo abbia aperto una
porta, non consente che un processo con un diverso
identificativo di sessione apra quella porta finché il primo
processo non l’abbia chiusa.
^session_lockout
Non blocca gli accessi alla porta chiamante fra diverse
sessioni.
pgrp_lockout
Blocca gli accessi alla porta chiamante (/dev/cuaXX) da diversi
gruppi di processi. Cioè, dopo che un processo abbia aperto una
porta, non consentire a un processo di un diverso gruppo di
processi di aprire quella porta finché il primo processo non
l’abbia chiusa.
^pgrp_lockout
Non blocca accessi alla porta chiamante da diversi gruppi di
processi.
hup_notify
Notifica a un processo bloccato sull’apertura di una linea in
ingresso quando un processo ha terminato di usare una linea in
uscita (sia mediante chiusura della linea, sia per avvenuto
riaggancio) restituendo EAGAIN all’apertura.
Questo parametro viene usato per i processi getty bloccati su
una linea di ingresso di una porta seriale. Ciò permette a getty
di reimpostare il modem (la cui configurazione potrebbe esser
stata modificata dall’applicazione che usa il dispositivo
chiamante) prima di bloccarsi ancora sull’apertura.
^hup_notify
Non mandare notifiche a un processo bloccato sull’apertura di
una linea di chiamata in ingresso quando il dispositivo
chiamante viene riagganciato.
split_termios
Tratta le impostazioni termios usate dal dispositivo chiamante e
le impostazioni usate dal dispositivo di composizione come
separate.
^split_termios
Usa la stessa struttura termios per immagazzinare entrambe le
porte di ingresso e di chiamata. Questa è l’opzione
predefinita.
callout_nohup
Se questa particolare porta seriale è aperta come dispositivo
chiamante non riappende il tty quando viene a mancare il
riconoscimento della portante.
^callout_nohup
Non omette di riagganciare il tty quando una porta seriale è
aperta come dispositivo di chiamata. Naturalmente, l’opzione
HUPCL di termios deve essere abilitata se sta per avvenire il
riaggancio.
CONSIDERAZIONI SULLA CONFIGURAZIONE DI PORTE SERIALI
È importante notare che setserial si limita soltanto a dire al kernel
di Linux dove dovrebbe aspettarso di trovare la porta di I/O e le linee
di IRQ di una particolare porta seriale. *Non* configura l’hardware,
cioè la scheda seriale effettiva, per usare una particolare porta I/O.
Per fare ciò, avete bisogno di programmare fisicamente la scheda
seriale, normalmente impostando alcuni jumper o spostando alcuni
interruttori DIP.
Questa sezione fornirà alcuni suggerimenti per aiutarvi a decidere come
configurare le porte seriali.
Le associazioni delle porte secondo lo "standard MS-DOS" sono le
seguenti:
/dev/ttys0 (COM1), porta 0x3f8, irq 4
/dev/ttys1 (COM2), porta 0x2f8, irq 3
/dev/ttys2 (COM3), porta 0x3e8, irq 4
/dev/ttys3 (COM4), porta 0x2e8, irq 3
A causa dei limiti progettuali dell’architettura del bus AT/ISA,
normalmente una linea di IRQ non può esser condivisa fra due o più
porte seriali. Se si prova a farlo, una o entrambe le porte seriali
diventano inaffidabili quando usate simultaneamente. Questa limitazione
può essere superata da speciali schede serialei multi-porta, disegnate
per condividere porte seriali multiple su di una singola linea di IRQ.
Le schede seriali multi-porta che Linux può utilizzareincludono la AST
FourPort, la scheda Accent Async, la scheda Usenet Serial II, le schede
Bocaboard BB-1004, BB-1008 e BB-2016, e la scheda seriale HUB-6.
La selezione di una linea IRQ alternativa è difficile, poiché molte di
loro sono già usate. La seguente tabella elenca l’assegnazione
"standard MS-DOS" delle linee di IRQ disponibili:
IRQ 3: COM2
IRQ 4: COM1
IRQ 5: LPT2
IRQ 7: LPT1
La maggior parte delle persone ritengono che IRQ 5 sia una buona
scelta, supponendo che ci sia solo una porta parallela attiva nel
computer. Un’altra buona scelta è IRQ 2 (oppure IRQ 9); benché questo
IRQ sia talora usato da schede di rete e, molto raramente, da schede
VGA configurate per usare IRQ 2 come interrupt di ritracciamento
verticale. Se la propria scheda VGA è configurata in questo modo, si
cerchi di disabilitare la configurazione, inutile per Linux e per molti
altri sistemi operativi, per poter disporre di quella linea di IRQ per
qualche altra scheda.
Le uniche altre linee IRQ disponibili sono 3, 4 e 7, e queste sono
probabilmente usate da altre porte seriali e parallele; ma se la scheda
seriale ha un connettore marginale a 16bit e accetta numeri di
interrupt più alti, allora sono anche disponibili gli IRQ 10, 11, 12 e
15.
Su macchine di classe AT, IRQ 2 è visto come IRQ 9, e Linux lo
interpreterà in questo modo.
Gli IRQ diversi da 2 (9), 3, 4, 5, 7, 10, 11, 12, e 15, non devono
essere usati, poiché sono assegnati a altro hardware e non possono, in
genere, essere modificati. Ecco gli assegnamenti "standard":
IRQ 0 Timer canale 0
IRQ 1 Tastiera
IRQ 2 Cascade per controller 2
IRQ 3 Porta seriale 2
IRQ 4 Porta seriale 1
IRQ 5 Porta parallela 2 (riservato nel PS/2)
IRQ 6 Lettore di dischetto
IRQ 7 Porta parallela 1
IRQ 8 Orologio in tempo reale
IRQ 9 Rediretto a IRQ2
IRQ 10 Riservato
IRQ 11 Riservato
IRQ 12 Riservato (dispositivo ausiliario nel PS/2)
IRQ 13 Coprocessore matematico
IRQ 14 Controller per il disco rigido
IRQ 15 Riservato
CONFIGURAZIONE MULTIPORTA
Alcune schede seriali multi-porta che condividono porte multiple su un
singolo IRQ usano una o più porte per indicare se ci sia, o no, qualche
porta appesa che abbia bisogno di esser servita. Se la scheda
multiporta ha questo tipo di porte, bisognerebbe usarle per evitare
potenziali blocchi nel caso in cui l’interrupt andasse perso.
Per impostare queste porte, si specifichi il parametro set_multiport,
seguito dai parametri della multiporta. I parametri della multiporta
specificano la porta (port) che deve essere controllata, una maschera
(mask) che indica quali bit nel registro sono significativi e, infine,
un parametro corrispondenza (match) che specifica a cosa devono
corrispondere i bit significativi in quel registro, in mancanza di
altro lavoro in attesa di esser eseguito.
Possono essere specificate fino a quattro di tali combinazioni
porta/maschera/corrispondenza. La prima di queste dovrebbe essere
specificata impostando i parametri port1, mask1e match1. La seconda di
tali combinazioni dovrebbe essere specificata con port2, mask2e match2,
e così via. Per disabilitare questo controllo della multiporta,
impostate port1 a zero.
Per vedere le attuali impostazioni multiporta, si specifichi sulla riga
di comando il parametro get_multiport.
Ecco alcune impostazioni multiporta per alcune schede seriali comuni:
AST FourPort port1 0x1BF match1 0xf mask1 0xf
Boca BB-1004/8 port1 0x107 match1 0xff match1 0
Boca BB-2016 port1 0x107 match1 0xff match1 0
port2 0x147 match2 0xff match2 0
CAUTELE
ATTENZIONE: L’uso di una porta invalida può bloccare la propria
macchina.
FILES
/etc/rc.local /etc/rc.serial
VEDERE ANCHE
tty(4), ttys(4), kernel/chr_drv/serial.c
AUTORE
La versione originale di setserial fu scritta da Rick Sladkey
(jrs@world.std.com) ed è stata modificata da Michael K. Johnson
(johnsonm@stolaf.edu).
Da allora, questa versione è stata riscritta daccapo da Theodore Ts’o
(tytso@mit.edu) il giorno 1/1/93: tutti i bachi e problemi sono
solamente colpa sua.