[OFFTOPIC] prism RAM 'flashing' from w2k (or from linux to USB device)?

Pavel Roskin proski at gnu.org
Mon May 10 15:25:45 EDT 2004

On Sun, 9 May 2004, Frank Horowitz wrote:

> Apologies for the offtopic question, but I'm hoping that some of the
> experts on this list might know an answer to my dilemma. Basically I'm
> trying to get WPA running on my home LAN.
> Background:
> I've got a home WLAN with a WPA capable AP (WRT54G from Linksys, if it
> matters), a linux box running hostAP in client mode on a D-link DWL500
> (which should be able to run wpa_supplicant; thanks to Junni et al. for
> the great work, BTW!), and a couple of windows 2000 boxes running D-Link
> DWL120-d USB 802.11b (Prism2.5) devices.
> I've found the freely available w2k WPA thingy, but believe that the
> secondary  firmware version I'm running in my DWL120-Ds (1.5.6)  is too
> early to support WPA, since it's mentioned somewhere that versions later
> than 1.7.0 are required. I've also found the ru010704 secondary firmware
> from either Pavel Roskin's or JunSun's site.

Actually, ru010706.hex is also there.

I'm not sure that the old firmware cannot support WPA.  Sure, RID 0xFCBB
(HFA384X_RID_SSNHANDLINGMODE) appeared in firmware version 1.7.0, but I
don't know how critical it is for WPA operations, especially with drivers
other than hostap.

> I've contemplated booting into linux, "flashing" the ram to the 1.7.4
> version of the firmware, and then rebooting into W2K with the power
> still on to the cards (hopefully keeping the RAM version of the firmware
> alive). However, as I understand it, prism2_srec won't communicate with
> USB devices, and I'm unclear whether or not the wlan-ng firmware
> flashing utility can deal with RAM versions of firmware.  Even if all of
> that works, I've still got the problem that the dlink w2k driver might
> very well reset the RAM when initializing the card.

The latest version of linux-wlan-ng supports USB and RAM download just
fine.  However, the firmware will be almost certainly lost on reboot.

> Barring a later-than-1.7.0-flash-version of the "u" class firmware
> hiding somewhere on the net (I've looked, and not been able to find
> one), I think that my best bet might be to somehow hack the ram version
> of the firmware into the W2K driver. It's almost the inverse operation
> of the "split_combined_hex" shell script in hostAP utils, and that to me
> implies that someone on this list might have some expertise in the file
> formats involved with the windows drivers.

As far as I know, the Windows driver for DWL-122 loads 1.7.6 firmware

> Questions:
> So, I guess my questions comes in two parts:
> A) does anyone know of a flash version of "u" class 1.7.x or later
> secondary  firmware hiding somewhere on the net? (Fingers crossed, but
> I'm not holding my breath...)

I don't know of it, but you can make one.  I bought my DWL-122 for $25 on
e-Bay, and it came with 1.7.1 firmware.  You can do it too.  Now dump the
firmware from NVRAM (not from RAM!) in the same areas as in su010506.hex
plus some slack.  Perhaps you can just dump everything from 0x7E3000 to

Convert the dump to S-Record by objcopy.  Identify the MAC address and
create a PDR for it.  Now you can try flashing this firmware to one of
your cards.  Copy information records (FF200000) from su010506.hex.

I don't guarantee that you won't damage the card, of course.

> B) Does anyone have any pointers on the filestructures of the windows
> drivers for these devices? Where might the RAM version of the firmware
> be stashed for the w2k drivers to actually load and use them? What about
> things like checksums in those files?  Is there some equivalent of
> prism2_srec (i.e. a firmware flasher that can deal with RAM images, but
> also with USB devices) living in windows-land that might let me flash
> the cards from that side?
> Any pointer you might be able to provide would be greatly appreciated!

It may be easier to hack the DWL-122 driver to work with your card.  It
loads the 1.7.6 firmware already.

Pavel Roskin

More information about the HostAP mailing list