[Prism54-devel] New revision of SMC 2802W card, Firmware 2.4.3.0

Karsten Richter kasi@kasi-net.org
Wed, 21 Jan 2004 22:33:24 +0100


Hi all,

I just got a new SMC 2802W PCI 802.11G card and tried to get it running
with prism54.

Unfortunately the PCI id differs from the one of the "old" 2802W .
SMC seems to call this one "2802Wv2" (the name of the installer EXE
implies that name).

This is what lspci -v -v -v -n says:

00:0f.0 Class 0280: 1260:3890 (rev 01)
Subsystem: 1113:ee03

The windows driver expects the subsystem id so I 	
added a new PCI device entry with this subsystem id to 
islpci_hotplug.c.

After this modification the prism54.o recognized my card but 
firmware loading fails (tried 1.0.4.3 and 1.0.3.0):

Loaded prism54 driver, version 1.0.2.2
PCI: Found IRQ 5 for device 00:0f.0
PCI: Sharing IRQ 5 with 00:02.2
eth2: islpci_open()
eth2: resetting device...
eth2: uploading firmware...
eth2: firmware uploaded done, now triggering reset...
eth2: device soft reset timed out

After that partial success I xxd'ed the Win2k/XP Driver
that was shipped with the card and found some
interesting parts in 
2802W.SYS (and 2802W51.SYS):

[...]
0000870: 3200 5700 0000 0000 5000 5200 4900 5300 2.W.....P.R.I.S.
0000880: 4d00 2d00 5300 5400 4100 5400 4900 4f00 M.-.S.T.A.T.I.O.
0000890: 4e00 0000 5000 5200 4900 5300 4d00 2d00 N...P.R.I.S.M.-.
00008a0: 5300 5300 4900 4400 0000 0000 0100 0200 S.S.I.D.........
00008b0: 0400 0800 1000 0001 0203 0001 0203 0405 ................
00008c0: 0607 dd00 0000 a0e1 dcf3 9fe5 0000 0000 ................
00008d0: 0000 0000 0000 0000 0100 0080 0100 0000 ................
00008e0: 4c4d 3836 0200 0080 0600 0000 322e 342e LM86........2.4.
00008f0: 332e 3200 0000 0000 0000 0000 0000 0000 3.2.............
0000900: 0000 0000 0400 0080 0300 0000 0000 1a00 ................
[...]
00009d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00009e0: 5665 7273 696f 6e20 322e 342e 332e 3220 Version 2.4.3.2
00009f0: 6275 696c 7420 6f6e 2057 6564 204e 6f76  built on Wed Nov
0000a00: 2035 2031 333a 3033 3a33 3620 4345 5420   5 13:03:36 CET
0000a10: 3230 3033 2062 7920 696e 6c62 7569 6c64  2003 by inlbuild
0000a20: 4074 6978 5041 434b 5041 434b 5041 434b @tixPACKPACKPACK
0000a30: 7802 9fe5 0000 80e5 d3f0 21e3 0020 a0e3 x.........!.. ..
[...]
00079c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00079d0: 0000 0000 d879 0100 534d 4332 3830 3257 .....y..SMC2802W
00079e0: 494f 432e 7678 6400 4e6f 7620 3234 2032 IOC.vxd.Nov 24 2
00079f0: 3030 3300 5600 6500 6e00 6400 6f00 7200 003.V.e.n.d.o.r.
0007a00: 4400 6500 7300 6300 0000 0000 5200 7500 D.e.s.c.....R.u.
0007a10: 6e00 6e00 6900 6e00 6700 5700 6900 6e00 n.n.i.n.g.W.i.n.
0007a20: 3900 5800 0000 0000 534d 4320 4e65 7477 9.X.....SMC Netw

This is obviously a station firmware 2.4.3.2 built by intersil.
It seems to end somewhere around offset 0x79d0 that means about
28808 byte of firmware which is quite (too?) small in comparison to 
older firmware (1.0.4.3 is ~92kByte).

Sorry for the lengthy explanation but I thought this information
might be useful for others trying to get this type of card running.

Has anyone ever tried to fetch binary firmware from a windows driver
or does anyone have knowledge of the internal structure of the .sys
files? 

I remember that neat trick back in 802.11b times where the hexdump of 
1.3.4 could be fetched from a pseudo .sys file, but this format is
binary and not SREG so the old split-combined-hex obviously does 
not work.

I am quite sure that the card will initialize correctly when
it receives the correct firmware.

TIA 

Karsten Richter (kasi@kasi-net.org)