[Prism54-devel] X2 firmware file format
Sebastien B
sebastien.b at swissinfo.org
Tue Mar 1 17:34:01 UTC 2005
Hello,
> about this driver : given that i didn't need it up to now for reverse
> engeneering, i'm thinking about "bringing it down" (removing it from
> public disctibution, leaving it available privately). It seems it'll be
> used by few people anyways, and we have no right, according to the
> license, to redistribute modified versions of it, and i don't want to be
> tainted for redistributing it illegally.
F* it. That's abusive copyright in my opinion. I'll keep distributing it on my
website unless I get in real big trouble with Conexant.
> 0/ I completely agree with you about the nature of the firmware. This is
> not what we want, only for 3886. I'm very upset about the possibility
> that the softmac we have may not be able to parse the bra for the 3887
> firmware (the different API in the usb driver points to another, more
> recent, softmac library).
At last resort, I'll try retreiving the sm_data from a successful call to
prism_softmac_parse_bra() with 3886lmac_2.7.0.0.arm and then injecting it as
a static buffer in the driver, although the device will be running an USB
2.5.8.0 firmware. Maybe there is a chance for some parts of the driver to
keep working after this hack, if the communication protocols are not too
different between the two firmwares...
What API for USB firmware parsing are you talking about ? I can't figure this
out in the code...
> 1/ Did you try to extract the firmware from the USB logs ?
I have only checked the build string in the USB log, and then used the
corresponding firmware from the Windows driver.
> Then use
> this precise firmware to carry out your tests. Or maybe i missed
> something and this firmware has an incompatible bra ? -- in this case
> i'm really pessimistic (see above).
Probably the bra is incompatible... The 2.7.0.0 firmware is very similar to
the others (ARM NOP at the very beginning, string "PACKPACKPACK", build
string).
By the way, the error message when failing to parse the bra is about a
"LMAC-UMAC incompatibility" ; I thought perhaps this would be because of a
different version number so I took the 2.5.8.0 firmware and modified it
version number to fool the UMAC into thinking it's 2.7.0.0, but it didn't
work. So the "bra" seems to be a much more complicated mechanism introduced
in more recent firmwares.
That's why I'm looking for 3887 Windows drivers using a very recent firmware
(> 2.5.11) so that I can try them with prism_softmac_parse_bra()
> 2/ The protocol in those devices seems to be text-based.
Yes, I've noticed. I've written an usermode program which acts as a dumb
terminal on endpoint 1 to allow easier experimentation, but I have trouble
with writing and reading at the same time ; I first used threads with a poor
result : indeed, libusb doesn't support threads at all (I was said this later
by a developer ; I hadn't found anywhere that threads wouldn't work), even if
the threads don't try to perform operations on the same resource at the same
time.
I'm still looking for a portable usermode USB library, which less limitations
than libusb 0.1. Perhaps libusb CVS, I haven't tried yet.
> 3/ As you may have seen, the protocol expected in the XH driver and the
> one embodied in the USB logs is not the same. Just for a quick
> difference, the USB logs show a packet sent that is "<<<<" for
> reinitialization, where the driver only sends one "<". There are many
> other discrepencied. You may need to adjust this in the driver; having
> no device, i didn't care to do it.
Indeed, the firmware upload didn't work, it either timed out or the device
replied "ERROR" (PCI firmware detected ?). I haven't tried a lot yet, I'd
prefer doing this in usermode in a first time, and make the modifications in
the kernel later.
Also, I hope the XH8196's UMAC library is not "SoftMAC version 2", again
different from what we have seen so far, as the "softmac2.h" filename
suggests.
> Now, as far as protocol reverse-engeneering is concerned : what i'd
> really like now is a driver able to provide logs for HostAP mode... Is
> the TIVO driver able to handler this ?
I don't know. The Tivo driver is only for the very same CPU which those
devices are equipped with, and all the computers I have are x86-based.
Perhaps I could emulate it...
> Is there any source code available ?
No. Obviously, Conexant keeps it confidential.
Regards,
Sebastien
More information about the Prism54-devel
mailing list