Comunicaciones serie

Esta sección responde las preguntas mas frecuentes sobre las comunicaciones serie con FreeBSD. PPP y SLIP se tratan en la sección . ¿Cómo se si FreeBSD ha encontrado mis puertos serie?

Cuando el kernel de FreeBSD arranca, testeará los puertos serie del sistema que estén configurados en el kernel. Puedes estar atento a los mensajes de la cónsola o ejecutar el comando: dmesg | grep sio

una vez el sistema esté en funcionamiento.

Aquí tienes un ejemplo del resultado de la ejecución del comando: sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A

Esto muestra dos puertos serie. El primero en la irq 4 usando la dirección El kernel para más detalles. ¿Cómo se si FreeBSD ha encontrado mi módem interno?

Respondido en la sección anterior. He actualizado a 2.0.5 y mi

No te preocupes, han sido integrados en los dispositivos ¿Cómo accedo a los puertos serie en FreeBSD?

El tercer puerto serie, (conocido como COM3 en DOS), está en /dev/cuaa2 para dispositivos de salida (dial-out) y en /dev/ttyd2 para dispositivos de entrada (dial-in). Cuál es la diferencia entre estas dos clases de dispositivos?.

Usas los /dev/ttydX en "blocking mode", un proceso esperará para que el dispositivo ¿Cómo activo el soporte de tarjetas serie multipuerto?

Otra vez, en la sección de configuración del kernel tienes la información. Para una tarjeta multipuerto, pon una línea para cada puerto serie de la tarjeta en el fichero de configuración del kernel. Especifica la irq y vector solo en una de las líneas. Todos los puertos de la tarjeta compartirán la misma irq. Por consistencia, usa el último puerto serie para especificar la irq. De la misma manera, especifica la opción El siguiente ejemplo es para una tarjeta AST 4-port en la irq 7: options "COM_MULTIPORT" device sio4 at isa? port 0x2a0 tty flags 0x781 device sio5 at isa? port 0x2a8 tty flags 0x781 device sio6 at isa? port 0x2b0 tty flags 0x781 device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr

Los flags indican que el puerto master tiene un número menor de 7 ( ¿Puede manejar FreeBSD tarjetas multipuerto compartiendo irq?

Todavía no. Tendrás que usar una irq diferente para cada tarjeta. ¿Puedo cambiar los parámetros serie por defecto para un puerto?

El dispositivo stty -a -f /dev/ttyd1 Cuando le cambias la configuración a este dispositivo, este cambio se mantiene hasta que el dispositivo se cierra. Cuando se reabre, vuelve a la configuración por defecto. Para hacer cambios sobre la configuración por defecto, puedes abrir y ajustar las opciones del "estado inicial" del dispositivo. Por ejemplo, para poner el dispositivo tty5 en modo XON/XOFF, haz stty -f /dev/ttyid5 clocal cs8 ixon ixoff

Un buen lugar para hacer esto es en /etc/rc.serial. Ahora, una aplicación tendrá esta configuración por defecto cuando abra el puerto También puedes prevenir o limitar ciertos cambios que pretenda hacer una aplicación. Para ello, ajusta el "lock state" del dispostivo. Por ejemplo, para bloquear la velocidad del puerto stty -f /dev/ttyld5 57600

Ahora, una aplicación que abre Naturalmente, deberías hacer que el estado inicial y el estado de bloqueo sean solo de escritura para el usuario ¿Cómo puedo activar logins de entrada en mi módem?

Quieres hacerte proveedor de Internet, eh?. Primero, necesitarás uno o mas módems que puedan responder automáticamente. Tu módem necesitará activar el carrier-detect sólo cuando detecte una portadora y no tenerla activada continuamente. Necesitará cortar la comunicación y resetearse él mismo cuando la línea RTS/CTS para el control de flujo. Finalmente, debe usar una velocidad constante entre el ordenador y él mismo, pero debería negociar la velocidad entre él mismo y el módem remoto.

Para muchos módems compatibles Hayes, este comando creará estas configuraciones y las grabará en la memoria no volátil: AT &C1 &D3 &K3 &Q6 S0=1 &W

Mira la sección para saber como enviar estas configuraciones al módem sin necesidad de un programa terminal de DOS.

A continuación, añade una línea en el fichero para el módem. Este fichero lista todos los puertos en los que el sistema operativo esperará los logins. La línea sería como esta: ttyd1 "/usr/libexec/getty std.57600" dialup on insecure

Esta línea indica que el segundo puerto serie /dev/ttyd1 tiene un módem conectado, la velocidad es de 57600 bps y sin paridad (Muchos usuarios, ponen un sus ficheros .profile o .login un prompt para el tipo de terminal. El ejemplo muestra el puerto como inseguro. Para ser root en ese puerto, hacer el login como un usuario normal, y ejecutar el comando su. Si en lugar de inseguro, el terminal es seguro (secure), puedes hacer login como root directamente.

Despues de modificar el fichero , necesitas lanzar una señal : kill -HUP 1

Esto fuerza al proceso init a releer el fichero . El proceso init arrancará los procesos getty en todos los puertos configurados como "on". Puedes ver si los logins están disponibles en los puertos tecleando: ps -ax | grep '[t]tyd1'

deberías ver algo como: 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1 ¿Cómo puedo conectar un dumb terminal a un FreeBSD?

Si estás usando otro ordenador como terminal en tu sistema FreeBSD, usa un cable null módem entre los dos puertos serie. Si ya estás usando un terminal, mira en las instrucciones del mismo.

A continuación, modifica el fichero Por ejemplo, si estás instalando un terminal WYSE-50 en el quinto puerto serie, usa una línea como esta: ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure

Este ejemplo muestra que el puerto /dev/ttyd4 tiene un terminal Wyse50 conectado a 38400 bps sin paridad y los logins de root son permitidos. ¿Porqué no puedo ejecutar

En tu sistema, los programas y son probablemente ejecutables solo por y el grupo Alternativamente, puedes dejar que todos los usuarios de tu sistema ejecuten # chmod 4511 /usr/bin/cu # chmod 4511 /usr/bin/tip Mi módem hayes no está soportado. ¿Que puedo hacer?

Actualmente, el man de está anticuado. Hay un dialer Hayes genérico. Solo usa ``.

El driver Hayes no es tan desarrollado como para reconocer algunas de las características avanzadas de los módems modernos, mensajes como (utilizando la cadena También, el timeout de llamada para ¿Cómo puedo introducir estos comandos AT?

Haz lo que se llama una entrada . Por ejemplo, si tu módem está conectado al primer puerto serie, /dev/cuaa0, escribe la siguiente línea: cuaa0:dv=/dev/cuaa0:br#19200:pa=none

Usa la velocidad más alta que soporte tu módem en la sección br. A continuación teclea y estarás conectado al módem.

Si no existe el dispositivo /dev/cuaa0 en tu sistema , teclea lo siguiente: # cd /dev # ./MAKEDEV cuaa0

O usa el comando cu como root con los siguientes parámetros: # cu -l``line'' -s``speed''

con line siendo el puerto serie (por ejemplo /dev/cuaa0>) y speed siendo la velocidad (por ejemplo 57600. Cuando termines de entrar los comandos AT, pulsa la tecla . para salir. El símbolo

El símbolo un número de teléfono determinado. Pero el símbolo . Pon una contrabarra junto al carácter: pn=\@ ¿Cómo puedo llamar desde la línea de comandos?

Pon lo que se llama una entrada . Por ejemplo: tip115200|Dial any phone number at 115200 bps:\ :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du: tip57600|Dial any phone number at 57600 bps:\ :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

Entonces puedes hacer cosas como antes que , usa una entrada genérica de cu: cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

y teclea `` ¿Tengo que teclear la velocidad cada vez que hago esto?

Pon una entrada para piensa que una buena velocidad por defecto es 1200 bps ya que busca una entrada Accedo a diferentes hosts a través de un servidor de terminales.

En lugar de esperar a que estés conectado y teclear : pain|pain.deep13.com|Forrester's machine:\ :cm=CONNECT pain\n:tc=deep13: muffin|muffin.deep13.com|Frank's machine:\ :cm=CONNECT muffin\n:tc=deep13: deep13:Gizmonics Institute terminal server:\ :dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:

Esto hará que puedas teclear ¿Puede tip intentar más de una línea para cada lugar?

Este es un problema habitual en universidades con diferentes líneas de módem y unos cientos de usuarios intentado usarlas...

Haz una entrada para tu universidad en el fichero y usa \@ para la opción big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

Entonces, lista los números de teléfono de la universidad en el fichero : big-university 5551111 big-university 5551112 big-university 5551113 big-university 5551114

intentará cada uno de estos números en el orden en el que estén listados. Si quieres que se realicen reintentos, ejecuta ¿Porqué tengo que teclea CTRL+P dos veces para enviar CTRL+P una vez?

CTRL+P es el carácter por defecto de "forzar", usado para indicarle al programa que el próximo carácter es un dato literal. Puedes configurar el carácter "forzar" a cualquier otro carácter con el escape Teclea Puedes tener el carácter de forzar donde quieras, especificando lo siguiente en tu fichero $HOME/.tiprc force= De repente, todo lo que tecleo es en mayúsculas

Has debido pulsar CTRL+A, tiene este carácter especial para gente que tenga la tecla caps-lock estropeada. Usa Aqui hay un ejemplo del fichero .tiprc perfecto para usuarios de Emacs que necesiten teclear CTRL+2 y CTRL+A muchas veces: force=^^ raisechar=^^

El simbolo ^^ es SHIFT+CTRL+6. ¿Cómo puedo hacer transferecia de ficheros con

Si estás conectado con otro sistema UNIX, puedes enviar y recibir ficheros con y en el sistema remoto para aceptar y enviar ficheros. La sintaxis es: ~p [] ~t []

No hay chequeo de errores, por lo que es mejor usar otro protocolo como zmodem. ¿Cómo puedo usar zmodem con

Primero, instala uno de los programas zmodem de la colección de ports (por ejemplo y ).

Para recibir ficheros, inicia el programa de envío en la parte remota. A continuación, pulsa enter y teclea Para enviar ficheros, inicia el programa de recepción en la parte remota. A continuación pulsa enter y teclea FreeBSD parece que no puede encontrar mis puertos series aún cuando la configuración es correcta.

Las placas bases y tarjetas con UARTs de Acer no son detectadas correctamente por FreeBSD durante la fase de detección serie. Obten un parche de para solucionar el problema.