Contents
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 installEsto 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:
- modems HAMR5600 basados AMR/CNR/MDC/ACR en southbridge chips:
- Intel ICH0, ICH2
- Via 686A, 686B, 8231, 8233
- SiS 630
- ALI 1535.
- SmartPCI56/561/562/563 based PCI modem cards.
- SmartUSB56 based USB modem.
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:
- Descomprimimos el archivo que contiene el driver
- Entramos al directorio creado
cd slmdm-<tab>
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
- ejecutamos make, el paso 3 y 4 se puede resumir en
make KERNEL_INCLUDES=/ruta/a/las/fuentes/del/kernel/include
- 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
- Inicie SUSE LINUX y entre como una usuario.
- Abra una consola y entre el comando “su -”.
- Le pedirán el password de administrador, digitelo.
Entre el comando “yast -i smartlink-softmodem” para instalar un servicio necesario para que el sistema SmartLink funcione con YaST.
Deje la consola abierta, y en panel de control de YaST (YaST Control Center), seleccione System->Editor para /etc/sysconfig.
En la estructura de árbol de la izquierda, seleccione Hardware->Módem->SLMODEMD_DEVICE.
- 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”).
- Si tiene un módem interno, salte el siguiente paso y continúe con el paso 10.
- 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”.
- Clickee en aceptar y confirme los cambios con OK.
- 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
- Cierre la consola presionando la combinación de teclas [CTRL]+[D] dos veces.
Abra nuevamente el panel de control de YaST y seleccione Network Devices->Modem (Dispositivos de Red->Modem).
- 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.
- Aunque su modem sea detectado, seleccione Otro (no detectado) y clickee en configurar...
- En Dispositivo de modem, entre /dev/ttySL0 manualmente.
- Clickee en detalles.
- Coloque los Baudios a 115200.
- Ckickee Ok y luego siguiente.
- 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
- modems lucents:
- modems pctel:
PCTel HSP MicroModem Configuration mini-HOWTO
- Lista de modems soportados
- modems intel:
- modems placa base SiS
- modems lucents
- modems conexant (rockewell)
- modem mwave
- smartlink modems
Agradecimientos
Agradezco a toda la comunidad de software libre y en especial a la de Colombia.
Agradeceria que me enviaran la salida del comando 'lspci' si tienes un winmodem.
