Primary Firmware Download

Jouni Malinen jkmaline at
Sat Aug 2 15:42:40 EDT 2003

On Thu, Jul 31, 2003 at 04:57:10PM -0400, Pavel Roskin wrote:

> I don't know why you think that flashing primary firmware is not reliable.
> It has always worked for me.  The problem is that HostAP cannot flash the
> secondary firmware after that, so it was disabled in prism2_srec.

Yes, that was the case before today ;-).

> prism2dl with linux-wlan-ng flashes primary and secondary firmware just
> fine.  On the other hand, loading primary firmware into the RAM has newer
> worked for me with any driver, including linux-wlan-ng.

I think I have seen this working fine with Windows drivers from
Intersil, so s/any driver/any Linux driver/..

> 1) Figure out how to load primary firmware into the RAM.  I have no idea
> how.  Try setting genesis mode.  You may need to ask Intersil, but it may
> be very expensive and not very helpful.

My current guess is to 1) set Genesis mode, 2) load PRI to RAM, 3) soft
reset to PRI without Genesis mode, 4) RAM download secondary f/w using
PRI. I have done some experiments with this and have added a new
"download using Genesis mode" option for prism2_srec and the driver
(although these are not yet in CVS). The problem is, this just does not
seem to work the way I expect it to work; or I just cannot start/use the
PRI-only card correctly.

> 2) Fix HostAP to support flashing when only primary firmware is in the
> card (note that flashing primary firmware disables secondary firmware).
> That's the most realistic option and really needs to be done.  It's being
> asked all the time, but nobody seems to be working on it.

Yes, PRI-only operations should be implemented at some point. Btw, I
would assume that removing the two octets that override "CRC-16
signature" (0xC0DE) from the PRI f/w could work if the secondary
firmware is able to handle new PRI interface..

I have been somewhat reluctant to work with this since fixing the card
I use in testing requires me to find a suitable Windows box somewhere
and move the PCI card to it or changing drivers, etc.. Maybe I should
just "kill" one card (by replacing that 0xC0DE signature with 0xFFFF) so
that it is known to have working PRI, but no secondary firmware. That
could be enough motivation to work on PRI-only mode to get the card
fixed ;-).

> 3) Combine primary and secondary firmware into one image and flash it in
> one operation.  This gives you the easiest procedure, but requires a lot
> of work to be done to create the image.

Not really that much work.. prism2_srec already had most functions that
were needed for this. After some code cleanup it was quite easy to add
support for loading two srec files and merging them together.
Verification of interface compatibility needed some small changes, too,
but that was it. Current CVS snapshot version of prism2_srec seems to be
able to do the job correctly.

I have been able to download both primary and secondary firmware to
flash with one command. I tested firmware upgrades and downgrades
between (PRI 1.0.5, STA 1.3.4) and (PRI 1.1.1, STA 1.7.4) using a PCI
Prism2.5 card. Since this has not yet been tested thoroughly, I would of
course suggest being somewhat cautious about it, but I'm not aware of
any issues with the operation. Anyway, please do report results if you
test it.

The new version of prism2_srec accepts two srec files in the command

# test compatibility without writing anything to flash
./prism2_srec wlan0 pk010101.hex sf010704.hex

# download to flash
./prism2_srec -f wlan0 pk010101.hex sf010704.hex

Jouni Malinen                                            PGP id EFC895FA

More information about the HostAP mailing list