Victron Energy GX solar charger Modbus register map
SmartSolar / BlueSolar MPPT solar chargers, read through a GX device
- Official
- 54 registers
- Modbus TCP
- Revision 1 · 2026-10-14
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP
- Unit ID
- 1default
- TCP port
- 502
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 54 holding registers
- Revision
- 1 · 2026-10-14
- Firmware
- Venus OS; register list 3.81
- Added
- ()
- File
- maps/victron-energy/gx-solarcharger.mbmap.json · 11 KB · history
- SHA-256
- ffbfe747b35e4b941218f5d86e26ad842b3f873651bf176375501ca578208ae1
- Manufacturer
- victronenergy.com
Sources and notes
- CCGX Modbus TCP register list · version 3.81 Field list, service com.victronenergy.solarcharger
Source: Victron Energy, CCGX Modbus TCP register list 3.81
- Registers of the com.victronenergy.solarcharger service of the GX Modbus TCP server (Settings > Integrations > Modbus TCP server).
- Each device on the GX has its own unit ID. Since Venus OS 2.60 they are assigned dynamically: see the list of available services on the GX device.
- All registers are holding registers (FC03; FC06/FC16 for the writable ones).
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 771 | uint16 | R | V | ×0.01 | D-Bus /Dc/0/Voltage | |
| HR | 772 | int16 | R | A | ×0.1 | D-Bus /Dc/0/Current | |
| HR | 773 | int16 | R | °C | ×0.1 | D-Bus /Dc/0/Temperature; VE.Can MPPTs only | |
| HR | 774 | uint16 | RW | D-Bus /Mode; VE.Can MPPTs only | |||
| HR | 775 | uint16 | R | D-Bus /State | |||
| HR | 776 | uint16 | R | V | ×0.01 | D-Bus /Pv/V; Not available if multiple VE.Can chargers are combined | |
| HR | 777 | int16 | R | A | ×0.1 | Calculated from /Yield/Power and /Pv/V | |
| HR | 778 | uint16 | R | D-Bus /Equalization/Pending | |||
| HR | 779 | uint16 | R | s | ×0.1 | D-Bus /Equalization/TimeRemaining | |
| HR | 780 | uint16 | R | D-Bus /Relay/0/State | |||
| HR | 784 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/0/Yield; Today's yield | |
| HR | 785 | uint16 | R | W | D-Bus /History/Daily/0/MaxPower; Today's maximum power | ||
| HR | 786 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/1/Yield; Yesterday's yield | |
| HR | 787 | uint16 | R | W | D-Bus /History/Daily/1/MaxPower; Yesterday's maximum power | ||
| HR | 788 | uint16 | R | D-Bus /ErrorCode | |||
| HR | 789 | uint16 | R | W | ×0.1 | D-Bus /Yield/Power; Older 16-bit variant of 789 | |
| HR | 790 | uint16 | R | kWh | ×0.1 | D-Bus /Yield/User; Energy generated by the solarcharger since last user reset | |
| HR | 791 | uint16 | R | D-Bus /MppOperationMode | |||
| HR | 792 | uint32 ABCD | R | W | D-Bus /Yield/Power | ||
| HR | 3700 | uint16 | R | V | ×0.01 | D-Bus /Pv/0/V | |
| HR | 3701 | uint16 | R | V | ×0.01 | D-Bus /Pv/1/V | |
| HR | 3702 | uint16 | R | V | ×0.01 | D-Bus /Pv/2/V | |
| HR | 3703 | uint16 | R | V | ×0.01 | D-Bus /Pv/3/V | |
| HR | 3708 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/0/Pv/0/Yield | |
| HR | 3709 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/0/Pv/1/Yield | |
| HR | 3710 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/0/Pv/2/Yield | |
| HR | 3711 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/0/Pv/3/Yield | |
| HR | 3712 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/1/Pv/0/Yield | |
| HR | 3713 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/1/Pv/1/Yield | |
| HR | 3714 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/1/Pv/2/Yield | |
| HR | 3715 | uint16 | R | kWh | ×0.1 | D-Bus /History/Daily/1/Pv/3/Yield | |
| HR | 3716 | uint16 | R | W | D-Bus /History/Daily/0/Pv/0/MaxPower | ||
| HR | 3717 | uint16 | R | W | D-Bus /History/Daily/0/Pv/1/MaxPower | ||
| HR | 3718 | uint16 | R | W | D-Bus /History/Daily/0/Pv/2/MaxPower | ||
| HR | 3719 | uint16 | R | W | D-Bus /History/Daily/0/Pv/3/MaxPower | ||
| HR | 3720 | uint16 | R | W | D-Bus /History/Daily/1/Pv/0/MaxPower | ||
| HR | 3721 | uint16 | R | W | D-Bus /History/Daily/1/Pv/1/MaxPower | ||
| HR | 3722 | uint16 | R | W | D-Bus /History/Daily/1/Pv/2/MaxPower | ||
| HR | 3723 | uint16 | R | W | D-Bus /History/Daily/1/Pv/3/MaxPower | ||
| HR | 3724 | uint16 | R | W | D-Bus /Pv/0/P | ||
| HR | 3725 | uint16 | R | W | D-Bus /Pv/1/P | ||
| HR | 3726 | uint16 | R | W | D-Bus /Pv/2/P | ||
| HR | 3727 | uint16 | R | W | D-Bus /Pv/3/P | ||
| HR | 3728 | uint32 ABCD | R | kWh | D-Bus /Yield/User; Energy generated by the solarcharger since last user reset | ||
| HR | 3730 | uint16 | R | W | D-Bus /Yield/Power | ||
| HR | 3731 | uint16 | R | D-Bus /Pv/0/MppOperationMode | |||
| HR | 3732 | uint16 | R | D-Bus /Pv/1/MppOperationMode | |||
| HR | 3733 | uint16 | R | D-Bus /Pv/2/MppOperationMode | |||
| HR | 3734 | uint16 | R | D-Bus /Pv/3/MppOperationMode | |||
| HR | 3735 | uint16 | R | D-Bus /Pv/0/Enabled; Only available on MPPT RS | |||
| HR | 3736 | uint16 | R | D-Bus /Pv/1/Enabled | |||
| HR | 3737 | uint16 | R | D-Bus /Pv/2/Enabled | |||
| HR | 3738 | uint16 | R | D-Bus /Pv/3/Enabled | |||
| HR | 3740 | string[8] | RW | D-Bus /CustomName |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).