Salut,
bon v’la un truc dont je me sers .
Contournement qui fonctionne sous Sonoma (j’ai besoin d’aide pour concaténer une des commandes, au passage) contrairement à d’autres méthodes, et sans besoin d’installer quoi que ce soit : juste quelques commandes à taper .
Rappel du besoin : Depuis Sonoma les darkwake et sleepwake de maintenance sont un gros soucis sur les vieux MacBook (je veux dire les modèles pré-Apple-silicon!) upgradés via OCLP, au niveau de la consommation de batterie lorsque l’ordi est en veille . Bien que les darkwake peuvent être utiles/pratiques sur du Apple-silicon car les puces consomment quasi rien et si tout est bien paramétré la consommation de batterie en veille doit guère être impactée de + de 0,2% supplémentaire par heure (par rapport à une veille « standard » ou quand l’ordi est en veille il est réellement en veille, plutôt qu’à se réveiller assez régulièrement pour synchroniser ou indexer des machins!) . Sur du x86 en revanche c’est pas la même affaire (pour des raisons techniques/physiques indépassables), alors une veille ponctuée de Darkwakes peut bouffer dans les 2 à 5% de batterie par heure (j’ai déjà perdu du 40% de batterie en une nuit, ordi en veille sur batterie capot fermé, ça m’a pas fait bien rigoler au matin…) quand sur du Apple-Silicon (si tout est bien réglé…) ça doit guère dépasser le % chaque 5 ou 6h (car le proco au delà d’etre hyper économe héberge directement la ram si je dis pas de conneries) .
J’ai vu quelques solutions à base de « éteindre automatiquement la carte wifi/BT » juste au moment ou l’ordi bascule en veille, ce qui est plutôt malin . Car visiblement en éteignant la carte wifi l’OS ne voit aucune connexion disponible donc il ne tente même pas d’effectuer ses synchros iCloud qu’il fait sinon régulièrement au travers de darkwakes (ça limite déjà ces causes de Darkwake même s’il reste celle d’indexation) . Malheureusement ce genre de solution ne fonctionne pas toujours selon les retours et elles nécessitent d’installer des outils logiciels qu’il faut paramétrer ensuite . Alors que je voulais un truc simple et rapide à mettre en place…
Donc…
Je suis passé par le mode standby (qui est le nouveau nom du mode hibernation, depuis quelques temps déjà, en fait…) .
ôLe standby corresponds à une veille profonde sans aucun darkwake possible car la ram n’est plus alimentée/disponible, le délai avant activation du standby est facilement ajustable via le terminal . Ce mode permet d’écrire le contenu de la ram sur le ssd (en fait sur le cache du ssd normalement, donc c’est pas super conseillé pour les ssd qui ont des modules de cache en flash au lieu d’être en Dram!) afin de pouvoir ensuite couper l’alimentation de la ram sans pour autant perdre sa session . La consommation devient ainsi très faible car l’ordi est presque éteint . Pour ne rien gâcher on peut régler le délai d’activation du standby en fonction du niveau de la batterie (typiquement : plutôt tard si elle est bien chargée, mais plutôt tôt si elle ne l'est pas beaucoup) . Au réveil de la machine : MacOS lit le ssd (ou plutôt son cache) pour recharger la ram (avec les données de session qui y étaient précédemment) . Le cache étant (très très) rapide cela n’impacte pas trop la durée nécéssaire au réveil (inférieur à la seconde depuis une veille classique) . Depuis un standby comptez environ 5 secondes au total sur un macbookair 6,1 de 2013 (pour un ssd ssubx, rajouter une bonne bonne seconde amha sur un ssuax) . Certes c’est toujours 4 secondes de + qu’une sortie de veille classique, soyons d’accord, mais en contrepartie l’autonomie globale y gagne vraiment, en heures d’écran allumé (pas juste quelques minutes...) si votre batterie est bonne .
Perso j’ai réglé tout ça pour que, au dessus de 80% de batterie (c’est 50% par défaut !! :-/ ) l’ordi passe en standby (hibernation donc!) au bout de seulement 3h de veille classique . Si la batterie est sous les 80% ce délai est réduit à 1h30 (je suis un peu "agressif" dans le truc mais j'ai besoin de préserver ma tenue de batterie alors...) . Donc, maintenant, le soir quand je ferme l’ordi avant d’aller dormir je sais que sous 3heures au max, quel que soit le niveau de batterie, l’ordi passera en hibernation jusqu’au matin (sans aucun darkwake d’ici là ! Nan mais ho !) . Ce qui amènera à perdre au pire 1 ou 2% de batterie pendant la nuit, plutôt que 15! ou 20! ou 30! comme auparavant !
Bref, on peut vérifier ses paramètres actuels avec la commande « pmset -g »
(« -g » pour « get »=obtenir et « pmset » pour « powermanagementsettings ») afin d’obtenir le détail des réglages actuels, qui sont pour moi :
System-wide power settings:
Currently in use:
lidwake 1
autopoweroff 1
standbydelayhigh 86400
autopoweroffdelay 259200
standbydelaylow 10800
standby 1
ttyskeepawake 1
hibernatemode 3
powernap 0
gpuswitch 2
hibernatefile /var/vm/sleepimage
highstandbythreshold 50
displaysleep 10
womp 0
networkoversleep 0
sleep 1
acwake 0
halfdim 1
disksleep 10
On va s'intérésser à :
« High_standby_threshold » qui est une valeur en pour-cent . C’est le paramètre qui permet de différencier les 2 états/niveaux de batterie : « chargée » ou sinon faible/déchargée, ceci afin d’avoir 2 « politiques » d’activation différentes pour le délai d'application du mode stand-by en fonction du niveau de charge de batterie . Ici au voit que le réglage est à 50% (batterie considérée chargée au dessus de 50%, faible/déchargée en dessous) . Donc si la batterie est chargée (=au dessus de 50%, sont optimistes les bonhommes...) alors l’OS applique le délai « standbydelayhigh », si au contraire la batterie est dans la zone dite faible alors il utilisera « standbydelaylow » . Ces 2 derniers paramètres/valeurs sont en secondes .
Jouons déjà sur le point de bascule, car 50% c'est pas beaucoup, mettons plutot 80% avec :
« Sudo pmset -b highstandbythreshold 80 »
Maintenant la batterie sera considérée comme faible en dessous de 80% (au lieu de 50%) .
(Le critère « -b » indique que ce paramètre sera valide uniquement en fonctionnement sur batterie .)
Ensuite abaissons le délai de bascule vers standby pour une batterie chargée (à + de 80% donc) par :
Sudo pmset -b standbydelayhigh 10800
Comme cela l’OS doit activer le mode standby au bout de 3h (10800s) de veille (contre 86400s soit 24h dans le réglage par défaut!!!)
On passe ensuite au délai de bascule vers standby pour une batterie sous les 80%, grace à :
Sudo pmset -b standbydelaylow 5400
Ainsi le passage en standby se fera au bout de 1h30 (5400s) si la batterie est sous les 80% (contre 3h par défaut, et pour un seuil à 50%…) .
Enfin petit bonus, je divise par 4 le délai d’extinction automatique avec :
Sudo pmset -b autopoweroffdelay 64800
Pour que le système s’éteigne complètement au bout de 18h (de veille ? de standby? bonne question, bref c'était 72h par défaut) . Certes le standby consomme quasi rien donc on pourrait se passer d'être aussi exigeant mais si je ne me sert pas de l’ordi pendant 18h, c’est que je suis parti ailleurs pour un bon moment en ayant oublié de l’éteindre (-: .
On peut à présent vérifier que tout a bien été appliqué via (toujours) la commande « pmset -g » qui m’annonce à présent :
System-wide power settings:
Currently in use:
lidwake 1
autopoweroff 1
standbydelayhigh 10800
autopoweroffdelay 259200
standbydelaylow 5400
standby 1
ttyskeepawake 1
hibernatemode 3
powernap 0
gpuswitch 2
hibernatefile /var/vm/sleepimage
highstandbythreshold 80
displaysleep 10
womp 0
networkoversleep 0
sleep 1
acwake 0
halfdim 1
disksleep 10
-> On voit que c’est tout comme j'ai paramétré . Tadammm .
Du coup maintenant le matin quand j’ouvre l’ordi il faut que j’attende 4 ou 5 secondes pour qu’il soit pleinement réveillé, alors qu’avant c’était instantané (sauf que ça me coutait gavé de batterie entre temps…) . J’ai envie de dire que dans tous les cas il se réveille bien + vite que moi le matin quand mon réveil-matin sonne, clairement (-: .
En journée c’est rare qu’il reste + de 3h sans servir (donc il ne passe presque jamais en hibernation/standby) alors la sortie de veille est immédiate/instantanée . Au pire elle prendra 4 ou 5 secondes si le standby s’est activé entre temps, c’est pas non plus la mort comme on dit et on peut pas tout avoir dans la vie .
À noter : j'ai pu voir sur quelques forums anglais que certains ont eut besoin de toucher au fichier "/var/vm/sleepimage" (qui est apparemment l'image de la ram du dernier standby) pour que tout cela fonctionne . Ça n'a pas été mon cas .
Voila . Si ça peut aider .
À bientôt pour de nouvelles astuces .
(Car je vous mijote un petit tutoriel sur OCLP qui permet de se passer de clé de boot pour upgrader MacOS : upgrade directe depuis un MacOS existant . Mais une chose à la fois et chaque chose en sont temps ) .
bon v’la un truc dont je me sers .
Contournement qui fonctionne sous Sonoma (j’ai besoin d’aide pour concaténer une des commandes, au passage) contrairement à d’autres méthodes, et sans besoin d’installer quoi que ce soit : juste quelques commandes à taper .
Rappel du besoin : Depuis Sonoma les darkwake et sleepwake de maintenance sont un gros soucis sur les vieux MacBook (je veux dire les modèles pré-Apple-silicon!) upgradés via OCLP, au niveau de la consommation de batterie lorsque l’ordi est en veille . Bien que les darkwake peuvent être utiles/pratiques sur du Apple-silicon car les puces consomment quasi rien et si tout est bien paramétré la consommation de batterie en veille doit guère être impactée de + de 0,2% supplémentaire par heure (par rapport à une veille « standard » ou quand l’ordi est en veille il est réellement en veille, plutôt qu’à se réveiller assez régulièrement pour synchroniser ou indexer des machins!) . Sur du x86 en revanche c’est pas la même affaire (pour des raisons techniques/physiques indépassables), alors une veille ponctuée de Darkwakes peut bouffer dans les 2 à 5% de batterie par heure (j’ai déjà perdu du 40% de batterie en une nuit, ordi en veille sur batterie capot fermé, ça m’a pas fait bien rigoler au matin…) quand sur du Apple-Silicon (si tout est bien réglé…) ça doit guère dépasser le % chaque 5 ou 6h (car le proco au delà d’etre hyper économe héberge directement la ram si je dis pas de conneries) .
J’ai vu quelques solutions à base de « éteindre automatiquement la carte wifi/BT » juste au moment ou l’ordi bascule en veille, ce qui est plutôt malin . Car visiblement en éteignant la carte wifi l’OS ne voit aucune connexion disponible donc il ne tente même pas d’effectuer ses synchros iCloud qu’il fait sinon régulièrement au travers de darkwakes (ça limite déjà ces causes de Darkwake même s’il reste celle d’indexation) . Malheureusement ce genre de solution ne fonctionne pas toujours selon les retours et elles nécessitent d’installer des outils logiciels qu’il faut paramétrer ensuite . Alors que je voulais un truc simple et rapide à mettre en place…
Donc…
Je suis passé par le mode standby (qui est le nouveau nom du mode hibernation, depuis quelques temps déjà, en fait…) .
ôLe standby corresponds à une veille profonde sans aucun darkwake possible car la ram n’est plus alimentée/disponible, le délai avant activation du standby est facilement ajustable via le terminal . Ce mode permet d’écrire le contenu de la ram sur le ssd (en fait sur le cache du ssd normalement, donc c’est pas super conseillé pour les ssd qui ont des modules de cache en flash au lieu d’être en Dram!) afin de pouvoir ensuite couper l’alimentation de la ram sans pour autant perdre sa session . La consommation devient ainsi très faible car l’ordi est presque éteint . Pour ne rien gâcher on peut régler le délai d’activation du standby en fonction du niveau de la batterie (typiquement : plutôt tard si elle est bien chargée, mais plutôt tôt si elle ne l'est pas beaucoup) . Au réveil de la machine : MacOS lit le ssd (ou plutôt son cache) pour recharger la ram (avec les données de session qui y étaient précédemment) . Le cache étant (très très) rapide cela n’impacte pas trop la durée nécéssaire au réveil (inférieur à la seconde depuis une veille classique) . Depuis un standby comptez environ 5 secondes au total sur un macbookair 6,1 de 2013 (pour un ssd ssubx, rajouter une bonne bonne seconde amha sur un ssuax) . Certes c’est toujours 4 secondes de + qu’une sortie de veille classique, soyons d’accord, mais en contrepartie l’autonomie globale y gagne vraiment, en heures d’écran allumé (pas juste quelques minutes...) si votre batterie est bonne .
Perso j’ai réglé tout ça pour que, au dessus de 80% de batterie (c’est 50% par défaut !! :-/ ) l’ordi passe en standby (hibernation donc!) au bout de seulement 3h de veille classique . Si la batterie est sous les 80% ce délai est réduit à 1h30 (je suis un peu "agressif" dans le truc mais j'ai besoin de préserver ma tenue de batterie alors...) . Donc, maintenant, le soir quand je ferme l’ordi avant d’aller dormir je sais que sous 3heures au max, quel que soit le niveau de batterie, l’ordi passera en hibernation jusqu’au matin (sans aucun darkwake d’ici là ! Nan mais ho !) . Ce qui amènera à perdre au pire 1 ou 2% de batterie pendant la nuit, plutôt que 15! ou 20! ou 30! comme auparavant !
Bref, on peut vérifier ses paramètres actuels avec la commande « pmset -g »
(« -g » pour « get »=obtenir et « pmset » pour « powermanagementsettings ») afin d’obtenir le détail des réglages actuels, qui sont pour moi :
System-wide power settings:
Currently in use:
lidwake 1
autopoweroff 1
standbydelayhigh 86400
autopoweroffdelay 259200
standbydelaylow 10800
standby 1
ttyskeepawake 1
hibernatemode 3
powernap 0
gpuswitch 2
hibernatefile /var/vm/sleepimage
highstandbythreshold 50
displaysleep 10
womp 0
networkoversleep 0
sleep 1
acwake 0
halfdim 1
disksleep 10
On va s'intérésser à :
« High_standby_threshold » qui est une valeur en pour-cent . C’est le paramètre qui permet de différencier les 2 états/niveaux de batterie : « chargée » ou sinon faible/déchargée, ceci afin d’avoir 2 « politiques » d’activation différentes pour le délai d'application du mode stand-by en fonction du niveau de charge de batterie . Ici au voit que le réglage est à 50% (batterie considérée chargée au dessus de 50%, faible/déchargée en dessous) . Donc si la batterie est chargée (=au dessus de 50%, sont optimistes les bonhommes...) alors l’OS applique le délai « standbydelayhigh », si au contraire la batterie est dans la zone dite faible alors il utilisera « standbydelaylow » . Ces 2 derniers paramètres/valeurs sont en secondes .
Jouons déjà sur le point de bascule, car 50% c'est pas beaucoup, mettons plutot 80% avec :
« Sudo pmset -b highstandbythreshold 80 »
Maintenant la batterie sera considérée comme faible en dessous de 80% (au lieu de 50%) .
(Le critère « -b » indique que ce paramètre sera valide uniquement en fonctionnement sur batterie .)
Ensuite abaissons le délai de bascule vers standby pour une batterie chargée (à + de 80% donc) par :
Sudo pmset -b standbydelayhigh 10800
Comme cela l’OS doit activer le mode standby au bout de 3h (10800s) de veille (contre 86400s soit 24h dans le réglage par défaut!!!)
On passe ensuite au délai de bascule vers standby pour une batterie sous les 80%, grace à :
Sudo pmset -b standbydelaylow 5400
Ainsi le passage en standby se fera au bout de 1h30 (5400s) si la batterie est sous les 80% (contre 3h par défaut, et pour un seuil à 50%…) .
Enfin petit bonus, je divise par 4 le délai d’extinction automatique avec :
Sudo pmset -b autopoweroffdelay 64800
Pour que le système s’éteigne complètement au bout de 18h (de veille ? de standby? bonne question, bref c'était 72h par défaut) . Certes le standby consomme quasi rien donc on pourrait se passer d'être aussi exigeant mais si je ne me sert pas de l’ordi pendant 18h, c’est que je suis parti ailleurs pour un bon moment en ayant oublié de l’éteindre (-: .
On peut à présent vérifier que tout a bien été appliqué via (toujours) la commande « pmset -g » qui m’annonce à présent :
System-wide power settings:
Currently in use:
lidwake 1
autopoweroff 1
standbydelayhigh 10800
autopoweroffdelay 259200
standbydelaylow 5400
standby 1
ttyskeepawake 1
hibernatemode 3
powernap 0
gpuswitch 2
hibernatefile /var/vm/sleepimage
highstandbythreshold 80
displaysleep 10
womp 0
networkoversleep 0
sleep 1
acwake 0
halfdim 1
disksleep 10
-> On voit que c’est tout comme j'ai paramétré . Tadammm .
Du coup maintenant le matin quand j’ouvre l’ordi il faut que j’attende 4 ou 5 secondes pour qu’il soit pleinement réveillé, alors qu’avant c’était instantané (sauf que ça me coutait gavé de batterie entre temps…) . J’ai envie de dire que dans tous les cas il se réveille bien + vite que moi le matin quand mon réveil-matin sonne, clairement (-: .
En journée c’est rare qu’il reste + de 3h sans servir (donc il ne passe presque jamais en hibernation/standby) alors la sortie de veille est immédiate/instantanée . Au pire elle prendra 4 ou 5 secondes si le standby s’est activé entre temps, c’est pas non plus la mort comme on dit et on peut pas tout avoir dans la vie .
À noter : j'ai pu voir sur quelques forums anglais que certains ont eut besoin de toucher au fichier "/var/vm/sleepimage" (qui est apparemment l'image de la ram du dernier standby) pour que tout cela fonctionne . Ça n'a pas été mon cas .
Voila . Si ça peut aider .
À bientôt pour de nouvelles astuces .
(Car je vous mijote un petit tutoriel sur OCLP qui permet de se passer de clé de boot pour upgrader MacOS : upgrade directe depuis un MacOS existant . Mais une chose à la fois et chaque chose en sont temps ) .
Dernière édition: