La PC
¿Tiene alguna PC que poseas un conector serial RS232/DE-9
?
Hace un tiempo vengo armando con la ayuda de algunos amigos y cybercirujeando la computadora que me acompañó
desde 1997 a alrededor del 2005.
En mi caso, estas son las especificaciones de mi PC retro hasta hoy:
Especificaciones | |
---|---|
Tipo | Personal Computer |
CPU | Penitum MMX 233mhz |
RAM | 256 MB (1997: 16MB) |
HDD | Compact Flash 32GB (1997: 2GB) |
RED | 3COM, RJ45 - La genérica que anda en cualquier lado |
Video | S3 ViRGE/DX 4MB + Voodoo 3DFX Linkeada (1997: Trident PCI TGUI9440 1MB/Oak 512kb) |
Audio | SoundBlaster 16 (1997: SoundBlaster AWE32) |
Media Removible | Disquetera 5 1/4, 3 1/2, CDRW, DVDRW |
Puertos | 1 Serial DE-9, 2 Paralelos DB-25, PS/2 |
Sistema Operativo | MS-DOS / Win 3.11 |
En este caso, lo que queremos hacer es conectarnos a BBSs
con terminales de la época, como
Terminate 5.0
. Lo que nos permitiría también, bajar archivos de estos sistemas siempre y cuando
soporten protocolos de transferencia de archivos como zModem
.
Los que ya se hayan conectado a una BBS
con telnet
a través de Internet, se habrán
dado cuenta ya que es posible bajar archivos de BBSs
a menos que se usen terminales especializadas,
como SyncTERM
.
En caso de usar mTCP
, con Packet Driver
en MS-DOS
, Telnet
también es una opción, pero tiene
la misma limitación.
Un Modem, Un Puerto, Cables y Una Emulación
Hablemos de RS232.
Generalizando, este standard permite la comunicación y envío de datos entre equipos, a través del puerto serie de las computadoras,
bajo el conector DE-9 (coloquial e incorrectamente llamado DB9
) que es el que se usaba normalmente, cuando conectábamos nuestro mouse serial a la PC.
Este cable, en un extremo usa el tipo de conector DE-9 y en el otro un tipo de conector llamado IDC-10.
Dicho esto, hay una cosa interesante cuando mencioné anteriormente sobre estos cables, son un standard
.
Lamentablemente, no lo son. Si tenés el cableado del cable hecho correctamente, entonces todos los pasos que siguen
van a ser muy fáciles. Pero si no, el intercambio de datos entre dos computadoras simplemente no va a suceder correctamente.
IDC-10 a DE-9
Resulta ser que hay dos "standares" grandes en el mundo de los cables seriales:
- AT/Everex
- DTK/Intel
Cada "standard" tiene su propio Pinout
particular. Primero tenes que saber cual standard usa tu motherboard. Luego de esto, tenes que chequear
como está hecho el cableado en el cable que va del motherboard al panel trasero de la PC y finalmente hacer los tests pertinentes
teniendo en cuenta las siguientes tablas:
Número Pin (interno) AT/Everex | Nombre de la Señal | Descripción | Número Pin RS232 DE-9 |
---|---|---|---|
1 | DCD | Data Carrier Detect | 1 |
2 | RXD | Receive Data | 2 |
3 | TXD | Transmit Data | 3 |
4 | DTR | Data Terminal Ready | 4 |
5 | GND | System Ground | 5 |
6 | DSR | Data Set Ready | 6 |
7 | RTS | Request to Send | 7 |
8 | CTS | Clear to Send | 8 |
9 | RI | Ring Indicator | 9 |
Número Pin (interno) DTK/INTEL | Nombre de la Señal | Descripción | Número Pin RS232 DE-9 |
---|---|---|---|
1 | DCD | Data Carrier Detect | 1 |
2 | DSR | Data Set Ready | 6 |
3 | RXD | Receive Data | 2 |
4 | RTS | Request to Send | 7 |
5 | TXD | Transmit Data | 3 |
6 | CTS | Clear to Send | 8 |
7 | DTR | Data Terminal Ready | 4 |
8 | RI | Ring Indicator | 9 |
9 | GND | System Ground | 5 |
Encontrá el COM1 en forma de conector IDC10
¿Como darse cuenta que pinout tenés? En el motherboard, buscando el numero de serie o buscando si la sigla
DTK
esta impresa en la plancha del motherboard cerca del número de serie. Si no encontrás nada, es posible que sea un AT/Everex
.
En el cable, con un multímetro. Le chantás un alambre finito a cada uno de los pines en el IDC y
sostenés la aguja del multímetro de un lado y del otro probas que PIN tiene continuidad.
Tomás nota de cada uno y comparás el resultado con alguna de las dos tablas anteriores.
Si corresponde, sabés que tipo de cable tenés. Si el cable es compatible con el motherboard, ya estás
en camino y tenés resuelta la parte más difícil. Todo lo demás, es tener los materiales nomás \o/ !
Cables
Interfase o conector USB a Serial
En la imagen de arriba, se ven dos cosas:
- Un cable RS232 Hembra-Hembra de tipo
Null Modem
- Un conversor USB a Serial, conectado a una Raspberry PI
Sobre el cable serial RS232 de tipo Null Modem, lo que hace a grandes rasgos es cruzar la señal RXD
y TXD
.
Comunmente, este tipo de cables se pueden conseguir en casas de electrónica. Y muy probablemente se cruce
el PIN 2 con el PIN 3.
Si prestás atención a la tabla de más arriba, esto funciona bárbaro con un AT/Everex
, pero en el caso de DTK/INTEL
estos cables simplemente no sirven, ya que cruzan otros pines.
Este artículo prácticamente lo escribo por esta misma situación. Mi motherboard tiene un pinout DTK/INTEL
.
En un principio, pensaba que los cables que iba consiguiendo prestados no funcionaban porque eran viejos o estaban
fallados, pero lo que en realidad sucedia, es que el pinout de los cables que conseguia estaban armados
para AT/Everex
.
Solo pude darme cuenta que estaba pasando en el momento en que me puse a testear con multímetro y un tester RS232 cable por cable, pin por pin, tratando de ver cuando los pines matcheaban al enviar y recibir datos.
Tester RS232. Configurar 300 baudios está muy bien para VER data
El otro extremo del cable USB a Serial, conectado al tester y al puerto serie de la PC
El null modem
y el conversor USB a Serial
tenian un pinout AT/Everex
, pero mi motherboard y el cable del motherboard al panel
trasero era incompatible con este "standard".
Soldar, no iba a soldar…
Asi que esta fue la conversación que tuve con un amigo que tiene una gigantezca colección de componentes electronicos:
- Hey fg! Necesito unos cables seriales para enchufar al motherboard
- ¿Cuántos necesitás?
- ¡TODOS LOS QUE TENGAS!
Y aquí abajo el resultado:
Un montón de cables seriales provistos por fg
Una vez que entendí cual era el problema de los pinouts y que tenia cables, motherboard y más cables todos más o menos incompatibles entre sí, con un par de horas de buscar cable por cable y testear los pinouts con el multímetro, di con la combinación de cables correcta. Cada uno de estos cables, también pueden ser de varios tipos y algunos cruzan pines y otros dejan los pines con una relación pin a pin directa.
Una vez todo resuelto y probando enviar y recibir data en ambos sentidos ya estaba listo para continuar con el proyecto.
Raspberry PI y TCPSER
Raspberry PI3 B+, conectado a mi red y también por USB al Serial-To-USB
En alguna que otra foto de este post se va a poder ver que la raspi
esta colgando sostenida por unos cables no muy ordenados.
Esta raspi
está conectada al conversor USB a Serial
. Este conversor tiene un chipset FTDI/FT232RL
y fue fabricado
por Digitus.
Una vez conectado este conversor, chequeamos que la raspberry vea el dispositivo USB y cargado el módulo de kernel correspondiente:
toshi@blackhole:~ $ lsusb |grep 232
Bus 001 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
toshi@blackhole:~ $ lsmod |grep ftdi
ftdi_sio 45056 1
usbserial 36864 3 ftdi_sio
toshi@blackhole:~ $ ls -lah /dev/ttyU*
crw-rw---- 1 root dialout 188, 0 jun 5 00:03 /dev/ttyUSB0
Ahora que tenemos el device /dev/ttyUSB0
disponible para nosotros, solo nos falta bajarnos
un programa llamado TCPSER.
TCPSER es un emulador Serial a Modem IP
que soporta todos los comandos Hayes standard.
Este programa es necesario porque vamos a engañar a nuestra PC retro y a Terminate 5.0
-
el programa para llamar a BBSs de esa época - haciéndole creer que en el COM1 o COM2
hay un Modem
del otro lado.
En mi caso, el comando TCPSER que me funcionó para esto fue el siguiente:
sudo ./tcpser -d /dev/ttyUSB0 -I -s 38400 -p 64128 -l4 -i "&k0&c0"
2023-06-05 17:14:41:1995661424:INFO:Server socket bound to port
2023-06-05 17:14:41:1995661424:INFO:Server socket listening for connections
2023-06-05 17:14:41:1995661424:INFO:Opening serial device
2023-06-05 17:14:41:1995661424:INFO:Opened serial device /dev/ttyUSB0 at speed 38400 as fd 8
2023-06-05 17:14:41:1995661424:INFO:serial device configured
2023-06-05 17:14:41:1993839712:INFO:Control Lines: DSR:1 DCD:1 CTS:1
2023-06-05 17:14:41:1993839712:INFO:Disconnecting modem
2023-06-05 17:14:41:1993839712:INFO:Disconnecting
2023-06-05 17:14:41:1993839712:INFO:Control Lines: DSR:1 DCD:1 CTS:1
2023-06-05 17:14:41:1993839712:INFO:Control Lines: DSR:1 DCD:0 CTS:1
[...]
La velocidad máxima de transferencia que pude lograr fue 38400 baudios. Para más información de que son los otros flags,
en el README.md
de TCPSER se puede leer una descripción de algunos comandos Hayes y algunas consideraciones
para armar los cables necesarios en caso de que no los tengas.
Terminate 5.0
La PC en Terapia Intensiva de coté ;D
Finalmente, cuando tenemos todo conectado, los cables chequeados, verificado que podamos escribir en ambas computadoras
data de un lado al otro bidireccionalmente, estamos listos para configurar Terminate 5.0
.
En la configuración de los dispositivos, seleccionamos nuestro COM
y seteamos los baudios
correspondientes.
Esto es muy importante: los baudios en los que corre TCPSER tienen que ser iguales a los de Terminate
o tu terminal
preferida. En caso que no funcione, probá bajando aún más la velocidad.
Una vez configurado correctamente, tenes que ver lo siguiente en tu pantalla:
ATZ, Ok! :D
Luego configurás tu BBS favorito:
Podés poner tanto una IP como un nombre de dominio acá más el puerto
Y dejás un OneLiner como corresponde cada vez que visitás algún sistema:
¡Saludos desde el "cyberdespacio"!
Habiendo hecho funcionar esto, pude transferir archivos con el protocolo zModem
desde Terminate 5.0
en una PC retro. "Llamar" a varias BBSs
, dejar mensajes y traer al presente esa
nostalgia de mirar un fondo negro, iluminado con los colores y dibujos de artistas ANSI
como muchas veces
lo he hecho, allá por el año 199x, antes de la Internet, el IRC y el Internet Explorer 5.0.