ACPId suspend-to-ram: você pode especificar o despertar usando eventos de teclado?

3

Este é o Gentoo Linux com OpenRC (atualizado para o systemd mais tarde), e ACPI + alguns recursos de gerenciamento de energia no kernel para Intel. ACPId está instalado e funcionando. Eu posso suspender para usando :

echo -n "mem" > /sys/power/state

Isso funciona, mas eu preciso usar o botão de energia para acordar. Existe uma maneira de acordar de eventos de teclado, como pressionar a barra de espaço? O teclado é um teclado USB sem fio. Eu olhei para o conteúdo do script em /etc/acpi e não oferece nenhuma visão sobre como fazer isso. A maioria das informações que eu encontro é geralmente voltada para usuários de laptop. Eu realmente preciso de algo como o antigo pm-utils para conseguir isso e há algo de errado em usar apenas o acpid?

cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
P0P2      S4    *disabled
P0P3      S4    *disabled  pci:0000:00:06.0
P0P1      S4    *disabled  pci:0000:00:1e.0
PS2K      S4    *enabled   pnp:00:0b
EUSB      S4    *enabled   pci:0000:00:1d.7
USBE      S4    *enabled   pci:0000:00:1a.7
P0P4      S4    *disabled  pci:0000:00:1c.0
P0P5      S4    *disabled
P0P6      S4    *disabled  pci:0000:00:1c.2
P0P7      S4    *disabled
P0P8      S4    *disabled
P0P9      S4    *disabled
GBEC      S4    *disabled
USB0      S4    *enabled   pci:0000:00:1d.0
USB1      S4    *enabled   pci:0000:00:1d.1
USB2      S4    *enabled   pci:0000:00:1d.2
USB3      S4    *disabled
USB4      S4    *enabled   pci:0000:00:1a.0
USB5      S4    *enabled   pci:0000:00:1a.1
USB6      S4    *enabled   pci:0000:00:1a.2
MBT4      S4    *disabled

Opções de kernel aparentemente relevantes utilizadas (3.10.25-gentoo SMP, 64 bits, IA32emul = off, no-multilib):

  • CONFIG_HOTPLUG_CPU = y e com cpu0_hotplug por padrão
  • Suspender para a hibernação de espera e de ram
  • Suporte de depuração do Power mgmt
  • Suspender / retomar o rastreamento de eventos
  • suporte a ACPI
  • Suporte a CPU inativo no PM
  • Driver Cpuidle para processadores Intel
  • O suporte para systemd através da opção Gentoo no kernel foi ativado

A configuração do BIOS é bem padrão:

  • Eu habilitei as tabelas extras da ACPI2.0
  • Não vejo nenhum evento de ativação para USB, mas eu tentei ativar os eventos de PCI / PCIe / PS2 etc, mas na verdade este é um teclado USB sem fio
  • Board é vencedor da velha escola Maximus Formula com Q6600 Core2quad

O OpenRC foi atualizado para systemd e o kernel foi recompilado para suportar isso. A configuração também foi atualizada assim . Com o systemd, o apcid não é necessário em todas as instâncias. Por exemplo, sem correr você pode emitir systemctl suspend e o comportamento é ... o mesmo que antes, ou seja, acordar apenas do botão de energia ...

pstree output:

systemd 
  ├─acpid -f
  ├─at-spi-bus-laun
  │   ├─dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork--print-addres
  │   └─2*[{at-spi-bus-laun}]
  ├─at-spi2-registr --use-gnome-session
  │   └─{at-spi2-registr}
  ├─dbus-daemon --system --address=systemd: --nofork --nopidfile--systemd-activation
  ├─dbus-daemon --fork --print-pid 5 --print-address 7 --session
  ├─dbus-launch --sh-syntax --exit-with-session
  ├─dhcpcd -q --nobackground
  ├─login --    
  │   └─bash
  │       └─startx /usr/bin/startx
  │           └─xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc :0 -auth...
  │               ├─X -nolisten tcp :0 -auth /home/user/.serverauth.3329
  │               └─openbox --startup /usr/libexec/openbox-autostart OPENBOX
  │                   ├─firefox
  │                   │   ├─plugin-containe ...
  │                   │   │   └─6*[{plugin-containe}]
  │                   │   └─35*[{firefox}]
  │                   └─vlc
  │                       └─4*[{vlc}]
  ├─lxterminal
  │   ├─bash
  │   │   └─htop
  │   ├─bash
  │   │   └─su
  │   │       └─bash
  │   │           └─grc /usr/lib/python-exec/python2.7/grc tail -f ...
  │   │               ├─grcat /usr/lib/python-exec/python2.7/grcat conf.log
  │   │               └─tail -f /var/log/emerge.log
  │   ├─bash
  │   ├─gnome-pty-helpe
  │   └─{lxterminal}
  ├─mount.ntfs /dev/sdb1 /mnt/div -o rw
  ├─roxterm
  │   ├─bash
  │   │   └─su
  │   │       └─bash
  │   │           └─pstree -a
  │   ├─gnome-pty-helpe
  │   └─{roxterm}
  ├─systemd --user
  │   └─(sd-pam)                 
  ├─systemd-journal
  ├─systemd-logind
  ├─systemd-udevd
  ├─wbar --pos bot-right --taskbar --isize 24
  └─xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55
    
por jus cogens prime 10.01.2014 / 22:50

2 respostas

0

Isso também é freqüentemente uma configuração do BIOS. Você pode verificar com:

grep ^PWRB /proc/acpi/wakeup  

e habilite-o com

echo "PWRB" > /proc/acpi/wakeup  
    
por 10.01.2014 / 23:49
0

Depende principalmente do hardware usado e não do software.

Para poder retomar a partir de um evento de teclado em um teclado USB

  1. o BIOS deve suportar a retomada de um evento USB. No seu caso USB0 , etc. em /proc/acpi/wakeup confirme o suporte.
  2. as portas USB devem estar ligadas enquanto estiverem suspensas. Isso geralmente é uma configuração do BIOS ou controlado por um jumper na placa-mãe. O procedimento é geralmente documentado no manual das placas principais.
  3. O teclado precisa suportar o envio de um evento enquanto o sistema operacional não está em execução. Teclados especialmente sem fio podem não suportar isso, principalmente para economizar energia e simplificar o firmware.

Como seu /proc/acpi/wakeup mostra que o BIOS suporta ativação por USB de suspensão e até hibernação ( S4 na segunda coluna) e ativação é ativada para a maioria das portas USB (terceira coluna), há uma alta probabilidade de que O teclado sem fio é o culpado e nada que você mude no sistema operacional ou no BIOS fará com que o wakeup funcione.

    
por 07.03.2016 / 03:11