This is a newcomer from Hellas, as the screen name reveals. A grateful one, if I might add...
«Εύρηκα!» ("I have found (it)!"; "Eureka" is the English transliteration; from the verb «ευρίσκω», meaning "to find, find out").
«Εύρηκα!» exclaimed Archimedes (287-212 BCE), the ancient Greek scholar from Syracuse, the moment he noticed that the water level rose when he stepped into his bath, suddenly realising that the volume of water displaced had to be equal to the volume of the part of his body he had submerged into the water!
So, «Εύρηκα!» will be the exclamation I will borrow to express my triumphalism. Let me explain myself. I faced the v2.05 SP2 situation, also; and reading maze's excellent observation, above, about the CRC-32 checksum bytes within the header files, I decided to give it a go.
Analysing the headers (the first 21 bytes) of the three known 2.05.xx firmware revisions (yes, I did some digging), the format of the firmware header becomes more obvious, since a third different firmware header confirms maze's speculation. So, here is a summary and some thoughts:
HEX Address: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14
---------------------------------------------------------------------------
v2.05.01.00: 44 53 31 30 30 30 45 20 20 20 82 85 84 88 C3 7B 47 92 39 C8 7E
v2.05.01.02: 44 53 31 30 30 30 45 20 20 20 82 85 84 82 8B B8 96 41 63 FF 33
v2.05.02.00: 44 53 31 30 30 30 45 20 20 20 82 85 82 88 C0 7E D7 6A 15 B6 B6
---------------------------------------------------------------------------
Fields: |<------ Std. header -------->|<-FW rev.->|<-?->|<- CRC32 ->|??|
---------------------------------------------------------------------------
v2.05.02.01: 44 53 31 30 30 30 45 20 20 20 __ __ __ __ __ __ __ __ __ __ __
---------------------------------------------------------------------------
Byte(00..09) = Std. header = 0x44533130303045202020
Byte(0A..0D) = FW rev. = 0x________
Byte(0E..0F) = ? = 0x____
Byte(13..10) = CRC-32(00..0F) = 0x________
Byte(14) = ?? = 0x__
So, we have five unknown values to figure out, in order to create a header version equal or grater to v2.05.02.01, to trigger a firmware update event. The unknown parts are four, actually, since the Bytes(00..09) are standard in all the firmware revisions.
Based on another observation, the four FW revision bytes could be just remapped to a non humanly readable format (unlike the ASCII string in the pre-v2.05 FW versions) and not necessarily be encrypted --even though the instrument has a number-crunching beast under the hood. Additionally, for backwards compatibility, the absolute hexadecimal value of the four FW revision bytes word should be greater than the corresponding value at any previous revisions.
Finally, since the other two figures at the header positions Byte(0E..0F) and Byte(14) do not seem to be something meaningful like CRC16/ CRC8/ product/ sum/ remainder/ etc., they could just be random values.
So, assuming that the firmware revision number bytes are correctly mapped (0x88 = '0', 0x84 = '1', 0x82 = '2' and 0x85 = '5'), I made the following experiment:
1. I set the <FW rev.> Bytes(0A..0D) equal to: [82 85 82 84], to reflect the desired target revision number: [2.5.2.1].
2. Since it is unknown what the Bytes(0E..0F) and Byte(14) represent, I copied them directly from the firmware header file v2.05.01.00, which are [C3 7B] and [7E] respectively. I think I could just add null bytes at these positions, though I am not sure that these locations can have random values.
3. I created the 2.05.02.01.header with the first 16 bytes of the <Std. header>.
4. I calculated the CRC32 checksum of the incomplete 2.05.02.01.header file, which is 0xE44834FF and reversed its byte order to: [FF 34 48 E4], as this seems to be the case at the original files, above.
5. I edited the 2.05.02.01.header file, adding the CRC32 reversed byte-order word, and also added the Byte(14) mentioned above, which is equal to [7E].
6. Done! the new header file's contents are:
HEX Address: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14
---------------------------------------------------------------------------
v2.05.02.01: 44 53 31 30 30 30 45 20 20 20 82 85 82 84 C3 7B FF 34 48 E4 7E
Fields: |<------ Std. header -------->|<-FW rev.->|<-?->|<- CRC32 ->|??|
7. Finally, I created a <DS1000EUpdate.RGL> file by joining binary the new 2.05.02.01.header and the 2.02.02.00.rom files, using the following CMD (from darrylp):
copy /B 2.05.02.01.header + 2.02.02.00.rom DS1000EUpdate.RGL
The newly created <DS1000EUpdate.RGL> firmware file is v2.02 SP2 actually, which allows the user to change the model and the serial numbers to meet those of DS1052E, DS1102E or DS1152E, using Mechatrommer's (aka: shafri's) USB utility, and to be updated to v2.04 SP1 or even to v2.05 SP2, since it is easy and safe now to be reverting back to v2.02 SP2 over and over!
NOTE 1: I do not encourage anyone to experiment with their instruments' firmware and/or hardware; even though I have been 100% successful in my attempts I described. But, if anyone chooses to, I will strongly suggest them *NOT* to run "Auto-Calibration" on any HW58 models, while a firmware lower than the v2.04 SP1 is loaded.
NOTE 2*: Though I have successfully downgraded my scope's firmware from v2.05 SP2 to v2.02 SP2, changed the model to DS1152E and loaded the firmware v2.04 SP1, I finally chose to update it to v2.05 SP2 since I can undo this action at will, because I assume that v2.05 SP2 must have some improvements over the v2.04 SP1, along with the new "unhackable" format... But I do not really know that.
UPDATE: See:
EDIT, 2011.05.14, below.
NOTE 3: I could have done nothing at all of the above, had I not been "standing on the shoulders of giants," meaning all these fine people that have worked and contributed to this project.
__________
A few additional thoughts: This is a dirt cheap and quite noisy oscilloscope --not to mention its audible fan. But, if (and when) I'll find some time, I will try to design a brand new hybrid PSU (a more flexible switching one with fast analog regulators at the outputs) to replace the original one, since the scope has not been measured to consume more than 25VA (NOT Watts!) from 230VAC. Because the PSU does not have a PFC stage (hence, 25VA != 25W) and the huge heatsinks of the linear regulators are getting really hot during operation (meaning that the PSU wastes lots of power), I think that the actual power requirements of the instrument could actually be as low as 10..15W only. But this can be accurately measured when I will decide to break the warranty seal.
This perspective opens the possibility to make the instrument portable, by using a rechargeable battery as an alternative power source, which could be recharged by the new PSU, too --even if this raises the design complexity... I guess that some people see the design challenges rather as a game than as a burden or a waste of time...
Last but not least, I should not forget to thank you all for your courtesy and the contribution to the wider community!
-George
[EDIT, 2011.04.21]: Spelling and additional information.
[EDIT, 2011.04.21]: 2.05.02.01.header file attached (and, of course, even more spelling corrected...)
2.05.02.01.header checksums:
CRC32: 719FAB26
MD5: B058467F61FF6D62712A64B3F8E8D0F8
SHA-1: 54217AFA199A05BBFBC908CE71DD2039D7C1F78A
[EDIT, 2011.05.02]: 2.05 SP2 to 2.02 SP2 (v2.05.02.00 to v2.02.02.00) downgrade firmware attatched!
This is what I should have done in the first place, since I did not foresee the confusion I would stir by firstly posting the HEX string only and, right after that, attaching the *.header file alone... So, here is the whole deal!
DS1000EUpdate.RGL checksum & hashes:
CRC32: 0C2CE1E8
MD5: F7C861576FE9EFEAF08C3E449F3527F0
SHA-1: EA262979BF58A5E758AC827BA187A67355959266
[EDIT, 2011.05.14]: (*) Some additional thoughts regarding my second note, above, about using the FW v2.02 SP2:
It has been reported some kind of screen flickering on the
most recently purchased DS1052E's. Since all the firmware revisions after v2.04 SP1 and before 2.05 SP2 have been reported to be buggy (locking up the devices until reboot, under certain circumstances), 2.05 SP2 itself could also be a problematic piece of firmware that probably causes the flickering mentioned before.
Fortunately, screen flickering
is reported to disappear when reverting back to FW v2.04 SP1.