No Patents

Linux driver for Lucent/Agere ORiNOCO USB devices


2004/05/25.a ORiNOCO-USB users must migrate

After the last news, this project is no more developed as a single independent project. The ORiNOCO-USB driver was integrated into the Official ORiNOCO Driver project for Linux, so the best way you will kept up-to-date with the ORiNOCO-USB driver development is reading the website and subscribing the mailing lists.

Please, you should subscribe to the ORiNOCO mailing lists for user support and/or contributing on development.

2004/05/10.a We'll miss you Ranty

The ORiNOCO-USB author, kernel hacker, Debian Developer and a contributor to a lot of other free software projects (like LIRC, qvplay or FPM), Manuel Estrada Sainz aka "Ranty" died in a car accident.

2003/08/22.a ORiNOCO-USB RPM's for RedHat 9.0 available

Øystein Olsen has made available some rpm's with prebuild binary modules and source code for RedHat 9 users:

"They require curl (apt-get install curl), and you must be online during the
(first) install, since the firmware is dowloaded by the rpm. If you don't 
have RedHat 9 or don't use any of the kernels(**) at that location, I've 
tried to create a generic src.rpm. If you're really lucky, that might work. 
The rpm at this site has been tested on Compaq Evo N1000v and Compaq Evo 
The rpm takes a backup of possible drivers that might interfere with the ones
provided by this package, and restores them when the package is uninstalled. 
(I probably should put a readme.txt somewhere.)"

Thanks Øystein!

2003/08/13.a Version 0.2.2 released

Some bug fixes and one new supported device. This one could fix a kernel oops someone was having on module unload. Debian binary module packages for 2.4.21-4 prebuild kernels are also available. Take a look at the release notes for more information.

2003/07/14.a Orinoco-USB merged with official Orinoco drivers

The Orinoco-USB code is already merged into the CVS with the official Linux kernel Orinoco driver. For the moment, only in CVS. If you want more information, go to the project page at Savannah.

2003/06/25.d Web ported to XHTML 1.1 + CSS2

We have ported the html code and updated the web to XXI century in the way of the newer W3C standards . We hope the change is for better :)

2003/06/25.c Version 0.2.1 released

Following the Linus Torvalds theory, "release often, release soon", here comes the new 0.2.1 release, that fixes the README file and update the building system.

2003/06/25.b Debian packages repository available.

If you use Debian GNU/Linux, you have available packages throught APT with precompilated drivers for the Debian standard kernels, and a sources package ready to build with make-kpkg :).

You can add to yoursources.list the entry::

deb unstable/

2003/06/25.a Version 0.2.0 released

A new driver version is available. You can read the changelog and download it from the project page at Alioth.

With this release, the Debian users can make driver packages throught kernel-package. Only you have to extract the contents of the archive into /usr/src/modules and run (as root) "make-kpkg modules-image" into the Linux kernel sources tree.


Manuel Estrada Sáinz

Author of the driver, based on the orinoco's official Linux kernel drivers and with a few bits from linux-wlan-ng..

Ramón Rey Vicente

Web mantainer.

Debian packages repository

You have available packages with precompilated drivers for the Debian standard kernels, and a sources package ready to build manually or better with make-kpkg.

You can add to your sources.list the entry::

deb unstable/

RedHat 9.0 packages

Øystein Olsen has made available some rpm's with prebuild binary modules and source code for RedHat 9 users.

Devices known to work

  • Agere (Lucent) ORiNOCO USB Client (0x047e/0x0300)
  • Agere Wireless USB Card Model 0801 (0x0d4e/0x1000)
  • HP/Compaq WL215 (0x049f/0x001f)
  • HP/Compaq W200 (0x049f/0x0076)
  • HP Wireless USB WL215 (0x049f/0x0082)
  • IBM Internal High Rate Wireless LAN PC Card 26P8030 (0x0d4e/0x047a)
  • Melco, Inc. BUFFALO WLI-USB-L11G-WR (0x0411/0x000b)
  • Thomson SpeedTouch 120 Wireless Lan USB Adaptor (0x0d4e/0x1000)

Development News

  • 0.2.2

    1. README updates.
    2. Module removal should be more reliable now (please report).
    3. USB vs. PCMCIA abstraction changes (USB support is now available in the upstream CVS repository at savannah).
    4. If you are lucky it may work on bigendian systems now.
    5. Polished ftp firmware downloading (sorry, in 0.2.1 it was quite fragile).
    6. IBM Internal High Rate Wireless LAN PC Card 26P8030 (0x0d4e/0x047a) cons idered supported.
    7. Merged with upstream orinoco code.
  • 0.2.1

    1. Updated build system and documentation.
  • 0.2.0

    1. Agere Wireless USB Card Model 0801 (0x0d4e/0x1000) and Thomson SpeedTouch 120 Wireless Lan USB Adaptor (0x0d4e/0x1000) are now considered supported.
    2. Added support to generate Debian packages.
    3. Polished watchdog_secs.
    4. HP Wireless USB WL215 (0x049f/0x0082) is now considered supported.
    5. Polished timeout and disconnect behavior:
      • The module can now be unloaded without physically unplugging the device.
    6. Don't let the card hang when ESSID is unset in IBSS-Ad-Hoc mode.
    7. Make sure that standard orinoco modules won't get used by mistake.
    8. Update orinoco_cs.c to 2.5.70 kernels and later.
    9. Include hotplug firmware loading support for 2.4 kernels.
      • Provide real hotplug scripts.
    10. Rework debian packing:
      • orinoco-usb now downloads the firmware automatically upon install and includes hotplug support.
      • orinoco-usb-source no longer includes the firmware in thekernel modules, so they are redistributable.
  • 0.1.4

    1. Fixed the "starts OK but then no traffic" issue.
    2. No more hanging when using watchdog_secs.
    3. Should compile with 2.4.18 kernels, maybe even older.
  • 0.1.3

    1. BUFFALO WLI-USB-L11G-WR (0x0411/0x000b) is now considered supported.
    2. Removed a race in bridge_access_ltv() by refcounting ctx's.
      • This could explain the problems on SMP.
    3. Polish debugging and non-debugging printk's.
    4. Work on bridge_xmit so less spin_locking is needed.
  • 0.1.2

    1. added request queueing.
    2. sleep when possible.
    3. Your wireless device monitor thingies should work now.
      • wavemon with it's default refresh of 100ms causes some requests to fail, but even then it keeps working :-)
  • 0.1.1 "Boycott SCO" release

    1. README updates
    2. ORiNOCO USB Client (0x047e/0x0300) is now considered supported.
    3. Merged with orinoco-0.13e
    4. Port to 2.5 kernel
    5. Fixed for gcc 3.x
    6. Remove fwfs and make the code ready for the new request_firmware()
    7. Added courtesy of Ramón Rey Vicente
  • 0.1.0 "rrey's reloaded matrix" release

    1. Updated to orinoco-0.13d
    2. extractfw now compiles with gcc-2.95
    3. Be more careful with busy URBs
    4. Preliminary hotplug scripts. But kernel hotplug support is not included jet, so just ignore them.
  • 0.0.8

    1. The firmware is not included anymore, look at README for instruction on how to get the driver going. Note: firmware/Makefile should make it real easy to download and extract the firmware.
    2. fwfs is much smaller and cleaner now.
    3. Compaq W200 is now considered supported, no need for force_unsupported=1 any more.
    4. The README may even be useful this time :)
    5. There is a toplevel makefile now which should be handy.



Searches a hole directory tree for Orinoco USB firmware and extracts all firmware it finds: dir [dir [dir ...]]

Will tell you the offset of the byte that defines the card variant.

A GPL 8051 disassembler, useful to reverse engineer the firmware.


A Linux kernel module that logs interesting activity on files. In conjunction with VMware it can be used to monitor the USB traffic instead of using one of the Snoopy variants. I'll polish it a little and post it here when I have time..

Notes on the Protocol

The information I have about the protocol. I got it from disassembled firmware and USB communication dumps, so it may not be accurate, but I did get the device to work, so it must not be so wrong.

Now that I look at it, it is a little outdated but still useful.


  • Cypress provides preatty good documentation on their EZ-USB devices.
  • W200 has an additional Interrupt endpoint, Hopefully it will be just the Interrupt reincarnation of "EP 2 IN". Update: W200 seams to work just like WL215.
                 unknown descriptor type: 03 08 0f
              Endpoint Descriptor:
                bLength                 7
                bDescriptorType         5
                bEndpointAddress     0x81 EP 1 IN
                bmAttributes            3
                  Transfer Type           Interrupt
                  Synch Type              none
                wMaxPacketSize         64
                bInterval               1
  • Both on the WL215 and W200 the windows driver leaves a gap from 0x100 to 0x300, that is card specific information, like the serial number, and should not be overwritten. Look for it when trying to extract the firmware from Snoopy logs or by other means.
  • fxload is useless in this case, because the card does not change USB identity. Which means that fxload and the kernel driver will end up stepping on each other's feet.


Supported devices

Mailing list

Project Page (Alioth)


Debian packages

RedHat packages










Valid XHTML 1.1!Valid CSS!W3C-Amaya

Ramón Rey Vicente