Logo de AulaDigital

Terminales Como 4

Terminales Serie COMO: Configuración del software Anterior Siguiente Indice

4. Configuración del software

4.1 Linux

Entra como superusuario y modifica el /etc/inittab de la siguiente manera:

  • Tienes que buscar la sección #Serial lines y añadir una línea como la siguiente:
    s2:45:respawn:/sbin/agetty -L 38400 ttyS1
    
    En la que habrá que cambiar algunas cosas dependiendo del puerto serie del PC-Linux en donde tengas el terminal conectado:
    Si tienes el terminal en el COM1:

    s1:45:respawn:/sbin/agetty -L 9600 ttyS0

    Si tienes el terminal en el COM2:

    s2:45:respawn:/sbin/agetty -L 9600 ttyS1

    Si tienes el terminal en el COM3:

    s3:45:respawn:/sbin/agetty -L 9600 ttyS2

    Si tienes el terminal en COM4:

    s4:45:respawn:/sbin/agetty -L 9600 ttyS3

  • Una vez insertada esa línea en /etc/inittab, hay que hacer que el proceso init relea el fichero inittab; para ello ejecutaremos la orden:
    init q
    

4.2 El terminal.

Cargar el MSDOS y entrar en el programa de emulación de terminales.

Debes elegir el tipo de terminal ANSI o, VT100, VT102, VT220, VT52.

Cualquiera de ellos debería funcionar como mínimo para comprobar que la línea funciona.

Los parámetros del puerto serie deben ser 9600,N,8,1.

Apretando un par de ENTERs debería salir en la pantalla del terminal el texto de LOGIN.

Si eso no funciona, algo está pasando en las líneas serie.

4.3 Afinando Linux para la conexión

Espero que hayáis llegado hasta aquí sin mucha dificultad.

Explicación de la línea del inittab

Aquí voy a explicar esa línea que hay que añadir al inittab.

















Qué significa cada cosa:

s2:45:respawn:/sbin/agetty -L 9600 ttyS1  
^  ^     ^             ^      ^      ^ 
|  |     |             |      |      |
|  |     |             |      |      `---- /dev/ttyS1 es decir COM2:
|  |     |             |      |            es el dispositivo que soporta
|  |     |             |      |            la conexion. Se puede cambiar
|  |     |             |      |            por ttyS0, ttyS2 o ttyS3.
|  |     |             |      |
|  |     |             |      |
|  |     |             |      `------- Baudios a los que se efectua la 
|  |     |             |               conexion: puede ser uno de los
|  |     |             |               siguientes: 300, 600, 1200, 2400
|  |     |             |               9600, 19200, 38400, 57600, 115200
|  |     |             |               Si tienes una UART tipo 8250 o 
|  |     |             |               16450 mejor que no pases de 9600
|  |     |             |               so pena de freir el PC a interrup-
|  |     |             |               ciones. En el terminal da igual
|  |     |             |               porque no tiene que hacer nada mas,
|  |     |             |               pero en el PC-Linux importa no 
|  |     |             |               pasarse so pena de perder potencia
|  |     |             |               de multiproceso.
|  |     |             |               Recomiendo 19200 baudios.
|  |     |             |
|  |     |             |
|  |     |             `-- Programa que va a controlar la comunicacion por
|  |     |                 la parte Linux. Existen el controlador 
|  |     |                 agetty, otro es el uugetty. Tambien esta el getty
|  |     |                 Aqui hay que jugar un poco. Yo uso agetty, que no
|  |     |                 quiere decir que sea el mejor, pero funciona.
|  |     |
|  |     |
|  |     `----- No puedo asegurar que eso sea cierto, pero me parece que 
|  |            sirve para que el proceso agetty se auto-restaure cuando
|  |            por alguna razon muera.
|  |
|  |
|  `----- No puedo asegurar que sea cierto, pero me parece que son los
|         runlevels validos para que funcione ese terminal.
|
`----- Identificacion. Cuando por ejemplo se hace 'top' salen los procesos
       que estan funcionando en la maquina. Una de las columnas del top 
       es la del terminal donde se estan ejecutando. En los procesos
       ejecutados desde este terminal va a salir el 's2' o lo que se
       escriba aqui.

Parámetros de agetty

Fijáos que en la línea que estamos estudiando, le paso el parámetro -L a agetty. Si hacéis man agetty podréis comprobar porqué hago eso: estoy forzando a que la línea sea local, es decir, que no se haga la la comprobación del pin de CD (Carrier Detect). Ese pin debería estar conectado en el cable, pero no lo hago para mantener la compatibilidad con el INTERLNK/INTERSVR de Microsoft MSDOS. Una vez más el Linux se adapta a las necesidades del usuario. (¿¡Me suena esa frase a WIN95!?)

También podéis activar el protocolo de hardware RTS/CTS, que acelerará un poco la comunicación. Para hacer eso necesitáis que el cable os soporte esa función; además deberéis configurar el terminal o mejor dicho, El software de terminal para que lo haga. Yo no lo tengo habilitado. Para activar el protocolo por hardware CTS/RTS pasadle el parámetro '-h' a agetty, por ejemplo:

s2:45:respawn:/sbin/agetty -hL 9600 ttyS1  

4.4 Afinando el terminal

Aquí más que un afinamiento os voy a explicar cómo instalar el Telix 3.22 para DOS para que haga de terminal.

  • Primero tenéis que conseguir los archivos vía FTP o vía algún cdrom de Shareware N. del R.
    O de cualquier BBS
    . Yo voy a explicar la versión 3.22, que no es la última, pero tampoco es vieja. Los archivos se llaman:
    • tlx322-1.zip
    • tlx322-2.zip
    • tlx322-3.zip
    • tlx322-4.zip
    De los cuales sólo vais a necesitar los dos primeros.
  • Descomprimid los ZIPs tlx322-1.zip y tlx322-1.zip en un directorio. Una vez descomprimidos, ejecutad 'MODEMCFG.EXE' y escoged alguno de los de 1200 baudios (para que no quiera grabar la RAM del módem). Seleccionas el puerto correspondiente y sales del programa.
  • Si te falta espacio (o quieres tener el Telix en un disquete porque no tienes disco duro o por comodidad) puedes cargarte el CS.EXE y el CSS.EXE. Yo tengo Telix322 + MSDOS6.2 + KERMIT.EXE en 1 disco de 720K.
  • Ejecutar TELIX.EXE y una vez haya intentado sin resultado inicializar el módem, pulsas ALT-O (opciones).
  • Te vas a Modem and dialing y en el módem init string le pones un par de control-M (se hace poniendo un acento circunflejo ^ y una M).
  • Te vas al Terminal options y pones lo pertinente en la opción A: por ejemplo COM2, 19200, None, 8, 1.
  • El el mismo menú de Terminal Options, la opción C debería estar en ANSI o en VT102.
  • En el mismo menú de Terminal Options, la opción I debería estar en: Backspace key sends DEL.
  • En el mismo menú de Terminal Options, vas a encontrar la opción K que sirve para controlar el flujo por hardware. (agetty -h).
  • Finalmente te vas a Write Setup to Disk.
  • Sales del Telix: ALT-X
  • Vuelves a entrar. Te debería salir el login en la pantalla.

4.5 Solución a posibles problemas

Siempre se pueden tener problemas, aunque conozco a bastante gente que ha montado este cable y le ha funcionado.

Qué hacer si no funciona:

Comprobación del cable

Para probar el cable, coges los 2 PCs, les pones en marcha un Telix y pulsas en ambos ALT-P.

Configura ambos PCs a una velocidad de 1200 baudios, N, 8,1.

Configura en cada PC el COM correspondiente.

Escribe desde un PC y tendrás que ver el texto en la pantalla del otro.

Prueba desde ambos PCs. Puede ser que la comunicación sólo sea mono-direccional por algún defecto del cable o del hardware.

Si el cable está bien construido y el hardware no falla eso debería ir bien.

El cable funciona pero Linux no.

¿Qué velocidad escogiste? Prueba desde 9600 baudios a ver qué tal.

Puede ser que tengas problemas de velocidad. Ejecuta MSD en ambos ordenadores para ver qué UARTs tienen. Seguramente el PC viejo tendrá una 8250, por lo que no es recomendable pasar de 9600, aunque he probado a 19200 y suele funcionar.

Nuestro terminal en hades.udg.es es un 286-12 con UART 8250 y le podemos sacar 38400, aunque a veces falla.

¿Las velocidades son las mismas?

La velocidad que escojas en el Telix o el programa que utilices para emular un terminal tiene que ser la misma que configures en la línea del /etc/inittab.

¿Habilitaste algún protocolo por hardware?

Algunos puertos serie no llevan todas las líneas, así que aunque el cable las tenga, no llegan hasta el Linux o el programa de terminal. Prueba deshabilitando el protocolo por hardware, es decir, quitando el parámetro '-h' del agetty en /etc/inittab, y habilitando el protocolo XON/XOFF por software en el programa de comunicaciones.

¿Estás seguro que pusiste ttyS0 para COM1, ttyS1 para COM2, ttyS2 para COM3 y ttyS3 para COM4? Es muy fácil colarse, el ttySx es siempre uno menos que el COMx.

Puede que tengas algún problema de IRQs. ¿Estás compartiendo IRQ con algún otro dispositivo?

Haz pruebas con el minicom (clónico del Telix para Linux) para saber si los datos al menos llegan.

Comprueba los majors y los minors de los puertos de comunicaciones:

/dev/ttyS0: crw-rw-rw-   X  USER GROUP  4,  64  xxx xx xx:xx ttyS0
/dev/ttyS1: crw-rw-rw-   X  USER GROUP  4,  65  xxx xx xx:xx ttyS1
/dev/ttyS2: crw-rw-rw-   X  USER GROUP  4,  66  xxx xx xx:xx ttyS2
/dev/ttyS3: crw-rw-rw-   X  USER GROUP  4,  67  xxx xx xx:xx ttyS3
                                        ^    ^
                                        |    |
                                        |    |
                                        |    `------MINOR
                                        `-----------MAJOR


Anterior Siguiente Indice