thierolf.org - Vom Hirn ins Terminal seit 1998.

Update Schneider-APCUPS firmware with Linux

Written by Stefan on . Modified on . Posted in Blog. Tags: #battery  #apc  #ups 

1. Introduction

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

2. 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

3. 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

4. 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

5. 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>

6. 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