Ubuntu Linux and Linksys WPC54G Card

A while ago I purchased the Linksys WRT54G for my home networking setup. Herein I chronicle the steps to get it working. Since Linksys use the Broadcom chipset, and they do not see fit to publish any specs, getting anything but the latest version of Windows supported is - well, you can guess.

  1. First, ensure the base system is correctly installed and configured, and you have a working ethernet network connection
  2. Run System|Administration|Synaptic Package Manager (and enter your password when prompted)
  3. It is recommended that you first apply all updates, which you can do by pressing "Reload" then "Mark All Upgrades" then "Apply"
  4. Once all that has completed successfully, install ndiswrapper-utils
  5. You can find it either by pressing "Search", typing "ndis" and pressing Ok, or
  6. By browsing down to the section "Miscellaneous - Text Based" (why isn't it in Networking?)
  7. The kernel module is already build and available in the kernel, so that is all you need
  8. Check the back of your wireless card, the WPC54G has several versions, at least v1 and v2
  9. Download the latest version of the approproate driver from ftp.linksys.com/pub/network
  10. In our case it was wpc54g_driver_utility_v1.3.zip for the v1.2 card
  11. Now "cd /tmp" and "unzip ~/Downloads/wpc54g_driver_utility_v1.3.zip" (or whatever)
  12. Do a "cd WPC54Gv1.3"
  13. Run "sudo ndiswrapper -i lsbcmds.inf" and enter your password
  14. You will see some messages saying "Forcing parameter RadioState|0 to RadioState|1"
  15. Now run "sudo modprobe ndiswrapper"
  16. and "echo ndiswrapper >> /etc/modules"
  17. Now right-click the Network settings on the toolbar, select properties, configure, then deactivate eth0
  18. Remove your ethernet card, put in the WPC54G wireless card
  19. Run "dmesg" and you should see some messages at the bottom, like "wlan0: ndiswrapper ethernet device 00:0f:aa:bb:cc:dd:ee using driver lsbcmds"
  20. I need to run "sed ..." to set Radio... to 0 (as described in the link below)
  21. The following assumes you have WEP configured on your router (and if you don't, why not???)
  22. The next two steps are optional: run "sudo iwconfig essid somewhere" (where 'somewhere' is the name of your wireless network)
  23. now run "iwlist scan wlan0" and you should be able to see your network (and maybe your neighbor's)
  24. Once you have the driver loaded and running, the built-in Ubuntu networking settings can do the rest
  25. Just open up the Network Settings dialog, then go in to wlan0 and make the appropriate settings
  26. Note: the built-in configuration tool only supports WEP at the moment. It is possible to get WPA support with the wpasupplicant package, but configuring that is a whole other story

I now have it working with my Airport Express wireless adaptor, in WEP mode. I haven't got WPA sorted out yet unfortunately.

Useful links:

  • http://ubuntuforums.org/showthread.php?t=5645
  • http://tiefighter.et.tudelft.nl/~arthur/wpc54g/
  • http://ndiswrapper.sourceforge.net/phpwiki/index.php/FAQ
  • http://lists.shmoo.com/pipermail/hostap/2005-April/009962.html
  • http://ndiswrapper.sourceforge.net/phpwiki/index.php/WPA

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Micocode error

Hi Alessandro,

I have never seen this sort of error before, so I can't offer much help. Check the original driver package to see if that .fw file (presumably "firmware") is present. It may need to be in the same directory as the driver itself so it can find it at load time.

Best of luck -

:: Gavin

Used these instructions for the WPC11v4 and it worked

Just a hopefully useful tidbit.
I had a different Linksys PC card and a missing wireless on my recent (just now) Ubuntu install.

  • I followed these steps, but downloaded a different file from ftp.linksys.com (the obvious WPC11*.zip one). There were a bunch of different .INF files in there. I just ran 'ndiswrapper' on all of them, then did a 'ndiswrapper -l' to list them. Only one of the files was marked valid, so I 'ndiswrapper -e' the other two.
  • Proceeded with the remaining steps (disregarded the lack of "Radio *" messages but saw relevant dmesg items) and it worked like a charm.
  • Last note, I seemed to have to open and close the "network settings" several times (after each enable/disable/configure step) in order for the wlan0 to register and then work.
  • Thought this little followup might be helpful.
    Great post, best instructions on fixing this problem I've found on the net.

    Error: Microcode "bcm43xx_microcode5.fw" not available

    I followed your instruction without luck, it seems!
    When i try to activate Wlan i found this error on dmesg:
    [17206405.336000] bcm43xx: Failed to switch to core 0
    [17206405.336000] ACPI: PCI interrupt for device 0000:02:00.0 disabled
    [17206479.420000] ADDRCONF(NETDEV_UP): eth0: link is not ready
    [17206479.424000] e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
    [17206479.424000] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    [17206489.816000] eth0: no IPv6 routers present
    [17206516.128000] pccard: CardBus card inserted into slot 0
    [17206516.128000] PCI: Enabling device 0000:02:00.0 (0000 -> 0002)
    [17206516.128000] ACPI: PCI Interrupt 0000:02:00.0[A] -> Link [LNKA] -> GSI 10 (level, low) -> IRQ 10
    [17206516.128000] PCI: Setting latency timer of device 0000:02:00.0 to 64
    [17206537.764000] bcm43xx: Error: Microcode "bcm43xx_microcode5.fw" not available or load failed.

    Can you help?
    Thank's in advance
    Alessandro

    wpc54g

    Gavinb, although your explanation is very detailed, somehow the same steps are not working for my machine (Dell d600). Anyhoo, I'll keep trying. Perhaps I will try with the ACX100 project from sourceforge (how desperate I am!)

    Thanks for the refs.

    This is the Version 1.2

    This is the Version 1.2 card.

    It requires the broadcom driver, bcmwl5.inf. This however I did not find on the Linksys site. I had to get it from another source. It requires the NDISWRAPPER as stated before, but once that is installed you have smooth sailing. You can get them at: Http://theweirdone.iwarp.com/

    It supports both WEP and WPA.

    Configuration is a bit easy enough, but I think that if you try and create a pre-shared key with the wpa_passphrase and it has '#' in it that it will fail

    1.Install ndiswrapper

    2.Add the drivers via ndiswrapper - I

    3.Sudo modprobe ndiswrapper (if you are using debian / ubuntu)

    4.Echo ndiswrapper >> /etc/modules to load ndiswrapper at startup (adds it into the modules to load)

    5.Run iwlist wlan0 scan - This will check to see if you can find your Access Point.

    6.Download and install wpa_supplicant - you need this to get WPA working.

    7.Configure /etc/wpa_supplicant.conf (or wherever you put it)

    8.Add the relevant data, but use the wpa_passphrase to generate your psk for your network if you are using wpa.

    9.Right a small script to bring up your interface and get and IP Address.

    Mine looks like the following:

    #bring up the Wlan0 interface
    ifconfig wlan0 up
    #start the script
    wpa_supplicant -i wlan0 -Bc /etc/wpa_supplicant.conf -D ndiswrapper
    #get and IP Address
    dhclient wlan0

    10.You may need to add more sudo lines if this doesn't work.

    11.This should now allow you to connect to your wireless networks.

    This is the Version 1.2

    This is the Version 1.2 card.

    It requires the broadcom driver, bcmwl5.inf. This however I did not find on the Linksys site. I had to get it from another source. It requires the NDISWRAPPER as stated before, but once that is installed you have smooth sailing. You can get them at: Http://theweirdone.iwarp.com/

    It supports both WEP and WPA.

    Configuration is a bit easy enough, but I think that if you try and create a pre-shared key with the wpa_passphrase and it has '#' in it that it will fail

    1.Install ndiswrapper

    2.Add the drivers via ndiswrapper - I

    3.Sudo modprobe ndiswrapper (if you are using debian / ubuntu)

    4.Echo ndiswrapper >> /etc/modules to load ndiswrapper at startup (adds it into the modules to load)

    5.Run iwlist wlan0 scan - This will check to see if you can find your Access Point.

    6.Download and install wpa_supplicant - you need this to get WPA working.

    7.Configure /etc/wpa_supplicant.conf (or wherever you put it)

    8.Add the relevant data, but use the wpa_passphrase to generate your psk for your network if you are using wpa.

    9.Right a small script to bring up your interface and get and IP Address.

    Mine looks like the following:

    #bring up the Wlan0 interface
    ifconfig wlan0 up
    #start the script
    wpa_supplicant -i wlan0 -Bc /etc/wpa_supplicant.conf -D ndiswrapper
    #get and IP Address
    dhclient wlan0

    10.You may need to add more sudo lines if this doesn't work.

    11.This should now allow you to connect to your wireless networks.

    This is the Version 1.2

    This is the Version 1.2 card.

    It requires the broadcom driver, bcmwl5.inf. This however I did not find on the Linksys site. I had to get it from another source. It requires the NDISWRAPPER as stated before, but once that is installed you have smooth sailing. You can get them at: Http://theweirdone.iwarp.com/

    It supports both WEP and WPA.

    Configuration is a bit easy enough, but I think that if you try and create a pre-shared key with the wpa_passphrase and it has '#' in it that it will fail

    1.Install ndiswrapper

    2.Add the drivers via ndiswrapper - I

    3.Sudo modprobe ndiswrapper (if you are using debian / ubuntu)

    4.Echo ndiswrapper >> /etc/modules to load ndiswrapper at startup (adds it into the modules to load)

    5.Run iwlist wlan0 scan - This will check to see if you can find your Access Point.

    6.Download and install wpa_supplicant - you need this to get WPA working.

    7.Configure /etc/wpa_supplicant.conf (or wherever you put it)

    8.Add the relevant data, but use the wpa_passphrase to generate your psk for your network if you are using wpa.

    9.Right a small script to bring up your interface and get and IP Address.

    Mine looks like the following:

    #bring up the Wlan0 interface
    ifconfig wlan0 up
    #start the script
    wpa_supplicant -i wlan0 -Bc /etc/wpa_supplicant.conf -D ndiswrapper
    #get and IP Address
    dhclient wlan0

    10.You may need to add more sudo lines if this doesn't work.

    11.This should now allow you to connect to your wireless networks.

    may i post this article to

    http://www.ubuntux.org

    may i post this article to

    May I post this article to Ubuntux? (http://www.ubuntux.org/)

    This could be interesting for more people. Or you can do it yourself as well.

    thanks in advance!

    #bring up the Wlan0

    #bring up the Wlan0 interface
    ifconfig wlan0 up
    #start the script
    wpa_supplicant -i wlan0 -Bc /etc/wpa_supplicant.conf -D ndiswrapper
    #get and IP Address
    dhclient wlan0

    Post on Ubuntux

    This should be ok; I will contact you via email to discuss.