Modems (I)
Los modems han caído casi en desuso como medio de conexión por su lentitud relativa, pero se siguen incorporando a los equipos por dos razones fundamentales; en los portátiles, como último recurso por si donde estamos no hay Ethernet, wifi o cobertura 3G/HDSPA, y, en general, para enviar o recibir faxes, que no terminan de ser desbancados totalmente por el correo electrónico.
En Ubuntu (GNU/Linux), instalar un modem es muy fácil. Si es un modem “de verdad”. Es decir externo y serial. Desafortunadamente la opción más habitual hoy en día son los llamados softmodems. Modems que implementan casi todas sus habilidades por software, y en los que es imprescindible instalar un controlador o ‘driver’ especialmente programado para cada modelo. Incluso se ha acuñado el término winmodem, ya que el único controlador que les suele acompañar es para Windows.
¿Que ventajas e inconvenientes tiene cada uno?
- Los modems -externos y seriales- tienen toda su lógica implantada en su hardware por lo que descargan al ordenador de tareas que consumen recursos; comprimir/descomprimir, control de errores etc.., además aislan nuestro PC de sus potenciales fallos. Por contra, son incómodos; más cables sobre la mesa o chismes a transportar, y, en comparación, algo más caros.
- La únicas ventajas de los softmodems es que son más baratos y pequeños, pudiendo integrarse fácilmente en el interior del un portátil. También habitualmente incluyen algunas otras funcionalidades como voz. Por contra, aparte del consumo de recursos del ordenador, suelen tener una eficiencia menor, y sus controladores, al quedar obsoletos, son dificilmente reemplazables una vez que se descatalogan, amén de que suelen contener errores, lo que también repercute negativamente en el funcionamiento de nuestro ordenador.
En general, compensa tener un modem “de verdad”, si tenemos un ordenador de sobremesa o le vamos a dar mucho uso. Por ejemplo uno de estos US-Robotics. Aunque los puertos serie ya han desaparecido de la trasera de los portátiles, y están empezando a desaparecer también de los ordenadores de sobremesa.
Por otro lado, ya empieza a haber cierta preocupación por parte de algunos fabricantes como Conexant en dotar a sus softmodems de los controladores necesarios para Linux. Especialmente tras la decisión de Dell de vender sus máquinas con Ubuntu instalado, y ya que incorporan estos.
Después de esta breve descripción de la situación, vamos a enfrentar la tarea de configurar estos “anticuados dispositivos”, pero útiles en muchas ocasiones.
Modem Serial
Basta sencillamente con conectarlo al puerto serie que tengamos disponible. Habrá que saber que estos puertos se nombran ttyS0, ttyS1, ttyS2 y ttyS3. Y ten en cuenta que los dispositivos serie no se conectan “en caliente”, como los USB, hay que apagar el ordenador, conectar el modem y volver a encenderlo.
Para ver como testearlo dirigete a la sección Probando al final del articulo teniendo en cuenta que donde se dice /dev/modem deberás poner /dev/ttyS0 .
Diagnóstico y Problemas
Si quieres comprobar que están configurados, y donde, puedes abrir un terminal y hacer:
dmesg | grep ttyS
La salida será algo como esto, si tienes solo el primer puerto serie:
[ 25.682503] serial8250: ttyS0 at I/O 0×3f8 (irq = 4) is a 16550A
[ 25.687091] 00:0a: ttyS0 at I/O 0×3f8 (irq = 4) is a 16550A
Tienes, así mismo, que fijarte que no hay ningún error asociado al puerto que aparezca a continuación de estas líneas.
Si le tienes “alergia” al terminal puedes ver estos mensajes con la aplicación Sucesos del sistema, del menú Sistema=>Administración, cargando el fichero /var/log/kern.log.
ttyS0: LSR safety check engaged!
Si te pareciera este error, significará que Ubuntu no ha podido configurar tu puerto adecuadamente, ya que el registro LSR de la UART indica error. Las razones de esto pueden ser variadas. La más común es que esté modificada la configuración por defecto de estos puertos en la BIOS del sistema. Intenta localizar los ajustes de los puertos COM en la BIOS y devuélvelos a sus valores por omisión.
Más de cuatro puertos y/o configuración personalizada
Si tienes más de cuatro puertos serie , o quieres configurarlos de manera personalizada, tendras que instalar el paquete setserial desde el Gestor de paquetes de Synaptic de Ubuntu.
Softmodems
Aquí la primera recomendación sería acudir a la página del fabricante, o en su defecto a Google, para comprobar si provee de algún driver específico. Y en este caso, bastará con seguir sus instrucciones. Como es el caso de Dell.
Un caso especial son los basados en el chip de Lucent/Agere, muy populares por cierto, y cuyo controlador viene incluido en Ubuntu.
Lo encontrarás en Sistema=> Administración=> Gestor de controladores restringidos.
En estos casos se trata de controladores cuyo código fuente esta “restringido”. Y si el fabricante decide cesar su desarrollo, ningún miembro de la comunidad o empresa podrá continuarlo. Lo que nos hace perder una de las ventajas del Open Source, y es que da soporte a dispositivos más allá de lo que lo suelen hacer los fabricantes.
Si no es tu caso habrá que preguntarse…
¿Que tipo de modem tenemos?
Para ello descargaremos una utilidad: scanModem.gz, que nos dirá que tipo de chipset tiene nuestro modem y que soporte se nos ofrece para él, del sitio linmodems.org:
- Si accedes con firefox, abre directamente el fichero en el gestor de archivadores, la aplicación predeterminada que te sugiere Firefox, y con Extraer descomprimelo en tu directorio home.
- Contiene un único archivo nombrado algo como scanModem.June19. Renombralo desde Nautilus como scanModem a secas.
- Ahora marcalo como ejecutable. Igualemente desde Nautilus seleccionalo, accede al menú contextual, y marca Propiedades=>Permisos=>Permitir ejecutar archivo como programa.
- Ejecútalo desde un terminal, bastará hacer click sobre él en Nautilus, e indicarle Ejecutar en un terminal.
Esta utilidad ha escaneado los modems que podamos tener conectados por USB, PCI o los audio+modem integrados. No chequea los conectados a un bus ISA, muy antiguos, sin Plug&Play. Lo que no significa que no puedan funcionar.
Verás que se ha creado un directorio llamado Modem en tu directorio home. El único fichero que nos interesa de él es Modemdata.txt. Cárgalo en el editor (con el conocido doble ‘click’). Y comprobarás que es profuso -y confuso- en información.
Tendrás que buscar en el fichero el tipo de modem que se trata. En mi caso encuentro:
Checking for audio+modem support in /proc/asound/pcm
00-01: ALI 5451 modem : ALI 5451 modem : playback 1 : capture 1
00-00: ALI 5451 : ALI 5451 : playback 32 : capture 1
Completed candidate modem analyses.
Ha habido suerte; este modem -de un Toshiba Satellite 1800- se maneja desde un driver de bajo nivel incluido en ALSA, que ya instala Ubuntu. Como comprobamos en esta página de la documentación de Ubuntu en la sección ‘Note about alternative drivers for some slmodems‘.
Instalación
Solo hemos de instalar un paquete adicional para que funcione: sl-modem-daemon, desde el Gestor de paquetes Synaptic:
Este paquete es el demonio que iniciará y configurará el controlador para que sea accesible al arrancar el ordenador.
Configuración
Para configurar el demonio editaremos, como root:
sudo gedit /etc/default/sl-modem-daemon
Aquí hemos de modificar:
- El dispositivo:
SLMODEMD_DEVICEy poner hw:0. O también puede ser hw:1 En el caso de los modems con chipset de ATI, el dispositivo se referencia como modem:0 o modem:1 - El país:
SLMODEMD_COUNTRYy poner el tuyo. Para conocer la lista válida de países en un terminal haz:slmodemd --countrylist - Otras opciones:
OPTSen donde pondremos “–alsa -s”, indicandole así que es un modem soportado por ALSA. La opción “-s” esta recomendada así mismo para alsa.
![[gedit sl-modem-daemon]](/images/gedit_sl-modem-daemon.png)
Blacklist
Hemos de colocar en la “lista negra” los drivers que no usemos salvo ’snd-intel8×0m’ que se necesita en el caso del ‘alsa’, ya que si no, te cargará algún otro y no funcionará.
Cargamos el archivo:
sudo gedit /etc/modprobe.d/blacklist-modem
y des-comentamos las líneas de los otros drivers que vienen en el archivo quitandoles la alnohadillla “#” que les precede.
Iniciando
Ahora podemos iniciar el demonio:
sudo /etc/init.d/sl-modem-daemon start
Que nos devuelve:
Starting SmartLink Modem driver for: hw:0.
Creating /dev/modem symlink, pointing to: /dev/ttySL0.
Nuestro modem es accesible desde este momento como dispositivo /dev/modem o /dev/ttySL0, como prefieras.
Probando
Podemos probarlo desde una consola de terminal:
- Abre dos terminales (o uno con dos solapas)
- En la primera introduce
cat /dev/modem. Y será la que recoja las respuestas del modem. - En la segunda
echo "AT" >/dev/modem. Que sera la que enviará los comandos al modem
ATZ: Reinicia el modem
ATI1,ATI2,ATI3: Devuelve información sobre el tipo de modem y fabricante
AT&F: Restaura el modem a los ajustes de fábrica.
Si todo va bien en la primera consola aparecerá:
AT
OK
Bien, ya tenemos modem.
Diagnóstico y Problemas
Si tenemos conexión con el modem, es decir nos ha devuelto “OK” al comando de consola, significa que lo tenemos bien configurado y el problema estará en los comandos que le lanza el programa que usemos en cuestíón. Un reseteo a los ajustes de fábrica con “AT&F” no estará de más como primer paso.
echo "AT&F" >/dev/modem
Tono de marcado
Si no detecta el tono de marcado hay que incluir en la cadena de inicialización X0 (ATX0). Esto hará que no espere la detección del tono de marcado antes.
Si no te funcionara la marcación por “tonos” (ATDT) indicale que lo haga por “pulsos” (ATDP).
Otros modems
Aunque tu audio modem no sea ATI, VIA, INTEL, ALI, NVIDIA o SIS yo probaría este proceso de instalación, ya que ALSA esta en continuo desarrollo y pudiera ser compatible.
slamr
Aunque no lo he investigado mucho, puede ser que tu modem requiera el paquete slamr. Esto, si no eres un usuario avanzado, es una mala noticia pues no esta distribuido con Ubuntu. Ha de ser descargardo de aquí. Es depedendiente de la versión del kernel y ha de ser recompilado, en su versión adecuada, cada vez que se actualice este.
Modems USB
Si el modem es USB no querremos que arranque el demonio slmodem al iniciar el ordenador, sino cuando se inserte el dispositivo. Para ello en el fichero de configuración /etc/default/sl-modem-daemon hemos de cambiar la opción DONTSTART de 0 a 1.
![[Home]](/wp-content/themes/OATech265/images/home.png)
![[Home]](/wp-content/themes/OATech265/images/feed.png)



































