Por que meu controle de brilho do Thinkpad pula etapas?

15

O problema: existem 16 níveis de brilho no meu laptop, mas teclas de prensagem Fn+Home, Fn+Endajusta o brilho 3 passos de cada vez (por exemplo, de 0 a 3, ou de 15 a 12).

Acho importante notar que, na tela de login, as teclas de atalho funcionam bem . Mas após o login, esse comportamento estranho aparece.

Além disso, se eu focar em um menu (por exemplo, clique no menu Arquivo no firefox), as teclas de atalho funcionam bem .

xdotool key XF86MonBrightnessDownfunciona bem, ajustando o brilho em 1 passo (verificado com cat /sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness).

Eu também instalei indicator-brightness- mostra 16 folhas (0-15).

Tentei configurar acpi_backlight=vendorno grub (inspirado neste tópico: http://ubuntuforums.org/showthread.php?t=1909184 com problema semelhante). Funcionou em que as teclas de atalho começaram a funcionar bem. Mas surgiram problemas com a notificação OSD, xdotool e indicador de brilho. Então eu acho que não é uma solução certa.

Parece que, após o login, algo interfere no esquema de processamento das teclas de atalho. Alguma ideia?

Editar (informações adicionais)

  • Fiz uma observação de que as teclas de atalho funcionam no nível do hardware - posso ajustar o brilho imediatamente após ligar o laptop (por exemplo, na tela do BIOS).

  • Após as $ killall gnome-settings-daemonteclas de atalho, ajuste o brilho em uma etapa, mas nenhuma notificação é exibida. Pouco antes gnome-settings-daemonrecupera, e emitir passo retornos triplos.

  • acpi_listen fornece a seguinte saída (ambas as teclas sequencialmente):

    $ acpi_listen
    ibm/hotkey HKEY 00000080 00001010
    video LCD0 00000086 00000000
    ibm/hotkey HKEY 00000080 00001011
    video LCD0 00000087 00000000
    

    Nesse ponto, pensei que (1) as teclas de atalho funcionassem no nível do hardware; (2) ibm/hotkeycuida de teclas de atalho; (3) videocuida também. Assim, aparece o problema de três etapas.

    Tentei na lista negra de vídeos (esperava que isso levasse a um comportamento de duas etapas), mas nada mudou.

Como solução alternativa, criei minhas próprias teclas de atalho no CompizConfig Settings Manager - conforme descrito aqui , mas com o --clearmodifiersargumento:

xdotool key --clearmodifiers XF86MonBrightnessUp
xdotool key --clearmodifiers XF86MonBrightnessDown

Então agora eu posso usar teclas de atalho iniciais ou novas para ajustes mais refinados.

Perguntas abertas

Já houve discussão sobre o caso com etapa dupla: Lenovo ThinkPads, teclas de função de brilho executam duas etapas em vez de uma, procurando uma solução alternativa :

o hardware faz isso e também envia um sinal dizendo que o botão foi pressionado. Possivelmente, você pode desabilitar o atalho em Sistema -> Preferências -> Atalhos de teclado para esta ação?

Mas estou ansioso para saber,

  1. Por que eu recebo um problema com três etapas?
  2. Como posso cancelar o processamento dessas teclas de atalho?

Ficaria muito grato se alguém explica isso.

Andrey
fonte

Respostas:

14

De onde vêm as 3 etapas para 1 pressionamento de tecla?

Você recebe três etapas de brilho para um pressionamento de tecla porque:

  1. O driver ACPI / vídeo padrão ajusta a etapa 1
  2. O thinkpad_acpidriver diz ao BIOS para ajustar a etapa 2, mas ainda encaminha o evento de pressionamento de tecla
  3. O daemon de energia do GNOME intercepta esse pressionamento de tecla e diz à ACPI para ajustar novamente a etapa 3

1. Desative o driver de vídeo de ajustar o brilho por conta própria

Isso elimina uma das três etapas (etapa 1) acima.

  • Abra o terminal
  • Tipo sudo sh -c 'echo -n 0 > /sys/module/video/parameters/brightness_switch_enabled'
  • Teste, agora você deve ter o controle de brilho em etapas de dois
  • Para desativar isso automaticamente na inicialização, abra /etc/rc.localno seu editor favorito e, antes da última linha ( exit 0), adicione:

    eco -n 0> / sys / module / video / parameters / brightness_switch_enabled

2. Recompile o thinkpad_acpimódulo para resolver o problema de impressão dupla

  • Temos que parar thinkpad_acpide ajustar o brilho via BIOS e fazê-lo encaminhar apenas o pressionamento de tecla para o GNOME, para que o GNOME faça o único passo de ajuste
  • Este é um bug conhecido que foi corrigido no kernel 3.4+
  • Para corrigi-lo para o Ubuntu 12.04 / Precise, corrigiremos sua versão thinkpad_acpie a recompilaremos:

    1. Instale os cabeçalhos do kernel: sudo apt-get install linux-headers-$(uname -r)
    2. Instalar ferramentas de construção sudo apt-get install build-essential
    3. Crie um diretório temporário e mude para ele:
      mkdir ~ / tpacpi-bright && cd ~ / tpacpi-bright
    4. Faça o download e corrija o arquivo de origem thinkpad_acpi.cdo repositório git do Ubuntu Kernel:

      wget -O- "http: //kernel.ubuntu.com/git? p = ubuntu / ubuntu-precision.git; \
      a = blob_plain; f = drivers / plataforma / x86 / thinkpad_acpi.c; hb = HEAD "\
      | sed -e 's / tp_features.bright_acpimode && acpi_video / acpi_video / g' \
      > thinkpad_acpi.c
    5. Na mesma pasta em thinkpad_acpi.cque foi baixado, você precisará de um "Makefile". Você pode baixá-lo diretamente deste Pastebin , usando:

      wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT

    OU cole o abaixo em um arquivo chamado Makefile:

    obj-m + = thinkpad_acpi.o
    todos: make -C / lib / modules / $ (shell uname -r) / build M = $ (PWD) módulos
    limpar \ limpo: make -C / lib / modules / $ (shell uname -r) / compilação M = $ (PWD) limpa
    1. Agora digite makepara criar o módulo; você verá um thinkpad_acpi.koarquivo na pasta quando terminar.
  • Teste o módulo corrigido depois de carregá-lo com:

    sudo rmmod thinkpad_acpi && sudo lsmod thinkpad_acpi.ko
  • Se o brilho agora estiver fixo e oferecer controle total, substitua o módulo de estoque pelo módulo corrigido:

    TPDIR = / lib / modules / $ (uname -r) / kernel / drivers / plataforma / x86
    sudo mv $ TPDIR / thinkpad_acpi.ko $ TPDIR / thinkpad_acpi.ko.stock
    sudo mv ~ / tpacpi-bright / thinkpad_acpi.ko $ TPDIR / thinkpad_acpi.ko
    
  • Você pode limpar a pasta de compilação com make clean; mantenha-o por perto para futuras atualizações do kernel!

ish
fonte
obrigado pela resposta! Sua solução funcionou completamente para mim. O único problema - o controle de brilho não funciona agora na tela de login (pareço entender o porquê - porque novo thinkpad_acpié usado, mas o daemon de energia do GNOME ainda está fora de operação).
Andrey
Para fins de aprendizado, você poderia me dizer, existe uma maneira de informar ao daemon de energia do GNOME para não processar teclas de atalho de brilho, como fizemos com o videodriver? O Ubuntu fornece GUI ( All Settings -> Keyboard -> Shortcuts) para personalizar as teclas de atalho de áudio (Aumentar / Diminuir o volume, Mudo), mas não encontrei onde posso alterar ou desativar as teclas de brilho.
214 Andrey
@ Andy: de nada! Eu tenho um Thinkpad T520, então essa foi uma boa oportunidade para corrigir o problema. Quanto à tela de login, acho que a maneira de resolver isso é colocar a desativação não dentro, rc.localmas dentro ~/.profile, para que ela seja ativada somente após o login. Se houver uma maneira simples de desativar o daemon de energia GNOME do processamento de teclas de atalho de brilho, ele também desativará o OSD (como backlight=vendor); fazê-lo corretamente pode exigir a modificação do código-fonte ... tentarei dar uma olhada nele. De qualquer forma, quando a versão 12.10 for lançada, eles lançarão o kernel fixo suportado para a versão 12.04, então funcionará então.
Ish
2

Eu estava tendo exatamente o mesmo problema que você e meu sistema sempre iniciava com a tela desligada.

Gostaria de agradecer por me apontar na direção certa, ter acpi_backlight=vendorfeito o truque para mim sem nenhum dos problemas que você teve. Estou usando um HP G7 1116sg com gráficos híbridos (Intel HD3000 (atualmente usando apenas a intel devido a problemas híbridos no ubuntu. Digo isso apenas porque o X220 está listado como tendo o mesmo adaptador gráfico) / Radeon HD6870) e Ubuntu 12.04.

Só queria dizer que as alterações do grub funcionaram para mim sem problemas aparentes.

Boa sorte em encontrar uma solução.

DrA7
fonte
Fico feliz que funcionou para você!
Andrey
0

Ajustar /sys/module/video/parameters/brightness_switch_enabledpara 0torna-me incapaz de controlar o brilho no Thinkpad X230 por meio de teclas de atalho, tanto no tty quanto no xfce 4.10. Eu tive que dizer ao xfce4-power-manager para não alterar o brilho dos principais eventos. Você pode fazer isso definindo uma das duas chaves de configuração ocultas. O primeiro é:

xfconf-query -c xfce4-power-manager -n -t bool -p /xfce4-power-manager/change-brightness-on-key-events -s false

E o segundo:

xfconf-query -c xfce4-power-manager -n -t bool -p /xfce4-power-manager/show-brightness-popup -s false

Nota: essas duas configurações desativam a tela pop-up de brilho no meu sistema, mas pelo menos eu recupero todos os 16 níveis de brilho!

Você pode ler mais sobre esse problema nesta página e na parte inferior desta página .

jeremija
fonte
0

No meu laptop Lenovo S205, tive um problema em que o driver de vídeo e o gnome ajustaram o brilho.

Mas minha experiência em desativar a brightness_switch_enabledpropriedade é que o gnome é lento e parece atrevido ao atualizar a luz de fundo - por exemplo, se eu deixar as teclas pressionadas por alguns segundos e depois soltá-lo, o gnome ainda leva de 5 a 10s para processar os eventos.

Então, em vez disso, prefiro deixar o driver de vídeo fazer os ajustes e impedir o gnome de fazê-los.

sudo chmod -x /usr/lib/gnome-settings-daemon/gsd-backlight-helper

Desativar o gsd-backlight-helperfez o truque para mim. Rastreiei as internets e não parece haver uma opção visível ao usuário para fazer o mesmo.

Perdi o OSD de brilho, mas agora as alterações de brilho são processadas instantaneamente e, como bônus, ainda tenho controle de brilho no tty.

Ivo Anjo
fonte