# WhatsMiner Dashboard — Data Specification
## Page 1: Miner List
### Top Stats
| Total Hashrate | Summary.hash_average | Sum across all miners |
| Average Temp | Summary.chip_temp_max | Mean across all miners |
| Miners Online | ActorStatus | Count Connected / total |
### Miner Row
| Connection state | ActorStatus | Created / Connecting / Connected / Reconnecting / Closed |
| Disconnect / Close reason | ActorStatus | Closed { reason } or Reconnecting { reason, .. } |
| IP:port | Actor::addr() | host:port string |
| Model | Power.model | |
| Serial | Miner.miner_sn | |
| Hash average | Summary.hash_average | Th/s |
| Hash realtime | Summary.hash_realtime | Th/s |
| Hash percent | Miner.hash_percent | % of factory |
| Hash 1min | Summary.hash_1min | Tooltip |
| Hash 15min | Summary.hash_15min | Tooltip |
| Factory hash | Summary.factory_hash | Tooltip |
| Chip temp max | Summary.chip_temp_max | °C |
| Environment temp | Summary.environment_temperature | °C |
| Power rate | Summary.power_rate | W |
| Power realtime | Summary.power_realtime | W |
| Active pool URL | Pools[first stratum_active].url | Truncated |
| Stratum active | Pools[].stratum_active | Boolean per pool |
| Reject rate | Pools[first active].reject_rate | % |
| Active pool count | Pools | Count stratum_active=true / total |
| Error count | DeviceInfo.error_code | Vec length |
| Top error reason | DeviceErrorCode::from_code(code).reason() | Tooltip |
| Uptime | Summary.elapsed | Formatted duration |
---
## Page 2: Miner Detail
### Header
| Connection state | ActorStatus | Current projection (actor.status()) |
| IP:port | Actor::addr() | host:port string |
| Model | Power.model |
| Firmware | System.fwversion |
| Cointype | Miner.cointype |
| Uptime | Summary.elapsed |
| Permission | ActorStatus.permissions() | Present when in valid session |
### Tab: Overview
| Hash average | Summary.hash_average | Th/s |
| Hash realtime | Summary.hash_realtime | Th/s |
| Chip temp max | Summary.chip_temp_max | °C |
| Environment temp | Summary.environment_temperature | °C |
| Power rate | Summary.power_rate | W |
| Power realtime | Summary.power_realtime | W |
| Active pool URL | Pools[first stratum_active].url | |
| Reject rate | Pools[first active].reject_rate | % |
| Working | Miner.working | bool |
| Upfreq finish | Summary.up_freq_finish | |
| Fast boot | Miner.fast_boot | bool |
| Power mode | GetMinerSettings.power_mode | Low/Normal/High |
| Heat mode | Miner.heatmode | |
### Tab: Hashboards
Per board (edevs[]):
| Board ID | edev.id |
| Slot | edev.slot |
| Hash average | edev.hash_average |
| Factory hash | edev.factory_hash |
| Frequency | edev.freq |
| Effective chips | edev.effective_chips |
| Chip temp min | edev.chip_temp_min |
| Chip temp avg | edev.chip_temp_avg |
| Chip temp max | edev.chip_temp_max |
Board metadata:
| Board count | Miner.board_num |
| PCB SN 0 | Miner.pcbsn0 |
| PCB SN 1 | Miner.pcbsn1 |
| PCB SN 2 | Miner.pcbsn2 |
| Chip data 0 | Miner.chipdata0 |
| Chip data 1 | Miner.chipdata1 |
| Chip data 2 | Miner.chipdata2 |
### Tab: Temperature & Fans
| Chip temp min | Summary.chip_temp_min |
| Chip temp avg | Summary.chip_temp_avg |
| Chip temp max | Summary.chip_temp_max |
| Board temp 0 | Summary.board_temperature[0] |
| Board temp 1 | Summary.board_temperature[1] |
| Board temp 2 | Summary.board_temperature[2] |
| Environment temp | Summary.environment_temperature |
| Fan speed in | Summary.fan_speed_in |
| Fan speed out | Summary.fan_speed_out |
| Fan poweroff cool | FanSetting.fan_poweroff_cool |
| Fan zero speed | FanSetting.fan_zero_speed |
| Fan temp offset | FanSetting.fan_temp_offset |
### Tab: Pools
Per pool (pools[]):
| Pool ID | pool.id |
| URL | pool.url |
| Account | pool.account |
| Status | pool.status |
| Stratum active | pool.stratum_active |
| Reject rate | pool.reject_rate |
| Last share time | pool.last_share_time |
Metadata:
| Pool strategy | Miner.pool_strategy |
| Web pool | Miner.web_pool |
### Tab: Errors
Per error (error_code[]):
| Code | ErrorCode.code |
| Reason | DeviceErrorCode::from_code(code).reason() |
| Timestamp | ErrorCode.timestamp |
| Fix / processing method | DeviceErrorCode::from_code(code).processing_method() |
### Tab: Power
PSU Info:
| PSU model | Power.model |
| PSU type | Power.type |
| PSU mode | Power.mode |
| HW version | Power.hwversion |
| SW version | Power.swversion |
| Vendor | Power.vendor |
| PSU serial | Power.sn |
Electrical:
| Input voltage | Power.vin |
| Output voltage | Power.vout |
| Input current | Power.iin |
| Input power | Power.pin |
| Power rate | Summary.power_rate |
| Power 5min avg | Summary.power_5min |
| Power realtime | Summary.power_realtime |
### Tab: Network
| IP | Network.ip |
| Protocol | Network.proto |
| Netmask | Network.netmask |
| Gateway | Network.gateway |
| DNS | Network.dns |
| MAC | Network.mac |
| Hostname | Network.hostname |
### Tab: Settings
Miner settings:
| Power limit | power_limit | Yes |
| Power mode | power_mode | Yes |
| Fast boot | fast_boot | Yes |
| Upfreq speed | upfreq_speed | Yes |
| Target freq | target_freq | Yes |
| Fast mining | fast_mining | Yes (if present) |
| Power | power | Yes (if present) |
| Power percent | power_percent | Yes (if present) |
Fan settings:
| Fan poweroff cool | fan_poweroff_cool | Yes |
| Fan zero speed | fan_zero_speed | Yes |
| Fan temp offset | fan_temp_offset | Yes |
System settings:
| Timezone | timezone | Yes |
| Zone name | zonename | Yes |
| Hostname | hostname | Yes |
| NTP servers | ntp_server[] | Yes |
| Log upload IP | log_upload.ip | Yes |
| Log upload port | log_upload.port | Yes |
| Log upload proto | log_upload.proto | Yes |
| Time random start | time_randomized.start | Yes |
| Time random stop | time_randomized.stop | Yes |
All settings require ReadWrite+ permission to edit. Read-only display otherwise.
### Tab: Actions
| Reboot Miner | ReadWrite | No |
| Configure Pools | ReadWrite | No |
| Update Firmware | All | Yes (upload) |
| Change Permission | All | No |
| Toggle Fast Boot | ReadWrite | No |
| Download Log | ReadOnly | Yes (download) |
| Refresh Connection | Any | No |