78 votes

Ubuntu 18.04 - Le Dell XPS13 9370 ne se suspend plus à la fermeture du couvercle

Cela fonctionnait parfaitement sous la version 17.10 mais après la mise à niveau vers la version 18.04 hier, lorsque le couvercle est fermé, l'écran s'éteint mais ne se suspend pas correctement.

Je voyage beaucoup et j'ai immédiatement remarqué la chaleur (et l'épuisement de la batterie) en le sortant de son étui de voyage.

J'ai essayé de décommenter les lignes suivantes dans /etc/systemd/logind.conf

HandleLidSwitch=suspend
HandleLidSwitchDocked=suspend

et redémarré mais cela n'a fait aucune différence.

0voto

bogdanoff Points 111

Si vous avez une carte graphique nvidia, ce problème peut être résolu facilement. Il suffit de changer GRUB_CMDLINE_LINUX="" a GRUB_CMDLINE_LINUX="nouveau.modeset=0" sur /etc/default/grub fichier alors sudo update-grub && reboot . Vérifiez également dans l'app store, vous pouvez avoir besoin d'installer des pilotes supplémentaires.

Si cela ne résout toujours pas le problème, essayez ceci cat /sys/power/mem_sleep . S'il ne s'imprime pas s2idle [deep] puis vérifiez ce pour les résoudre.

pour ceux qui n'ont pas de carte graphique nvidia, pas de chance les gars. En 2021, le problème n'est toujours pas résolu. La seule façon de résoudre le problème est de rétrograder le noyau en 4.14.0-041400-generic ce qui résoudra le problème de pendaison lorsque le couvercle est fermé.

Note : J'ai dit "couvercle fermé" parce que cette version n'entre pas en mode suspension lorsque le couvercle est fermé, mais parvient à éteindre l'écran et le rétro-éclairage.) C'est la version que j'utilise actuellement.

Vous pouvez rétrograder le noyau en utilisant ukuu ou en compilant manuellement les sources. Pour l'outil ukuu, vous devez payer, mais si vous ne voulez pas payer, consultez la section Github releases et téléchargez-le à partir de .

Il y a un numéro page qui n'est toujours pas fermée mais je n'ai vu aucune réponse des développeurs en 2021.

Des informations détaillées sur les insectes peuvent être trouvées ici & ici .

Les spécifications de mon système : ( lscpu )

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               55
Model name:          Intel(R) Pentium(R) CPU  N3510  @ 1.99GHz

0voto

CooLmAn Points 1

Merci à la réponse de me47 et si quelqu'un souhaite avoir un contrôle plus dynamique, par exemple passer en mode ralenti quand il est branché et en mode profond quand il est débranché, voici comment faire.

Comment configurer une commutation dynamique entre le mode s2idle ou le mode profond selon qu'il est branché ou non ?

  1. nous aurons besoin udev pour surveiller tout événement système que nous utiliserons pour déclencher un script.

    sudo apt install udev

  2. vérifier l'état de branchement (note : la dernière partie du chemin peut varier)

    réf : https://unix.stackexchange.com/a/227967

    sudo udevadm info --path=/sys/class/power_supply/ACAD

et cela devrait donner quelque chose comme ce qui suit :

E: POWER_SUPPLY_NAME=ACAD
E: POWER_SUPPLY_TYPE=Mains
E: POWER_SUPPLY_ONLINE=1
E: SUBSYSTEM=power_supply
  1. Ensuite, nous allons préparer un script qui sera utilisé pour contrôler l'état de repos ou l'état profond. Je crée le script à l'endroit suivant /opt/custom-scripts/auto_cycle_sleep_mode.sh vous êtes libre de placer le script où vous voulez. Une fois que vous avez créé le fichier, entrez ce qui suit

    !/bin/bash

    This script is used to control when to put laptop in idle mode or sleep mode

    after lid closed depending if it is connected to AC or not so it does not require any manual changes

    IS_PLUGGED_IN=${1:-0}

    MESSAGE=""

    if [ $IS_PLUGGED_IN -eq 1 ] then MESSAGE="AC Plugged In, switch to idle mode" echo s2idle > /sys/power/mem_sleep else MESSAGE="AC Unplugged, switch to deep sleep mode" echo deep > /sys/power/mem_sleep fi

    now=date +'%Y-%m-%d %H:%M:%S'

    echo "[$now] - $MESSAGE" | sudo tee --append /tmp/udev.log

Ce qui précède est un simple script qui prend un paramètre de l'état branché et l'envoie à /sys/power/mem_sleep et écrire le journal

  1. Ensuite, nous allons créer la règle

    sudo nano /etc/udev/rules.d/80-local.rules

et saisissez les éléments suivants

SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_NAME}=="ACAD", ENV{POWER_SUPPLY_TYPE}=="Mains", RUN+="/opt/custom-scripts/auto_cycle_sleep_mode.sh %E{POWER_SUPPLY_ONLINE}"

ce que le script fait est, filtrer l'événement dont nous avons besoin, qui dans ce cas est l'état de POWER_SUPPLY_ONLINE et nous le passerons à notre script. Si vous voulez connaître les bases d'udev, voici une introduction à udev : https://opensource.com/article/18/11/udev

  1. Quand il est prêt, redémarrez le service juste pour vous assurer que

    sudo service udev restart

  2. Nous pouvons maintenant essayer de le brancher et de le débrancher, ce qui devrait donner le résultat suivant dans le fichier journal :

    [2022-04-16 11:16:48] - AC Unplugged, switch to deep sleep mode [2022-04-16 11:16:52] - AC Plugged In, switch to idle mode [2022-04-16 11:22:15] - AC Unplugged, switch to deep sleep mode [2022-04-16 11:22:23] - AC Plugged In, switch to idle mode

  3. si vous rencontrez une erreur, essayez de jeter un coup d'oeil avec sudo service udev status o tail -f /var/log/syslog


Les règles peuvent varier en fonction du matériel, veuillez vérifier avec udevadm à l'étape 2.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X