IOReport liefert je Kern die Verweilzeit in jeder Leistungsstufe, genau wie gebraucht: MCPU00 bis MCPU14, 17 Zustände, saubere Deltas zwischen zwei Messungen. Die Frequenz zu einer Stufe steht dort aber nicht. Sie muss aus den voltage-states-Tabellen im IODeviceTree kommen, und die passen nicht: der Kanal hat 16 Leistungsstufen, keine Tabelle hat 16 Einträge. Dazu sind die Einheiten uneinheitlich — voltage-states8 enthält echte Hertz (732–2472 MHz), voltage-states5 dagegen Paare wie (50103, 635), die in keiner Einheit sinnvolle Taktraten ergeben. Ab hier wäre es Reverse Engineering undokumentierter Firmware-Tabellen, deren Format sich zwischen Chip-Generationen ändert — genau die Sorte Code, die beim nächsten Mac still falsche Zahlen anzeigt statt zu scheitern. Dafür ist eine Zusatzangabe im Popover zu wenig, solange Phase 6 bis 9 offen sind. Die halbfertige Implementierung ist entfernt statt auskommentiert: nicht verdrahteter Code, der nil liefert, verrottet und täuscht später Vollständigkeit vor. Der Stand samt Fortsetzungsweg steht in docs/spikes/F-frequenz.md.
360 lines
8.0 KiB
Plaintext
360 lines
8.0 KiB
Plaintext
{
|
|
"sourceLanguage" : "en",
|
|
"strings" : {
|
|
"network.addresses" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Adressen"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Addresses"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.download" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Download"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Download"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.field.interface" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Schnittstelle"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Interface"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.field.ipv4" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "IP"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "IP"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.field.ipv6" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "IPv6"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "IPv6"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.field.router" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Router"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Router"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.name" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Netzwerk"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Network"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.offline" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Nicht verbunden"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Not connected"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.peak.download" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Spitze ↓"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Peak ↓"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.peak.upload" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Spitze ↑"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Peak ↑"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.perProcess.unavailable" : {
|
|
"extractionState" : "stale",
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Durchsatz je Programm zeigt Onyx nicht: dafür gibt es ohne root keine Schnittstelle."
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Onyx doesn't show per-app throughput: there is no interface for it without root."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.processes" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Je Programm"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Per app"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.public" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Öffentliche Adresse"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Public address"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.public.enable" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Öffentliche IP anzeigen"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Show public IP"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.public.failed" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Nicht abrufbar"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Unavailable"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.public.hint" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Dafür fragt Onyx einen fremden Dienst — standardmäßig aus, weil ein Systemmonitor nicht ungefragt nach draußen telefonieren sollte."
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "This asks an external service — off by default, because a system monitor shouldn't phone home unasked."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.total.received" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Empfangen"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Received"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.total.sent" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Gesendet"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Sent"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.transferred" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Übertragen"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Transferred"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.upload" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Upload"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Upload"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.vpn.active" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Verkehr läuft durch einen Tunnel"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Traffic goes through a tunnel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"network.wifi.connected" : {
|
|
"comment" : "Wenn der Netzwerkname mangels Ortungsberechtigung fehlt",
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "WLAN verbunden"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Wi-Fi connected"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"version" : "1.0"
|
|
} |