
SunSpec Model 9 — Set Operator Security Certificate
SunSpec Model 9 is a protocol-level model defined by the SunSpec Alliance for provisioning operator security certificates over Modbus TCP. It is used by DER devices, such as inverters and energy storage systems, that implement the Secure SunSpec Modbus specification. The template exposes the certificate identifier, role, format, type, total and fragment lengths, 80 fragment payload registers, a write timestamp, sequence number, operator user ID, role, cryptographic algorithm, and fragment count. It allows a Modbus client to deliver X.509v3 certificates in-band, enabling role-based access control on the DER device.
- Protocol
- Modbus TCP
- Connection
- Ethernet, Modbus TCP
- Registers
- 93, read and write
- Brand
- SunSpec
- Last updated
Registers (93)
93 read, 91 write
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| id | Read | ||||
| l | Read | ||||
| certuid | Read and write | ||||
| certrole | Read and write | ||||
| fmt | Read and write | ||||
| typ | Read and write | ||||
| totln | Read and write | ||||
| frgln | Read and write | ||||
| frg1 | Read and write | ||||
| frg2 | Read and write | ||||
| frg3 | Read and write | ||||
| frg4 | Read and write | ||||
| frg5 | Read and write | ||||
| frg6 | Read and write | ||||
| frg7 | Read and write | ||||
| frg8 | Read and write | ||||
| frg9 | Read and write | ||||
| frg10 | Read and write | ||||
| frg11 | Read and write | ||||
| frg12 | Read and write | ||||
| frg13 | Read and write | ||||
| frg14 | Read and write | ||||
| frg15 | Read and write | ||||
| frg16 | Read and write | ||||
| frg17 | Read and write | ||||
| frg18 | Read and write | ||||
| frg19 | Read and write | ||||
| frg20 | Read and write | ||||
| frg21 | Read and write | ||||
| frg22 | Read and write | ||||
| frg23 | Read and write | ||||
| frg24 | Read and write | ||||
| frg25 | Read and write | ||||
| frg26 | Read and write | ||||
| frg27 | Read and write | ||||
| frg28 | Read and write | ||||
| frg29 | Read and write | ||||
| frg30 | Read and write | ||||
| frg31 | Read and write | ||||
| frg32 | Read and write | ||||
| frg33 | Read and write | ||||
| frg34 | Read and write | ||||
| frg35 | Read and write | ||||
| frg36 | Read and write | ||||
| frg37 | Read and write | ||||
| frg38 | Read and write | ||||
| frg39 | Read and write | ||||
| frg40 | Read and write | ||||
| frg41 | Read and write | ||||
| frg42 | Read and write | ||||
| frg43 | Read and write | ||||
| frg44 | Read and write | ||||
| frg45 | Read and write | ||||
| frg46 | Read and write | ||||
| frg47 | Read and write | ||||
| frg48 | Read and write | ||||
| frg49 | Read and write | ||||
| frg50 | Read and write | ||||
| frg51 | Read and write | ||||
| frg52 | Read and write | ||||
| frg53 | Read and write | ||||
| frg54 | Read and write | ||||
| frg55 | Read and write | ||||
| frg56 | Read and write | ||||
| frg57 | Read and write | ||||
| frg58 | Read and write | ||||
| frg59 | Read and write | ||||
| frg60 | Read and write | ||||
| frg61 | Read and write | ||||
| frg62 | Read and write | ||||
| frg63 | Read and write | ||||
| frg64 | Read and write | ||||
| frg65 | Read and write | ||||
| frg66 | Read and write | ||||
| frg67 | Read and write | ||||
| frg68 | Read and write | ||||
| frg69 | Read and write | ||||
| frg70 | Read and write | ||||
| frg71 | Read and write | ||||
| frg72 | Read and write | ||||
| frg73 | Read and write | ||||
| frg74 | Read and write | ||||
| frg75 | Read and write | ||||
| frg78 | Read and write | ||||
| frg79 | Read and write | ||||
| frg80 | Read and write | ||||
| ts | Read and write | ||||
| ms | Read and write | ||||
| seq | Read and write | ||||
| uid | Read and write | ||||
| role | Read and write | ||||
| alg | Read and write | ||||
| n | Read and write |
Loading registers…
Send your device list
If a device is not in the library yet, we build the template for free as soon as we have the register data.
Use cases
- Verify that a DER device has received and stored the correct operator security certificate after provisioning.
- Track the certificate sequence number to confirm all fragments arrived in the correct order.
- Monitor the write timestamp to detect stale or replayed certificate provisioning attempts on the device.
- Audit the operator role register to confirm the intended access level was applied to the DER device.
- Alert when the cryptographic algorithm register holds an unexpected value, flagging a misconfigured certificate upload.
Installation
Enable Modbus TCP on the target DER device and confirm it implements the Secure SunSpec Modbus specification, including Model 9 support, under the communication or security configuration section.
Connect the DER device and the ModbusCloud Gateway to the same IP network; note the device IP address and confirm port 502 is reachable from the Gateway.
In the ModbusCloud portal, add the Gateway, import the SunSpec Model 9 template, and assign the correct Modbus unit ID matching the DER device configuration.
Read back registers id and l to confirm the model ID equals 9 and the block length is as expected; then verify certuid and n show the values written during your certificate provisioning.
Things to watch for
Why do all fragment registers read zero after provisioning?
Many DER devices clear or mask the fragment payload registers after a successful certificate commit. A read of zero on frg1 through frg80 after a completed write sequence is normal. Confirm the operation succeeded by checking certuid, role, and seq rather than the raw fragment data.
The gateway connects but certuid always returns zero. What now?
The device may not yet have Model 9 active in its Modbus register map. Confirm the Secure SunSpec Modbus option is enabled in the device communication settings. Also verify the Modbus unit ID is correct; a mismatch causes all registers to return zero or no response.
What happens if I write fragment registers in the wrong sequence?
Writing fragment registers out of order or with an incorrect seq value will typically cause the device to reject the entire certificate transfer and may leave the certificate store unchanged. Always write seq before the fragment registers and set totln and frgln accurately. Re-start the transfer from fragment 1 if an error occurs.
Is it safe to write the RW registers on a live production device?
Writing to certuid, certrole, fmt, typ, totln, frgln, the fragment registers, uid, role, or alg pushes a new certificate to the DER device's secure store. An incorrect certificate or role value can lock out legitimate operator access or invalidate the device's authorization state. Always test certificate provisioning on a non-production device first and keep a backup of the previous certificate.
Knowledge base articles for this device

SunSpec Modbus: one register map for many inverters
SunSpec Modbus is the open register map SMA, Fronius, SolarEdge and Kostal share. The layout, int+SF vs float, the TCP port per brand and reading a mixed fleet.
Fronius Modbus: read a Symo GEN24 over Modbus TCP
Fronius Modbus explained: enable Modbus TCP on the Symo GEN24 on port 502, choose between int+SF and float, read the right SunSpec registers and scale them correctly. Practical guide for solar installers.
SMA Modbus: reading a Sunny Boy over Modbus TCP (installers)
SMA Modbus explained: enable the Modbus TCP server on port 502, choose between the SMA profile (unit ID 3) and SunSpec (unit ID 126), read the right registers, and handle the NaN values at night. Practical guide for installers.
Want to see how it works?








