Anterior Siguiente Indice

4. Configuración del software

4.1 Linux

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

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.

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