Instalar driver para D-Link DSL200 en Ubuntu 7.04

El principal problema que puedes encontrarte en un sistema operativo es tener algún dispositivo hardware para el que no existan drivers, es decir que los programas de tu ordenador no puedan usar el cacharro que te has comprado. Yo soy un insatisfecho cliente de ONO, para conectarme por ADSL uso el modem usb d-link dsl 200 b1, que sólo viene con drivers para sistemas privativos. Por suerte en el activo mundo del software libre alguien se ha preocupado de programar un driver llamado eciadsl válido para una gran cantidad de modem adsl por usb.

Como la instalación del citado driver puede dar algún que otro quebradero de cabeza, voy a tratar de hacer una pequeña guia de los pasos que he seguido yo para poder conectarme a internet, particularizando para mi modem con ONO desde una Ubuntu Feisty (v 7.04)

  1. Comprobar que nuestro modem está soportado por el driver en esta página
  2. Comprobar que cumplimos los prerequisitos en cuanto a los paquetes que tenemos instalados. No voy a comentar nada de este paso porque deberían cumplirse para cualquier distribución moderna.
  3. En la sección de downloads de la página podemos ver que archivo descargar en función de nuestro kernel y si tendremos que parchearlo. En general para distros seminuevas nos bajaremos el archivo eciadsl-usermode-0.11.tar.gz sin más.

    Si nuestro kernel es superior a la versión 2.6.18 (como sucede con Ubuntu Feisty el driver por defecto no funciona. Debemos parchearlo con el synch.patch o bajarnos esta versión del driver ya parcheada:eciadsl-usermode-0.11-synch.patch.tar.bz2 (descargable desde el hilo 2.6.18 kernel problem del foro de eciadsl
    Para conocer la versión de nuestro kernel empleamos el comando uname -r

  4. El resto de pasos deben hacerse desde un terminal e identificados como root. Podemos hacer esto anteponiendo la orden sudo a cada uno de los comandos que aparecen aquí o directamente escribiendo su root en el terminal (a partir de ese momento se ejecutan todos los comandos como root.

    En Ubuntu no funciona automaticamente lo de hacer su root para solucionarlo: Sistema -> Administración -> Gestión de Usuarios y Grupos -> y cambiar la clave de root (que por defecto es la de nuestro usuario habitual)
    Con esto ya deberia funcionar.

  5. Descomprimimos el archivo y en el directorio donde lo hayamos hecho tecleamos las siguientes instrucciones (Doy por hecho que estamos usando el archivo ya parcheado):
    ./configure
    make
    make install

    Si tenemos el ubuntu de serie es probable que el configure falle con el siguiente error C compiler cannot create executables. Esto puede ser debido a varias cosas pero seguramente lo solucionaremos instalando algunos paquetes. Para ello introducimos el CD de Ubuntu. Después vamos a Sistema -> Administración -> Gestor de paquetes Synaptic.
    Buscamos el paquete build-essential. Tras unos instantes nos dirá que se necesitan instalar varios paquetes más, aceptamos y después le damos a Aplicar
    Con esto ya deberiamos poder crear los ejecutables tecleando los comandos anteriores.

  6. A continuación debemos descargar el fichero eciadsl-synch_bin.tar.bz2 también disponible en la sección de downloads y descomprimirlo en el directorio /etc/eciadsl. Este archivo contiene los archivos de sincronización .bin (son las información que necesita el modem para conectarse con el proveedor en la etapa en que uno de los leds parpadea)
  7. El siguiente paso es comprobar que tenemos el módulo dabusb deshabilitado. Para curarnos en salud lo que debemos hacer es (tras arrancar el ordenador con el modem desconectado)
    • Si existe el fichero /etc/hotplug/blacklist editarlo y añadir una línea con la palabra dabusb
    • Si no existe el fichero mencionado teclearemos en un terminal eciadsl-remove-dabusb

    A continuación podremos volver a conectar el modem.

  8. Toca configurar el driver. Para ello podemos emplear el comando eciadsl-config-tk(en modo gráfico) o eciadsl-config-text(en modo texto). Si tenemos el ubuntu de serie es poco probable que venga instalado tcl/tk necesario para usar el modo de configuración gráfico de modo que tendremos que emplear el modo texto.

    Si nos toca usar el modo texto y usamos ubuntu es probable que nos encontremos con más problemas. Si aparece algún error a la hora de introducir los datos (especialmente con la clave de conexión) puede ser porque la shell que usemos sea distinta a la que enlaza /bin/sh. En la configuración por defecto de mi Ubuntu 7.04 usa una shell bash pero /bin/sh apunta a una shell dash.

    Podemos ver cual es nuestra shell mediante echo $SHELL y este valor debería coincidir con el que haya en ls -l /bin/sh. Si no es así debemos cambiarlo. Esto podría variar de unos sistemas a otros pero en general será algo así como: ln -fs /bin/bash /bin/sh.

    Tras configurar el driver si queremos podemos volver /bin/sh a su estado original o dejarlo así. Para deshacer el cambio. Si cuando hicimos ls -l /bin/sh apuntaba a una shell que no fuera dash esa es la que debemos emplear en lugar de /bin/dash: ln -fs /bin/dash /bin/sh

    Cuando ejecutemos eciadsl-config-text tendremos que seguir (aproximadamente) los siguientes pasos.
    1. Configure all your settings
    2. Introducir el nombre de usuario que nos haya dado nuestro proveedor de acceso a internet
    La clave que nos hayan dado. (si no sabemos alguno de estos tendremos que llamar al servicio de atención al cliente)
    3. Seleccionamos nuestro proveedor. Si no aparece en la lista podemos seleccionar el 58 que es other con lo cual después tendremos que introducir a mano nuestro servidor DNS o bien seleccionar uno cualquiera de nuestro propio país que en general debería funcionar correctamente.
    4. Damos intro dos veces para aceptar los DNS por defecto (o escribimos los que queramos)
    5.VPI suele ser 8. VCI suele ser 35 (al menos estos son valores correctos para ONO en Pontevedra.
    6. A continuación seleccionamos nuestro modem.
    7. Después 5 intros aceptando los valores por defecto.
    8. A continuación vienen varias opciones que son dependientes del proveedor. En mi caso funciona escogiendo todas las opciones por defecto hasta que pregunta si nuestro proveedor usa DHCP que en mi caso es No y si usas IP estática que en general también será No. El fichero de sincronización que uso es gs7470_synch04.bin

    Aunque es probable que nos valgan varios ficheros de sincronización .bin distintos si cuando estemos conectando pone Synchronization successful y luego Couldn’t get channel number: Input/output error debemos probar otros ficheros. También podemos probar otros ficheros si notamos problemas de desconexiones o la sincronización es lenta. En el propio foro de soporte de eciadsl uno de los desarrolladores comenta que no conocen exactamente el protocolo de sincronización y que en caso de errores es conveniente probar otros ficheros. Para ello, debemos ejecutar eciadsl-config-text y seleccionar la opción 3 para escoger un nuevo fichero de la lista. A continuación podemos volver a ejecutar eciadsl-start para comprobar si hay mejoras.
    A la hora de probar un nuevo fichero lo mejor es apagar y encender el ordenador (no reiniciar) aunque desconectando y conectando el modem unos instantes después debería ser suficiente.

  9. Si todo ha ido bien ya deberíamos poder conectarnos a internet para ello tecleamos eciadsl-start y cruzamos los dedos.
Actualización: El proceso para escribir este post no fue lineal ya que no conseguí hacer funcionar el driver a la primera. Una de las cosas que probé fue a desinstalar el paquete restricted-manager pero no creo que sea necesario, aunque si estas desesperado quítalo. También deberías probar la versión vcs del driver, distintos ficheros .bin, a cambiar el kernel… En todo caso no desesperes en el foro de eciadsl hay multitud de mensajes y seguro que alguno se ajusta a tu problema. ¡Suerte!

Deja una respuesta