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 / 问题 / 1122662
Accepted
Csaba Toth
Csaba Toth
Asked: 2019-03-03 23:15:26 +0800 CST2019-03-03 23:15:26 +0800 CST 2019-03-03 23:15:26 +0800 CST

如何让 UPower 和电源子系统识别电源已插入?

  • 772

我正在使用 Xfce4,它具有xfce4-power-manager视觉提示和upower核心支持包之一(我看到一个/usr/lib/upower/upowerd正在运行的ps aux输出)。除此之外,还pm-utils安装了,在日志中我看到它处于活动状态。我不确定这是否会搅动任何水,为了完整起见,我肯定会在此处列出。

该机器是 Acer Predator Helios 500 PH517-61-R0GX (AMD Ryzen)。完全相同的安装(字面意思是相同的 SSD 棒)在华硕 ROG Strix GL702ZC(也是 AMD Ryzen 笔记本电脑,但使用 Ryzen 1700 而不是 Ryzen 2700)中。华硕没有这种问题。

# upower -d
Device: /org/freedesktop/UPower/devices/line_power_ACAD
  native-path:          ACAD
  power supply:         yes
  updated:              Sat 02 Mar 2019 10:08:52 PM PST (2442 seconds ago)
  has history:          no
  has statistics:       no
  line-power
    online:             no

Device: /org/freedesktop/UPower/devices/battery_BAT1
  native-path:          BAT1
  vendor:               PANASONIC
  model:                AP17C5P
  serial:               1409
  power supply:         yes
  updated:              Sat 02 Mar 2019 10:49:28 PM PST (6 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               discharging
    energy:              73.1346 Wh
    energy-empty:        0 Wh
    energy-full:         74.074 Wh
    energy-full-design:  74.074 Wh
    energy-rate:         0 W
    voltage:             17.374 V
    percentage:          98%
    capacity:            100%
    technology:          lithium-ion

Daemon:
  daemon-version:  0.9.23
  can-suspend:     yes
  can-hibernate:   no
  on-battery:      yes
  on-low-battery:  no
  lid-is-closed:   no
  lid-is-present:  yes
  is-docked:       yes

注意上面的电源online: no和电池state: discharge,尽管在我写这篇文章时情况正好相反:交流适配器已插入并且电池应该充满电。这也是惯例,因为如果电池真的在放电,我会在大约 1.5 小时内没电。

现在UPower可以从子系统中获取它的信息。我看到这个:

# cat /sys/class/power_supply/ACAD/online 
0
# cat /sys/class/power_supply/BAT1/status 
Discharging

即使我尝试将 CPU 频率调节器强制为performance,CPU 也会被抑制:

# cat /proc/cpuinfo | grep MHz
cpu MHz     : 548.695
cpu MHz     : 548.572
cpu MHz     : 548.638
cpu MHz     : 548.658
cpu MHz     : 548.226
cpu MHz     : 548.899
cpu MHz     : 548.528
cpu MHz     : 548.477
cpu MHz     : 548.819
cpu MHz     : 548.440
cpu MHz     : 548.905
cpu MHz     : 548.263
cpu MHz     : 548.956
cpu MHz     : 548.645
cpu MHz     : 548.938
cpu MHz     : 548.666

实际上这甚至可能是不可能的,因为我认为最低是 1.5 GHz,但系统有时确实很慢。

我尝试使用acpi_osi=Linux内核引导参数,但这似乎并没有改变这种情况。

非常有趣的是,在dmesg我看到一件有趣的事情时,在早期启动期间,ACPI 子系统检测到交流适配器确实已插入:

[    0.882383] ACPI: AC Adapter [ACAD] (on-line)
[    0.882416] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    0.882420] ACPI: Power Button [PWRB]
[    0.882446] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1
[    0.882449] ACPI: Sleep Button [SLPB]
[    0.882468] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input2
[    0.882472] ACPI: Lid Switch [LID]
[    0.882491] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    0.882500] ACPI: Power Button [PWRF]
[    0.882552] ACPI: Video Device [DGPU] (multi-head: yes  rom: no  post: no)
[    0.882745] acpi device:2a: registered as cooling_device0

(完整的 dmesg:https ://pastebin.com/x4QRbSCR )

不知道什么时候转机?是什么导致启动时正确的在线检测搞砸了?

# uname -a
Linux asus 4.20.13 #2 SMP Sat Mar 2 17:03:50 PST 2019 x86_64 GNU/Linux

我安装了 acpid ( apt install acpid)。这对一般情况没有帮助,但我可以跑步acpi_listen,当我断开交流适配器时,我看到一堆消息。当我重新连接时,它是沉默的。上面的/sys/class/power_supply/*读数保持不变。

power-management battery pm-utils amd-ryzen
  • 3 3 个回答
  • 1948 Views

3 个回答

  • Voted
  1. Pawel Czmok
    2019-07-08T15:06:05+08:002019-07-08T15:06:05+08:00

    我对 helios 500 和 manjaro 不收费的解决方法:

    Linux XXX 5.2.0-1-MANJARO #1 SMP PREEMPT Sat Jun 22 23:22:07 UTC 2019 x86_64 GNU/Linux
    
    1. 在不插入交流适配器的情况下打开笔记本电脑
    2. 登录
    3. 连接交流适配器
    4. 执行这些命令:

    echo "manual" > /sys/devices/pci0000:00/0000:00:03.1/0000:06:00.0/0000:07:00.0/0000:08:00.0/power_dpm_force_performance_level

    echo 6 > /sys/devices/pci0000:00/0000:00:03.1/0000:06:00.0/0000:07:00.0/0000:08:00.0/pp_dpm_sclk

    echo 4 > /sys/devices/pci0000:00/0000:00:03.1/0000:06:00.0/0000:07:00.0/0000:08:00.0/pp_dpm_mclk

    在这三个命令之后,充电 LED 开始发光,操作系统知道交流适配器已插入。

    我希望这会对某人有所帮助。

    • 3
  2. Valentyn
    2019-09-25T07:42:59+08:002019-09-25T07:42:59+08:00

    基于Pawel Czmock对 Ubuntu 18.04 的回答工作解决方案是:

    • 列出可用频率 (pp_dpm_sclk)。为此,作为 sudo 执行:

      cd '/sys/devices/pci0000:00'
      DPM_SCLK=$(find . -name 'pp_dpm_sclk')
      echo 'Available SCLK frequencies:'
      cat "$DPM_SCLK"
      

      如果您在那里看到 1201Mhz,请继续下一部分。如果没有,您可以自己决定使用哪个频率(基于上面脚本的输出)并将其作为参数传递给下面的脚本

    • 应用所需的频率设置(默认为 1201Mhz 或传递参数,即1301Mhz)
      作为 sudo 执行:

      FREQUENCY="1201Mhz"
      
      if [ -n "$1" ]; then
          FREQUENCY="$1"
      fi
      
      ROOT='/sys/devices/pci0000:00'
      # Set manual level:
      DPM_LEVEL=$(find "$ROOT" -name 'power_dpm_force_performance_level')
      echo "Setting 'manual' level in $DPM_LEVEL"
      echo 'manual' > "$DPM_LEVEL"
      
      # Find frequency selector id:
      DPM_SCLK=$(find "$ROOT" -name 'pp_dpm_sclk')
      SCLK_VALUE=$(grep "$FREQUENCY" "$DPM_SCLK" | cut -d: -f1)
      if [ -z "$SCLK_VALUE" ]; then
          echo "$FREQUENCY not found in $DPM_SCLK"
          exit 1
      fi
      
      # Set frequency
      echo "Setting $FREQUENCY using id $SCLK_VALUE in $DPM_SCLK"
      echo "$SCLK_VALUE" > "$DPM_SCLK"
      
      # pp_dpm_mclk should get set automatically after pp_dpm_sclk is set
      

      执行此脚本 CPU 后,GPU 开始以正常频率工作,Ubuntu 切换到“On-AC”模式,电源指示灯亮起

    注意:有时上面的脚本会执行但不会设置这些值 - 在这种情况下,注销和登录会有所帮助。

    • 3
  3. Best Answer
    quad cricket
    2019-03-28T07:29:33+08:002019-03-28T07:29:33+08:00

    我有同样的笔记本电脑和同样的问题。我已经联系了 ACPI 内核开发人员,但无法猜测我们是否会为我们的交流电源提供适当的 ACPI 支持。“好”消息是,我至少找到了一种解决方法,让我们能够使用我们的系统能够提供的更高性能。

    以下是一些需要检查和尝试的事情:

    • 如果您启动并且您的 CPU 频率停留在 ~500MHz,请尝试拔下 AC 适配器。有时需要不止一次尝试。这应该会让您进入电池模式电源设置。我将 CPU 调控器留给“按需”。

    • 我真的推荐 amdgpu-utils:https ://github.com/Ricks-Lab/amdgpu-utils 您必须在 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT= 行中添加:“amdgpu.ppfeaturemask=0xffff7fff”并生成新配置,重新安装 grub,然后重新启动,但是一旦内核设置了该设置,您现在就可以对您的 Vega 56 进行大量控制。(看到我们选择 AMD 是有原因的!耶开源驱动程序!)

    • 我申请让我的 GPU 加速的 hack 是将 P0 状态设置为更高的时钟(因为它在“电池模式”下被强制在那里)。其中一个工具是 amdgpu-pac,它允许我们编辑 P0 状态。首先,以 root 身份运行“amdgpu-pac --execute_pac”并实时调整您的设置。(风扇读数为零,这是正常的,因为我们的笔记本电脑不使用备用风扇。)功率上限为 120 瓦,如果没有破解 BIOS,我们将无能为力。0:Sclk P-State 应更改为更高的 Mhz 和 mV。当心!这就像超频一样。我们限制了功放,所以我们不能只将它设置为 P7:然后继续前进。我测试了 1201 Mhz 和 875 mV,这似乎对我有用。如果您找到更好的稳定组合,请告诉我。除了将“设置掩码:”更改为“1,2,3" 所以它不能使用 0 状态。我尝试更改 0: 状态并将所有内容都锁定。将“电源性能模式”保留为 AUTO,我发现更改它没有任何区别。点击保存将立即应用它。我使用 Unigine 的天堂对事物进行压力测试的基准(当前分数:1761 极端”)。一旦你有你喜欢的设置记下来,重新启动 amdgpu-pac 不带参数并设置设置,现在当你点击保存时,它会生成一个 pac_writer_$$$$$.sh 供你在你想将 GPU 设置为时运行性能模式。如果您想重新开始省电,它还有助于使用库存设置生成 reset.sh。就是这样。我注意到改变它没有区别。点击保存将立即应用它。我使用 Unigine 的天堂基准对事物进行压力测试(当前分数:1761 极端”)。一旦你有你喜欢的设置,记下它们,重新启动 amdgpu-pac 不带参数并设置设置,现在当你点击保存它会生成一个 pac_writer_ $$$$$.sh 供您在您想将 GPU 设置为性能模式时运行。如果您想回到节能状态,它还有助于生成带有库存设置的 reset.sh。就是这样。我注意到改变它没有区别。点击保存将立即应用它。我使用 Unigine 的天堂基准对事物进行压力测试(当前分数:1761 极端”)。一旦你有你喜欢的设置,记下它们,重新启动 amdgpu-pac 不带参数并设置设置,现在当你点击保存它会生成一个 pac_writer_ $$$$$.sh 供您在您想将 GPU 设置为性能模式时运行。如果您想回到节能状态,它还有助于生成带有库存设置的 reset.sh。就是这样。sh 供您在要将 GPU 设置为性能模式时运行。如果您想重新开始省电,它还有助于使用库存设置生成 reset.sh。就是这样。sh 供您在要将 GPU 设置为性能模式时运行。如果您想重新开始省电,它还有助于使用库存设置生成 reset.sh。就是这样。

    使用这些技巧,我能够(大部分)在 Linux 下以全性能运行这台笔记本电脑。如果运气好的话,ACPI 开发人员会听到我们的呼声,而未来的 Linux 内核将简单地检测到我们的 AC 适配器。祝你好运!

    • 1

相关问题

  • 登录失败并显示低图形然后崩溃?[关闭]

  • 延长笔记本电脑和笔记本电脑电池寿命的技巧

  • 上网本版电池寿命 - Ubuntu 与 Kubuntu?

  • 如何让“您的电池坏了”消息消失?

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