Stephen Warren wrote:
> I'm making progress on getting firmware upgrades working for me.
<SNIP>
> Who knows why. Perhaps Logitech found a bug in 4.4.2 and rolled it back?
> Anyway, I now have 2 sets of firmware bits to play with. They both seem
> to work for me!

This is really fortunate for us!

> Both sets of downloaded firmware files start with 6 FF's.
> 
> When the Logitech software upgrades the firmware, it does this:
> 
> Sets bytes 0,1 to some firmware-specific value (checksum???)
>   0xD8 0xF8 for 4.4.2
>   0xFB 0x85 for 4.0.13
> Leaves bytes 2, 3 as FF
> Sets bytes 4, 5 to constant 0x48, 0x47

This is consistent with what I found. Oh, damn, looks like I never put that
in an email.

Anyway, from dumping the staging area I found that bytes 2 and 3 were
untouched as well. Bytes 4 and 5 I knew were "set", but I didn't know from
what (I guessed from existing firmware), and clearly you know my theory on 0
and 1.

Now that you have TWO firmwares, that's awesome, and clears up a lot about
bytes 0, 1, 4, and 5. Come to think about it, I don't know why I left the
code updating bytes 2 and 3 since I saw the official code wasn't doing that.
Hmm. Odd.

> b) Need to find the (checksum?) algorithm that generates the first 2
> bytes of firmware data to write.

This is the important bit. Annoyingly there's not even a nice way to pull
the version number from the XML file. It's THERE, but it's burried in text:

        <PHASE>
                <NAME>Upgrading 880 Application firmware to version 4.0.13
(20050504_165503)</NAME>

It would suck to rely on pulling NAME and then parsing it and hoping for the
best. If there was a better way I'd say that as an interim solution we could
have a table of version->magicnumber...

Anyway - one thing to keep in mind is that the magic number is either IN the
firmware data somewhere or the remote is calculating it - because it
*displays* the magic numbers when you boot into safemode.

> c) libconcord should hard-code/calculate the first bytes 0..5 of
> firmware, not read them from flash.

Indeed. I'm going to change this code now to something more sensible. OK,
well, after the checkin that's coming in a minute.

> d) Work out how this all works for remotes other than the 880. As I
> mentioned before, the other firmware files in Kevin's
> harmony_usb_logs.zip file don't all have 6 bytes of FFs at the beginning
> - at least some only have 4. I need to compare the EZHex and XML files
> for those other remotes to check, but I'm pretty convinced at this point
> that the number of bytes to overwrite, and the values to use (perhaps
> even checksum algorithm), will be at least partially be arch-dependent.

This has been a huge help, thanks! Sorry I didn't post about bytes 2 and 3 -
I could have sworn I did. Ah well.

-- 
Phil Dibowitz                             [EMAIL PROTECTED]
Open Source software and tech docs        Insanity Palace of Metallica
http://www.phildev.net/                   http://www.ipom.com/

"Never write it in C if you can do it in 'awk';
 Never do it in 'awk' if 'sed' can handle it;
 Never use 'sed' when 'tr' can do the job;
 Never invoke 'tr' when 'cat' is sufficient;
 Avoid using 'cat' whenever possible" -- Taylor's Laws of Programming


Attachment: signature.asc
Description: OpenPGP digital signature

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel

Reply via email to