verified connector library

Pylontech US2000/US3000 battery (RS485)

Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based as on the wire. Word order and scaling are confirmed at the hardware-verified rung and at no rung below it.

interop-verified

Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.

pointaddress (0-based)typescaleunit
cell_1_voltage0I160.001
cell_2_voltage1I160.001
cell_3_voltage2I160.001
cell_4_voltage3I160.001
cell_5_voltage4I160.001
cell_6_voltage5I160.001
cell_7_voltage6I160.001
cell_8_voltage7I160.001
cell_9_voltage8I160.001
cell_10_voltage9I160.001
cell_11_voltage10I160.001
cell_12_voltage11I160.001
cell_13_voltage12I160.001
cell_14_voltage13I160.001
cell_15_voltage14I160.001
cell_16_voltage15I160.001
bms_temperature16I160.1
cell_temperature_117I160.1
cell_temperature_218I160.1
cell_temperature_319I160.1
cell_temperature_420I160.1
current21I160.1
module_voltage22U160.001
remain_capacity23U160.001
module_total_capacity24U160.001
cycle_number25U161
cell_high_voltage_limit100I160.001
cell_low_voltage_limit101I160.001
cell_under_voltage_limit102I160.001
charge_high_temperature_limit103I160.1
charge_low_temperature_limit104I160.1
charge_current_limit105I160.1
module_high_voltage_limit106I160.001
module_low_voltage_limit107I160.001
module_under_voltage_limit108I160.001
discharge_high_temperature_limit109I160.1
discharge_low_temperature_limit110I160.1
discharge_current_limit111I160.1
charge_voltage_limit200U160.001
discharge_voltage_limit201U160.001
max_charge_current202I160.1
max_discharge_current203I160.1

link settings as documented (unverified): ASCII; default 115200 8N1; unit ID 2; Uses proprietary Pylontech RS485 protocol (based on B.12 front-end smart devices protocol) with HEX-ASCII transmission, not standard Modbus.

⚠ Please contact PYLONTECH first, before doing any change on these settings. — Starkest reads only; we never write a control register.

bench facts as documented (unverified)
wiring notesRS485 asynchronous serial communication.
protocol notesFor manual charge/discharge management settings, the command must be sent periodically. If the battery does not receive the command again within 10 seconds, it automatically reverts to the latest automatic values.
identification notesDevice serial number is retrieved via command 93H. Software version is retrieved via command 96H.
FC 43 device IDnot supported
power48V battery module with BMS
doc revisionV3.3
field reports — community-sourced, unverified (checked 2026-06-11)
  • Firmware updates (e.g., version 3.2 and newer) on some batteries like US2000B disable the B.12 protocol on the RS232 console port, restricting it to console shell commands only. [source]
  • Address mapping issues where some setups fail with default address 2 or 0 (returning CID2 = 0x90 address error) and require address 1 to establish communication. [source]
  • Inverters like the EG4 6000XP may fail to parse extended capacity fields, cell temperatures, cell voltages, or cycle counts from the analog data response (CID2 = 0x42) even though total battery voltage is parsed correctly. [source]
  • When emulating the Pylontech protocol, if communication is lost, some inverters (like the EG4 6000XP) will remain stuck in a 'Charging: Forbidden' state for exactly 10 minutes before clearing. [source]
  • confirmed: Baud rates [9600, 115200, 500000] and default baud rate of 115200 — confirmed by Pylontech RS485 protocol document and user manuals
  • confirmed: Default unit ID of 2 — confirmed by python-pylontech library implementation and protocol specifications
  • confirmed: Uses proprietary Pylontech RS485 protocol based on B.12 front-end smart devices protocol with HEX-ASCII transmission — confirmed by protocol document
  • confirmed: Device serial number retrieved via command 93H and software version via command 96H — confirmed by protocol command tables
  • confirmed: Manual charge/discharge management settings command must be sent periodically, reverting to automatic values if not received within 10 seconds — confirmed by protocol document note under command 94H

The trust ladder

Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.

If your device isn't here, upload its register map. Generation is free, and the connector keeps the rung it earns under testing.

To prove a connector against your own device, order hardware verification. If it doesn't verify, you don't pay.

Platform builders can license the verified library: machine-readable maps, the firmware matrix, API access.