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.
i win.

it's been a tough night of avoiding studying for my classes, but i have officially won.

it turns out that there is a bug in the module hostap_cs.ko that is presently shipping with feisty fawn. it is supposed to be looking for the D-Link DWL-650 Rev P1 PCMCIA card with a manufacturers ID of 000B and a card ID of 7110, but the card ID was 7100 instead. i didn't have what i needed to recompile the modules, so i just used a hex editor and massaged them to my liking. that is, i first searched for the (text) string "m000Bc7100" and changed it to "m000Bc7110", then searched for the hex string "0B000071" and changed it to "0B001071". after modprobing hostap and hostap_cs, lspcmcia -vvv now shows that hostap_cs is being used for my DWL-650 Rev P1.

there is still one hurdle, and that is loading the firmware via prism2_srev. the utility dies with this error:
Downloading to volatile memory (RAM).
ioctl[PRISM2_IOCTL_DOWNLOAD]: Input/output error
i'm sure i'll be able to figure it out. one step at a time.