hashboardctrlget
Returns each hashboard's own controls, regulator telemetry and regulator status
hashboardctrlget
Description
Returns each hashboard's voltage settings and the telemetry of its voltage regulator, on miners that have a voltage
regulator on each hashboard. Today that is the Antminer Z15 Pro; on every other model the command returns error
438. Use hashboardctrlset to change a board's voltage.
With no parameter (or an empty one), every detected board is listed, in ascending ID order. Pass a board ID to list
only that board. On the Z15 Pro the board IDs are the connector IDs 0 to 3, so they are not always 0, 1 and
2.
For each board, the reply separates three voltages: the one the regulator was last set to (HashboardVoltage), the
one the current profile specifies (ProfileHashboardVoltage) and the factory value from the board's EEPROM
(EepromHashboardVoltage). When a hashboardctrlset is in effect, HashboardVoltage differs
from ProfileHashboardVoltage.
The measured fields (MeasuredHashboardVoltage, MeasuredHashboardCurrent, MeasuredHashboardPower and
RegulatorTemperature) are optional. They are absent until the first regulator reading for that board arrives,
and absent again after the board is powered off. The boards are read in turn, so a newly started board can take tens
of seconds to report.
The regulator also reports its input side, what the board draws from the 12 V PSU: RegulatorInputVoltage,
RegulatorInputCurrent and RegulatorInputPower. The PSU does not report its own load, so these are the only view of
what it delivers. InputVoltage is a different reading of the same 12 V input, taken by the board's PIC. The input
side is read once a minute per board, so it can be up to a minute older than the output fields. The three fields are
optional: absent until the board's first input reading, absent again once the last reading is more than two minutes
old, and absent after a power-off.
The TOTAL section sums the measured power and current over the boards listed, carries the hottest regulator
temperature and counts the boards whose regulator reports a fault, so you don't have to add the boards up yourself.
It also sums the regulator input power and current, and reports RegulatorEfficiency, the regulators' output power
over their input power in percent. Each input reading is paired with the output power read on the same beat, and the
efficiency is computed from those pairs, so it never mixes readings of different ages; it can therefore differ
slightly from MeasuredHashboardPower divided by RegulatorInputPower. The input totals cover only the boards with a
recent input reading, which right after a start can be fewer than BoardsReporting. When no listed board is reporting
(for example when the miner is curtailed), TOTAL holds only BoardsReporting: 0.
Regulator status
Each hashboard's regulator keeps its own fault record, and the reply reports it in two layers next to the telemetry.
The raw layer shows what the regulator's status registers contain: RegulatorStatusWord is the PMBus STATUS_WORD
as a 16-character binary string with bit 15 first, RegulatorStatusBits names each set bit with its 0-indexed position
(bit 13 is the third character from the left), and RegulatorStatusDetail names everything the status sub-registers
hold, with the register each entry sits in. Names ending in _WARNING crossed a warning threshold; names ending in
_FAULT are trips the regulator acted on. The fault layer, RegulatorFaults, is the subset that means a power
event happened: the output being off, power not good, or any entry of the input, output, current, temperature and
manufacturer-specific sub-registers. Only STATUS_CML, the regulator's communication and memory housekeeping, is left
out. RegulatorPowerGood is the regulator's own power-good flag.
The record is a history, not a live state. The regulator latches every bit other than PGOOD until it loses power, so
an entry means the event happened at some point since the board was last powered, not that it is happening now. PGOOD
and RegulatorPowerGood are live. A healthy board is not empty: on the Z15 Pro every regulator comes up with the
INPUT, PGOOD and CML bits set and nothing behind them, which is its normal power-on state, so
RegulatorStatusBits lists those three while RegulatorStatusDetail and RegulatorFaults are empty. Act on
RegulatorFaults; read the raw layer when you need to know exactly what the part recorded. These fields are optional
like the measured ones: absent until the first reading and after a power-off.
Command
$ echo '{"command": "hashboardctrlget"}' | nc $MINER_IP 4028 | jqExamples
In this example, we list every board on an Antminer Z15 Pro with boards on connectors 0, 2 and 3, all running the
default profile. Every regulator shows its normal power-on status and no fault:
$ echo '{"command": "hashboardctrlget"}' | nc $MINER_IP 4028 | jq
{
"HASHBOARDCTRL": [
{
"Board": 0,
"EepromHashboardVoltage": 2.43,
"HashboardVoltage": 2.47,
"InputVoltage": 12.148,
"MeasuredHashboardCurrent": 377,
"MeasuredHashboardPower": 931.19,
"MeasuredHashboardVoltage": 2.47,
"Profile": "default",
"ProfileHashboardVoltage": 2.47,
"RegulatorFaults": {},
"RegulatorInputCurrent": 84.6,
"RegulatorInputPower": 1023.6,
"RegulatorInputVoltage": 12.11,
"RegulatorPowerGood": true,
"RegulatorStatusBits": {
"CML": 1,
"INPUT": 13,
"PGOOD": 11
},
"RegulatorStatusDetail": {},
"RegulatorStatusWord": "0010100000000010",
"RegulatorTemperature": 69
},
{
"Board": 2,
"EepromHashboardVoltage": 2.43,
"HashboardVoltage": 2.47,
"InputVoltage": 12.148,
"MeasuredHashboardCurrent": 375,
"MeasuredHashboardPower": 926.25,
"MeasuredHashboardVoltage": 2.47,
"Profile": "default",
"ProfileHashboardVoltage": 2.47,
"RegulatorFaults": {},
"RegulatorInputCurrent": 84.1,
"RegulatorInputPower": 1017.9,
"RegulatorInputVoltage": 12.1,
"RegulatorPowerGood": true,
"RegulatorStatusBits": {
"CML": 1,
"INPUT": 13,
"PGOOD": 11
},
"RegulatorStatusDetail": {},
"RegulatorStatusWord": "0010100000000010",
"RegulatorTemperature": 73
},
{
"Board": 3,
"EepromHashboardVoltage": 2.43,
"HashboardVoltage": 2.47,
"InputVoltage": 12.148,
"MeasuredHashboardCurrent": 373,
"MeasuredHashboardPower": 921.31,
"MeasuredHashboardVoltage": 2.47,
"Profile": "default",
"ProfileHashboardVoltage": 2.47,
"RegulatorFaults": {},
"RegulatorInputCurrent": 83.6,
"RegulatorInputPower": 1012.4,
"RegulatorInputVoltage": 12.12,
"RegulatorPowerGood": true,
"RegulatorStatusBits": {
"CML": 1,
"INPUT": 13,
"PGOOD": 11
},
"RegulatorStatusDetail": {},
"RegulatorStatusWord": "0010100000000010",
"RegulatorTemperature": 67
}
],
"STATUS": [
{
"Code": 386,
"Description": "LUXminer 2026.10.1.183958-667319678",
"Msg": "Hashboard Control",
"STATUS": "S",
"When": 1790880660
}
],
"TOTAL": [
{
"BoardsReporting": 3,
"MeasuredHashboardCurrent": 1125,
"MeasuredHashboardPower": 2778.75,
"RegulatorEfficiency": 91.02,
"RegulatorFaultBoards": 0,
"RegulatorInputCurrent": 252.3,
"RegulatorInputPower": 3053.9,
"RegulatorTemperatureMax": 73
}
],
"id": 1
}To list a single board, pass its ID, for example "parameter":"2".
For contrast, this is what a board whose 12 V input sagged below the regulator's warning threshold, and whose rail the regulator then cut on over-current, would report (theoretical scenario):
{
"Board": 2,
"RegulatorFaults": {
"IOUT_OC_FAULT": "STATUS_IOUT",
"OFF": "STATUS_WORD",
"POWER_NOT_GOOD": "STATUS_WORD",
"VIN_UV_WARNING": "STATUS_INPUT"
},
"RegulatorPowerGood": false,
"RegulatorStatusBits": {
"CML": 1,
"INPUT": 13,
"IOUT_OC": 4,
"IOUT_POUT": 14,
"OFF": 6
},
"RegulatorStatusDetail": {
"IOUT_OC_FAULT": "STATUS_IOUT",
"VIN_UV_WARNING": "STATUS_INPUT"
},
"RegulatorStatusWord": "0110000001010010"
}Parameters
| Parameter | Notes |
|---|---|
board_id | Optional. ID of a detected board. If omitted, lists every board. |
Field details
HASHBOARDCTRL
| Field | Notes |
|---|---|
Board | Board ID. |
EepromHashboardVoltage | Factory voltage for this board, derived from its EEPROM, in volts. |
HashboardVoltage | Voltage the regulator was last set to, in volts. This is the setpoint, not a measurement. 0 until the board has started, and after it is powered off. |
InputVoltage | Measured voltage at the board's 12 V input, in volts. 0 when unavailable or powered off. |
MeasuredHashboardCurrent | Optional. Current measured by the regulator, in amps. |
MeasuredHashboardPower | Optional. MeasuredHashboardVoltage × MeasuredHashboardCurrent, in watts, rounded to 0.01 W. |
MeasuredHashboardVoltage | Optional. Voltage measured by the regulator, in volts, to 1 mV. |
Profile | Name of the current profile. |
ProfileHashboardVoltage | Voltage the current profile specifies for this board, in volts. 0 if the profile specifies none. |
RegulatorFaults | Optional. The regulator's recorded power events, as an object of name to the status register it sits in: OFF and POWER_NOT_GOOD from STATUS_WORD, and every entry of STATUS_VOUT, STATUS_IOUT, STATUS_INPUT, STATUS_TEMPERATURE and STATUS_MFR_SPECIFIC. STATUS_CML entries are not faults. Empty on a healthy board. |
RegulatorInputCurrent | Optional. Current the regulator draws from the 12 V input, as measured by the regulator, in amps, rounded to 0.01 A. Read once a minute; absent until the first reading and once the last one is older than two minutes. |
RegulatorInputPower | Optional. Power the regulator draws from the 12 V input, as measured by the regulator, in watts, rounded to 0.01 W. Same age rule as RegulatorInputCurrent. |
RegulatorInputVoltage | Optional. Voltage at the regulator's 12 V input, as measured by the regulator, in volts, rounded to 0.01 V. Same age rule as RegulatorInputCurrent. InputVoltage is the PIC's reading of the same input. |
RegulatorPowerGood | Optional. The regulator's power-good flag. true while it considers its output good. |
RegulatorStatusBits | Optional. Every set bit of RegulatorStatusWord, as an object of PMBus bit name to 0-indexed position. A healthy Z15 Pro regulator shows INPUT (13), PGOOD (11) and CML (1). |
RegulatorStatusDetail | Optional. Every named entry of the regulator's status sub-registers, as an object of PMBus name to register (STATUS_VOUT, STATUS_IOUT, STATUS_INPUT, STATUS_TEMPERATURE, STATUS_CML, STATUS_MFR_SPECIFIC). Includes entries that are not faults, such as communication errors in STATUS_CML. |
RegulatorStatusWord | Optional. The regulator's PMBus STATUS_WORD as a 16-character binary string, bit 15 first. |
RegulatorTemperature | Optional. Temperature of the board's voltage regulator, in °C. |
TOTAL
| Field | Notes |
|---|---|
BoardsReporting | Number of listed boards that have regulator telemetry. |
MeasuredHashboardCurrent | Optional. Sum of MeasuredHashboardCurrent over the reporting boards, in amps, rounded to 0.01 A. |
MeasuredHashboardPower | Optional. Sum of the measured power over the reporting boards, in watts, rounded to 0.01 W. |
RegulatorEfficiency | Optional. Conversion efficiency of the regulators, in percent, rounded to 0.01: the output power paired with each input reading, summed over the boards with a recent input reading, divided by the sum of their RegulatorInputPower. |
RegulatorFaultBoards | Optional. Number of reporting boards whose RegulatorFaults is not empty. |
RegulatorInputCurrent | Optional. Sum of RegulatorInputCurrent over the boards with a recent input reading, in amps, rounded to 0.01 A. |
RegulatorInputPower | Optional. Sum of RegulatorInputPower over the boards with a recent input reading, in watts, rounded to 0.01 W. |
RegulatorTemperatureMax | Optional. The highest RegulatorTemperature among the reporting boards, in °C. |
The optional TOTAL fields are present only when BoardsReporting is greater than 0. The three regulator input
fields follow their own count: they are present only when at least one listed board has an input reading less than two
minutes old, which right after a start can lag the output fields by up to a minute.
Errors
| Code | Reason |
|---|---|
401 | The board_id is not a number, or no such board exists. |
438 | This miner has no voltage regulator on each hashboard. |