Logo de AulaDigital

Serie Como 6

Serie COMO de Linux: ¿Cómo puedo llamar y recibir llamadas con mi módem usando getty_ps? Anterior Siguiente Indice

6. ¿Cómo puedo llamar y recibir llamadas con mi módem usando getty_ps?

Consiga que su módem llame correctamente. Si no ha leído la sección ¿Cómo puedo llamar con mi módem?, ¡léala ahora!. Contiene información de configuración muy importante. No necesita leer esta sección si lo único que quiere hacer es llamar con el módem.

6.1 Configuración del módem para llamar y recibir llamadas

Para llamar y recibir llamadas, tiene que configurar el módem de un cierto modo (de nuevo, usando los comandos AT del módem):

E1      activa el eco de comandos
Q0      devuelve los codigos resultantes
V1      habilita el codigo de resultados largos (texto)
S0=0    nunca contesta (uugetty hace esto con la opcion WAITFOR)

Si no configura esto correctamente, la cadena INIT de su fichero de configuración puede fallar, echando a perder el proceso completo. Pero, más sobre ficheros de configuración después ...

&C1     DCD se activa solamente despues de conectar
&S0     DSR siempre esta activo
DTR activa/desactiva el reinicio del modem (depende del fabricante - RTFM)

Esto afecta a lo que hace su módem cuando inicia o finaliza una llamada.

Si su módem no puede almacenar el perfil, puede usar la cadena INIT de su fichero de configuración. Véalo más adelante. Algunos módems tienen interruptores DIP que afectan a la configuración de los registros. Asegúrese de que estén configurados correctamente.

He iniciado una colección de configuraciones para diferentes tipos de módems. Hasta ahora sólo tengo unos pocos, si desea enviarme una configuración que funcione, por favor, ¡hágalo!. Puede conseguirla en ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs.

Nota: para conseguir que mi módem USR Courier V.34 se reinicie correctamente cuando se desactiva el DTR, he tenido que activar &D2 y S13=1 (esto activa el bit 0 del registro S13). Se ha confirmado que esto funciona igualmente en módems USR Sportster V.34.

Nota: algunos módems Supra tratan el DCD de modo diferente a otros módems. Si está usando un Supra, pruebe a poner &C0 y no &C1. También debe poner &D2 para manejar el DTR correctamente.

6.2 Instalación de getty_ps

Consiga la última versión en sunsite.unc.edu:/pub/Linux/system/Serial. Por defecto, getty_ps se configura para usar la norma FSSTND (FileSystem STaNDard) de Linux, lo cual significa que los binarios estarán en /sbin, y los ficheros de configuración se llamarán /etc/conf.{uu}getty.ttySN. ¡Esto no está claro en la documentación!. También se espera que los ficheros de bloqueo estén en /var/lock. Asegúrese de que existe el directorio /var/lock.

Si no quiere usar la norma FSSTND, los binarios pueden ir en /etc, los ficheros de configuración pueden ir en /etc/default/{uu}getty.ttySN, y los ficheros de bloqueo pueden ir en /usr/spool/uucp. Recomiendo hacer las cosas de esto modo si está usando UUCP, porque UUCP puede tener problemas si mueve los ficheros de bloqueo a donde no los busca.

getty_ps también puede usar syslogd para guardar los mensajes. Vea las páginas man de syslogd(1) y syslog.conf(5) para configurar syslogd, si no lo tiene funcionando todavía. Los mensajes se guardan con prioridad LOG_AUTH, los errores usan LOG_ERR, y la depuración usa LOG_DEBUG. Si no quiere usar syslogd puede editar tune.h en los ficheros fuente de getty_ps para usar otro fichero de almacenamiento en su lugar, llamado /var/adm/getty.log por defecto.

Decida si quiere usar la norma FSSTND y la capacidad syslog. También puede elegir una combinación de ambos. Edite los ficheros Makefile, tune.h y config.h para reflejar sus decisiones. Después compile e instale siguiendo las instrucciones incluidas en el paquete.

A partir de este punto, todas las referencias a getty_ps se referirán a getty_ps. Las referencias a uugetty se referirán a uugetty que viene con el paquete getty_ps. Estas instrucciones no funcionarán en mgetty o agetty.

6.3 Configurando uugetty

Para recibir llamadas y llamar con su módem, vamos a usar uugetty. uugetty hace importantes comprobaciones de los ficheros de bloqueo. Actualice /etc/gettydefs para incluir las entradas de los módems si todavía no están allí (nótese que cada entrada apunta a otra, esto no es para velocidades fijas - las líneas en blanco son necesarias entre cada entrada):

# Entradas del modem
38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200

19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600

9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400

2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #1200

1200# B1200 CS8 # B1200 SANE -ISTRIP HUPCL #@S @L @B login: #300

300# B300 CS8 # B300 SANE -ISTRIP HUPCL #@S @L @B login: #38400

Si tiene un módem de 9600 bps o más rápido con compresión de datos, puede bloquear la velocidad del puerto serie y permitir que el módem controle las transiciones a otras velocidades. Entonces, en vez de la serie descendente de líneas listadas antes, /etc/gettydefs sólo necesita contener una línea para el módem:

# velocidad fijada a 38400
F38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #F38400

# velocidad fijada a 19200
F19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #F19200

# velocidad fijada a 9600
F9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #F9600

Si tiene configurado su modem con control de flujo por hardware RTS/CTS, puede añadir CRTSCTS a las entradas:

# velocidad fijada a 38400 con control de flujo por hardware
F38400# B38400 CS8 CRTSCTS # B38400 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F38400

# velocidad fijada a 19200 con control de flujo por hardware
F19200# B19200 CS8 CRTSCTS # B19200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F19200

F9600# B9600 CS8 CRTSCTS # B9600 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F9600

Si quiere, puede hacer que uugetty escriba cosas interesantes en el mensaje de login. En los ejemplos, tenemos el nombre del sistema, la línea serie, y la velocidad actual en bps. Puede añadir otras cosas:

       @B    Velocidad actual en bps (calculada en el momento que se lee @B).
       @D    Fecha actual, en MM/DD/AA.
       @L    Linea serie a la cual está conectado getty.
       @S    Nombre del sistema.
       @T    Hora actual, en HH:MM:SS (24 horas).
       @U    Numero de usuarios actualmente conectados. Esto es, el numero
             de entradas en el fichero /etc/utmp que tienen un campo ut_name
             no nulo.
       @V    Valor de VERSION, dado en el fichero de opciones por defecto.
       Para que se vea el carácter '@', use '\@' o '@@'.

Después, asegúrese de que tiene un dispositivo de entrada y otro de salida para el puerto serie en que esté el módem. Si tiene el módem en ttyS3, necesitará los dispositivos /dev/cua3 y /dev/ttyS3. Si no tiene los dispositivos adecuados, vea la sección Creación De Dispositivos En /dev para saber como crearlos.

6.4 uugety a medida

Existen un montón de parámetros que puede configurar para cada puerto. Están implementados en distintos ficheros de configuración para cada puerto. El fichero /etc/conf.uugetty será usado por cada ejecución de uugetty, y /etc/conf.uugetty.ttySN será usado solamente para ese puerto. Se pueden encontrar ejemplos de ficheros de configuración por defecto en los ficheros fuentes de getty, que viene con la mayoría de las distribuciones de Linux. Debido a lo que ocupan, no lo vamos a listar aquí. Nótese que si está usando una versión antigua de getty (anterior a la 2.0.7e), o no está usando FSSTND, entonces el fichero por defecto debe ser /etc/default/uugetty.ttySN. Mi fichero /etc/conf.uugetty.ttyS3 es como sigue:

# ejemplo de fichero de configuracion de uugetty para un modem compatible 
# Hayes para permitir las conexiones a traves de módem 
# 
# fichero de bloqueo alternativo a comprobar ... si este fichero de bloqueo
# existe, entonces uugetty se ejecuta de nuevo y el modem se reinicia
ALTLOCK=cua3
ALTLINE=cua3
# línea a inicializar
INITLINE=cua3
# tiempo para desconectar si está inactivo ...
TIMEOUT=60
# cadena de inicializacion del modem ...
# formato: <esperado> <enviado> ... (secuencia de chat)
INIT="" AT\r OK\r\n
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
# esta linea configura el tiempo de espera antes de enviar el mensaje de login
DELAY=1
#DEBUG=010

Añada la siguiente línea a /etc/inittab, así uugetty se ejecutará en el puerto serie (sustituyéndolo por la información correcta para su entorno - localización del fichero de configuración, puerto, velocidad, y tipo de terminal por defecto):

S3:456:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F38400 vt100

Vuelva a ejecutar init:

linux# init q 

En el parámetro de velocidad de /etc/inittab, debe poner la velocidad en bps más alta que soporte su módem. Ya que uugetty no soporta velocidades de 57600 ó 115200 bps, debe usar el programa setserial para configurar el puerto serie a una velocidad superior. Vea la sección ¿Cómo puedo configurar el puerto serie para velocidades altas? para saber cómo hacer esto. Entonces, ponga 38400 bps en /etc/inittab.

Ahora Linux vigilará el puerto serie por posibles conexiones. Llame desde otro sitio y conéctese a su sistema Linux.

uugetty tiene muchas opciones, vea la página man de getty(1m) para una descripción completa. Además de otras cosas hay una característica de planificación y otra de rellamada.


Anterior Siguiente Indice