AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 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

为什么我的笔记本电脑从屏幕锁定、睡眠或挂起状态恢复后屏幕变暗?

  • 772

每次从屏幕锁定、睡眠或挂起恢复后,我的笔记本电脑屏幕都非常暗。如果我输入Fn+ F6,那么屏幕会立即跳到 100% 亮度。(F5和F6是我的亮度控制键。)

$ 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

在屏幕锁定、睡眠或挂起之前:

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

之前的电源设置 亮度设置前

屏幕锁定、睡眠或挂起后:

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

电源设置后 亮度设置后


我通过以下任一方式进入锁定模式:

  • 通过不活动
  • 从命令行:xdg-screensaver lock
  • 从下拉菜单中单击:Lock

我通过以下任一方式进入睡眠/挂起模式:

  • 从命令行:systemctl suspend
  • 从下拉菜单中单击:Power Off/Log Out>Suspend

请注意,从锁定/睡眠/挂起恢复后, 的内容/sys/class/backlight/nv_backlight/actual_brightness是33,而不是100。

要再次达到全亮度,我只需输入Fn+F6一次。我觉得这有点奇怪,因为通常情况下,如果亮度那么低,则需要按几次按键。例如,要从30到100,通常需要按七次按键。

此外,您还会注意到Settings/Power窗口中的亮度级别表明在锁定/睡眠/挂起之前和之后都处于 100%。

最后,您会注意到我禁用了设置Dim Screen When Inactive。


在我尝试提出某种解决方案时,我安装了xbacklight一个想法,即我可以在脚本中使用它来自动重置我的亮度。但这没有影响。

我还尝试了以下命令,但亮度级别没有改变,并且我无法写入文件。也许这是错误的做法。

$ 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

为什么会出现这种症状?如何解决?理想情况下,我不想合并在登录时运行的脚本。这似乎是治标不治本。


更新

我尝试了以下两个建议的解决方案,但都不起作用。

建议 1 - Systemd 服务

  • 创建文件:

     $ 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
    
  • 重新加载 systemd 守护进程:sudo systemctl daemon-reload

  • 启用服务:sudo systemctl enable nvidia-backlight-sleep

建议 2 - 创建脚本/lib/systemd/system-sleep

  • 创建文件:

     $ 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
    
  • 使可执行:sudo chmod 755 /lib/systemd/system-sleep/nvidia-backlight-sleep

nvidia
  • 2 2 个回答
  • 82 Views

2 个回答

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

    我能够通过从开源nouveau驱动程序切换到专有的nvidia-driver-535. 可以从命令行或通过 GUI 安装。我选择通过GUI安装它。

    1. 在“活动”中,搜索“驱动程序”并单击“其他驱动程序”图标。 在此输入图像描述
    2. “软件和更新”窗口将打开“其他驱动程序”选项卡。 在此输入图像描述
    3. 我选择了“使用 nvidia-driver-535(专有)中的 NVIDIA 驱动程序元包”,然后单击“应用更改” 在此输入图像描述
    4. 我重新启动了电脑

    重启后,可以看到Nvidia驱动正在使用:

    $ 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
    

    此外,在安装驱动程序的同时,nvidia-settings还会安装一个名为的实用程序。运行它sudo nvidia-settings并显示以下窗口: 在此输入图像描述

    与 Nvidia 驱动程序一起安装的另一个实用程序应用程序是系统管理界面,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 |
    +---------------------------------------------------------------------------------------+
    

    最后,我可以锁定或暂停我的笔记本电脑,并且保留屏幕背光亮度设置。而之前的值保存在 中/sys/class/backlight/nv_backlight/actual_brightness,新驱动程序将值保存在 中/sys/class/backlight/nvidia_0/actual_brightness:

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

    总之,我认为驱动程序存在nouveau错误保存和调用该actual_brightness值的错误。由于某种原因,它总是从锁定或睡眠/挂起状态恢复,值为33。

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

    看起来你的 Nvidia 驱动程序没有记住背光值,尽管你的 GNOME 会记住。让我们用 sleep hook 来解​​决这个问题:

    1. 将以下内容粘贴到/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. 跑步sudo systemctl daemon-reload

    3. 跑步sudo systemctl enable nvidia-backlight-sleep-askubuntu-1505827-1004020.service

    actual_brightness不是可写的,所以我们需要使用该brightness文件。sleep 1如果它不起作用或者您希望它更快地恢复,您还可以进行调整。负责在关闭/启动时保存,而 GPU 驱动程序本身负责挂起/恢复。/lib/systemd/system/[email protected]

    替代解决方案

    如果这不起作用,我们可以硬编码更多东西:

    1. 禁用并删除其他解决方案

    2. 将以下内容粘贴到/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

相关问题

  • 普利茅斯将来会允许使用专有图形驱动程序获得良好的启动体验吗?

  • 未连接到任何可见进程的令人讨厌的 CPU 峰值

  • 10.04 Lucid 中的多席位状态如何?[关闭]

  • 升级到 10.04 后字体模糊,Nvidia 问题?

  • 帮助让 Flash 播放器在第二个屏幕上工作?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

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

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve