WL-159g working on GNU/Linux!!!

Así es señores, luego de 8 meses de sufrimiento tratando de hacer funcionar mi placa wireless WL-159g en mi Debian GNU/Linux, lo conseguí!.

Empiezo por el principio, hace 8 meses me compre una notebook ASUS Z94L, la cual previamente consulte en google si funcionaba en GNU/Linux, y el resultado fué positivo.Mi sorpresa llegó cuando quise levantar la wireless, dado que si bien el módulo para esta placa ya es parte de la rama oficial del kernel ( a partir de la versión 2.6.18 ), no había forma de hacerla funcionar… levantaba, escaneaba pero no había forma de que se quedara fija en un canal, escaneaba eternamente 😦 . Bueno, esto me llevó por un montón de caminos, desde probar las versiones del driver del fabricante (la empresa Zydas), a probar el driver que viene con Debian (paquete zd1211-source), pero nada parecía dar resultado. Después llegó la etapa de consultar en la lista de este módulo, donde basicamente me dijeron, “tiene que andar, esta todo en orden” :(…. bueno… después de esto entre en un estado de depresión terrible.. no podía ser que a mi fuera la única persona a la que no le funcionaba esta placa wireless (según http://www.linuxwireless.org/, esta placa funciona perfectamente en GNU/Linux), al punto de que cuando buscaba en google, me encontraba con mis propias consultas en los foros!!!. Así que pasé por etapas como la de compilar el kernel a pata, con el modo debug activado al mango para este módulo, recabar todos los logs y enviarlos a la lista de desarrollo del módulo nuevamente (sin respuesta satisfactorias), bajarme el código del módulo del svn y empezar a tratar de deducirlo (deserté a los 30 min :(, todo lo que es módulo esta en C (Puajjjj) ), bajarme el kernel que usan los desarrolladores del modulo desde su git de desarrollo y compilarlo (si, si, el mismo fuente de kernel con el modulo que usa para probarlo y demás)…. pero nada de nada.

Después probé con el ndiswrapper… con el cual me funciono, pero sin buenos resultados… dado que cada cierto tiempo me colgaba el kernel (si un bruto kernel panic 😦 ), y eso era muuuy feo, porque tenía que reiniciar…( ustedes sabe que la gente de GNU/Linux se pone colorada cuando le pasa esto, el resto esta acostumbrado, pero nosotros no 😉 ).

Bueno, luego de que las esperanzas se esfumaran, hoy leo en la lista de desarrollo de este módulo, que el fabricante (Zydas) a liberado una nueva versión del driver :), y como no podía ser de otra manera… ahí estaba de nuevo compilando y demás… pero esta vez con un resultado totalmente positivo… ANDA y no solo que no se cuelga, sino que funciona mejor que con el ndiswrapper!.

Comento los pasos para aquellos que se encuentren en la misma situación:

*Primero que nada, mi kernel es el 2.6.21-2-686.

* Paso 1: bajar el firmware del módulo de http://sourceforge.net/project/showfiles.php?group_id=129083&package_id=187875, la versión que yo estoy usando es la 1.3 (el archivo se llama zd1211-firmware1.3.tar.bz2 ) y descomprimirlo en /lib/firmware (va a crear una carpeta zd1211-firmware).

O sea:

cp zd1211-firmware1.3.tar.bz2 /lib/firmware

cd /lib/firmware

tar xvfj zd1211-firmware1.3.tar.bz2

* Paso 2: bajar el nuevo driver de http://dsd.object4.net/zd1211-vendor/releases/ZD1211LnxDrv_2_21_0_0.tar.gz y copiarlo a /usr/src ( o a donde a vos te parezca mejor), y descomprimirlo:

cd /usr/src/

wget http://dsd.object4.net/zd1211-vendor/releases/ZD1211LnxDrv_2_21_0_0.tar.gz

tar xvfz ZD1211LnxDrv_2_21_0_0.tar.gz

cd ZD1211LnxDrv_2_21_0_0/

make

* Paso 3: si todo lo anterior salió bien y el módulo compilo bien, estamos… nos faltan tocar algunas cositas mas como agregar al blacklist el módulo zd1211rw y agregar el módulo zd1211(el que compilamos recién) al archivo de módulos que se cargan al inicio. O sea:

Modificamos el /etc/modprobe.d/blacklist y agregamos al final:

blacklist zd1211rw

(eso es para que no cargue ese módulo al inicio, ese es el módulo que viene en el kernel, y que a mí no me anda).

Luego modificamos el /etc/modules y agregamos al final:

zd1211

(esto hace que este módulo se cargue automáticamente cada vez que iniciamos el sistema)

* Paso 4: ya casi estamos.. nos falta modificar el /etc/network/interfaces y agregar algo como :

auto wlan0

iface wlan0 inet dhcp #si es que levantan la interface por dhcp

y listo!!!! ya estamos, para corroborar que todo funciones, reiniciamos la máquina (o sino hacemos modprobe zd1211, para cargar el módulo y no esperar a que se cargue automáticamente en el próximo reinicio) y deberíamos tener una interface llamada wlan0 (si no aparece, hacemos un ifconfig wlan0 up). Después lo de siempre iwconfig wlan0 essdi miRed

Bueno, espero que le pueda ser de utilidad a alguién, en caso de que ese alguién este pasando por el mismo calvario por el que yo pasé.

Anuncios

28 comentarios sobre “WL-159g working on GNU/Linux!!!

  1. Gracias Maxi por este post. Comento que a pesar de tener el mismo modelo de notebook el dispositivo wireless es distinto, y utiliza el módulo zd1211b que también se compila desde las fuentes que mensionás en tu post. En mi caso 0b05:171b por lo que tuve que agregarlo en el archivo ./src/zdusb.c (se entiende que corresponde al directorio src de las fuentes) y obviamente en lugar de agregar al final de /etc/modules el módulo zd1211 vá el zd1211b.
    Saludos desde Tostado, Santa Fe, Argentina.

  2. genio…. estoy desde ayer con el ndiswrapper.. y no consigo nada.. puse en google el id de la placa de mi notebook, y magicamente llegue aca 🙂

    pase por la misma que vos.. no sos el unico que se deprime, pero si el primero que lo supo arreglar

  3. Hi, I’m sorry but I can’t speak spanish. I’m italian. I have the same wireless-card (Asus wl-159g) that uses the zd1211rw driver on linux. With this driver it doesn’t work properly, and if I use ndiswrapper i get a kernel panic. I’ve red your tutorial, but my wireless card doesn’t work, even if I can compile and load the new module (zd1211). If I try to do “iwconfig” I get “no wireless extension”…how I can do? Thank you.

  4. Franz, you must do ifconfig INTERFACE up before iwconfig. Where INTERFACE is you wireless card interface (eth0 or eth1 or wlan0, etc). If you don’t know what interface is, see the output of ifconfig -a , and then try with each one. I hope this help you.

  5. Hi sorry I do not speak your language but I read through google translator and your tip solve my problem with Asus WLG card ; Many many thanks after long time hunting solution!

    Best regards,

  6. Lotus and the other people who is reading this… in the new kernel (2.6.24-1-XXX), zd1211rw module works great!, and you don’t need do anythings, just download firmware and put them into /lib/firmware and ensure zd1211rw isn’t blacklisted and do modprobe zd1211rw :), it is all.
    if zd1211rw module is blacklisted, edit /etc/modprobe.d/blacklist and delete the line
    blacklist zd1211rw
    . I hope this help you.
    Best regards.

    =================================
    Lotus y todos aquellos que esten leyendo esto… en el nuevo kernel (2.6.24-1-XXX), el modulo zd1211rw anda perfecto, y no es necesario hacer nada de lo anterior, solo bajar el firmware, ponerlo en /lib/firmware, asegurarse de que no este listado en la lista negra, y solo hacer modprobe zd1211rw :).
    Si el módulo zd1211rw esta listado en la lista negra, solo hay que editar el archivo /etc/modprobe.d/blacklist y eliminar la línea
    blacklist zd1211rw.
    Espero que les sea de utilidad. Saludos

  7. Maxi,
    cuando llego al paso que hace make me tira el siguiente error:


    /usr/src/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: En la función ‘zdcb_rx_ind’:
    /usr/src/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:9913: error: declaración implícita de la función ‘eth_copy_and_sum’
    /usr/src/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: En la función ‘zd1205_set_zd_cbs’:
    /usr/src/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:10344: aviso: asignación desde un tipo de puntero incompatible
    make[4]: *** [/usr/src/ZD1211LnxDrv_2_16_0_0/src/zd1205.o] Error 1
    make[3]: *** [_module_/usr/src/ZD1211LnxDrv_2_16_0_0] Error 2
    make[3]: se sale del directorio `/usr/src/linux-headers-2.6.24-21-generic’
    make[2]: *** [all] Error 2
    make[2]: se sale del directorio `/usr/src/ZD1211LnxDrv_2_16_0_0′
    make[1]: *** [both] Error 2
    make[1]: se sale del directorio `/usr/src/ZD1211LnxDrv_2_16_0_0′
    make: *** [all] Error 2

    Qué podrà ser?

  8. Es muy probable que la versión de kernel que estas usando la (2.6.24) sea incompatible con el driver zd1211. Yo lo compile hasta la versión 2.6.23 sin problemas. En esa versión del kernel que vos estas usando, ya me funciono el modulo zd1211rw que viene en el kernel 😀 , por lo que no necesite compilar más el módulo zd1211. Te comento que el módulo zd1211 es un módulo totalmente distinto al zd1211rw, el zd1211 es el módulo del fabricante (la empresa zydas), el zd1211rw es un módulo escrito por la gente del kernel, por lo que es la mejor opción a la hora de decidir que módulo utilizar, dado que va a tener soporte a lo largo de las distintas versiones que salgan del kernel., y es mas, el modulo zd1211rw anda perfecto, así que para mí fue problema resuelto. Proba utilizar el modulo zd1211rw que viene en el kernel, te lo recomiendo, fijate en el comentario 7 de este post yo puse como hacer para utilizar el módulo que viene en el kernel a partir de la versión 2.6.24. Suerte y cualquier cosa volvé a consultarme, no hay drama. Saludos

  9. Maxi,
    Gracias por la respuesta. Te cuento lo que hice.
    Bueno, en principio, no creo que haya quedado basura luegod el intento de compilacion fallido, asique hice de cuenta que nada pasó y que mi kernel tiene el rw (el driver no propietario).
    copie el firmware a /lib/firmware y lo descomprimi con un tar. Luego hice lo que dice en el punto 7..en lista negra no está…y cuando hago modprobe zd1211rw no me tira ningun error.
    Luego reinicie y como vi que no me la reconocia en las redes modifiquè el archivo network interfaces con lo que dice en tu guia peor cuanod reinicio se me traba ubuntu…asique por consola borre las lineas agregadas y ahora anda pero sigo sin poder hacerla funcionar.
    Algo que me pueda estar olvidando de hacer?

    Saludos!

  10. Maxi,
    Acabo de instalar ubuntu 8.10 con el kernel 2.6.27 y sigue sin reconocermelo !! estoy paranoico… voy a tener que ver cómo empiezo de nuevo…
    Saludos

  11. I have the same problem with my Asus laptop and the same wifi card; couldn’t rewrite the procedure in english, please, i don’t speak spanish.
    Thanks in advance for any help you will give me.
    Gianluca

  12. Maybe I already installed the firmware but i remember I got some error messages; anyway i can surf the net with my card but I don’t succeed to get its power-on light to switch on; why?
    Surfing isn’t so low but acceptable although my network manager indicates a very low connection state.
    Can you help me in any way?
    Thanks for your niceness!

    1. Hi, welcome to the zd1211 world 😛 .
      If your wifi card connect, so your installation is fine. The light won’t turn on because the driver doesn’t support it, but don’t worry, it isn’t so important, the important here is that your card work.
      The signal low is a firmware problem, you can try using the last firmware available. You can get it from this url http://sourceforge.net/projects/zd1211/files/zd1211-firmware/1.4/zd1211-firmware-1.4.tar.bz2/download . Then, you have to follow these steps:

      1) first change to root user

      mboscovich@fuser3:~#sudo su –

      2) copy the firmware to /lib/firmware

      root@fuser3:~# cp zd1211-firmware-1.4.tar.bz2 /lib/firmware/

      3) go to /lib/firmware and extract the file

      root@fuser3:~# cd /lib/firmware
      root@fuser3:/lib/firmware# mv zd1211 zd1211.bak
      root@fuser3:/lib/firmware# tar xvfa zd1211-firmware-1.4.tar.bz2

      4) remove and load again the module zd1211rw

      root@fuser3:/lib/firmware# rmmod zd1211rw
      root@fuser3:/lib/firmware# modprobe zd1211rw

      5) test your wireless conection.

      I hope this can help you, if it isn’t you will able to ask me again.
      Best Regards.
      Maximiliano.

  13. Ok first of all thanks a lot for your help but since I followed all steps you said to me, by clicking on my network manager icon, i can read in order to my card:” the card isn’t ready”.
    What happened? Before I could surf the net but now I am not able to start any internet connection. After a bit I saw appear into my network manager applet two new strange connections called with an ununderstandable name.
    Sure this will help you to understand better the problem I look forward to following your next indications.
    Thanks,
    Gianluca

  14. Now as I wrote in my last message isn’t working any more; how can I reload the old firmware?
    Maybe the new one isn’t working because the old is still alive?
    I am waiting for one of your reply, thanks again.
    Gianluca

    1. you can reload the old configuration, just doing this as root
      1) cd /lib/firmware
      2) mv zd1211 zd1211-new
      3) mv zd1211.bak zd1211

      Then reboot your system, and it will have the old firmware.

      1. when you will able to reload the last config, tell me and we will able to try other thing. Before that, i need information about your gnu/linux distribution, and kernel version you are using. To see the kernel version, go to a console, and execute uname -a

  15. Here is the result of “uname -a” :

    Linux donyr3001 2.6.31-17-generic #54-Ubuntu SMP Thu Dec 10 16:20:31 UTC 2009 i686 GNU/Linux

    Here is iwconfig result in order to my card (wlan0):

    lo no wireless extensions.

    eth0 no wireless extensions.

    wmaster0 no wireless extensions.

    wlan0 IEEE 802.11bg ESSID:”********”
    Mode:Managed Frequency:2.462 GHz
    Access Point: 00:18:4D:68:E0:B0

    Bit Rate=1 Mb/s Tx-Power=27 dBm
    Retry long limit:7 RTS thr:off Fragment thr:off
    Power Management:off
    Link Quality=9/100 Signal level=9/100
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0

    Finally, “lsusb” result:

    Bus 001 Device 003: ID 0b05:170c ASUSTek Computer, Inc. WL-159g

    I hope that these data will help you to understand how to fix the problem; I would be really grateful to you if you kept supporting me, thanks a lot!

    Gianluca

    1. I was reviewing my answer, and i forgot a step :P. Sorry. You have to do this to use the new firmware

      1) first change to root user

      mboscovich@fuser3:~#sudo su –

      2) copy the firmware to /lib/firmware

      root@fuser3:~# cp zd1211-firmware-1.4.tar.bz2 /lib/firmware/

      3) go to /lib/firmware and extract the file

      root@fuser3:~# cd /lib/firmware
      root@fuser3:/lib/firmware# mv zd1211 zd1211.bak
      root@fuser3:/lib/firmware# tar xvfa zd1211-firmware-1.4.tar.bz2
      4) ln -s /lib/firmware/zd1211-firmware /lib/firmware/zd1211 (This it’s the step i forgot :D).(it’s because the module zd1211rw look for the firmware in the folder /lib/firmware/zd1211)

      5) remove and load again the module zd1211rw

      root@fuser3:/lib/firmware# rmmod zd1211rw
      root@fuser3:/lib/firmware# modprobe zd1211rw

      5) test your wireless conection.

      Please, try this, and tell me.

  16. First of all, thanks a lot for your reply; I followed again all of your steps and this time the card is recognized by the system but the surfing and the signal (it’s about 8-9%)keep being low like when the old firmware was installed. In fact now it would seem work slowly and the connection often breaks off.
    Should I reinstall the old version of the firmware? Any other attempt?
    Thanks, Gianluca

  17. …I wondered: could a Nswrapper procedure work in this case? Does your card work perfectly? I have even noticed that a new version of the windows firmware isn’t not available; the last one goes back to the 2004. For example running Windows i cannot use it because I have a wpa encrypted network that the old firmware doesn’t support.

  18. My card work, and the signal is low than windows driver, but not too much.
    This is a firmware problem, and the last versión is 1.4, so, it’s the best firmware available. I tried with vendor driver, and it work worse. If this firmware isn’t enough for you, may be there isn’t another to try. Yo (and me) have to wait for a new firmware versión to improve the signal level 😦 .
    I tried with ndiswrapper too… but it didn’t work for me, because ndiswrapper frezze my laptop (kernel panic). It work, but sometimes it made kernel panic…. so i prefer use the gpl driver, it’s has low singal level, but work perfectly.
    Regards
    Maximiliano.

  19. Ok I have reinstalled the old firmware saved into zd1211.bak folder; the connection seems to work better now; thanks a bundle for your professional and nice support.
    Regards, Gianluca.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s