rtcwake não está funcionando no Ubuntu 14.04 instalado no MacBook Air (meados de 2012)

1

Instalei o Ubuntu 14.04 GNU / Linux em um MacBook Air (meados de 2012). Estou tentando usar rtcwake para implementar uma "hibernação atrasada da suspensão", como no link (o caso de uso específico é não é importante aqui). Mas rtcwake , emitido, por ex. como,

sudo rtcwake --seconds 120  --mode mem

insere suspender ( --mode mem ) apenas por alguns segundos (independentemente do que a opção --seconds diz) e retorna imediatamente. Ambos suspender e hibernar funcionam corretamente neste sistema, e. quando acionado por pm-suspend ou pm-hibernate (usando o swsusp do kernel) ou ao fechar a tampa. A máquina mantém o tempo corretamente e pode mostrar ou atualizá-lo no Ubuntu. O mesmo comando funciona como esperado em outra máquina (não Apple) com um SO GNU / Linux similar.

Eu sei que o MAC OS X tem esse tipo de recurso para ativar a partir do sono em um horário predefinido ou após uma duração predefinida. Então, acredito, eles estão acessando um relógio interno. Minhas perguntas são (todas relacionadas):

Existe algum evento de despertar nos bastidores que está provocando esse despertar imediato? Duvido que isso possa ser o culpado, já que, como mencionei acima, a máquina suspende corretamente o contrário. (Mas, novamente, suspender corretamente de outra forma poderia ser possivelmente devido ao (s) módulo (s) incorreto (s) serem removidos por um gancho SUSPEND_MODULES antes de tal suspensão "normal".) Além disso, a máquina não acorda de uma suspensão normal, acionada, por exemplo, fechando a tampa, quando um rtcwake agendado diz que deveria.

Se não houver eventos de despertar "ocultos", como utilizo esse relógio interno para acionar uma ativação agendada da suspensão no GNU / Linux, pois rtcwake parece não estar funcionando? Este relógio é compatível com RTC para suportar sinalizadores padrão de ativação de modelo de driver de uma ferramenta GNU / Linux? Existem outros métodos / soluções alternativas para alcançar este resultado?

    
por Omid 14.06.2016 / 02:04

1 resposta

1

Eu descobri o culpado. Fazendo cat /proc/acpi/wakeup e desabilitando os dispositivos *enabled um por um (usando, por exemplo, sudo echo 'DEVABBRV' > /proc/acpi/wakeup , onde DEVABBRV é a abreviação do dispositivo listada na saída cat acima), verifica-se que LID0 é acordar a máquina "prematuramente".

Isso talvez se deva a algum sensor de hardware proprietário não padrão na tampa. Desativar o recurso de ativação para LID0 (que pode se tornar permanente incluindo echo 'LID0' > /proc/acpi/wakeup to /etc/rc.local ) torna rtcwake e, em particular, sudo rtcwake --seconds 120 --mode mem , função conforme o esperado.

No entanto, o problema ainda permanece sem solução para meu caso de uso específico (com o script no link ), pois rtcwake < em> não acorde a máquina quando executada nesse script.

    
por 15.06.2016 / 03:52