0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iMac 2015 (Debian 13) で EarPods が認識されても鳴らない問題を snd-hda-intel の model 指定で解決する

0
Posted at

iMac Retina 5K (2015) に Debian 13 を導入した環境で、内蔵スピーカーは鳴るのに、ヘッドフォン端子へ接続した EarPods だけが無音になりました。GNOME ではアナログヘッドフォンとして認識され、ジャック検出、ミュート、音量にも異常は見当たりませんでした。

この環境では、snd-hda-intelmodel=imac27_122 を指定して再起動すると、EarPods から音が出るようになりました[1]

最終的な設定は次の 1 行です。

options snd-hda-intel model=imac27_122

ただし、この設定はすべての iMac に共通するものではありません。iMac 2015、Debian 13、Cirrus Logic CS4206、内蔵スピーカーは正常で EarPods だけが無音という条件を確認してから適用します。

対象環境と症状

対象とした iMac 2015 は Debian 13 で運用している環境です[2]

項目 確認した内容
本体 iMac Retina 5K (2015)
OS Debian 13
機種識別子 iMac17,1
音声コーデック Cirrus Logic CS4206
Subsystem ID 0x106b8200
正常な出力 内蔵スピーカー
異常な出力 ヘッドフォン端子へ接続した EarPods

本記事の手順は、次の症状を対象とします。

  • 内蔵スピーカーからは音が出ます。
  • EarPods を挿すとアナログヘッドフォンとして認識されます。
  • 出力先をアナログヘッドフォンへ変更できます。
  • ミュートを解除して音量を上げても EarPods から音が出ません。

内蔵スピーカーも鳴らない場合や、ヘッドフォン端子への挿入自体が認識されない場合は、別の原因を先に調べます。

iMac 2015 と音声コーデックを確認する

最初に OS、機種識別子、音声カードを確認します。

cat /etc/os-release
cat /sys/class/dmi/id/product_name
cat /proc/asound/cards
find /proc/asound -maxdepth 2 -type f -name 'codec#*' -print

機種識別子として次の値が表示されることを確認します。

iMac17,1

/proc/asound/cards では、内蔵アナログ音声と HDMI 音声を区別します。原典の環境では、内蔵音声が card0、Radeon 側の HDMI 音声が card1 でした。カード番号は環境によって変わるため、表示結果に合わせて以降のコマンドを調整します。

内蔵音声が card0、対象コーデックが codec#0 の場合は、次のように確認します。

head -20 "/proc/asound/card0/codec#0"

原典では次の値が表示されました。

Codec: Cirrus Logic CS4206
Vendor Id: 0x10134206
Subsystem Id: 0x106b8200

機種、コーデック、症状が異なる場合は、model=imac27_122 をそのまま適用せず、対応するモデル指定を別途確認します。

PipeWire の出力先を確認する

GNOME でアナログヘッドフォンが選択されていても、まず PipeWire 上の既定出力を確認します。wpctl status は、PipeWire が管理している機器、出力先、入力元、再生中のストリームを表示します[3]

wpctl status
wpctl inspect @DEFAULT_AUDIO_SINK@
wpctl get-volume @DEFAULT_AUDIO_SINK@

次の状態であることを確認します。

  • Sinks に内部オーディオのアナログステレオが存在します。
  • 内部オーディオの行に * が付き、既定の出力先になっています。
  • HDMI 出力だけが選択された状態ではありません。
  • wpctl get-volume の結果に MUTED がなく、音量が 0.00 ではありません。

内部アナログ出力が存在しない場合は、snd-hda-intel のモデル指定へ進む前に、PipeWire、WirePlumber、ALSA のデバイス認識を確認します。

ALSA のジャック検出と音量を確認する

次に、ALSA が公開しているヘッドフォン関連の制御値を確認します。amixer-c は対象の音声カード番号を指定し、controlscontents はカードの制御項目と現在値を表示します[4]

内蔵音声が card0 の場合は、次のコマンドを実行します。

amixer -c0 controls | grep -iE 'headphone|auto|mute'
amixer -c0 contents | grep -A5 -i headphone

原典では、次の値が確認できました。

Headphone Jack: values=on
Headphone Playback Switch: values=on,on
Headphone Playback Volume: values=115,115

115,115 は原典で観測した値であり、必須値ではありません。判断に使うのは、次の 3 点です。

確認対象 次の手順へ進む条件
Headphone Jack values=on
Headphone Playback Switch 左右とも on
Headphone Playback Volume ゼロではない

ジャックが off の場合は挿入検出を、再生スイッチが off の場合はミュート設定を、音量がゼロの場合は音量設定を先に修正します。これらが正常でも EarPods が無音の場合は、HDA コーデック内部の状態を確認します。

HDA コーデックのヘッドフォン出力を確認する

HDA は、PC の内蔵音声を扱う仕組みです。snd-hda-intel が制御する HDA コントローラには音声コーデックが接続され、コーデック内部のピンがスピーカーやヘッドフォン端子への出力を制御します[5]

原典の Cirrus Logic CS4206 では、Node 0x0a がヘッドフォン出力でした。音声を再生しながら、別の端末で状態を確認します。

pw-play /usr/share/sounds/alsa/Front_Center.wav
sed -n '/Node 0x0a/,/Node 0x0b/p' \
  "/proc/asound/card0/codec#0"

原典では次の状態でした。

Node 0x0a [Pin Complex]
Pin Default 0x002b4020: [Jack] HP Out at Ext N/A
Power: setting=D0, actual=D0
Pin-ctls: 0x40: OUT

確認する要点は次のとおりです。

  • Pin DefaultHP Out になっています。
  • 再生中の電源状態が D0 になっています。
  • 再生中でも Pin-ctls0x40: OUT のままです。

Node 番号はコーデックと実装によって変わります。Node 0x0a を固定的に信用せず、Pin DefaultHP Out と表示されるピンであることを確認します。

PipeWire の出力先、ALSA のジャック検出、ミュート、音量が正常で、ヘッドフォン出力ピンだけが十分に初期化されていない場合は、snd-hda-intel の機種別設定へ進みます。

snd-hda-intel の model 指定を確認する

Linux の HDA ドライバーには、機種固有の構成が自動判定されない場合に、既知のモデルを model=<name> で指定する仕組みがあります[6]。Cirrus Logic CS4206/4207 のモデル一覧には imac27_122 が定義されています[7]

model パラメーターを受け取るモジュールを確認します。

modinfo -p snd_hda_intel | grep '^model:'
modinfo -p snd_hda_codec_cirrus | grep '^model:'

model を指定する相手は、コーデック名を含む snd_hda_codec_cirrus ではなく、HDA コントローラ側の snd_hda_intel です。

既存の設定と競合しないことも確認します。

grep -RnsE --include='*.conf' \
  '^[[:space:]]*options[[:space:]]+snd[-_]hda[-_]intel.*model=' \
  /etc/modprobe.d \
  /run/modprobe.d \
  /usr/local/lib/modprobe.d \
  /usr/lib/modprobe.d \
  /lib/modprobe.d \
  2>/dev/null

別の model= 指定が見つかった場合は、その設定を追加した目的を確認してから変更します。同じパラメーターを複数の設定ファイルへ重複して書くと、後から有効な設定を判別しにくくなります。

model=imac27_122 を設定する

/etc/modprobe.d/mac-fix.conf を作成します。modprobe.doptions 行は、対象モジュールを読み込む際に指定したオプションを追加します[8]

printf '%s\n' \
  'options snd-hda-intel model=imac27_122' | \
  sudo tee /etc/modprobe.d/mac-fix.conf

作成した内容を確認します。

cat /etc/modprobe.d/mac-fix.conf

期待する内容は次の 1 行です。

options snd-hda-intel model=imac27_122

modprobe が読み取る設定にも反映されていることを確認します。

modprobe -c | \
  grep -E '^options snd_hda_intel .*model=imac27_122'

確認後に再起動します。

sudo reboot

再起動後に EarPods の出力を確認する

再起動後、EarPods を接続して既定出力と音量を確認します。

wpctl status
wpctl get-volume @DEFAULT_AUDIO_SINK@
pw-play /usr/share/sounds/alsa/Front_Center.wav

次の順序で動作を確認します。

  1. EarPods から音が出ることを確認します。
  2. EarPods を抜き、内蔵スピーカーから音が出ることを確認します。
  3. EarPods を挿し直し、再び音が出ることを確認します。
  4. 電源を切って起動し直しても設定が有効であることを確認します。
  5. サスペンドから復帰した後の出力を確認します。
  6. カーネル更新後に同じ設定が必要かを再確認します。

成功条件は、設定ファイルが存在することではなく、再起動後に EarPods から実際に音が出ることです。

設定を元に戻す

設定が効かない場合や、カーネル更新によって不要になった場合は、設定ファイルを削除して再起動します。

sudo rm /etc/modprobe.d/mac-fix.conf
sudo reboot

設定を退避してから無効化する場合は、拡張子を .conf 以外へ変更します。

sudo mv \
  /etc/modprobe.d/mac-fix.conf \
  /etc/modprobe.d/mac-fix.conf.disabled

sudo reboot

留意事項

  • model=imac27_122 は、すべての iMac や Cirrus Logic CS4206 搭載機に適用できる一般設定ではありません。
  • card0codec#0、Node 0x0a は原典の環境での値です。実際の表示結果に合わせて読み替えます。
  • Headphone Playback Volume115,115 は観測値であり、設定すべき固定値ではありません。
  • HDA ピンへ hda-verb で値を直接書く方法は恒久設定として採用しません。原典では 0xc0 を書き込んでも、直後に 0x40 へ戻りました。
  • サスペンド復帰とカーネル更新では、起動時とは異なる再初期化やドライバー変更の影響を受ける可能性があります。
  • 将来のカーネルで自動判定が修正された場合は、明示的な model 指定が不要になる可能性があります。

まとめ

iMac 2015 の Debian 13 環境では、PipeWire と ALSA がヘッドフォンを正常に認識していても、HDA コーデックの機種別初期化が不足し、EarPods だけが無音になる場合があります。

対象機種、Cirrus Logic CS4206、ジャック検出、ミュート、音量を確認したうえで、snd-hda-intelmodel=imac27_122 を指定すると、原典の環境では再起動後に音声出力が正常化しました。設定後は、再起動、抜き差し、サスペンド復帰、カーネル更新の各条件を分けて確認します。

参考文献

  1. id774, iMac Debian で EarPods が鳴らない原因(2026-07-13). https://blog.id774.net/entry/2026/07/13/4990/
  2. id774, iMac Retina 5K (2015) を Debian 13 に移行した(2026-02-09). https://blog.id774.net/entry/2026/02/09/3515/
  3. WirePlumber, wpctl(1) — WirePlumber 0.5.15 documentation(確認日 2026-07-28). https://pipewire.pages.freedesktop.org/wireplumber/tools/wpctl.html
  4. Debian Manpages, amixer(1) — alsa-utils — Debian trixie(2025-04-14). https://manpages.debian.org/trixie/alsa-utils/amixer.1.en.html
  5. Takashi Iwai, More Notes on HD-Audio Driver(確認日 2026-07-28). https://docs.kernel.org/sound/hd-audio/notes.html
  6. Linux kernel development community, Advanced Linux Sound Architecture - Driver Configuration guide(確認日 2026-07-28). https://docs.kernel.org/sound/alsa-configuration.html
  7. Linux kernel development community, HD-Audio Codec-Specific Models(確認日 2026-07-28). https://docs.kernel.org/sound/hd-audio/models.html
  8. kmod project, modprobe.d(5) - Configuration directory for modprobe(2026-05-24). https://man7.org/linux/man-pages/man5/modprobe.d.5.html
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?