I’ve been upgrading my APC UPSes to systems with APC management cards (AP9630/AP9631) in them. For some reason the APC site thinks that EVERYONE in the world only run Windows OSes. I don’t run windows… and it’s a PITA to get an eval VM just to update the APC firmware. Also, I really only have Linux boxes, or a MacOS X desktop.
Side note here: HEY APC! Can you create tools that run on any platform? Python maybe?
This article will give you some info on how to update the firmware on your APC with out the use of Windows OS.
Step one: Get binwalk https://github.com/ReFirmLabs/binwalk. One the Mac, after installing homebrew (https://brew.sh), run “brew install binwalk” – that will grab all the required components.
On Ubuntu you can run “sudo apt install binwalk”
Once you have a working binwalk, you can now go find the windows “exe” file from the APC website: https://www.apc.com/shop/mt/en/tools/software-firmware/. First figure out what version the UPS is on- this could be in the Admin menu, or the About menu. You will want to find the binary type, eg: “sumx”. If you search for your UPS type, and then enter in the managment card type- it should find the files on the site. Again, this is the worst, as it shows you like 3 or 5 different versions based on where that card goes. If the download has your UPS model in the name, it should work. EG: Smart-UPS & Galxy 3500. It’s a weird way to name & package firmware updates (EG: confusing).
Now, extract the file:
binwalk -e apc_hw05_aos688_sumx688_bootmon109.exe
You should then get something like this:
macbookpro13:Downloads username$ binwalk -e apc_hw05_aos688_sumx688_bootmon109.exe
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Microsoft executable, portable (PE)
28289 0x6E81 Zip archive data, at least v2.0 to extract, name: Bins/
28324 0x6EA4 Zip archive data, at least v2.0 to extract, compressed size: 1163832, uncompressed size: 3137792, name: Bins/apc_hw05_aos_688.bin
1192211 0x123113 Zip archive data, at least v2.0 to extract, compressed size: 81708, uncompressed size: 262144, name: Bins/apc_hw05_bootmon_109.bin
1273978 0x13707A Zip archive data, at least v2.0 to extract, compressed size: 936098, uncompressed size: 3016836, name: Bins/apc_hw05_sumx_688.bin
2210132 0x21B954 Zip archive data, at least v2.0 to extract, compressed size: 186885, uncompressed size: 785780, name: Bins/sumx_688_esEszhCnjaJaptBrkoKo.lpk
2397085 0x24939D Zip archive data, at least v2.0 to extract, compressed size: 191741, uncompressed size: 797409, name: Bins/sumx_688_frFrdeDeitItesEsptBr.lpk
2588894 0x2780DE Zip archive data, at least v2.0 to extract, compressed size: 201265, uncompressed size: 900701, name: Bins/sumx_688_frFrdeDeruRuitItesEs.lpk
2790227 0x2A9353 Zip archive data, at least v2.0 to extract, compressed size: 197345, uncompressed size: 895158, name: Bins/sumx_688_frFrruRuzhCnjaJakoKo.lpk
2987640 0x2D9678 Zip archive data, at least v2.0 to extract, compressed size: 1149947, uncompressed size: 3464192, name: edtFTPnetPRO.dll
4137633 0x3F22A1 Zip archive data, at least v2.0 to extract, compressed size: 31586, uncompressed size: 74056, name: NMCFirmwareUpdateUtility.exe
4170378 0x3FA28A End of Zip archive, footer length: 22
4170901 0x3FA495 Certificate in DER format (x509 v3), header length: 4, sequence length: 1006
4171911 0x3FA887 Certificate in DER format (x509 v3), header length: 4, sequence length: 1187
4173102 0x3FAD2E Certificate in DER format (x509 v3), header length: 4, sequence length: 1227
4174333 0x3FB1FD Certificate in DER format (x509 v3), header length: 4, sequence length: 1369
4175706 0x3FB75A Certificate in DER format (x509 v3), header length: 4, sequence length: 1434
If you look that the above text- we see that it extracted the *.bin files that we need to update the firmware. NO MS Windows OS needed!
APC has a FAQ for updating their firmware manually. It feels like it was written by an engineer who has worked with the products for 20+ years, and can only run Windows OS. That FAQ is here (Very hard to read): https://www.apc.com/us/en/faqs/FA156047/
Bassicly- what it says is this:
If the package you downloaded has a .bin file that has “aos” someplace in the name, upload that first. Wait 20-30 seconds, Then upload the “bootmon” file. Wait 30+ seconds. Then upload the application file, eg: apc_hw05_sumx_688.bin
Now cd into the directory with the extracted binary files:
cd _apc_hw05_aos688_sumx688_bootmon109.exe.extracted/Bins/
macbookpro13:Bins username$ ls -l
total 19640
-rw-r--r-- 1 username staff 3137792 May 4 12:32 apc_hw05_aos_688.bin
-rw-r--r-- 1 username staff 262144 Jun 7 2019 apc_hw05_bootmon_109.bin
-rw-r--r-- 1 username staff 3016836 May 4 12:32 apc_hw05_sumx_688.bin
-rw-r--r-- 1 username staff 785780 May 4 12:17 sumx_688_esEszhCnjaJaptBrkoKo.lpk
-rw-r--r-- 1 username staff 797409 May 4 12:17 sumx_688_frFrdeDeitItesEsptBr.lpk
-rw-r--r-- 1 username staff 900701 May 4 12:17 sumx_688_frFrdeDeruRuitItesEs.lpk
-rw-r--r-- 1 username staff 895158 May 4 12:17 sumx_688_frFrruRuzhCnjaJakoKo.lpk
Now ftp to the APC device to be upgraded….
ncftp -u apc -p apc 192.168.101.21
put apc_hw05_aos_688.bin
# Wait 30-60 seconds for the APC to reboot - may have to restart ftp client
# login to APC again via FTP
ncftp -u apc -p apc 192.168.101.21
put apc_hw05_bootmon_109.bin
# Wait for the reboot again. 30-60 seconds.
# This final step will upgrade the Application on the card.
ncftp -u apc -p apc 192.168.101.21
put apc_hw05_sumx_688.bin
At this point you should have an updated version of the software ready to go, and now you can manage the device to your hearts content. If you brick your UPS managment card, it is not my fault. I take no responsibility for anyone following this process. But, it’s worked well for me, as I don’t have access to a windows box to run a .exe to unpack the firmware.
Good luck!