Dopo aver risolto il problema della doppia GPU sul MacBook Pro 2015, mi sono accorto che qualcosa non tornava anche nella gestione della batteria. Omarchy mostrava una capacità massima di oltre 729 Wh, un valore impossibile per un portatile la cui batteria, da nuova, arrivava a circa 99 Wh.

I dati letti direttamente dalla batteria erano invece coerenti: la capacità reale era di circa 55 Wh e la carica stava aumentando normalmente. Il problema era UPower, il componente che Linux utilizza per raccogliere e mostrare le informazioni sulla batteria. Una lettura anomala poteva essere memorizzata come nuova capacità massima e continuare a falsare percentuale, autonomia e stato della ricarica.

Per controllare i valori mostrati da UPower ho usato:

upower -i /org/freedesktop/UPower/devices/battery_BAT0

Il primo tentativo può essere semplicemente riavviare il servizio:

sudo systemctl restart upower.service

Nel mio caso questo riportava temporaneamente i valori alla normalità, ma non eliminava la causa e il problema avrebbe potuto ripresentarsi.

Ho quindi applicato alla versione presente su Omarchy una correzione ufficiale del progetto UPower. Ho aggiunto la patch al pacchetto Arch, aumentato il numero di revisione e ricostruito il pacchetto con i test abilitati:

makepkg -s --check
sudo pacman -U ./upower-1.91.3-1.1-x86_64.pkg.tar.zst
sudo systemctl restart upower.service

La modifica impedisce a una lettura chiaramente superiore alla capacità prevista di alterare in modo permanente i dati della batteria. Non cambia il firmware e un futuro aggiornamento ufficiale di UPower potrà sostituire normalmente questo pacchetto.

Durante le prove è emerso anche un secondo comportamento strano. Sotto carico la CPU poteva raggiungere temperature molto elevate mentre le ventole aumentavano di velocità con troppo ritardo. Funzionavano entrambe: il problema era semplicemente una gestione troppo tranquilla da parte del controller del Mac.

Ho installato mbpfan, un piccolo programma pensato proprio per gestire le ventole dei MacBook sotto Linux:

yay -S mbpfan
sudo systemctl enable --now mbpfan.service

Nel file /etc/mbpfan.conf ho impostato l’inizio dell’aumento a 60 °C, una risposta più decisa da 65 °C e la velocità massima a 80 °C, con un controllo ogni secondo. Sono valori scelti per il mio MacBookPro11,5 e non vanno copiati alla cieca su qualsiasi modello. Adesso le ventole intervengono prima quando la temperatura sale e tornano al controllo originale del Mac quando il servizio viene arrestato.

Anche questa volta ho utilizzato GPT-6 Astra che ha individuato e corretto il difetto di UPower molto rapidamente. Ora la capacità viene mostrata correttamente, la ricarica è tornata leggibile e le ventole reagiscono meglio sotto carico.