Как отключить энергосбережение на аудиовыходах сабвуфера Lenovo Y50?

использование: как заставить сабвуфер Lenovo Y50 работать на linux?

короче говоря, у меня есть Lenovo Y50 со встроенным сабвуфером, который работает только на Linux Mint, если я установлю некоторые настройки на двух контактах с помощью анализатора HDA. Такое же решение не работает в Fedora и другие дистрибутивы. Больше информации по ссылке выше.

у меня было некоторое время, чтобы исследовать немного дальше и заметил, что есть различия в том, что анализатор HDA текст дампа вкладок подскажите для каждого пина, на каждом из дистрибутивов (Linux Mint слева, Fedora справа):

Image 1

Image 2

я узнал, что D0 означает состояние полной мощности, а D3-состояние низкой мощности. Я исследовал, как полностью отключить энергосбережение на моей звуковой карте, поэтому я попробовал следующее на Fedora, ввод в терминал и тестирование до и после перезагрузки, но это не так решите мою проблему:

echo 0 > /sys/module/snd_hda_intel/parameters/power_save

echo N > /sys/module/snd_hda_intel/parameters/power_save_controller

Я тоже пробовал включение энергосбережение на Linux Mint и это действительно отключить сабвуфер перед перезагрузкой (и был по-прежнему отключен после перезагрузки).

Я хотел бы знать, есть ли у кого-нибудь еще идеи о том, как дополнительно попытаться переключить состояние питания на этих двух контактах (0x17 и 0x1a) С D3 на D0, чтобы сделать мой сабвуфер выходным звуком. Спасибо!

EDIT: вот решение на основе скрипта python, сделанного мной здесь. Не игнорируйте ответы ниже, которые помогли (еще раз спасибо!).

4
задан Donald Duck
31.12.2022 20:59 Количество просмотров материала 3098
Распечатать страницу

2 ответа

в дополнение к установке состояния питания D0 для выводов 0x17 и 0x1a попробуйте увеличить выходной объем узла 0x3 (AUD_OUT).

протестировано на той же модели ноутбука, на котором запущено тестирование debian, сабвуфер теперь работает.

простой способ проверить это-подключить наушники, сабвуфер не будет отключен.

3
отвечен leneb 2023-01-02 04:47

С помощью debianuser в IRC-канале #alsa на freenode, я думаю, что я мог бы получить нас немного ближе. Кажется, что энергетические состояния могут быть установлены с помощью инструмента hda_verb, который является частью alsa-tools, однако, похоже, нет возможности контролировать power_save_controller в частности, только power state. Вы можете получить информацию о том, что parameters можно установить, запустив hda-verb -L

пример началогосударственной власти устройство:

sudo hda-команда/dev/snd / hwC1D0 0x1a GET_POWER POWER_STATE

пример заданиегосударственной власти устройство:

судо ВДА-глагол как /dev/СНД/hwC1D0 0x17 SET_POWER 0х0 POWER_STATE

так конкретно то, что вы, кажется, нужно сделать, это запустить:

sudo hda-глагол / dev/snd / hwC1D0 0x17 SET_POWER 0x0

судо ВДА-глагол как /dev/СНД/hwC1D0 0x1a SET_POWER 0x0

обратите внимание, что это не будет работать в то время как HDA Analyzer работает, но его можно запустить после этого, чтобы проверить, сработало ли изменение. В моем случае он изменил его на D0.

интересно, если это решает вашу проблему?

Как уже было сказано, у меня один и тот же компьютер, хотя я не совсем уверен, действительно ли мой сабвуфер выключен, так как я не слышу большой разницы от примера звукового файла, который я создал при воспроизведении в Windows или Archlinux. Может быть, частота (65 Гц) слишком высока? В случае, если кто-то еще хочет проверить его:

http://miyalys.eu.org/files/65hzsine.wav

может быть, мы сможем найти способ отключить обычные динамики, чтобы только сабвуфер был включен?

изменить: С помощью leneb's ответ, я создал этот скрипт, который должен быть запущен как root, который делает все эти вещи, только с помощью hda-глагола. Однако не уверен, что уровень громкости полностью в здравом уме. (обратная связь оценено), и проблема с наушниками, подключенными, не заглушая сабвуфер, сохраняется.

#! /usr/bin/env sh

# Run this script as root!

dev="/dev/snd/hwC1D0"

hda-verb $dev 0x17 SET_POWER 0x0
hda-verb $dev 0x1a SET_POWER 0x0
hda-verb $dev 0x03 0x300 0xa055
hda-verb $dev 0x03 0x300 0x9055
hda-verb $dev 0x17 0x300 0xb000
hda-verb $dev 0x17 0x707 0x40
hda-verb $dev 0x1a 0x707 0x25

при необходимости все эти шаги можно выполнить и без hda-глагола, ТОЛЬКО используя python, но это сделает код гораздо менее чистым.

3
отвечен miyalys 2023-01-02 07:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх