ZD1211 wireless hacking

I’ve been spending some time over the last few weeks hacking on a USB Wireless-LAN adapter based on the ZyDAS ZD1211 chip. There are actually 40+ ZD1211-based products available on the market so Linux support for this device has some big implications.

ZyDAS themselves produce a Linux driver which is updated semi-regularly, however the code is horrible and the driver is unreliable for many. On the other hand, it’s good that they have released a full GPL driver and have also been cooperative with providing technical documentation and flexibility on redistributing the firmware. There have been some forks which try to stabilise the vendor driver, the latest being zd1211.ath.cx, but none of these forks have been aiming for kernel inclusion.

In January, myself and Danny van Dyk started a driver rewrite project and published some initial code. Soon after doing so, I was contacted by Ulrich Kunitz, a hacker who had spent several weeks previously developing a rewritten driver. We switched over to Ulrich’s driver base and continued from there.

Unlike the vendor driver, we are taking full advantage of Linux’s IEEE 802.11 wireless stack. As the driver must do most things in software, we are also using the softmac extension which simplifies many generic operations (scanning, authentication, etc). A nice side effect of this is that when we have written the code to send and receive packets, the driver is almost complete (the other layers do the rest of the work).

Yesterday, I hacked together an initial scanning implementation and successfully scanned my local area for wireless networks. This means that receiving packets is more-or-less working – a nice milestone to reach.

Some information and links to the code can be found here. Be warned, this is useful for users yet. Watch this space for updates.

10 Responses to “ZD1211 wireless hacking”

  1. ehh Says:

    Nice, I will watch:)
    I use this mod from portage and when i do “lsusb –verbose” driver crashing, do you have it?

  2. dsd Says:

    Sorry, I don’t use that driver – or any other, for that matter. I’m only developing against ZD1211 right now, not using it for connectivity.

  3. ehh Says:

    So how can you know it working good?

  4. dsd Says:

    What do you mean?

  5. ehh Says:

    How can you make change in driver if you can’t check it working…

  6. dsd Says:

    We aren’t changing it, we are rewriting it from scratch.

  7. zwoch Says:

    i was more or less following development of the different drivers for a long time. great to know it seems that finally it is done right – and approaching testing status soon!

  8. Scott Bronson Says:

    Bravo!! I have one of these little USB keys. The hardware is slick, but the current zd1211 driver is horrible. It’s got all sorts of bizarre limitations (can’t call iwconfig until you’ve ifconfig up’d it, usually must rmmod and insmod to change the essid, etc…)

    This sort of rewrite is exactly what this driver needs. Thank you for undertaking it. And be sure to post when there are things that others can do to help.

  9. dsd’s weblog » Blog Archive » ZD1211 TX operational Says:

    [...] After a couple of weeks of head-scratching, I managed to get the rewritten USB-wireless ZD1211 driver transmitting data. [...]

  10. MechaStreisand Says:

    Keep up the good work!

Leave a Reply

You must be logged in to post a comment.