Per velocità si intende in verità il rapporto di flusso dei dati ("data flow rate") ma quasi tutti lo chiamano velocità. Per tutti i modem moderni non si ha la possibilità di scegliere la velocità che il modem usa sulla linea telefonica visto che viene scelta automaticamente come la più alta possibile date le circostanze. Ma voi avete la possibilità di scegliere che velocità sarà usata nelle comunicazioni tra il modem e il vostro computer. Questa viene chiamata velocità "DTE" che è l'acronimo di Data Terminal Equipment (il vostro computer è un DTE). Dovete impostare questa velocità ad un valore abbastanza alto in modo che questa parte del tragitto compiuta dal segnale non costituisca un collo di bottiglia. L'impostazione per la velocità DTE è la velocità massima. La maggior parte delle volte probabilmente opererà ad una velocità inferiore.
Per un modem esterno, la velocità DTE è la velocita (in bit per secondo) del flusso che scorre nel cavo tra il modem ed il PC. Per un modem interno, è concettualmente lo stesso, visto che il modem emula anche una porta seriale. Può sembrare ridicolo avere un limite di velocità nella comunicazione tra un computer ed una scheda modem che è direttamente collegata all'interno del computer ad bus con una velocità notevolmente superiore. Ma sarà così fino a quando i modem interni includeranno una porta seriale dedicata che ha limiti di velocità (e velocità impostabili).
Che velocità scegliere? Se non fosse per la compressione dati si potrebbe scegliere una velocità DTE esattamente uguale a quella del modem. La compressione dati prende i byte inviati dal computer al modem e li codifica in un numero minore di byte. Ad esempio, se il flusso (velocità) dal PC al modem era di 20,000 byte/secondo (bps) ed il rapporto di compressione è di 2 a 1, allora solo 10,000 byte/secondo usciranno verso la linea telefonica. Quindi per un rapporto di compressione di 2:1 occorre impostare una velocità doppia rispetto alla velocità massima del modem sulla linea telefonica. Se il rapporto di compressione è di 3 a 1, occorre impostarla tre volte più veloce.
La velocità DTE è normalmente impostata da un menù nel vostro programma di comunicazione o da un'opzione data al comando getty se qualcuno vi chiama. Non potete impostare la velocità DCE modem-a-modem.
Dovete scoprire la velocità più alta supportata dal vostro hardware. Alla fine del 1998 la maggior parte dell'hardware supportava velocità fino a 115.2 bps. Pochi modem interni a 56K supportano i 230.4K bps. Recenti kernel di Linux supportano le alte velocità (superiori a 115.2K) ma potreste avere difficoltà nell'usarle per una delle seguenti ragioni:
Ecco un'elenco dei divisori più comunemente usati e delle loro velocità corrispondenti (assumendo una velocità massima di 115.200): 1 (115.2K), 2 (57.6K), 3 (38.4K), 6 (19.2K), 12 (9.6K), 24 (4.8K), 48 (2.4K), 96 (1.2K), ecc. Il driver seriale imposta la velocità nell'hardware inviando al medesimo solamente un "divisore" (un numero intero positivo). Questo "divisore" divide la velocità massima dell'hardware, la velocità quindi risulta più lenta (eccetto che per divisore 1 che ovviamente dice all'hardware di lavorare a velocità massima).
In genere, se specificate una velocità di 115.2K (nel vostro programma di comunicazione o tramite stty) allora il driver seriale imposta l'hardware della porta a divisore 1 che ovviamente imposta la velocità massima. Se disponete di hardware con velocità massima di diciamo 230.4K, allora specificando 115.2K risulterà un divisore 1, quindi in realtà avrete la velocità di 230.4K. Che è la velocità doppia di quanto avete impostato. In effetti, per qualsiasi velocità che impostate, la velocità reale sarà raddoppiata. Se avete hardware che potrebbe andare a 460.8K, allora la velocità reale sarebbe il quadruplo di quella impostata.
Per correggere questi valori (ma non sempre il problema verrà risolto)
potreste usare "setserial" per modificare il baud_base alla vera velocità massima della
vostra porta tipo 230.4K. Quindi se impostate la velocità (tramite la vostra applicazione
o da stty) a 230.4K, verrà usato un divisore 1 ed otterrete la stessa velocità di quella
da voi impostata. PROBLEMA: stty e molti programmi di comunicazione (alla metà del 1999)
presentano ancora 115.2K quale velocità massima impostabile e non vi lasceranno impostarla
a 230.4K, ecc.. Quindi in questi casi uno soluzione potrebbe essere non cambiare nulla
con setserial
, ma tenersi in mente che la velocità reale è sempre il doppio di
quella che avete impostata.
C'è un altro trucco che non è molto meglio. Per usarlo impostate il
baud_base (con setseria) alla velocità massima del vostro hardware. Questo corregge il
conteggio così che se impostate 115.2K avrete effettivamente quella velocità. Ora dovete
però ancora scoprire come impostare una velocità più alta se il vostro programma di
comunicazione (o simile) non ve lo consente. Fortunatamente, setserial ha un modo per farlo:
usate il parametro "spd_cust" con "divisor 1". Poi quando impostate la velocità a 38400
nel programma di comunicazione, il divisore verrà impostato ad 1 nella porta ed opererà
alla massima velocità. Ad esempio:
setserial /dev/ttyS2 spd_cust baud_base 230400 divisor 1
Non cercate di usare "divisor" per altri scopi diversi dallo speciale uso illustrato
qui sopra (con spd_cust).
Se ci sono due o più alte velocità che volete usare che il vostro programma di comunicazione non riesce ad impostare, allora non è così facile come sopra descritto. Ma si applicano gli stessi principi. Potreste mantenere la baud_base di default e tenere presente che quando impostate una velocità in realtà impostate solo il divisore. Così la vostra velocità reale sarà sempre la vostra velocità massima divisa da qualunque divisore sia impostato nel driver seriale. Vedere Com'è impostata la velocità nell'hardware: il divisore ed il baud_base
Notate che l'impostazione del baud_base è in genere molto inferiore rispetto a quella dell'oscillatore di cristallo nel hardware viste la frequenza del cristallo spesso si ottiene dividendo per 16 nell'hardware per ottenere la vera velocità massima. La ragione per la quale la frequenza del cristallo deve essere più altà è che può essere usata per ottenere diversi campioni di ogni bit per determinare se è un 1 o uno 0.
Conviene avere almeno una UART a 16650 per modem a 56K. ma pochi modem la supportano. Un'alternativa è avere una 16550 che è stata "truccata" per dare 230400 bps. Ecco alcune velocità consigliate per impostare la vostra linea seriale se la velocità del vostro modem è: