web-dev-qa-db-ja.com

サスペンド/リブート後、ヘッドフォンジャックが機能しなくなる

コールドスタート後にヘッドフォンジャックが正常に機能するという、この非常に厄介な問題がありました。ただし、サスペンドまたはコールドリブート(完全にシャットダウンせずにコンピューターを再起動)した後、ヘッドフォンジャックは機能しなくなります。

システムは、ヘッドホンが接続されているかどうかを検出しますが、ヘッドホンから音が出なくなるだけです。

これは、XMGA305ラップトップのUbuntu14.04(Windowsパーティションでは正常に動作します)でのみ発生します。この問題は、サウンドカードで使用されているドライバー(カード:HDA Intel PCH、チップ:VIA VT1802))または異なるドライバー間の相互作用に関連しているようです。

また、他のマシンでこれを経験している人が他にも何人かいます: ClevoラップトップのBugreport

4
cbandera

かなり長い間検索した後、私は私にとってうまく機能し、あなたにも役立つかもしれない解決策を思いつきました:

コードは主に ここ から取得されます。

コードを取得する

ヘッドフォンジャックを再アクティブ化できるpythonスクリプトがあります。このコードは GitHubのektor5 から取得されます。スクリプトをダウンロードして、システムのどこかに配置する必要があります。それを見つけて実行可能にします。これはすべて次の行で実行できます。

Sudo wget https://raw.githubusercontent.com/ektor5/init-headphone/master/init-headphone -O /usr/local/sbin/init-headphone && Sudo chmod +x /usr/local/sbin/init-headphone

依存関係をインストールする

init-headphoneスクリプトには、次のコマンドでインストールできる依存関係が必要です。

Sudo apt-get install python-smbus

Grubフラグを追加します

また、追加のフラグを有効にしてカーネルを起動する必要があります。これを行うには、ファイル ''/etc/default/grub ''を編集します。この行を変更する

GRUB_CMDLINE_LINUX=""

これに

GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax"

その後実行

Sudo update-grub

起動時にモジュールをロードする

さらに、スクリプトはモジュールをロードする必要があります。つまり、「i2c_dev」と「i2c_i801」です。これらは実行時にロードできます

modprobe i2c_dev
modprobe i2c_i801

「Sudoinit-headphone」を実行して、動作するかどうかをテストできるようになりました。

起動時にモジュールを自動的にロードするには、次の行を ''/etc/modules ''に追加します。

i2c_dev
i2c_i801

スタートアップスクリプトを作成する

最後に、コンピューターが再起動したとき、または一時停止から戻ったときに、スクリプトを自動的に実行する必要があります。これを行うには、次のスクリプトを ´/ etc/pm/sleep.d /´に配置します。

Sudo gedit /etc/pm/sleep.d/init-headphone

次の行を追加します

#!/bin/sh

if [ ! -x /usr/local/sbin/init-headphone ]; then
    exit 0
fi

case $1 in
     resume|thaw)
        /usr/local/sbin/init-headphone
       ;;
esac

そして、ファイルを実行可能にすることを忘れないでください

Sudo chmod +x /etc/pm/sleep.d/init-headphone

これがお役に立てば幸いです。問題があればお知らせください。

cbandera

6
cbandera

ボリュームコントロールパネルをチェックして、標準スピーカーにリセットされているかどうかを確認してみてください。その場合は、スクリプトを作成して再起動するか、手動でヘッドフォンに戻すことができます。

0
Brian Taylor

使用しているLinuxのバージョンはわかりませんが、Sudo apt-get install gstreamerに相当するものを試してから、コマンドラインからgstreamer-propertiesを実行して、Pulseaudioとalsaの間にヘッドフォンに関して異常な設定があるかどうかを確認することを検討してください。等.

(私はこれを古いUbuntuベースのシステムで使用して、Skypeなどでヘッドフォン設定を機能させました)

0
Brian Taylor

@cbanderaからの優れた回答に加えて、systemdを使用するシステム(Ubuntu 15.04以降など)の場合、起動スクリプトは/lib/systemd/system-sleep/init-headphoneであり、次のようになります。

#!/bin/sh

[ -x /usr/local/sbin/init-headphone ] || exit 0

[ "$1" = "post" ] && /usr/local/sbin/init-headphone
0