So, I've taken a look at the Harmony 700 logs, and overall it looks
basically similar to other remotes. However, there are definitely some
differences that will take some work.

To decode some more, it'd be useful if we could capture a complete trace
of the HTTP traffic between Logitech's software and their web-server,
and also the download files that it pushes to the client to execute.
You'd have to install some kind of network sniffer (e.g. wireshark) to
capture the former. To capture the download files, you'd need to use a
web-browser to access http://members.harmonyremote.com/, and force the
browser to save the files instead of automatically opening them with the
Logitech software (there should be a separate file for identifying the
remote, updating configuration, updating firmware).

There are some fields in the HTTP responses that libconcord generates
that need to be tallied back to fields in the GET_VERSION response, and
flash/eeprom/... reads. That's why we need the HTTP dump (note: this
dump will include your Harmony user ID and password). Also, since the
700 firmware updates appears to have two separate regions, we'd need to
take a look at the config file that the website pushes (may also include
your user ID/password) to work out how to extract the two sections of
firmware.

As far as supporting the 700:

a) We could probably force any GET_VERSION response with length 8 to be
the 700 for now.

b) We need to add new entry points to libconcord for pre-/post-
configuration update to send the new "restart config" commands.

c) We need to somehow expand the firmware APIs to be able to erase and
program two separate sections. Perhaps the remote will work OK if we
erase both sections then program both sections. That would allow this to
be implemented without any API changes by hiding more complex blobs
behind the APIs (list of data blobs instead of a single data blob).
However, if the order *has* to be erase, write, erase, write, then we'd
need to modify the libconcord API to allow the client application to
specifically iterate through the sections that need to be programmed.

(I wonder if I should get a 700 from eBay/Amazon; this will probably
need some iterative tweaking to get it working)

I include some notes on the protocol comparisons against an 880 below:

Harmony 700 GET_VERSION response

28 GET_VERSION response, length 8
25 Firmware version 2.5 (Region 2 version)
00 ?? Board version <<0.0>>.0
1C HW version 0x15:1c
15 HW version 0x15:1c
E0 ??
42 ??
0C ??
23 Region 0 or 1 version 2.3??

Harmony 880 GET_VERSION response

27 GET_VERSION response, length 7
40 Firmware version 4.0
18 HW version 1.8
49 Flash ID
01 Flash manufacturer
80 Architecture 8, fw_type 0
0F Skin
08 Protocol

Harmony 700 Update Config

Write Restart Config 02 02 ***** NEW; no command here on 880
  A3 0A 09 00
Write Restart Config 05 00 ***** NEW; no command here on 880
  A3 0A 05 00
Write Invalidate Flash
Erase Flash 030000..100000
Write Flash 030000..end
Erase Flash 1E0000..1F0000 ***** SKIPPED by libconcord on 880
Write Restart Config 03 01 ***** NEW; no command here on 880
  A3 0A 03 01
Write Restart Config 06 00 ***** NEW; no command here on 880
  A3 0A 06 00
Reset Device (02)

Harmony 880 Update Config

Write Invalidate Flash
Erase Flash 020000..0C0000
Write Flash 020000..end
Erase Flash 1E0000..1F0000 ***** Skipped by libconcord on 880
Reset Device (02)

Harmony 700 Firmware

Write Unknown              ***** CHANGED; different command to 880
  A1 0B
Erase Flash 020000         ***** NEW; multiple regions
Write Flash 020000..end    ***** NEW; multiple regions
Erase Flash 000000..010000
Write Flash 000000..end
Write RAM 00 02
Read  RAM 00
Reset Device (02)

Harmony 880 Firmware

Write RAM 00 00
  A3 06 00 00
Read  RAM 00
Write Invalidate Flash
Erase Flash 1D0000
Write Flash 1D0000..end
Write RAM 00 02
Read  RAM 00
Reset Device (02)

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel

Reply via email to