Soft-modem en linux

Introduccion

Este texto va dirigido a todas aquellas personas que tienen problemas al configurar e instalar los drivers para sus softmodems (Si no sabes que es un softmodem: http://www.devidal.tv/~chris/winmodems/winmodem_es.html ).

El presente texto lo libero con licencia Creative Commons, es decir, cualquier persona que quiera hacer una cambio al mismo lo puede hacer, pero me debe mandar una copia de su cambio, espero a que muchas personas me envien sus experiencias exitosas con configuracion de softmodems para incluirlas en el mismo.

Identificando el modem

El primer paso a seguir es identificar que 'modem' tenemos, para esto nos podemos ayudar del comando lspci (si no sabes la ruta de este comando puedes intentar which lspci, la mayoria de veces esta en /sbin/lspci ), este comando nos lista los dispositivos pci que tengamos, de esta lista nos interesa la linea del modem. por ejemplo:

00:01.6 Modem: Silicon Integrated Systems [SiS] 56k Winmodem (Smart Link
HAMR5600 compatible) (rev a0)

En este caso podemos ver la linea que identifica el modem, está en un chipset SiS, estas lineas son variables, dependiendo del hardware que estemos usando, y es posible encontrar drivers como no encontrarlos, lo mas probable es que tengamos que configurar el kernel, pero esto no es del todo necesario.

Para identificar nuestro modem, podemos usar el siguiente script: http://linmodems.technion.ac.il/packages/scanModem.gz

Lo descomprimimos con gunzip, y le damos permisos de ejecucion:

krawek@gentoo modem $ gunzip scanModem.gz

krawek@gentoo modem $ ls scanModem

krawek@gentoo modem $ chmod 755 scanModem

krawek@gentoo modem $ ./scanModem

Compilando los drivers

Si tenemos las fuentes instaladas del kernel en nuestra distribucion (puedes mirar si las tienes en ls -ld /usr/src/linux* ), podemos proseguir a compilar e instalar nuestros drivers, la forma de compilarlos está especificada en el README de los drivers que consigas.

Lo mejor es que instales las fuentes del kernel de tu distribucion.

Si recives un error como que no se encuentra el archivo modversions.h significa que no has configurado el kernel, puedes intentar solucionar esto haciendo lo siguiente:

cd /usr/src/`uname -r`
cp /proc/config .config
(si esto no funciona, cp /boot/config-`uname -r` .config)
make oldconfig
make dep

E intentar volver a compilar los drivers, en caso de que esto falle sigue uno de los pasos mas duros y con los que mas se aprende, la mayoria de las veces los drivers necesitan las fuentes del kernel, las cuales tambien en muchos casos no estan instaladas, esto lo podemos arreglar consiguiendo las fuentes del kernel, y colocandolas en su lugar, para esto debemos descargar las fuentes del kernel de http://www.kernel.org y descomprimirlas en /usr/src/, la ultima version estable del kernel es la version 2.6.5 de la rama 2.6, para la cual no estan portados los drivers para los modems, la version estable de la rama 2.4 es la 2.4.25.

Tomando como ejemplo la version 2.4.25 lo que tenemos que hacer es lo siguiente:

cd /usr/src/
tar xvjf linux-2.4.25.tar.bz2
ln -sf /usr/src/linux-2.4.25 /usr/src/linux
(esto es importante por que las fuentes por defecto estan en /usr/src/linux).
cd linux

y configurar el kernel para luego compilarlo, aqui hay una guia de como hacerlo: http://www.frikis.org/staticpages/index.php?page=kernel

Después de que tengas todo listo, podras proseguir a la compilacion de los drivers.

Compilar drivers especificos

Espero la colaboracion de muchas personas que hayan tenido exito con esto, para hacer un documento completo.

Intel 537

Lo primero que debemos hacer es conseguir el driver, este se encuentran en la siguiente direccion: http://developer.intel.com/design/modems/support/drivers.htm

Lo descomprimimos, accedemos al directorio, y como siempre leemos el README, en este caso readme.txt, en la parte de instalación dice bastante claro lo que hay que hacer, por favor leelo completo.

Si tu placa es AC'97 no podras usar este driver, puedes ver esto ejecutando el siguiente comando:

/sbin/lspci | grep -i AC

Puedes darte cuenta de esto, si al cargar el modem te da problemas, y miras la salida del comando:

$ dmesg

al final pondrá la información, en última instancia trata de usar el driver smartlink.

Traduzco un poco:

----

3.  INSTALACION

Prerequisitos:
   1. acceso como root
   2. una shell bash
   3. un Intel soft modem (537, 537EP, 537SP, 537AA or 537EA)
   4. LAS FUENTES DE LAS CABECERAS DEL KERNEL QUE ESTA CORRIENDO
      (se encuentran en el cd de su distribucion)

6 pasos para instalar
   1. logueese como root
   2. extraiga el archivo asi:
   "tar -zxvf <archivename>.tgz"
   3. cambie el directorio al directorio creado
   4. Teclee: make clean
   5. Teclee: make all
   6. Teclee: make install

Esto creará el dispositivo /dev/modem. Este archivo es usado como interface del modem con todas las aplicaciones: minicom, kpppd, efax, (wvdial) etc. Por favor configura las aplicaciones para usar /dev/modem si es necesario.


Si solo quieres compilar, puedes intentar en lugar de make install, teclear

make 537.

Antes de intentar marcar debemos asegurarnos de que hayan quedado bien compilados, para esto podemos ejecutar el comando

depmod -a

si hay algun mensaje que diga, "unresolved symbols", lo mas probable es que no consigamos acceder a internet, en este caso debemos compilar el kernel a mano y volver a intentar compilar los drivers. Otro aspecto a tener en cuenta es el hamregistry, el cual es una utilidad para proveer persistencia de las configuraciones, para darnos cuenta si se esta ejecutando, podemos hacer

ps aux | grep ham

después de seguir todos estos pasos, ya puedes marcar y disfrutar de tu conexion a internet.

Si tienes un kernel de la rama 2.6 lo compilas de esta forma:

make 537_26

en lugar de

make 537

Modems PCTEL

El modem intel 537 tambien puede funcionar con estos drivers, este driver lo puedes conseguir en: http://linmodems.technion.ac.il/pctel-linux/

bajamos la ultima version de los drivers, que contiene un script que autodetecta el modem e instala los drivers.

Se debe tener en cuenta, que los drivers usan /dev/ttyS15, después de instalar y cargar los drivers has un enlace a ese dispositivo de la siguiente forma

ln -sf /dev/ttyS15 /dev/modem

Estos drivers tienen un problema trabajando con el sonido, si recibes un mensaje que dice que el modem no responde, o algun error similar, prueba desactivando el sonido, y prueba a~adir la siguiente cadena de inicio al modem:

AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0

Esta es la lista de todos los modems soportados por estos drivers con sus respectivos chipsets: http://pctelcompdb.sourceforge.net/display.php

Modems conexant

Estos drivers son comerciales, se debe pagar por la version completa de ellos (US$ 14.95), la version gratuita solo soporta 14.4Kbps. El driver lo podemos conseguir en: http://www.linuxant.com/drivers/

Su configuración e instalación es sencilla y son drivers que funcionan muy bien. http://www.mbsi.ca/cnxtlindrv/

Modems lucents

Estos modems si tiene buen soporte en linux, la explicación de la instalación en cada distribución la encontramos en: http://www.heby.de/ltmodem

igual que en todos los drivers, necesitamos los headers (fuentes) del kernel que tenemos corriendo.

Modem IBM's Mwave modem

Este modem tiene soporte dentro del kernel, activas la opcion:

Character Devices -> ACP Modem (Mwave) support:

De la ayuda del kernel:

----

The ACP modem (Mwave) for Linux is a WinModem. It is composed
of a kernel driver and a user level application. Together
these components support direct attachment to public switched
telephone networks (PSTNs) and support selected world wide countries.

This version of the ACP Modem driver supports the IBM
Thinkpad 600E,600, and 770 that include on board ACP modem hardware.

----

También los podemos conseguir en: http://www-124.ibm.com/acpmodem/

y como ven tiene buen soporte.

Smart Link

Este driver lo podemos encontrar en http://www.smlink.com/

soporta:

en el momento soporta

Si la salida del lspci contiene Intel537 AC97 este driver es el que debe usar

Instalación:

La forma de instalar es la siguiente:

  1. Descomprimimos el archivo que contiene el driver
  2. Entramos al directorio creado
    •   cd slmdm-<tab>
  3. Editamos el archivo Makefile, la parte que dice: KERNEL_INCLUDES y lo ponemos donde esten los 'includes' del kernel, por defecto /usr/src/linux/include

  4. ejecutamos make, el paso 3 y 4 se puede resumir en
    •   make KERNEL_INCLUDES=/ruta/a/las/fuentes/del/kernel/include
  5. Para la instalación hay dos pasos, si es un modem usb:
    •   make install-usb

si es amr:

make install-amr

ahora podemos usa el driver, primero y como unica vez

depmod -a

ahora podemos cargar el driver con el siguiente comando:

modprobe -f slmdm

para iniciar el modem, necesitamos lanzar la aplicacion slmodemd, la cual creara un dispositivo /dev/ttySL0 y un enlace simbolico a /dev/modem

Instalar este driver en Ubuntu

Para instalar este driver en ubuntu hay dos caminos, el primero es instalar el binario que provee la distribución y el segundo paso es compilar el driver...

La forma de instalar el binario es la siguiente:

# apt-get install slmodem-daemon

Para compilar el driver, primero debemos hacer lo siguiente:

# apt-get install build-essential

si con el comando anterior no son instalados los headers del kernel, se debe hacer manualmente:

# apt-get install linux-headers-[version]

luego de hacer make y make install, copiamos el archivo

   scripts/debian/slmodemd a /etc/init.d/

y lo añadimos al inicio del sistema

   update-rc.d slmodemd defaults

asi cada vez que iniciemos podremos conectarnos sin necesidad de cargar manualmente el driver, en este punto debemos iniciarlo manualmente:

/etc/init.d/slmodemd start

Instalar este driver en SuSE

A continuacion se muestra el procedimiento para instalar un modem Intel 537 en la distribucion SuSE 9.1

  1. Inicie SUSE LINUX y entre como una usuario.
  2. Abra una consola y entre el comando “su -”.
  3. Le pedirán el password de administrador, digitelo.
  4. Entre el comando “yast -i smartlink-softmodem” para instalar un servicio necesario para que el sistema SmartLink funcione con YaST.

  5. Deje la consola abierta, y en panel de control de YaST (YaST Control Center), seleccione System->Editor para /etc/sysconfig.

  6. En la estructura de árbol de la izquierda, seleccione Hardware->Módem->SLMODEMD_DEVICE.

  7. En esta sección, seleccione la entrada SLMODEM_COUNTRY. Si es necesario reemplace el dato con el país donde usted se encuentra. Puede mirar una lista completa de los países soportados usando en la consola el comando “slmodemd –countrylist”. (Yo personalmente deje el valor por defecto “USA”).
  8. Si tiene un módem interno, salte el siguiente paso y continúe con el paso 10.
  9. Si tiene un módem USB, seleccione la entrada SLMODEMD_DEVICE en el árbol y reemplace el dato que aparece en la casilla de la derecha con “slusb0”.
  10. Clickee en aceptar y confirme los cambios con OK.
  11. Vaya a la consola que dejamos abierta, y entre los siguientes comando el orden en que están:
    •         insserv -d slmodemd
              /etc/init.d/slmodemd start
  12. Cierre la consola presionando la combinación de teclas [CTRL]+[D] dos veces.
  13. Abra nuevamente el panel de control de YaST y seleccione Network Devices->Modem (Dispositivos de Red->Modem).

  14. Si ya tiene configurado su modem con YaST, borre toda la información inclusive la del proveedor de internet...y termine el dialogo de configuración. Ahora reabra la configuración del modem.
  15. Aunque su modem sea detectado, seleccione Otro (no detectado) y clickee en configurar...
  16. En Dispositivo de modem, entre /dev/ttySL0 manualmente.
  17. Clickee en detalles.
  18. Coloque los Baudios a 115200.
  19. Ckickee Ok y luego siguiente.
  20. De acá en adelante configure su proveedor de internet

Modem Netodragon

El modem netodragon es compatible con la familia de modems smartlink, por lo que se pueden usar los mismos drivers, tambien se pueden encontrar drivers precompilados en internet, una referencia puede ser: http://www.linuxcompatible.org/cdetail11280.html

Notas sobre este driver

La version 2.9.10 de este driver solo funciona con kernels <= a 2.6.10, y usa una version de kernel mayor a esta debe aplicar el siguiente hack: Edite el archivo amrmo_init.c que se encuentra en el directorio drivers/ dirijase a la linea 743

743         if (!pci_register_driver(&amrmo_pci_driver)) {
744                 pci_unregister_driver(&amrmo_pci_driver);
745 #ifndef OLD_KERNEL
746                 class_simple_destroy(amrmo_class);
747 #endif
748                 return -ENODEV;
749         }

y cambie todo eso por:

pci_register_driver(&amrmo_pci_driver);

tambien puedes intentar engañar al kernel cambiando la lincencia del driver, cambiando la linea:

    689 MODULE_LICENSE("Smart Link Ltd.");

por

MODULE_LICENSE("GPL");

Links de interes y referencia

Agradecimientos

Agradezco a toda la comunidad de software libre y en especial a la de Colombia.

krawek@linuxmail.org

Agradeceria que me enviaran la salida del comando 'lspci' si tienes un winmodem.


CategoryGnuLinux

Soft-modems_en_Linux (last edited 2008-04-20 14:40:23 by localhost)