Host signals: the Orin's health on yukart/host/<signal> (source host)

Temperatures, CPU/GPU load, memory, module power, fan, WiFi/LTE/tablet
links and the UPS battery, published by svc-core's orin-status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
This commit is contained in:
2026-10-12 16:33:15 +09:00
parent 7653cb609c
commit d9d942745b
3 changed files with 259 additions and 2 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://yukart/schema/envelope.json",
"title": "Signal envelope",
"description": "Every decoded signal published on yukart/vehicle/* and yukart/gnss/*. Raw CAN uses the binary frame encoding instead.",
"description": "Every decoded signal published on yukart/vehicle/*, yukart/gnss/* and yukart/host/*. Raw CAN uses the binary frame encoding instead.",
"type": "object",
"required": [
"timestamp",
+251 -1
View File
@@ -1,5 +1,5 @@
{
"$comment": "Single source for signal identity. Topic name and envelope unit are both derived from these entries and are never authored separately. source=obd2 is standardised; source=z27ag is reverse-engineered and lives in the DBC.",
"$comment": "Single source for signal identity. Topic name and envelope unit are both derived from these entries and are never authored separately. source=obd2 is standardised; source=z27ag is reverse-engineered and lives in the DBC. source=host is the Orin itself (orin-status), not the car.",
"signals": {
"engine_rpm": {
"unit": "rpm",
@@ -90,6 +90,256 @@
0,
656
]
},
"orin_cpu_temp_c": {
"unit": "celsius",
"type": "number",
"source": "host",
"description": "Orin CPU cluster temperature",
"range": [
-40,
110
]
},
"orin_gpu_temp_c": {
"unit": "celsius",
"type": "number",
"source": "host",
"description": "Orin GPU temperature",
"range": [
-40,
110
]
},
"orin_soc_temp_c": {
"unit": "celsius",
"type": "number",
"source": "host",
"description": "Orin SoC temperature, hottest of its sensors",
"range": [
-40,
110
]
},
"orin_tj_temp_c": {
"unit": "celsius",
"type": "number",
"source": "host",
"description": "Orin junction temperature: the hottest point on the die, which throttling acts on",
"range": [
-40,
110
]
},
"orin_cpu_pct": {
"unit": "percent",
"type": "number",
"source": "host",
"description": "CPU utilisation, all cores",
"range": [
0,
100
]
},
"orin_gpu_pct": {
"unit": "percent",
"type": "number",
"source": "host",
"description": "GPU utilisation",
"range": [
0,
100
]
},
"orin_ram_used_mb": {
"unit": "MB",
"type": "number",
"source": "host",
"description": "Memory in use, CPU and GPU together (one shared pool): total minus available",
"range": [
0,
8192
]
},
"orin_ram_used_pct": {
"unit": "percent",
"type": "number",
"source": "host",
"description": "Memory in use as a share of the total",
"range": [
0,
100
]
},
"orin_swap_used_mb": {
"unit": "MB",
"type": "number",
"source": "host",
"description": "Swap in use",
"range": [
0,
16384
]
},
"orin_power_w": {
"unit": "W",
"type": "number",
"source": "host",
"description": "Orin module input power (VDD_IN), from the onboard INA3221",
"range": [
0,
30
]
},
"orin_fan_rpm": {
"unit": "rpm",
"type": "number",
"source": "host",
"description": "Cooling fan speed",
"range": [
0,
10000
]
},
"net_wifi_up": {
"unit": "",
"type": "boolean",
"source": "host",
"description": "WiFi associated and up"
},
"net_wifi_signal_dbm": {
"unit": "dBm",
"type": "number",
"source": "host",
"description": "WiFi signal level",
"range": [
-100,
0
]
},
"net_wifi_rx_kbps": {
"unit": "kbit/s",
"type": "number",
"source": "host",
"description": "WiFi receive rate (into the Orin)",
"range": [
0,
1000000
]
},
"net_wifi_tx_kbps": {
"unit": "kbit/s",
"type": "number",
"source": "host",
"description": "WiFi transmit rate (out of the Orin)",
"range": [
0,
1000000
]
},
"net_lte_state": {
"unit": "",
"type": "string",
"source": "host",
"description": "Modem state as ModemManager reports it (connected, registered, searching, disabled, …), or absent with no modem"
},
"net_lte_tech": {
"unit": "",
"type": "string",
"source": "host",
"description": "Access technology in use (lte, umts, …); empty when not registered"
},
"net_lte_signal_pct": {
"unit": "percent",
"type": "number",
"source": "host",
"description": "Modem signal quality",
"range": [
0,
100
]
},
"net_lte_rx_kbps": {
"unit": "kbit/s",
"type": "number",
"source": "host",
"description": "LTE receive rate (into the Orin)",
"range": [
0,
150000
]
},
"net_lte_tx_kbps": {
"unit": "kbit/s",
"type": "number",
"source": "host",
"description": "LTE transmit rate (out of the Orin)",
"range": [
0,
50000
]
},
"net_tablet_up": {
"unit": "",
"type": "boolean",
"source": "host",
"description": "USB link to the tablet has carrier"
},
"net_tablet_rx_kbps": {
"unit": "kbit/s",
"type": "number",
"source": "host",
"description": "USB tablet link, tablet to Orin",
"range": [
0,
480000
]
},
"net_tablet_tx_kbps": {
"unit": "kbit/s",
"type": "number",
"source": "host",
"description": "USB tablet link, Orin to tablet",
"range": [
0,
480000
]
},
"ups_battery_v": {
"unit": "V",
"type": "number",
"source": "host",
"description": "UPS battery pack voltage (3S Li-ion, 9.0–12.6 V)",
"range": [
0,
16
]
},
"ups_current_a": {
"unit": "A",
"type": "number",
"source": "host",
"description": "UPS battery current: positive charging, negative discharging",
"range": [
-5,
5
]
},
"ups_battery_pct": {
"unit": "percent",
"type": "number",
"source": "host",
"description": "UPS charge estimate from cell voltage, corrected for load. An estimate, steadiest at rest",
"range": [
0,
100
]
},
"ups_state": {
"unit": "",
"type": "string",
"source": "host",
"description": "charging, discharging (running on battery) or idle (on input power, not charging)"
}
}
}
+7
View File
@@ -22,6 +22,13 @@
"publisher": "gnss",
"description": "value is an object: lat, lon, alt_m, speed_kph, heading_deg, fix, satellites."
},
"yukart/host/<signal>": {
"payload": "envelope",
"retained": true,
"rate": "1/s",
"publisher": "orin-status",
"description": "The Orin itself: temperatures, load, memory, network links, UPS battery. One topic per signal, named exactly as in signals.json (source=host)."
},
"yukart/system/<service>": {
"payload": "json",
"retained": true,