web-dev-qa-db-ja.com

Lenovo Y50のサブウーファーオーディオピンの省電力を無効にするにはどうすればよいですか?

フォローアップ: LinuxでLenovo Y50のサブウーファーを動作させるにはどうすればよいですか?

簡単に言うと、サブウーファーが統合されたLenovo Y50があります。これは、HDAアナライザーを使用して2つのピンにいくつかの設定を設定した場合にのみLinuxMintで機能します。同じソリューションは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でenable省電力も試しましたが、再起動する前にサブウーファーを無効にしました(再起動後も無効になっています)。

サブウーファーの出力音を出すために、これら2つのピン(0x17と0x1a)の電源状態をD3からD0にさらに切り替える方法について、他の誰かがアイデアを持っているかどうか知りたいです。ありがとうございました!

編集:これは私が作ったpythonスクリプト ここ に基づく解決策です。助けになった以下の答えを無視しないでください(ありがとう!)。

3
Dragoș

ピン0x17および0x1aの電源状態をD0に設定することに加えて、ノード0x3(AUD_OUT)の出力ボリュームを増やしてみてください。

Debianテストを実行している同じラップトップモデルでテストされ、サブウーファーは現在機能しています。

それをテストする簡単な方法は、イヤホンを接続することです。サブウーファーはミュートされません。

3
leneb

Freenodeの#alsa IRCチャネルのdebianuserの助けを借りて、私はもう少し近づいたかもしれないと思います。電源状態はhda_verbツールで設定できるようです、これはalsa-toolsの一部ですが、power_save_controllerを制御するオプションはないようです。具体的には、power stateのみです。parametersが何であるかについての情報を入手できます。 hda-verb -Lを実行して設定

gettingデバイスの電源状態

Sudohda-動詞/ dev/snd/hwC1D0 0x1a GET_POWER POWER_STATE

設定デバイスの電源状態

Sudohda-動詞/ dev/snd/hwC1D0 0x17 SET_POWER 0x0 POWER_STATE

したがって、具体的には、実行する必要があると思われることを実行します。

須藤hda-動詞/ dev/snd/hwC1D0 0x17 SET_POWER 0x0
Sudo hda-verb/dev/snd/hwC1D0 0x1a SET_POWER 0x0

これはHDAアナライザーの実行中は機能しませんが、後で起動して変更が機能したかどうかを確認できます。私の場合はD0に変更しました。

それであなたの問題は解決するのだろうか?
同じコンピューターを使用していますが、Windowsで再生したときに作成したサンプルのサウンドファイルとの違いがあまり聞こえないため、サブウーファーが実際にオフになっているかどうかは完全にはわかりません。 Archlinux。多分周波数(65Hz)が高すぎますか?他の誰かがそれをテストしたい場合:
http://miyalys.eu.org/files/65hzsine.wav

たぶん、サブウーファーだけがオンになるように通常のスピーカーを無効にする方法を見つけることができますか?

編集:lenebの答えの助けを借りて、私は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-verbなしで、Pythonのみを使用して実行することもできますが、コードのクリーン度が大幅に低下します。

3
miyalys