はじめに
2017年製の iMac に Ubuntu 22.04 LTS をインストールしたところ、内蔵スピーカーから音が出ない問題に遭遇したため、原因と解決手順をまとめておく。
環境
| 項目 | 内容 |
|---|---|
| ハードウェア | iMac 27インチ 2017年モデル |
| OS | Ubuntu 22.04.5 LTS (Jammy) |
| カーネル | 6.8.0-101-generic (HWE カーネル) |
| オーディオチップ | Cirrus Logic CS8409 |
症状
インストール直後からシステム音・動画・音楽など、あらゆる音が出ない。
サウンド設定を開くと出力デバイスが 「ダミー出力 (Dummy Output)」 しか表示されない。
aplay -l で確認すると HDMI のみが表示され、内蔵スピーカーが認識されていないことが分かる。
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 1: HDMI [HDA ATI HDMI], デバイス 3: HDMI 0 [HDMI 0]
...
# ← 内蔵スピーカー (CS8409) が一切表示されない
原因
iMac 2017 のオーディオチップは Cirrus Logic CS8409 だが、このチップのドライバーが標準の Linux カーネルに含まれていない。
根本的な問題は、標準の snd_hda_intel ドライバーが、CS8409/CS42L83 の DSP とアンプを起動するために必要な Apple 独自の HDA-Verbs シーケンスを送信できないこと。その結果、ALSA はアナログ再生デバイスを生成できず、音声出力がダミー出力のみになる。
この問題は iMac/MacBook Pro 2017 以降の機種で Linux を動かすユーザーの間で広く報告されており、Ubuntu・Fedora・Linux Mint など複数のディストリビューションで同様の事象が確認されている。
Ubuntu 24.04.4 LTS(カーネル 6.17 以降)では CS8409 ドライバーが標準で含まれるようになった。
22.04 / 6.8 HWE カーネル環境では以下の手順でサードパーティドライバーを導入する必要がある。
解決手順
1. 事前確認
オーディオチップが CS8409 であることを確認する。
cat /proc/asound/card*/codec* | grep Codec
以下のように Cirrus Logic CS8409 が表示されていれば、この手順が有効だよ。
Codec: Cirrus Logic CS8409
Codec: ATI R6xx HDMI
2. 必要なパッケージをインストール
sudo apt install git make gcc linux-headers-$(uname -r)
3. ドライバーをクローン・ビルド・インストール
cd ~
git clone https://github.com/egorenar/snd-hda-codec-cs8409.git
cd snd-hda-codec-cs8409
make
sudo make install
4. 再起動
sudo shutdown -r now
5. 動作確認
再起動後、aplay -l で内蔵スピーカーが認識されているか確認する。
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: PCH [HDA Intel PCH], デバイス 0: CS8409/CS42L83 Analog [CS8409/CS42L83 Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: HDMI [HDA ATI HDMI], デバイス 3: HDMI 0 [HDMI 0]
...
CS8409/CS42L83 Analog が表示されていれば成功。システム設定のサウンドから出力デバイスを選択して音が出ることを確認する。
テスト音を鳴らす場合はこちら。
speaker-test -c 2 -t wav
注意点:カーネル更新後の対応
このドライバーはカーネル更新のたびに再ビルドが必要になる。
カーネル更新後に音が出なくなった場合は、以下を実行する。
cd ~/snd-hda-codec-cs8409
make clean
make
sudo make install
sudo reboot
まとめ
| 確認コマンド | 期待する結果 |
|---|---|
cat /proc/asound/card*/codec* | grep Codec |
Cirrus Logic CS8409 が含まれる |
aplay -l(ドライバー導入前) |
HDMI のみ表示 |
aplay -l(ドライバー導入後) |
CS8409/CS42L83 Analog が表示される |
サードパーティドライバー(egorenar/snd-hda-codec-cs8409)を手動インストールすることで、Ubuntu 22.04 + 6.8 HWE カーネル環境でも iMac 2017 の内蔵スピーカーを使えるようになる。