Protocol Reference¶
Growatt inverters use three distinct Modbus protocol families. Knowing which protocol your inverter uses tells you which register ranges are valid and what the integration will attempt to read.
Protocol Families¶
| Protocol | Register Range | Inverter Families |
|---|---|---|
| Modbus RTU V1.39 | 0–124, 875–999, 1000–1124, 2000–2124, 3000–3374, 8000–8139 | MIN, MOD, MID, MAX, MAC, SPH, SPA, WIT, WIS |
| VPP Protocol | 30000–32000+ | SPH, MIN TL-XH, MOD TL3-XH, MID TL3-XH, WIT, WIS |
| Off-Grid V0.26 | 0–97 | SPF, SPE |
Which Protocol Does My Inverter Use?¶
Most inverters use Modbus RTU V1.39 as the base protocol. Newer models that support VPP also respond to both — the integration reads both ranges and merges the data.
Inverter startup detection:
1. Try holding register 30000 (DTC code)
→ Success: VPP-capable inverter (also reads V1.39 registers)
→ Failure: Legacy-only inverter (V1.39 or Off-Grid only)
2. If legacy-only, check register range pattern:
→ Responds on 0-124: MIN, SPH, or Off-Grid family
→ Off-Grid protocol (0-97 only): SPF or SPE inverters
Register Ranges at a Glance¶
| Range | Protocol | Content |
|---|---|---|
| 0–124 | V1.39 | Base holding and input registers (all models) |
| 875–999 | V1.39 | WIT commercial registers |
| 1000–1124 | V1.39 | SPH/SPA storage control |
| 2000–2124 | V1.39 | SPA extended (single-phase AC storage) |
| 3000–3374 | V1.39 | MIN/MOD extended data |
| 8000–8139 | V1.39 | WIT battery registers |
| 30000–30099 | VPP | Device ID, rated parameters |
| 30100–30499 | VPP | Control (AC power, battery, TOU schedule) |
| 31000–31499 | VPP | Real-time status, PV, grid, battery, load |
Universal Register Scanner¶
The Universal Register Scanner action (Settings → Tools → Actions →
growatt_modbus.export_register_dump) scans every range listed above and reports
which registers your inverter actually responds to. This is the quickest way to
verify protocol support and collect data for a new model.
See Diagnostic Actions for usage instructions.
Firmware builds¶
The build string on the inverter's device page (e.g. AL1.0 (ALBA18010122), from V1.39
holding registers 82-87) names more than one firmware. A MIN TL-XH update package holds two
images for two processors: ALBA for the power-control processor and ZABA for the
communication processor, flashed in that order. That is why ShinePhone shows those updates as
two stages. @l4m4re's
firmware analysis
has the details. It is background only: this integration does not use anything from the
firmware, and none of it is a reason to flash an inverter.