どうにか対応!ubuntuでイヤホンの自動認識を実現する方法は?

2022年4月26日

ubuntu でイヤホンを接続すると、以下のような画面が表示されます。そこで、ヘッドフォンないしヘッドセットをクリックするとイヤホンから音が流れるようになります。

まあ、ubuntu では、この位の操作は仕方ありません。

問題はその先にあったのです。

問題は、イヤホンを接続したまま翌日 ubuntu を立ち上げて音を鳴らしたところ、イヤホンではなくパソコンの方から音が出ることです。

スポンサーリンク

ubuntuはイヤホンを立ち上げ時認識しない?

windows ですと、イヤホンを繋げておけば翌日立ち上げても音はイヤホンの方から出ます。ubuntu はイヤホン等の自動認識をしてくれないのかなという疑問がわきましたので、この点を調べてみました。

中々良い記事にぶつからなかったのですが、次の記事を見つけて参考にしました。おかげで、自動認識できるようになりました。

参考記事
Ubuntu日本語フォーラム
Linux で音が出ないときの対処法

ただ、これらの記事は、それぞれ、イヤホンを挿しても音が出ないので調査しているものです。

一方、60爺は、イヤホンは認識して音は出ますが、イヤホンを取り付けたままパソコンを立ち上げた際、イヤホンを自動認識しないという問題です。

中身は少々違っていますが、根っこは同じだと思いました。

自動認識するための準備

始めの記事には Linux(ubuntu)が音を出す仕組みを述べています。簡単に書くと次のようになっています。

Linux は、サウンドデバイスを駆動するのにソフトウェア(サウンドドライバー=ALSAカーネルモジュール)があり、これが最終的に「コーデック」を操作して、受け取ったデジタルデータをアナログ音声に変換し、コンピューターのスピーカーやヘッドフォン出力に流します。

上述の参考記事を基に設定を行い、イヤホンの自動認識が出来るか試していきます。まず、最初の記事に従い、次のコマンドを打ってみます。

pacmd list-cards;
~結果略
cat /proc/asound/card/codec | grep -i codec;
Codec: Realtek ALC3246
Codec: Intel Skylake HDMI

60爺の場合、記事にあるように lspci コマンドを打っても何も出ません。そこで、上記 pacmd list-cards; の出力結果を見て、下記のようにオプションを変えたところ、Kernel driver と Kernel modules を出力することが出来ました。

mizutan@mizutan-Inspiron-15-3567:~$ lspci -vnns 00:1f.3;
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d70] (rev 21)
Subsystem: Dell Sunrise Point-LP HD Audio [1028:078c]
Flags: bus master, fast devsel, latency 32, IRQ 136
Memory at d1328000 (64-bit, non-prefetchable) [size=16K]
Memory at d1300000 (64-bit, non-prefetchable) [size=64K]
Capabilities:
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel, snd_soc_skl

次に二番目の記事に従い、次のコマンドを打ちました。

mizutan@mizutan-Inspiron-15-3567:~$ grep -i codec /proc/asound/card/codec#
/proc/asound/card0/codec#0:Codec: Realtek ALC3246
/proc/asound/card0/codec#2:Codec: Intel Skylake HDMI
mizutan@mizutan-Inspiron-15-3567:~$ cat /sys/class/sound/hwCD/vendor_name
Realtek
Intel
mizutan@mizutan-Inspiron-15-3567:~$ cat /sys/class/sound/hwCD/chip_name
ALC3246
Skylake HDMI

以上から60爺のパソコンのモデル名は、二番目の記事の表現を借りると、ざっくり ALC3246 と判明しました。これをベースにモデル名を見つけます。これで、イヤホン自動認識設定の準備が整いました。


イヤホン自動認識への道

サウンド画面の確認

自動認識を確認する前に、ubuntu の「設定⇒サウンド」を見ておきます。当初の指定は以下のようになっています。出力デバイスが「スピーカー・内部オーディオ」ですね。

イヤホンを挿して、「オーディオデバイスを選択」画面でヘッドフォンをクリックします。

先程のサウンド画面を見ると、出力デバイスが「アナログヘッドホン・内部オーディオ」に変更されました。

model名探索

二番目の記事にあるモデル名の一覧は下記にあります。

HD-Audio Codec-Specific Models

まず、一覧を表示します。

60爺は、ここで、「ALC3246」を検索しましたが該当の値が見つかりませんでした。そこで、「ALC324」⇒「ALC32」⇒「ALC3」と順に検索し、「ALC3」でヒットしました。

model がたくさん表示されていますが、下の方を探していくと「dell」の名称の付いた model を四つ発見しました。

この他にも「dell」の名称の付いた model を八つ見つけました。これらを候補として試していきます。

  • dell-headset-multi
  • dell-headset-dock
  • dell-headset3
  • dell-headset4
  • dell-m101z
  • dell-e7x
  • dell-spk-noise
  • dell-inspiron-7559

イヤホン自動認識

modelオプション反映

modelオプションを反映するには /etc/modprobe.d/ に confファイルを作成し、OSを再起動してやれば良いということですので、さっそく実施してみます。なお、このファイル作成は管理者IDで行う必要があります。

まず、/etc/modprobe.d/ に移動します。

cd /etc/modprobe.d/

60爺は vi で conf ファイルを作成しました。

ファイル名は各自指定しましょうとのことですので、60爺は dell-headset.conf としました。

vi dell-headset.conf

書き込む内容を参考記事からコピーして入力します。記事では、コメント行はなくても良いと書かれていますが、60爺はコメントも含め以下のようにしました。

# This file is manually made by dell-headset.
######################################################
# add an option to specify a codec model to prevent the jack_detect issue
options snd_hda_intel model=dell-headset-multi

「options snd_hda_intel model=」の後に、先程見つけた八つの候補を設定していきます。始めに一番上にある model名の dell-headset-multi を設定します。

vi で更新結果を保存(:wq)してから、イヤホンを挿したまま ubuntu を再起動します。

自動認識確認

① dell-headset-multi

再起動後に動作確認をします。

まず、サウンド画面を見てみます。すると、当初の指定と同じで、出力デバイスが「スピーカー・内部オーディオ」になっています。

これだと多分ダメだと思いましたが、イヤホンから音が聞こえるか確認してみます。予想通りダメでした。パソコンから音が出てしまいました。

dell-headset-multi では、イヤホンを自動認識してくれません。

② dell-headset-dock

次にこの値で実施します。管理者IDで dell-headset.conf を開き、model= に dell-headset-dock を指定し、保存します。そして、イヤホンを挿したままパソコンを再起動します。

サウンド画面を見てみます。

出力デバイスが「アナログヘッドホン・内部オーディオ」にになっています。自動認識したように見えます。

そして、イヤホンから音が聞こえるか確認したところ、きちんとイヤホンから音が流れるではありませんか。この指定でイヤホンを自動認識してくれました。

③ その他の結果

②の dell-headset-dock で自動認識できたわけですが、ついでなので残りの六つの model も確認してみました。その結果は次の通りです。

■自動認識したモデル

次の model で自動認識できました。

  • dell-headset3
  • dell-e7x

■自動認識したモデル

以下の model ではイヤホンの自動認識はできませんでした。

  • dell-headset4
  • dell-m101z
  • dell-spk-noise
  • dell-inspiron-7559
スポンサーリンク

最後に

参考記事に従い、コーデックを調査して何とかイヤホンの自動認識を実現できました。

model 名の一覧から対象の model を探すのが一苦労で、何とか dell で始まる model を見つける所まで行きましたが、対象の model が八つもあり、最初の model で自動認識できなかったときはどうしようかと思いました。

しかし、二番目の model であっさり自動認識できて良かったです。

ついでに、残りの六つの model を試しましたが、都合三つのモデルで自動認識できることが確認できました。

イヤホンの自動認識が必要な方は、同様の手順で試してみてください。

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら

ubuntu

Posted by 60爺