Laptop não suspende corretamente ao fechar a tampa

0

Estou executando o Ubuntu 16.04 LTS no meu Lenovo G50 e tudo está indo bem, exceto que não consigo fechar a tampa do meu laptop sem precisar reinicializar depois. Quando fecho a tampa (ou se eu corro pm-suspend ), a tela do meu laptop fica escura por alguns segundos e depois volta a ligar.

O problema é que quando eu tento retomar, meu laptop basicamente se transforma em uma batata ... Por alguma razão, o gerenciador de rede (wifi e ethernet) não funciona, o terminal se torna extremamente lento e eu posso execute qualquer comando usando sudo porque ele ficará pendurado para sempre.

Eu tentei alterar o arquivo logind.conf , tentei alterar o Power System Settings , atualizei o driver do Intel Graphics, instalei ferramentas como pmi ou laptop-mode ... está ficando sem ideias, mas eu faria qualquer coisa para corrigir esse problema.

Se houver informações do sistema que possam ser úteis, avise-nos e adicioná-las à postagem.

    
por TheGirrafish 24.02.2018 / 18:25

2 respostas

0

Depois de ler ao redor, descobri que o problema era com a placa WiFi QCA6164 da Qualcomm Atheros usada em muitos laptops da Lenovo (G50-80 no meu caso). O Ubuntu não parece ter o firmware adequado para esta placa que faz.

Eu também descobri que desligar o Wi-Fi antes de fechar meu laptop impediria tudo de bugging, então eu coloquei isso e a solução deste postar juntos e criou um arquivo em /etc/acpi/ para lidar com o evento de fechamento da tampa.

Adicione o seguinte código usando sudo nano /etc/acpi/lid.sh :

#!/bin/sh

grep -q closed /proc/acpi/button/lid/LID0/state
if [ $? = 0 ]
then
  nmcli radio wifi off
  pm-suspend
else
  nmcli radio wifi on
fi

Em seguida, adicione as seguintes linhas usando sudo nano /etc/acpi/events/lm_lid :

event=button/lid.*
action=/etc/acpi/lid.sh

Agora, descomente e defina a linha a seguir usando sudo nano /etc/systemd/logind.conf :

HandleLidSwitch=ignore

Por fim, entre nas opções System Settings > Power e coloque todas as opções de fechamento em Do Nothing .

Execute o seguinte para finalizar as alterações:

sudo chmod 755 /etc/acpi/lid.sh
sudo /etc/init.d/acpid restart
sudo service systemd-logind restart

Espero que funcione para você!

    
por TheGirrafish 24.02.2018 / 21:46
2

Para alterar a ação de fechar a tampa no Ubuntu:

Abra o arquivo /etc/systemd/logind.conf em um editor de texto como root, por exemplo,

sudo nano /etc/systemd/logind.conf

Altere esta linha:

#HandleLidSwitch=ignore

Para esta linha:

HandleLidSwitch=suspend

Certifique-se de que tenha sido comentado.

Como alternativa, você também pode adicionar essa linha, mas eu prefiro a primeira:

HandleLidSwitchDocked=suspend

Em seguida, execute:

sudo service systemd-logind restart

Ou reiniciar .

Para solucionar o modo de hibernação / suspensão, você deve digitar o seguinte comando no terminal:

dmesg|less

Geralmente há uma entrada que aplicativo causou a falha da suspensão:

[32467.560058] Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0):
[32467.560115] plasma-desktop D 0000000000000000 0 2065 1 0x00800004

Corrigir suspensão em laptops

sudo apt-get install uswsusp

Agora teste suspender com:

sudo s2ram

Se não funcionar, use:

sudo s2ram --force

Em seguida, edite este arquivo:

sudo nano /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux

Altere o código para:

#!/bin/sh

/sbin/s2ram --force

Editar: Outra correção:

Coloque um script em '/etc/pm/sleep.d/', os scripts serão executados no suspender e continuar. O nome do arquivo deve começar com um número de pedido, 00-49 para scripts de usuário (para obter mais detalhes, consulte man pm-suspend).

O script pode ter esta aparência

#!/bin/sh
(killall -9 mount.nfs; exit 0)

Se você estiver com problemas, verifique /var/log/pm-suspend.log que registrará a tentativa de suspender e executar seu script.

Ubuntu Suspender não funciona FIX

Etapa 1: Abra um terminal e crie um arquivo de script da seguinte forma:

sudo nano /etc/pm/sleep.d/20_custom-ehci_hcd

Etapa 2: Copie todo o script abaixo no arquivo que você acabou de criar e salve-o:

#!/bin/sh
 VERSION=1.1
DEV_LIST=/tmp/usb-dev-list
DRIVERS_DIR=/sys/bus/pci/drivers
DRIVERS="ehci xhci" # ehci_hcd, xhci_hcd
HEX="[[:xdigit:]]"
MAX_BIND_ATTEMPTS=2
BIND_WAIT=0.1
 unbindDev() {
  echo -n > $DEV_LIST 2>/dev/null
   for driver in $DRIVERS; do
    DDIR=$DRIVERS_DIR/${driver}_hcd
    for dev in 'ls $DDIR 2>/dev/null | egrep "^$HEX+:$HEX+:$HEX"'; do
      echo -n "$dev" > $DDIR/unbind
      echo "$driver $dev" >> $DEV_LIST
    done
   #for bus in $EHCI_BUSES; do
     echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind
 # done
   done
 }
 bindDev() {
  if [ -s $DEV_LIST ]; then
    while read driver dev; do
      DDIR=$DRIVERS_DIR/${driver}_hcd
      #for bus in $EHCI_BUSES; do
          echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind
      #done
      while [ $((MAX_BIND_ATTEMPTS)) -gt 0 ]; do
          echo -n "$dev" > $DDIR/bind
          if [ ! -L "$DDIR/$dev" ]; then
            sleep $BIND_WAIT
          else
            break
          fi
          MAX_BIND_ATTEMPTS=$((MAX_BIND_ATTEMPTS-1))
      done
     done < $DEV_LIST
  fi
  rm $DEV_LIST 2>/dev/null
   chvt 1
  chvt 7
}
 EHCI_BUSES="0000:00:1a.0 0000:00:1d.0"
case "$1" in
    hibernate|suspend)
 unbindDev;;
     resume|thaw)
 bindDev;;
 esac

Etapa 3: Dê as permissões de execução de script digitando:

sudo chmod 755 /etc/pm/sleep.d/20_custom-ehci_hcd
    
por An0n 24.02.2018 / 18:54