For the linux people that are scared of command line:
1. What the hell are you doing with linux?
2. Use 'gparted' for formatting. Not 'disks'. That utility is a useless-tility.
3. Format the disk 'FAT32' for a firmware image, Format it as 'FAT16' if you want to make a magic disk.
This worked without fail for me.
Finally, got DG811 unit from China. Unfortunately, it have 2.02 firmware installed.
Is it possible to upgrade to 992?
It is, but you need to downgrade the firmware and do the unlock trick from this post:
https://www.eevblog.com/forum/testgear/new-rigol-16-bit-function-generators-dg800900-series/msg2420391/#msg2420391Unfortunately the device does not let you downgrade the firmware, so you need to bypass the version validation for the downgrade to succeed.
tv84 seems to have a working "downgrade" firmware, although he did not put it up for public download.
Probably due to the attachment-size limit, I am sure he will share a download link when he has time.
I am currently trying to take a stab at it myself, although my experience with such stuff is about zero
Rigol pulled the old (hackable) firmware from most of their websites, but by checking some of their file servers I finally found it.
If someone needs the old firmware - just ping me. Cannot upload it here due to attachment size restrictions of the forum.
PLEASE NOTE: you cannot downgrade your device with the original firmware - you need to patch it first, somehow
If you download the latest firmware you will find a Release Notes file.
As v00.01.09.00.00 was never released as an updated, just preinstalled on some devices, there seems to be no change log entry for it.
[Model Supported] DG811,DG821,DG831,DG812,DG822,DG832,DG952,DG972,DG992,DG2052,DG2072,DG2102
[Latest Revision Date] 2020-02-18
[Updated Contents]
v00.02.04.00.00 2020-02-18
- Add open source declaration in help UI
- Solve the problem of address error in ultralab heartbeat server configuration
- Solve the bug that the relay output instantaneous voltage error after setting offset
When I am not mistaken, AshDash was the first one with a shipped 1.09, who had to invest time and brain to contribute decisive steps to tv84 and other friendly helpers to search for a new/other way to downgrade; probably this is also the case for an upgrade to 2.04 and any further...
Let's call him a helpful volunteer and that's why he deserved a special treatment... His upgrade method is not "public".
So, from all the posts in these last 2 pages i seem to conclude that the (factory released) v2.04 equipments don't migrate the model ID from the v1.08 version because they already have a valid DG81x ID in the new memory struct area.
If that's so, it should be possible to patch the FW to do it or ... using the MODF command (which is Rigol's official way).
Edit: Therefore the "downgrade" method only works with re-upgrade up to v2.02 , as such its validity has expired.
I've extracted some fw4uboot.sh parts from GEL files:
Command used:
openssl aes-128-cbc -in 1.bin.aes -out 1.bin -d -K "BAD8CFFEBBAAB5C4C3D8D4BFCAFDBEDD" -iv "0" -nopad
Also, fw4linux.sh seems to be encoded using some other key.
FW 1.80
#upgrade_shell
#check version first
showMessage 'Upgrading(1/4), check version...' 7 14
if checkVer "00.01.00.11.01"; then \
echo New version; \
else \
echo Old version; \
showMessage 'Upgrading failed, not new version!' 7 14;\
fi;
#check all md5
progress 16
showMessage 'Upgrading(2/4), check images...' 7 14
progress 17
if tar_find 0x88000000 Sardine.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 856ee251bb839a7c231c2920903939c3; then \
echo check Sardine.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check Sardine.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find Sardine.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 app_gz.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} e3260cf08c98485d8d51c2fd83142c61; then \
echo check app_gz.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check app_gz.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find app_gz.img.gz error!;\
exit_from_shell;\
fi;
#update spi flash images
progress 19
showMessage 'Upgrading(3/4), flash images...' 7 14
#update nand images
mtdparts default;
echo 'set mtdparts environment';
setenv mtdparts "mtdparts=nand.0:1m(NAND.bootpic-usr),1m(NAND.bootpic-def)ro,1m(NAND.bootpic-def.bak)ro,512k(NAND.uboot-env),512k(NAND.uboot-env.bak),512k(NAND.fdt)ro,512k(NAND.fdt.bak)ro,8m(NAND.kernel)ro,8m(NAND.kernel.bak)ro,31m(NAND.reserved),180m(NAND.sardine)ro,100m(NAND.filesystem),20m(NAND.cal),-(NAND.userspace)"
echo 'del partitions';
mtdparts del NAND.reserved
mtdparts del NAND.sardine
echo 'add partitions';
mtdparts add nand0 0x01f00000@0x01500000 NAND.reserved
mtdparts add nand0 0x0b400000@0x03400000 NAND.sardine
saveenv
echo 'set mtdparts environment OK!';
if tar_find 0x88000000 Sardine.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.sardine; then \
progress 70;\
if nand write 0x82000000 NAND.sardine ${filesize}; then \
progress 74;\
else \
nand erase.part NAND.sardine; \
if nand write 0x82000000 NAND.sardine ${filesize}; then \
progress 74;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip Sardine.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar Sardine.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 app_gz.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.reserved; then \
progress 94;\
if nand write 0x82000000 NAND.reserved ${filesize}; then \
progress 98;\
else \
nand erase.part NAND.reserved; \
if nand write 0x82000000 NAND.reserved ${filesize}; then \
progress 98;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip app_gz.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar app_gz.img.gz error!;\
exit_from_shell;\
fi;
#env
echo 'set some env';
showMessage 'Upgrading(4/4), set some env...' 7 14
progress 99
setenv softver '00.01.00.11.01'
setenv builddate '2018.08.30 16:39:44'
setenv bootcmd nandboot
showMessage 'Upgrade OK, please reboot.' 7 14
progress 100
saveenv
echo 'System download OK!';
##end##
FW 2.02
#upgrade_shell
#check version first
showMessage 'Upgrading(1/4), check version...' 7 14
if checkVer "00.01.09.00.01"; then \
echo New version; \
else \
echo Old version; \
showMessage 'Upgrading failed, not new version!' 7 14;\
exit_from_shell;\
fi;
#check all md5
progress 16
showMessage 'Upgrading(2/4), check images...' 7 14
progress 17
if tar_find 0x88000000 Sardine.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} ac0f5b34f8b37c3648ad2995b911c611; then \
echo check Sardine.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check Sardine.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find Sardine.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 app_gz.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 9d6a5188b8f2cc5254ed1b5d62b0f431; then \
echo check app_gz.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check app_gz.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find app_gz.img.gz error!;\
exit_from_shell;\
fi;
#update spi flash images
progress 19
showMessage 'Upgrading(3/4), flash images...' 7 14
#update nand images
mtdparts default;
if tar_find 0x88000000 Sardine.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.sardine; then \
progress 70;\
if nand write 0x82000000 NAND.sardine ${filesize}; then \
progress 74;\
else \
nand erase.part NAND.sardine; \
if nand write 0x82000000 NAND.sardine ${filesize}; then \
progress 74;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip Sardine.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar Sardine.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 app_gz.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.reserved; then \
progress 94;\
if nand write 0x82000000 NAND.reserved ${filesize}; then \
progress 98;\
else \
nand erase.part NAND.reserved; \
if nand write 0x82000000 NAND.reserved ${filesize}; then \
progress 98;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip app_gz.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar app_gz.img.gz error!;\
exit_from_shell;\
fi;
#env
echo 'set some env';
showMessage 'Upgrading(4/4), set some env...' 7 14
progress 99
setenv softver '00.01.09.00.01'
setenv builddate '2019.10.29 18:31:33'
setenv bootcmd nandboot
showMessage 'Upgrade OK, please reboot.' 7 14
progress 100
saveenv
echo 'System download OK!';
##end##
FW 2.04
#upgrade_shell
#check version first
showMessage 'Upgrading(1/4), check version...' 7 14
if checkVer "00.01.09.00.01"; then \
echo New version; \
else \
echo Old version; \
showMessage 'Upgrading failed, not new version!' 7 14;\
exit_from_shell;\
fi;
#check all md5
progress 16
showMessage 'Upgrading(2/4), check images...' 7 14
progress 17
if tar_find 0x88000000 logo.bmp.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} c1963c37d1742018cc1658103b48d969; then \
echo check logo.bmp.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check logo.bmp.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find logo.bmp.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 uImage.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 683c8c204a06c9d5a15535973e1b991d; then \
echo check uImage.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check uImage.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find uImage.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 fdt.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 4b38335267ccfa51bfeb5c361d6ffb1c; then \
echo check fdt.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check fdt.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find fdt.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 rootfs.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} c21426ba480b4cff028d819a7e2865a3; then \
echo check rootfs.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check rootfs.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find rootfs.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 Sardine.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 03a9b8fc7d6a86f08679809af56ca86a; then \
echo check Sardine.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check Sardine.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find Sardine.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 logo.bmp.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} c1963c37d1742018cc1658103b48d969; then \
echo check logo.bmp.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check logo.bmp.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find logo.bmp.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 logo.bmp.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} c1963c37d1742018cc1658103b48d969; then \
echo check logo.bmp.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check logo.bmp.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find logo.bmp.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 uImage.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 683c8c204a06c9d5a15535973e1b991d; then \
echo check uImage.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check uImage.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find uImage.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 fdt.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 4b38335267ccfa51bfeb5c361d6ffb1c; then \
echo check fdt.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check fdt.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find fdt.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 app_gz.img.gz; then \
if md5sum -v ${tar_find_addr} ${filesize} 74ce13e40ae4fd1535f02e4e88d730e2; then \
echo check app_gz.img.gz success; \
else \
showMessage 'Upgrading failed, bad images!' 7 14;\
echo check app_gz.img.gz error; \
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar_find app_gz.img.gz error!;\
exit_from_shell;\
fi;
#update spi flash images
progress 19
showMessage 'Upgrading(3/4), flash images...' 7 14
#update nand images
mtdparts default;
if tar_find 0x88000000 logo.bmp.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.bootpic-def; then \
progress 39;\
if nand write 0x82000000 NAND.bootpic-def ${filesize}; then \
progress 43;\
else \
nand erase.part NAND.bootpic-def; \
if nand write 0x82000000 NAND.bootpic-def ${filesize}; then \
progress 43;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip logo.bmp.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar logo.bmp.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 uImage.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.kernel; then \
progress 46;\
if nand write 0x82000000 NAND.kernel ${filesize}; then \
progress 50;\
else \
nand erase.part NAND.kernel; \
if nand write 0x82000000 NAND.kernel ${filesize}; then \
progress 50;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip uImage.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar uImage.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 fdt.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.fdt; then \
progress 54;\
if nand write 0x82000000 NAND.fdt ${filesize}; then \
progress 58;\
else \
nand erase.part NAND.fdt; \
if nand write 0x82000000 NAND.fdt ${filesize}; then \
progress 58;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip fdt.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar fdt.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 rootfs.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.filesystem; then \
progress 62;\
if nand write 0x82000000 NAND.filesystem ${filesize}; then \
progress 66;\
else \
nand erase.part NAND.filesystem; \
if nand write 0x82000000 NAND.filesystem ${filesize}; then \
progress 66;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip rootfs.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar rootfs.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 Sardine.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.sardine; then \
progress 70;\
if nand write 0x82000000 NAND.sardine ${filesize}; then \
progress 74;\
else \
nand erase.part NAND.sardine; \
if nand write 0x82000000 NAND.sardine ${filesize}; then \
progress 74;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip Sardine.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar Sardine.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 logo.bmp.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.bootpic-usr; then \
progress 76;\
if nand write 0x82000000 NAND.bootpic-usr ${filesize}; then \
progress 80;\
else \
nand erase.part NAND.bootpic-usr; \
if nand write 0x82000000 NAND.bootpic-usr ${filesize}; then \
progress 80;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip logo.bmp.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar logo.bmp.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 logo.bmp.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.bootpic-def.bak; then \
progress 82;\
if nand write 0x82000000 NAND.bootpic-def.bak ${filesize}; then \
progress 86;\
else \
nand erase.part NAND.bootpic-def.bak; \
if nand write 0x82000000 NAND.bootpic-def.bak ${filesize}; then \
progress 86;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip logo.bmp.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar logo.bmp.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 uImage.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.kernel.bak; then \
progress 88;\
if nand write 0x82000000 NAND.kernel.bak ${filesize}; then \
progress 92;\
else \
nand erase.part NAND.kernel.bak; \
if nand write 0x82000000 NAND.kernel.bak ${filesize}; then \
progress 92;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip uImage.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar uImage.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 fdt.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.fdt.bak; then \
progress 94;\
if nand write 0x82000000 NAND.fdt.bak ${filesize}; then \
progress 98;\
else \
nand erase.part NAND.fdt.bak; \
if nand write 0x82000000 NAND.fdt.bak ${filesize}; then \
progress 98;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip fdt.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar fdt.img.gz error!;\
exit_from_shell;\
fi;
if tar_find 0x88000000 app_gz.img.gz; then \
if unzip ${tar_find_addr} 0x82000000 0x6000000; then \
if nand erase.part NAND.reserved; then \
progress 94;\
if nand write 0x82000000 NAND.reserved ${filesize}; then \
progress 98;\
else \
nand erase.part NAND.reserved; \
if nand write 0x82000000 NAND.reserved ${filesize}; then \
progress 98;\
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
fi; \
else \
showMessage 'Upgrading failed, write failed!' 7 14;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, unzip image error!' 7 14;\
echo unzip app_gz.img.gz error!;\
exit_from_shell;\
fi; \
else \
showMessage 'Upgrading failed, image not found!' 7 14;\
echo tar app_gz.img.gz error!;\
exit_from_shell;\
fi;
#env
echo 'set some env';
showMessage 'Upgrading(4/4), set some env...' 7 14
progress 99
setenv softver '00.01.09.00.01'
setenv builddate '2020.02.18 08:59:53'
setenv bootcmd nandboot
setenv kernel_size '0x409000'
setenv kernel_check '0x1174efc5'
setenv fdt_size '0x9140'
setenv fdt_check '0x614e138a'
showMessage 'Upgrade OK, please reboot.' 7 14
progress 100
saveenv
echo 'System download OK!';
##end##
FW 2.04 seems to have many changes to the previous.
I wondering how to patch this 1.08 script to downgrade my 2.02 unit. I get "ERROR: bad script!" message when trying to flash 1.08 FW.
Wow!
I've modified (commented with #) version check section of fw4uboot.sh, encoded it with open-ssl, updated SardineUpdate.GEL (haven't updated any headers) and reflashed with "Help" key at startup, and voila:
My DG811 ver 2.02 unit transformed to DG992 ver 1.08.01 without sending any SCPI commands. Serial number changed to DG8000000000001.
So, what is my next step? Do I need send change model command with magic USB to flash next FWs?
I was asked how to prepare custom firmware for downgrade firmware version.
Here is my mini how-to guide:
1. Get 1.08.01 official firmware (available at web.archive.org of rigolna.com website)
2. Use hex editor (HxD, for example), open SardineUpdate.GEL
3. You will see encrypted block of data at the begining, starting at 200h offset. Select this block and do "save selection" to file fw4uboot.sh.aes (size 4016 bytes).
4. Decode file using command (under linux)
openssl aes-128-cbc -in fw4uboot.sh.aes -out fw4uboot.sh -d -K "BAD8CFFEBBAAB5C4C3D8D4BFCAFDBEDD" -iv "0" -nopad
5. Edit decoded fw4uboot.sh. Comment ..if checkVer ...else ... fi rows like this (insert # characters):
#if checkVer "00.01.00.11.01"; then \
echo New version; \
#else \
# echo New version; \
# showMessage 'Upgrading failed, not new version!' 7 14;\
#fi;
6. Make sure total length of edited fw4uboot.sh is still 4016 bytes (if not, add or delete some characters in commented rows).
7. Encrypt edited fw4uboot.sh using command:
openssl aes-128-cbc -in fw4uboot.sh -out fw4uboot_new.sh.aes -K "BAD8CFFEBBAAB5C4C3D8D4BFCAFDBEDD" -iv "0" -nopad
9. Using hex editor, update data block at 200h of SardineUpdate.GEL with encrypted fw4uboot_new.sh.aes
10.All done. Proceed flashing SardineUpdate.GEL to device (using "Help" key at boot method).
Next step is to use @tv84 guide.
https://www.eevblog.com/forum/testgear/new-rigol-16-bit-function-generators-dg800900-series/msg2420391/#msg2420391
1. DG952 shipped with FW 01.09
2. downgrade to 01.08 following evgbog's guide, success
3. system info showing model 'DG992', SN lost
4. write model 'DG992', write original SN(DG9A2xxxx) by SCPI command, success
5. system info showing model 'DG992' with correct SN(DG9A2xxxx)
6. upgrade to 02.04, success
7. system info showing model 'DG811', with correct original SN(DG9A2xxxx)
8. downgrade to 01.08 following evgbog's guide, success
9. system info showing model 'DG992', with correct original SN(DG9A2xxxx)
10. upgrade to 02.04, success
11. system info showing model 'DG811', with correct original SN(DG9A2xxxx)
What's wrong?
What I have cached so far:
Devices that where delivered with v00.01.08.xx can be hacked and afterwards upgraded all the way to v00.02.04.xx.
Devices delivered with v00.01.09 and up can only be upgraded to v00.02.02.xx. If you upgrade those devices to v00.02.04.xx, the hack stops working.
---
Do we know if there is any difference between v00.02.02 and v00.02.04, except for the rewritten boot-scripts (that kills the hack)?
Looks like v00.02.02 was the feature/bugfix release, while v00.02.04 is just just closing the hack for now.
Hello
I have dg811 delivered with firmware 01.09,
with evgbog guide (THANKS evgbog :-)) I have downgrade to 01.08 fw, hack to DG992 and rewrite SN to original state
now in rigol website I find 02.04 firmware but i want to upgrade to 02.02 firmware, where can I find it?
thanks a lot