|
|
1 долоо хоног өмнө | |
|---|---|---|
| .gitignore | 1 долоо хоног өмнө | |
| README.md | 1 долоо хоног өмнө | |
| battery-saver.conf | 1 долоо хоног өмнө | |
| battery-saver.sh | 1 долоо хоног өмнө | |
| de.smallmountains.batterysaver.plist | 1 долоо хоног өмнө | |
| install.sh | 1 долоо хоног өмнө | |
| uninstall.sh | 1 долоо хоног өмнө |
Schaltet einen Mac kontrolliert ab, bevor der Akku in die Tiefentladung gerät.
Ausgelöst wird auf Ladestand oder minimaler Zellspannung — je nachdem, was zuerst eintritt. Läuft still als LaunchDaemon im Hintergrund, ohne Menüleisten-Icon und ohne Abhängigkeiten.
Weil genau die das Problem verursacht.
Der Ladestand in Prozent ist kein Messwert, sondern eine Schätzung aus dem Kapazitätsmodell des Akkus. Dieses Modell muss der Akku regelmäßig nachkalibrieren. Tut er das nicht, driftet die Anzeige — und macOS trifft seine Abschaltentscheidung auf Basis falscher Zahlen.
Der Anlass für dieses Projekt war genau dieser Fall: Ein Akku meldete ein seit 53 Zyklen nicht mehr nachkalibriertes Kapazitätsmodell. macOS wurden zu hohe Restkapazitäten gemeldet, das Gerät lief über den sicheren Abschaltpunkt hinaus weiter, und die Zellen wurden bis auf 2,71 V entladen. Üblich ist eine Abschaltung bei 3,0–3,2 V. Die Schutzschaltung des Akkus verriegelte daraufhin dauerhaft — Totalausfall bei 58 Ladezyklen.
Die Zellspannung ist dagegen ein direkter physikalischer Messwert, unabhängig von jeder Kalibrierung. Sie ist deshalb hier der eigentliche Schutz; die Prozentgrenze ist nur der bequeme Auslöser für den Normalfall.
| Stufe | Bedingung | Aktion |
|---|---|---|
| Warnung | ≤ 20 % oder ≤ 3550 mV | Mitteilung |
| Abschaltung | ≤ 10 % oder ≤ 3400 mV | Sauberes Herunterfahren |
Ausgewertet wird immer die niedrigste Einzelzelle, nicht der Durchschnitt.
Zur Orientierung:
4300 mV voll
3550 mV ca. 25-30 %
3400 mV ca. 10-15 % <- Abschaltung
3000 mV macOS schaltet üblicherweise selbst ab
2700 mV Schutzschaltung verriegelt dauerhaft (Totalausfall)
git clone https://git.smallmountains.de/Marius/Apple-Battery-Saver.git
cd Apple-Battery-Saver
sudo ./install.sh
Installiert wird nach:
| Datei | Ziel |
|---|---|
| Programm | /usr/local/bin/battery-saver.sh |
| Konfiguration | /usr/local/etc/battery-saver.conf |
| LaunchDaemon | /Library/LaunchDaemons/de.smallmountains.batterysaver.plist |
| Protokoll | /var/log/battery-saver.log |
battery-saver.sh --status # Messwerte und Bewertung anzeigen
sudo battery-saver.sh --test # Volle Logik simulieren, ohne abzuschalten
tail -f /var/log/battery-saver.log
Beispielausgabe von --status:
Netzteil angeschlossen : Yes
Ladestand : 98 %
Packspannung : 12897 mV
Zellspannungen : 4301,4283,4311
Niedrigste Zelle : 4283 mV
Schwellwerte
Warnung : <= 20 % oder <= 3550 mV
Abschaltung: <= 10 % oder <= 3400 mV
Auslösung nach 3 Messungen in Folge
Bewertung: am Netz - Überwachung pausiert
Schwellwerte in /usr/local/etc/battery-saver.conf anpassen, danach neu laden:
sudo launchctl kickstart -k system/de.smallmountains.batterysaver
DRY_RUN=1 unterdrückt das Herunterfahren dauerhaft — es wird dann nur protokolliert und gewarnt. Sinnvoll, um das Verhalten erst einmal im Echtbetrieb zu beobachten.
Ein Programm, das den Rechner abschalten darf, muss bei unklarer Datenlage stillhalten. Eingebaut sind deshalb:
HALT_MV=44000 statt 4400 würde sonst im Akkubetrieb sofort abschalten.Der Dienst schützt nur im wachen Zustand. Liegt das Gerät zugeklappt und entlädt sich im Standby, läuft kein Prozess, der eingreifen könnte. Für längere Lagerung hilft nur echtes Hibernate oder Ausschalten.
Automatisches Herunterfahren kann ungespeicherte Arbeit kosten. Die Warnstufe bei 20 % ist die Gelegenheit, selbst zu reagieren.
sudo ./uninstall.sh # Konfiguration und Protokoll bleiben
sudo ./uninstall.sh --purge # entfernt alles
MIT