Monday, February 26, 2007

i win again.

i am presently online via wireless using a DWL-650 Rev P in Ubuntu Linux 7.04 Feisty Fawn Herd 4 (isn't that a mouthful).

first and foremost, hostap_cs.ko needs to be modified as per my previous post. this can be fixed via source, but if you're lazy like me you'd prefer a thirty second hex edit over recompilation.

second, you need to ensure that hostap and hostap_cs are being loaded via your /etc/modules file.

third, you need to ensure that orinoco_cs is blacklisted in /etc/modprobe.conf/blacklist.

and onto the good stuff...

getting the firmware to load is a trick, really. i copied the firmware files from into the directory /etc/firmware (if you don't have one, it doesn't hurt to make it) and changed their permissions:

chmod 644 /etc/firmware/*

in my case, i'm using the files pm010102.hex and rf010802.hex. i edited my /etc/network/interfaces file as follows:

auto wlan0
iface wlan0 inet dhcp
fw_primary /etc/firmware/pm010102.hex
fw_secondary /etc/firmware/rf010802.hex
then i just rebooted. well, when i say "just" i am not quite telling the truth. it seems that everything works fine and dandy up until firmware loading. following the reboot (which was absolutely necessary), your card still won't be usable. just eject it and put it back in. assuming your ESSID and key are correct, you should (fairly quickly) be connected to your wireless network.

problem #1: you can't scan for networks. don't ask me why, but i'm working on it.

problem #2: you won't see your wireless connection displayed by gnome-network-manager. once again, don't ask me why.

in my tinkering during the past 24 hours, i've seen both problems resolved but had no idea how and couldn't reproduce it... so they're fixable.

for now, courage.


Phil said...

just a final note that both problems i note above have been resolved in updates for ubuntu.

also, the card no longer needs to be ejected and reinserted for the firmware to load. yay, ubuntu!

admin said...

Excellant howto Phil. I had really wowed a friend installing ubuntu on their 3 year old laptop. Everything worked out of the box, except the DWL-650 Rev. P. I followed your guide hex editing the two locations in the hostap_cs, adding info to /etc/network/interfaces, adding hostap and hostap_cs to load at boot, blacklisted orinoco_cs, downloaded the pm010102.hex from the primary.tgz package from the page and the rf010802.hex from the 1.8.2.tgz from that same page. I moved them into /etc/firmware, chmodded them to 644, rebooted.

Low and behold.... My computer froze.
A kernel panic because of a bad EID number was the output (which i got because I recreated it w/o splash).

I rebooted, waited for gdm/gnome and reinserted. lspcmcia -vv correctly identifies the card, iwconfig however gives me 2 entries wifi0 and wlan0 both with mac address info, but no ip. I checked my dmesg output and had the following:

[ 175.988000] pccard: card ejected from slot 0
[ 175.988000] wifi0: card already removed or not configured during shutdown
[ 175.988000] wifi0: Interrupt, but dev not OK
[ 179.052000] pccard: PCMCIA card inserted into slot 0
[ 179.052000] pcmcia: registering new device pcmcia0.0
[ 179.052000] hostap_cs: setting Vcc=33 (constant)
[ 179.052000] Checking CFTABLE_ENTRY 0x01 (default 0x01)
[ 179.052000] IO window settings: cfg->io.nwin=1
[ 179.052000] io->flags = 0x0047, io.base=0x0000, len=128
[ 179.052000] hostap_cs: Registered netdevice wifi0
[ 179.092000] hostap_cs: index 0x01: , irq 3, io 0xd100-0xd17f
[ 179.108000] wifi0: __hfa384x_cmd_no_wait(6) - timeout - reg=0xe96e
[ 179.108000] hostap_cs: first command failed - assuming card does not have primary firmware
[ 179.948000] hostap_cs: assuming no Primary image in flash - card initialization not completed
[ 179.948000] wifi0: test Genesis mode with HCR 0x1f
[ 179.948000] prism2_pccard_cor_sreset: original COR 41
[ 179.952000] prism2_pccard_genesis_sreset: original COR 41
[ 179.980000] Readback test failed, HCR 0x1f write 00 e1 a1 ff read 00 ce a1 ce
[ 179.980000] wifi0: test Genesis mode with HCR 0x0f
[ 179.980000] prism2_pccard_cor_sreset: original COR 41
[ 179.984000] prism2_pccard_genesis_sreset: original COR 41
[ 180.016000] Readback test succeeded, HCR 0x0f
[ 180.016000] prism2_pccard_genesis_sreset: original COR 41
[ 180.044000] wifi0: registered netdevice wlan0
[ 180.100000] wlan0: cannot get RID fdc6 (len=12) - no PRI f/w
[ 180.100000] wlan0: could not set interface UP - no PRI f/w

needless to say I have no idea what to do now. Should I try a different firmware image than what you used? Should I give up? If someone could help me I would really (REALLY) appreciate it!

Phil said...

Since Ubuntu's last kernel update to 7.04 I haven't been able to get the wireless working again.

As a consolation, the DWL-650 Rev P1 gains official support in Linux kernel 2.6.22! You can find that commit here:;a=commit;h=99d3184ac7b4e91c88073f474ebe758540b3ad82


Sandwich said...

No kidding, Phil, for real, your the greatest. AFter hours, and f*ng hours, I finally have this card working. WPA and all! Decent signal strength too, given the 24.99 price tag. In hindsight I should have sprung for a better supported card (didn't know at the time there were more than one revision). Your time has been priceless to me, and others reading this. Thanks again Phil!

Anonymous said...

thanks Phil for sharing your experience. Years later it will still be useful. My date is 2014Jan25.
I am trying to get DWL-650+ working on Point Linux.