AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1505827
Accepted
mpboden
mpboden
Asked: 2024-02-27 12:47:40 +0800 CST2024-02-27 12:47:40 +0800 CST 2024-02-27 12:47:40 +0800 CST

Por que a tela do meu laptop fica escura após retomar do bloqueio de tela, suspensão ou suspensão?

  • 772

Após cada retomada do bloqueio de tela, suspensão ou suspensão, a tela do meu laptop fica muito escura. Se eu digitar Fn+ F6, a tela saltará para 100% de brilho instantaneamente. ( F5e F6são minhas teclas de controle de brilho.)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:    20.04
Codename:   focal

$ lspci -nnk | grep -EA3 VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:25b8] (rev a1)
    Subsystem: Lenovo Device [17aa:22d8]
    Kernel driver in use: nouveau
    Kernel modules: nvidiafb, nouveau

$ sudo lshw -c video
  *-display                 
       description: VGA compatible controller
       product: NVIDIA Corporation
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: /dev/fb0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=nouveau latency=0 mode=1920x1080 visual=truecolor xres=1920 yres=1080
       resources: iomemory:400-3ff iomemory:410-40f irq:199 memory:ab000000-abffffff memory:4000000000-40ffffffff memory:4100000000-4101ffffff ioport:3000(size=128) memory:ac080000-ac0fffff

$ sudo lshw | grep -i lenovo
    product: 20YU002HUS (LENOVO_MT_20YU_BU_Think_FM_ThinkPad P17 Gen 2i)
    vendor: LENOVO
    configuration: administrator_password=disabled chassis=notebook family=ThinkPad P17 Gen 2i power-on_password=disabled sku=LENOVO_MT_20YU_BU_Think_FM_ThinkPad P17 Gen 2i uuid=4C043C28-3F2B-B211-A85C-940FFC06910B
       vendor: LENOVO
          vendor: LENOVO

Antes de bloquear a tela, suspender ou suspender:

$ cat /sys/class/backlight/nv_backlight/actual_brightness 
100

Configurações de energia antes Configuração de brilho antes

Após bloquear a tela, suspender ou suspender:

$ cat /sys/class/backlight/nv_backlight/actual_brightness 
33

Configurações de energia depois Configuração de brilho depois


Estou entrando no modo de bloqueio por qualquer um dos seguintes:

  • Por inatividade
  • Na linha de comando com:xdg-screensaver lock
  • No menu suspenso clicando em:Lock

Estou entrando no modo de suspensão/suspensão por qualquer um dos seguintes:

  • Na linha de comando com:systemctl suspend
  • No menu suspenso clicando em: Power Off/Log Out>Suspend

Observe que após retomar do bloqueio/suspensão/suspensão, o conteúdo de /sys/class/backlight/nv_backlight/actual_brightnessé 33, não 100.

Para obter brilho total novamente, só preciso digitar Fn+ F6uma vez. Acho isso um pouco estranho, porque normalmente, se o brilho for tão baixo, seriam necessários vários pressionamentos de tecla. Por exemplo, para ir de 30para 100, normalmente seriam sete pressionamentos de tecla.

Além disso, você notará na Settings/Powerjanela que o nível de brilho indica que está em 100%, antes e depois de bloquear/hibernar/suspender.

Finalmente, você notará que tenho a configuração Dim Screen When Inactivedesabilitada.


Na minha tentativa de encontrar algum tipo de solução, instalei xbacklightcom a ideia de que poderia usá-la em um script para redefinir automaticamente meu brilho. Mas isso não teve efeito.

Também tentei os seguintes comandos, mas os níveis de brilho não mudam e não consigo gravar no arquivo. Talvez esta seja a abordagem errada.

$ sudo chmod 644 /sys/class/backlight/nv_backlight/actual_brightness

$ sudo tee /sys/class/backlight/nv_backlight/actual_brightness <<< 100
100
tee: /sys/class/backlight/nv_backlight/actual_brightness: Input/output error

$ sudo su

# echo 100 > /sys/class/backlight/nv_backlight/actual_brightness
bash: echo: write error: Input/output error

Por que esse sintoma está acontecendo e como posso corrigi-lo? Idealmente, eu preferiria não incorporar um script executado no login. Parece tratar o sintoma e não a causa.


ATUALIZAR

Tentei as duas soluções sugeridas a seguir, mas nenhuma funcionou.

Sugestão 1 – Serviço Systemd

  • Criar arquivo:

     $ cat /etc/systemd/system/nvidia-backlight-sleep
    
     [Unit]
     Description=Fix Nvidia backlight after suspend
     Before=sleep.target
     StopWhenUnneeded=yes
    
     [Service]
     Type=oneshot
     RemainAfterExit=yes
     ExecStart=/bin/bash -c "cat /sys/class/backlight/nv_backlight/actual_brightness > /run/previous_nv_backlight_brightness"
     ExecStop=/bin/bash -c "sleep 1; cat /run/previous_nv_backlight_brightness > /sys/class/backlight/nv_backlight/brightness"
    
     [Install]
     WantedBy=sleep.target
    
  • Recarregue os daemons do systemd:sudo systemctl daemon-reload

  • Habilitar serviço:sudo systemctl enable nvidia-backlight-sleep

Sugestão 2 - Crie script em/lib/systemd/system-sleep

  • Criar arquivo:

     $ cat /lib/systemd/system-sleep/nvidia-backlight-sleep
    
     #!/bin/bash
    
     case $1 in
       post)
         sleep 1
         echo 50 > /sys/class/backlight/nv_backlight/brightness
         ;;
     esac
    
  • Tornar executável:sudo chmod 755 /lib/systemd/system-sleep/nvidia-backlight-sleep

nvidia
  • 2 2 respostas
  • 82 Views

2 respostas

  • Voted
  1. Best Answer
    mpboden
    2024-02-28T12:34:28+08:002024-02-28T12:34:28+08:00

    Consegui resolver meu problema mudando do nouveaudriver de código aberto para o proprietário nvidia-driver-535. Isso pode ser instalado a partir da linha de comando ou por meio da GUI. Optei por instalá-lo através da GUI.

    1. Em Atividades , procure por “ driver ” e clique no ícone “ Drivers Adicionais ”. insira a descrição da imagem aqui
    2. A janela “ Software e atualizações ” será aberta na guia “ Drivers adicionais ”. insira a descrição da imagem aqui
    3. Selecionei " Usando metapacote de driver NVIDIA de nvidia-driver-535 (proprietário) " e cliquei em " Aplicar alterações " insira a descrição da imagem aqui
    4. Eu reiniciei o computador

    Após a reinicialização, você pode ver que o driver Nvidia está em uso:

    $ sudo lshw -c video
      *-display                 
           description: VGA compatible controller
           product: NVIDIA Corporation
           vendor: NVIDIA Corporation
           physical id: 0
           bus info: pci@0000:01:00.0
           version: a1
           width: 64 bits
           clock: 33MHz
           capabilities: pm msi pciexpress vga_controller bus_master cap_list rom
           configuration: driver=nvidia latency=0
           resources: iomemory:400-3ff iomemory:410-40f irq:200 memory:ab000000-abffffff memory:4000000000-40ffffffff memory:4100000000-4101ffffff ioport:3000(size=128) memory:ac080000-ac0fffff
    

    Além disso, junto com a instalação do driver, um utilitário chamado nvidia-settingsé instalado. Execute isso com sudo nvidia-settingse a seguinte janela será exibida: insira a descrição da imagem aqui

    Outro aplicativo utilitário instalado com o driver Nvidia é o System Management Interface nvidia-sma:

    $ nvidia-smi
    Tue Feb 27 21:32:15 2024       
    +---------------------------------------------------------------------------------------+
    | NVIDIA-SMI 535.161.07             Driver Version: 535.161.07   CUDA Version: 12.2     |
    |-----------------------------------------+----------------------+----------------------+
    | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
    |                                         |                      |               MIG M. |
    |=========================================+======================+======================|
    |   0  NVIDIA RTX A2000 Laptop GPU    Off | 00000000:01:00.0  On |                  N/A |
    | N/A   38C    P8               7W /  60W |    411MiB /  4096MiB |      1%      Default |
    |                                         |                      |                  N/A |
    +-----------------------------------------+----------------------+----------------------+
                                                                                             
    +---------------------------------------------------------------------------------------+
    | Processes:                                                                            |
    |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
    |        ID   ID                                                             Usage      |
    |=======================================================================================|
    |    0   N/A  N/A      1344      G   /usr/lib/xorg/Xorg                           39MiB |
    |    0   N/A  N/A      2153      G   /usr/lib/xorg/Xorg                          114MiB |
    |    0   N/A  N/A      2282      G   /usr/bin/gnome-shell                         83MiB |
    |    0   N/A  N/A      7710      G   /usr/lib/firefox/firefox                    153MiB |
    +---------------------------------------------------------------------------------------+
    

    Finalmente, posso bloquear ou suspender meu laptop e as configurações de brilho da luz de fundo da tela são mantidas. Enquanto antes o valor era salvo em /sys/class/backlight/nv_backlight/actual_brightness, o novo driver salva o valor em /sys/class/backlight/nvidia_0/actual_brightness:

    $ cat /sys/class/backlight/nvidia_0/actual_brightness 
    100
    

    Concluindo, acho que há um bug no nouveaudriver que está salvando e recuperando o actual_brightnessvalor incorretamente. Por algum motivo, ele sempre retomava do bloqueio ou suspensão/suspensão com um valor de 33.

    • 1
  2. Daniel T
    2024-02-27T13:48:31+08:002024-02-27T13:48:31+08:00

    Parece que o driver da Nvidia não está lembrando o valor da luz de fundo, mesmo que o GNOME o faça. Vamos contornar isso com um gancho para dormir:

    1. Cole o seguinte em/etc/systemd/system/nvidia-backlight-sleep-askubuntu-1505827-1004020.service

      [Unit]
      Description=Fix Nvidia backlight after suspend
      Before=sleep.target
      StopWhenUnneeded=yes
      
      [Service]
      Type=oneshot
      RemainAfterExit=yes
      ExecStart=/bin/bash -c "cat /sys/class/backlight/nv_backlight/actual_brightness > /run/previous_nv_backlight_brightness"
      ExecStop=/bin/bash -c "sleep 1; cat /run/previous_nv_backlight_brightness > /sys/class/backlight/nv_backlight/brightness"
      
      [Install]
      WantedBy=sleep.target
      
    2. Corrersudo systemctl daemon-reload

    3. Corrersudo systemctl enable nvidia-backlight-sleep-askubuntu-1505827-1004020.service

    actual_brightnessnão é gravável, então precisamos usar o brightnessarquivo. Você também pode ajustar sleep 1caso não funcione ou se desejar que seja restaurado mais rapidamente. é responsável por salvar no desligamento/inicialização, enquanto o próprio driver da GPU é responsável por suspender/reiniciar./lib/systemd/system/[email protected]

    Solução alternativa

    Se isso não funcionar, podemos codificar mais coisas:

    1. Desative e remova a outra solução

    2. Cole o seguinte em/lib/systemd/system-sleep/nvidia-backlight-sleep-askubuntu-1505827-1004020

      #!/bin/bash
      
      case $1 in
        post)
          sleep 1
          echo 50 > /sys/class/backlight/nv_backlight/brightness
          ;;
      esac
      
    3. sudo chmod 755 /lib/systemd/system-sleep/nvidia-backlight-sleep-askubuntu-1505827-1004020

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve