3

Продолжение : Как мне заставить сабвуфер моего Lenovo Y50 работать на Linux?

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

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

Изображение 1

Изображение 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, чтобы звук моего сабвуфера звучал. Спасибо!

РЕДАКТИРОВАТЬ: Вот решение на основе скрипта Python, сделанного мной здесь. Не игнорируйте ответы ниже, которые помогли (спасибо еще раз!).

2 ответа2

3

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

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

sudo hda-verb /dev /snd /hwC1D0 0x1a GET_POWER POWER_STATE

Пример настройки состояния питания устройства:

sudo hda-verb /dev /snd /hwC1D0 0x17 SET_POWER 0x0 POWER_STATE

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

sudo hda-verb /dev /snd /hwC1D0 0x17 SET_POWER 0x0
sudo hda-verb /dev /snd /hwC1D0 0x1a SET_POWER 0x0

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

Интересно, решит ли это вашу проблему?
Как уже говорилось, у меня один и тот же компьютер, хотя я не совсем уверен, действительно ли мой сабвуфер выключен, так как я не вижу большой разницы в примере звукового файла, который я создал при воспроизведении в Windows или Archlinux. Может быть, частота (65 Гц) слишком высока? В случае, если кто-то хочет проверить это:
http://miyalys.eu.org/files/65hzsine.wav

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

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

#! /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-verb, только с использованием python, но это сделает код намного менее чистым.

3

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

Протестированный на той же модели ноутбука, на котором выполняется тестирование Debian, сабвуфер работает.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .