USB a Serial

modem

Al escribir la entrada anterior decía que estaban desapareciendo los puertos seriales, ya tanto de los portátiles como de los ordenadores de sobremesa, y esto me hizo recordar que tenía por ahí un dispositivo de esos que uno compra aunque no los necesite en ese momento, pero sobre los que tiene la intuición de que en alguna ocasión pueden serle útiles. Me refiero en este caso a un convertidor USB a Puerto Serial (RS232C).

Obviamente viene acompañado solo con un controlador para Windows. ¿ Servirá para Ubuntu ? Puede, pensé, ya que estos dispositivos, económicos y de marca relativamente desconocida, suelen estar basados en algún ‘chip’ de uso común a muchos de su clase, y buscando en Google, me aparece alguna información al respecto. Probemos…

Instalación

Al conectarlo, abriendo el Visor de sucesos del sistema del menú Sistema=>Administración, y viendo las últimas entradas de /var/log/syslog, nos aparece:

usb 1-2: new full speed USB device using ohci_hcd and address 5
usb 1-2: configuration #1 chosen from 1 choice
ftdi_sio 1-2:1.0:
FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected
FT8U232AM
usb 1-2: FTDI USB Serial Device converter now attached to
ttyUSB0

Bien, lo detecta y lo monta correctamente como dispositivo /dev/ttyUSB0, reconociendo el ‘chip’ en que esta basado: Un FTDI FT8U232AM, cuya página del fabricante es esta, y donde ofrece una completa información sobre él. Esto, aunque a nosotros como usuarios no nos sea de mucha utilidad, facilita el soporte futuro, ya que quien mantenga el driver contará con la información necesaria para hacerlo.

Probando

Lo podemos probar con un modem externo. Aquí deberemos instalar algún programa de terminal como minicom, desde el Gestor de paquetes Synaptic, ya que el procedimiento simple descrito para los modems no funciona. ¿ Porque ? Pues -creo- que por esta frase que encontramos en la Web del fabricante:

Features include data transfer rates of up to 3M…

El dispositivo, probablemente, se auto-configura por omisión a una velocidad muy superior a la que puede “digerir” el modem 115.200 baudios como máximo, en la mayoría de los casos.

[configuración de minicon]
Minicom es un emulador de terminal basado en texto muy completo.

  • Una vez instalado, abrimos un terminal y desde él invocamos a minicom
  • Pulsando Ctrl+A y después Z accedemos al menú general
  • Elegimos, pulsando O, la opción cOnfigure minicom y ahora, del nuevo menú, elegimos Serial Port Setup
  • Pulsando A nos dejará modificar el campo Serial device, donde escribimos /dev/ttyUSB0 y Enter
  • Pulsando Esc volvemos al menú anterior y salvamos la configuración con Save setup as dfl, otra vez Esc y salimos con Q; (’Quit’)

Ahora ya, una vez configurado minicom, lo volvemos a iniciar desde el mismo terminal y nos deberá mostrar una pantalla como esta, tras un breve mensaje ‘Initializing modem’:

[minicom pantalla de inicio]

En principio, no es necesario más, ya que responde ‘Ok’ a los comandos ‘AT’ de inicialización del modem, y por lo tanto, minicom se comunica con él correctamente.

Diagnóstico y Problemas

Podemos inquerir información sobre el dispositivo haciendo:
    cat /proc/bus/usb/devices

Que nos devuelve esta sección acerca de él:

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0b39 ProdID=0421 Rev= 2.00
S: Manufacturer=Generic
S:
Product=USB to Serial Converter
S: SerialNumber=OCB6U9TA
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Esta salida, quien tenga interés o necesidad, la puede interpretar con la ayuda de este documento

Velocidad

Si no lográramos conectar con el modem desde minicom podríamos intentar bajarle la velocidad de comunicación. Para ello accedemos al menú Serial port Setup como se indicó, y pulsando E accedemos a Comm Parameters. Pudiendo ajustarla a 57600 o 38400, por ejemplo.