Update Schneider-APCUPS firmware with Linux

Schneider-APC ships with the firmware download an Update utility, however this utility is only running on Windows. In this blog post I’m showing how to update a Schneider-APCUPS with Linux. This process should also work on Windows or any other Operating System which provides a command line FTP client.

The Schneider-APC firmware has three files which should be installed in this order:

  1. bootmon
  2. aos
  3. sumx

Enable FTP server

Due to security reasons, FTP is disabled in my configuration (FTP is an insecure protocol which uses plain-text login). This means for the update procedure the internal FTP server must be enabled first.

Enable FTP server on Schneider-APC UPS
Enable FTP server on Schneider-APCUPS

Installing bootmon

To install the bootmon file just connect with a FTP client to the UPS and “put” the file on the UPS file system. Note: The network management card will reboot (not the UPS).

  $ftp [IP_ADDR_OF_UPS]
  Connected to [IP_ADDR_OF_UPS].
  220 AP9630J Network Management Card AOS v6.5.0 FTP server ready.
  Name ([IP_ADDR_OF_UPS]:[USER]): xXxXxXx
  331 User name okay, need password.
  Password: xXxXxXx
  230 User logged in, proceed.
  ftp> bin
  200 TYPE Command okay.
  ftp> hash
  Hash mark printing on (1024 bytes/hash mark).
  ftp> put apc_hw05_bootmon_109.bin
  local: apc_hw05_bootmon_109.bin remote: apc_hw05_bootmon_109.bin
  200 PORT Command okay.
  150 File status okay; about to open data connection.
  ###...cut...###
  226 Closing data connection.
  262144 bytes sent in 5.91 secs (43.3445 kB/s)
  ftp> bye
Schneider-APCUPS: Update bootmon file

Installing aos

The second file is aos. Note: The network management card will reboot.

  $ftp [IP_ADDR_OF_UPS]
  Connected to [IP_ADDR_OF_UPS].
  220 AP9630J Network Management Card AOS v6.5.0 FTP server ready.
  Name ([IP_ADDR_OF_UPS]:[USER]): xXxXxXx
  331 User name okay, need password.
  Password: xXxXxXx
  230 User logged in, proceed.
  ftp> bin
  200 TYPE Command okay.
  ftp> hash
  Hash mark printing on (1024 bytes/hash mark).
  ftp> put apc_hw05_aos_704.bin
  local: apc_hw05_aos_704.bin remote: apc_hw05_aos_704.bin
  200 PORT Command okay.
  150 File status okay; about to open data connection.
  ###...cut...###
  226 Closing data connection.
  3123200 bytes sent in 44.62 secs (68.3622 kB/s)
  ftp> bye
Schneider-APCUPS: Update aos file

Installing sumx

The third and last file is sumx. Note: The network management card will reboot.

  $ftp [IP_ADDR_OF_UPS]
  Connected to [IP_ADDR_OF_UPS].
  220 AP9630J Network Management Card AOS v7.0.4 FTP server ready.
  Name ([IP_ADDR_OF_UPS]:[USER]): xXxXxXx
  331 User name okay, need password.
  Password: xXxXxXx
  230 User logged in, proceed.
  ftp> bin
  200 TYPE Command okay.
  ftp> hash
  Hash mark printing on (1024 bytes/hash mark).
  ftp> put apc_hw05_sumx_704.bin
  local: apc_hw05_sumx_704.bin remote: apc_hw05_sumx_704.bin
  200 PORT Command okay.
  150 File status okay; about to open data connection.
  ###...cut...###
  226 Closing data connection.
  3021860 bytes sent in 43.40 secs (67.9906 kB/s)
  ftp>
Schneider-APCUPS: Update sumx file

After update

When the update with the three files is completed, the version should be verified under about/network. The versions should match the versions of the files uploaded.

In addition the FTP server can be disabled again to reduce the attack surface of the UPS. It’s sufficient to provide only HTTPS and SSH access.

For multiple UPS I’m pretty sure this procedure can be scripted.

Schneider-APC UPS after update
Schneider-APCUPS after update

Share: