Daniel Lenski wrote: > On Thu, Sep 3, 2009 at 5:25 PM, Daniel Lenski <dlen...@gmail.com> wrote: >> I have not found any other source of these, unfortunately. I am happy >> to send the extracted firmware to developers off-list if desired. >> Linksys's less-than-helpful GPL source code page gives no indication of >> the age or date of the various files, so it's hard for me to tell which >> might be newer without downloading many Gb and extracting many >> firmwares. I have half a mind to write a Python script... > > Hi all, > > Since starting this thread, I've search around more to find b43 > firmware. I wrote a script to automatically download, unpack, and > scour each and every one of the Linksys GPL packages > (http://www.linksysbycisco.com/US/en/supportgplcode) for firmware. > > I found some interesting things in the process, including several new > firmware versions. Perhaps most interestingly, I found Broadcom WL > drivers built for a 2.6.x kernel. If you grab the file > WAG54GX2_A_v1009_UK_GPL.tgz from Linksys, there's a file > src.GPL/driver/2.6.8.1/extra/wl.ko containing firmware. Very > intriguing. > > Also, I wrote a pure-Python version of b43-fwcutter (attached) to > facilitate this automated firmware extraction, based on mklist.py. > Just point it at a binary containing firmware, and it will (a) find > the firmware in the manner of mklist.py, and (b) extract it in the > manner of b43-fwcutter.c. It produces identical firmware files as the > C version of b43-fwcutter, and may be useful if experimenting with > different firmware versions. > > In the process of writing the Python code, I think I found an > endian-related bug in b43-fwcutter.c. It mangles the byte order of > firmware instructions and as a result the analyse_ucode() routine > doesn't find the firmware version information on little-endian hosts. > I can submit a patch for that as well, if interested. But the bug is > fixed in my Python implementation, which you can try out.
I tried it on the file above and got the following: fin...@larrylap:~/WAG54GX2> ~/sprom/b43_fwcutter.py src.GPL/driver/2.6.8.1/extra/wl.ko Firmware md5sum is 4f1218df93c23b4e27c83cb208031a1d... Extracting a0g0bsinitvals2 of length 0x10 from offset 0x52A4C... Traceback (most recent call last): File "/home/finger/sprom/b43_fwcutter.py", line 267, in <module> extract_firmware(fd, extract, options.endian, outfn) File "/home/finger/sprom/b43_fwcutter.py", line 197, in extract_firmware buf, n = build_ivs(buf, endian) File "/home/finger/sprom/b43_fwcutter.py", line 169, in build_ivs assert biv.size in (2,4) AssertionError _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/bcm43xx-dev