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.
697 lines
15 KiB
Plaintext
697 lines
15 KiB
Plaintext
{
|
|
"sourceLanguage" : "en",
|
|
"strings" : {
|
|
"" : {
|
|
|
|
},
|
|
"%lld" : {
|
|
"comment" : "A label displaying the speed of a fan. The argument is the speed of the fan, in revolutions per minute.",
|
|
"isCommentAutoGenerated" : true
|
|
},
|
|
"%lld U/min" : {
|
|
"comment" : "A label that shows the fan speed in revolutions per minute. The value is the fan speed in revolutions per minute.",
|
|
"isCommentAutoGenerated" : true
|
|
},
|
|
"Lüfter %lld" : {
|
|
"comment" : "A label that shows the name of a fan. The argument is the index of the fan.",
|
|
"isCommentAutoGenerated" : true
|
|
},
|
|
"metric.battery" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Akku"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Battery"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.battery.charging" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Lädt"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Charging"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.cpu" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "CPU"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "CPU"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.cpu.perCore" : {
|
|
"extractionState" : "stale",
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Je Kern"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Per core"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.fan %lld" : {
|
|
"extractionState" : "stale",
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Lüfter %lld"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Fan %lld"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.fan.controlComing" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Die Lüftersteuerung kommt mit dem privilegierten Helfer — Schreibzugriff auf den SMC verlangt root."
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Fan control arrives with the privileged helper — writing to the SMC requires root."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.gpu" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "GPU"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "GPU"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.memory" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Speicher"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Memory"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.mode.temperature" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Temperatur"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Temperature"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.mode.usage" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Auslastung"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Usage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.rpm" : {
|
|
"extractionState" : "stale",
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "U/min"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "rpm"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.sensors" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Sensoren"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Sensors"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.sensors.none" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Keine Sensoren lesbar"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "No sensors readable"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metric.show" : {
|
|
"extractionState" : "stale",
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Anzeigen"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Show"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.calculating" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Wird berechnet …"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Calculating…"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.charging" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Lädt mit"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Charging at"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.condition" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Zustand"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Condition"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.cycles" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Ladezyklen"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Cycles"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.draining" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Verbrauch"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Draw"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.health" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Kapazität"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Capacity"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.limitComing" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Das Ladelimit kommt mit dem privilegierten Helfer. Der zuständige SMC-Key ist auf diesem Modell noch nicht identifiziert — siehe docs/spikes/A-smc.md."
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "The charge limit arrives with the privileged helper. The relevant SMC key is not yet identified on this model — see docs/spikes/A-smc.md."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.none" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Kein Akku gefunden"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "No battery found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.pluggedIn" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Am Netzteil"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "On adapter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.remaining" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "verbleibend"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "remaining"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.untilFull" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "bis voll"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "until full"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.battery.voltage" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Spannung"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Voltage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.fans" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Lüfter"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Fans"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.app" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Programme"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Apps"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.compressed" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Komprimiert"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Compressed"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.free" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Frei"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Free"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.swap" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Auslagerung"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Swap"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.swapUsed" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Benutzt"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Used"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.used" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Belegt"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Used"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.memory.wired" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Reserviert"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Wired"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.perCore" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Je Kern"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Per core"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.power" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Leistung"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Power"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.power.adapter" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Netzteil"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Adapter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.power.cpu" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "CPU"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "CPU"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.power.display" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Anzeige"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Display"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.power.total" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Gesamt"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Total"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.processes" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Größte Verbraucher"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Top consumers"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"popover.temperature" : {
|
|
"localizations" : {
|
|
"de" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Temperatur"
|
|
}
|
|
},
|
|
"en" : {
|
|
"stringUnit" : {
|
|
"state" : "translated",
|
|
"value" : "Temperature"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"version" : "1.1"
|
|
} |