This thread is dedicated to hacking the Rigol DC DP900/DP2000 power supplies:
| Product | Type | Max Power | Max Voltage | Max Current | Channels | Price (USD) |
| DP2031 | Power Supplies | 222 Watts | 64 Volts | 10 Amps | 3 | $1,199 |
| DP932U | Power Supplies | 210 Watts | 64 Volts | 6 Amps | 3 | $529 |
| DP932A | Power Supplies | 210 Watts | 64 Volts | 6 Amps | 3 | $749 |
Platform is based on an Allwinner i40 linux-sunxi platform
There is some firmware available:
https://www.rigol.eu/Public/Uploads/uploadfile/files/20230321/20230321002306_6418886a99c29.zipIts a rar archive, extract using:
unrar x 20230321002306_6418886a99c29.zip
then there's a GEL file, extract using:
tar xvf DP900_DP2000_Update.GEL
-rw-r--r-- adil/root 35836928 2023-02-08 13:52 tina-r40-m2ultra.swu
-rw-r--r-- adil/root 105900 2022-04-08 04:44 sousa_fpga.024.bin
-rw-r--r-- adil/root 185 2023-02-08 13:52 image_info.txt
-rw-r--r-- adil/root 108 2023-02-08 13:52 checksum.txt
then there's a cpio archive:
cpio -i <tina-r40-m2ultra.swu
-rw-r--r-- 1 henk henk 3656 Apr 12 22:04 sw-description
-rw-r--r-- 1 henk henk 256 Apr 12 22:04 sw-description.sig
-rw-r--r-- 1 henk henk 15728640 Apr 12 22:04 recovery
-rw-r--r-- 1 henk henk 1196032 Apr 12 22:04 uboot
-rw-r--r-- 1 henk henk 32768 Apr 12 22:04 boot0
-rw-r--r-- 1 henk henk 4194304 Apr 12 22:04 kernel
-rw-r--r-- 1 henk henk 14680064 Apr 12 22:04 rootfs
Then there's a squashfs filesystem:
file rootfs
rootfs: Squashfs filesystem, little endian, version 4.0, xz compressed, 14674551 bytes, 1446 inodes, blocksize: 262144 bytes, created: Wed Feb 8 12:49:37 2023
So we have a sunix linux system running on your PSU unit together with an FPGA.
Firmware updates are controlled by swupdate
https://sbabic.github.io/swupdate/sw-description.htmlUpdate command:
swupdate -n -k /etc/swupdate_public.pem $check_version_para $swu_param -e $swu_software,$swu_mode >> $swupdate_log_file 2>&1
File
/etc/swupdate_public.pem (RSA 2048):
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxO//XV7kM2qvOjdcmqlF
JlzzHZtE3uu9GE5Vu7ba2jrqhhHy9ivXOb7kWbeIM3Jb5dqqAP1jaDjO7A+WF47R
WakMpv++MxDQP/oJNtlcGIraqSBRRxl+N/mIljA+G4uP/ZbLKDcWbh2fQr0yQ1T9
0KK1o10mTKzIvWGP5a7VNVlIfUd1KPjxzTFcFEcBcb7Hy6gVZYFmxdmFAicwVaG8
vHl2OUzG4I4rOVTdwGNp9ivsy3MqJjtHl4uY5HH+cubNnV8V6PaLtDi4YnZiP8cw
dDDY15h95NZ/2+FJCArc4oRaWQQ0VDxQ/9DLLdRYFbVZ1GSDuZ30cHJIIeqviGIo
lwIDAQAB
-----END PUBLIC KEY-----