Как я могу сделать UPower, и подсистема питания распознают, что источник питания включается?

Я использую 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 ASUS (также ноутбук Ryzen AMD, но с Ryzen 1700 вместо Ryzen 2700). У меня не было этого типа проблемы с ASUS.

# 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

Даже если я пытаюсь осуществить регулятор частоты ЦП, чтобы быть performance, центральные процессоры приглушены:

# 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 ГГц, но система иногда, конечно, вяла.

Я попытался использовать 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/* чтения выше остаются тем же.

1
задан 4 March 2019 в 00:16

3 ответа

У меня есть тот же ноутбук и та же проблема. Я обратился к ядру ACPI devs, но нет никакого предположения, если у нас когда-либо будет надлежащая поддержка ACPI нашего питания переменным током. "Хорошие" новости - то, что я, по крайней мере, нашел, что обходное решение позволяет нам использовать более высокую производительность, к которой наши системы способны.

Вот некоторые вещи проверить и попробовать:

  • Если Вы загружаетесь, и Ваши частоты ЦП упорно продолжены, ~500MHz пытаются отключить сетевой адаптер. Иногда требуется больше чем одна попытка. Это должно ударить Вас на параметрах питания режима работы от аккумулятора. Я оставляю регулятор ЦП "ondemand".

  • Я действительно рекомендую amdgpu-utils: https://github.com/Ricks-Lab/amdgpu-utils Вы должен будет добавить: "amdgpu.ppfeaturemask=0xffff7fff" к Вашему GRUB_CMDLINE_LINUX_DEFAULT = строка в Вашем/etc/default/grub и генерирует новую конфигурацию, переустанавливает личинку и затем перезагрузку, но после того как ядро имеет тот набор, Вы теперь имеете крупный контроль над своим Vega 56. (См., что мы пошли с AMD по причине! Драйверы с открытым исходным кодом Yay!)

  • Взлом, который я применяю для получения моего GPU до скорости, путем установки состояния P0 на более высокие часы (так как это вызывается там на "режиме работы от аккумулятора"). Один из utils является amdgpu-pac, и он позволяет нам редактировать состояние P0. Во-первых, как корень, выполненный "amdgpu-pac - execute_pac" и тонкая настройка Ваши настройки в режиме реального времени. (Поклонник считает нуль, это нормально, поскольку наш ноутбук не использует вентилятор запаса.) Ограничение питания 120w, ничто, что мы можем сделать об этом без взломанного BIOS. 0: P-состояние Sclk должно быть изменено на более высокий Mhz и мВ. БУДЬТЕ ОСТОРОЖНЫ! Это точно так же, как разгоняется. У нас есть limted усилители, чтобы распространяться вокруг так, мы не сможем просто установить его на P7: и движение. Я протестировал 1 201 МГц и 875 мВ, и это, кажется, работает на меня. Если Вы находите лучшую комбинацию, это стабильно сообщенный мне. Я оставил Mclk в покое кроме изменения "Маски Набора": к "1,2,3", таким образом, это не может использовать эти 0 состояний. Я пытался изменить 0: состояние и это заперли все. Отпуск "Режим Производительности Питания" к АВТОМАТИЧЕСКОМУ, я не заметил различия, изменяющего его. Сохранение удара сразу применит его. Я использую сравнительный тест небес Unigine для вещей стресс-теста (текущий счет: 1761 на экстремальном значении"). После того как у Вас есть настройки, которые Вы любите, кратко записывают их, перезапускают amdgpu-pac без аргументов и устанавливают настройки, теперь когда Вы совершаете нападки, сохраняют его, будет genereate pac_writer_ $$$$$ .sh, чтобы Вы работали каждый раз, когда Вы хотите установить GPU на режим производительности. Это также помогает генерировать reset.sh с настройками запаса, если Вы хотите вернуться к экономии электроэнергии. Это об этом.

Используя эти приемы я могу (главным образом) выполнить этот ноутбук при полной производительности в соответствии с Linux. С любой удачей ACPI devs услышит наши крики, и будущие ядра Linux просто обнаружат наш AC apdapter.Удачи!

1
ответ дан 3 December 2019 в 06:24

На основе ответ 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"
    

    , Если Вы видите 1201 МГц там, продолжите затем разделять. В противном случае можно решить, какая частота использовать собой (на основе вывода из вышеупомянутого сценария) и передать его как аргумент сценарию ниже

  • Применяют желаемую установку частоты (значением по умолчанию 1201 МГц, или передайте аргумент, т.е. 1301 МГц )
    Выполняются как 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
    

    После выполнения этого сценария ЦП, GPU начинает работать над нормальными частотами, и Ubuntu переключается на режим 'On-AC', а также индикатор питания включает

ПРИМЕЧАНИЕ: Иногда сценарий выше выполняет, но не устанавливает те значения - Выходить из системы и вход в систему помогают в этой ситуации.

3
ответ дан 3 December 2019 в 06:24

Мое обходное решение для того, чтобы не взимать за 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

После этих трех команд ведомая зарядка начинает светиться, и ОС знают, что сетевой адаптер включается.

Я надеюсь, что это поможет кому-то.

3
ответ дан 3 December 2019 в 06:24

Другие вопросы по тегам:

Похожие вопросы: