Mini-Box Support


HomeProductsAboutContact
Support Article

OpenUPS - building a portable battery test bank / field power pack with a small MCU UI

**Project context: **

ESP32 controller (buttons + 16x2 I²C LCD)
NeoPixel + buzzer for status/alarms
Goal: configure, control, and monitor the OpenUPS in the field without a PC

Request: full SMBus configuration capability (not only OUT_VOLTAGE)
OpenUPS/OpenUPS2 provides SMBus reporting and can be configured over USB in many cases. For this embedded UI, I’d like to implement the broadest possible set of configuration + control via SMBus, if available.
_
Could you please clarify and provide documentation for:_****

1. SMBus feature scope

  • Which features are read-only reporting vs read/write configuration over SMBus?
  • If OpenUPS/OpenUPS2 implements any part of the Smart Battery (SBS) command set, could you share the exact supported command list and any Mini-Box vendor-specific commands/extensions?

2. Complete SMBus command/register map
For each configurable item, please include: command code, data type (byte/word/block), units/scaling, endianness, valid ranges, and any required preconditions.
Examples of what I’d like to configure/control from the ESP32 UI:

  • Output regulation settings (including but not limited to output voltage)
  • Programmable voltage thresholds (input/battery/low-battery/shutdown thresholds)
  • Charging parameters (charge current/voltage limits, enable/disable charging, precharge/CC/CV behavior)
  • Battery chemistry selection (LiFePO4 vs Li-Ion profiles) and any temperature-related charging parameters
  • Fuel gauge / coulomb counting related parameters (if any are writable)
  • Cell balancing behavior/settings (if any are adjustable)
  • Power-path behavior (adapter/battery selection logic, any forced modes)
  • Alarm/notification configuration (threshold alarms, AlarmWarning behavior, SMBALERT usage if supported)
  • Any safety/lock/unlock mechanisms (write protection, authentication, “manufacturer access” style commands)

3. SMBus protocol requirements

  • Confirm the 7-bit SMBus slave address(es) used by the unit
  • Supported SMBus transaction types (Read/Write Word, Block Read/Write, Process Call, etc.)
  • Whether PEC (Packet Error Code) is supported/required (especially for writes)
  • Any timing constraints relevant to embedded hosts (clock stretching, minimum delay between writes, etc.)

4. Question about the dedicated “I2C Master” connector (J5)
In the OpenUPS hardware documentation I noticed there are two separate JST headers:

J7: SMBus slave
J5: I2C master

For my project, I’d like to confirm:__

  • Can I safely access and use the J5 I2C master port (e.g., connect peripherals) while also communicating with the unit via SMBus on J7?
  • What is the intended purpose of J5 (external sensors/EEPROMs/expanders, etc.)?
  • Electrical characteristics for J5 (bus voltage level, pull-ups present or recommended values, max bus length/capacitance)
  • Is J5 always active, or only in specific firmware modes?
  • Any limitations or conflicts if my ESP32 is using SMBus on J7 while OpenUPS is acting as an I2C master on J5?

5. Best path if some configs are USB-only
If some settings are not writable over SMBus:

  • Is there an official USB API/protocol reference (or example code) to set/read configuration values from an embedded host?
  • Which configuration items are USB-only vs SMBus-accessible?

ESP32 implementation
On the controller side I’ll use the ESP32 I²C master driver for SMBus-style transactions (including repeated starts), and I can implement PEC in firmware if needed. If you have recommended pull-up values, bus voltage guidance, or any MCU-based SMBus caveats, please share.

  • with the full SMBus command set (or a clear split between SMBus vs USB features), I can finalize a robust field-ready embedded UI.

Answer:

You should use the I2C SLAVE(SMBUS) connector(J7) on the UPS, the UPS will be SMBUS slave, you have to implement the SMBUS master.
I have attached the necessary documentation for implementing the SMBUS master on your side.
The SMBUS slave address of the UPS is:
0x38 7 bit address
You can initiate a read command as in page 31, fig 5-13 smbus20.pdf.

A master code example is also attached, where you have the list with the information you can interrogate from the UPS.
The data format is as in the Smart Battery Data Specification (also attached).

Voltage level is 0-3.3V logic

J5 is for internal use. You should not use this at all.



Properties
Filed under:
Attachments