はじめに
この記事は、2017年 27インチ iMac Retina 5K(iMac18,3)に Fedora Linux を導入した際、内蔵スピーカーから音が出ない問題に対して、私の実機環境で内蔵スピーカー再生が安定するところまで到達した検証記録です。
対象は Fedora Linux 6.19.12 環境で、音声系は CS8409 / CS42L83 / TAS576 に関係しています。
パッチ本体、適用方法、既知の制限、検証報告の受付先は GitHub に整理しています。
この記事では、GitHub の README をそのまま翻訳するのではなく、日本語で以下を整理します。
- 何ができるようになったのか
- どの環境で確認したのか
- どの範囲が未対応なのか
- どのような点に注意が必要なのか
- 同型機で検証する場合に何を確認してほしいのか
なお、この記事は「完全解決」や「上流投入可能な完成パッチ」を主張するものではありません。
あくまで、私の iMac18,3 1個体で確認した実験的な成功例です。
ただし、自作PCではなく Apple の量産モデルであるため、同じ iMac18,3 をお持ちの方が検証する価値はあると考えています。成功・失敗のどちらの報告も、今後の調査に役立ちます。
結論
Fedora Linux 6.19.12 環境の iMac18,3 で、内蔵スピーカーからの再生を確認できました。
現在、私の環境で確認できている内容は以下です。
- 内蔵スピーカーから音が出る
- YouTube など通常のデスクトップ再生ができる
- ALSA / PipeWire の analog-stereo 出力で再生できる
- 未改造の Linux 6.19.12 ソースツリーにパッチを適用できる
- CS8409 関連の対象オブジェクトをビルドできる
一方で、現時点では以下は未対応または未確認です。
- ヘッドフォン切替
- 内蔵マイク入力
- 外部マイク入力
- Apple 純正と同等のスピーカーチューニング
- 他の iMac / MacBook モデル
- 他のカーネルバージョン
- Ubuntu 用パッチの置き換え
そのため、このパッチは iMac18,3 / Fedora Linux 6.19.12 における内蔵スピーカー再生の実験的パッチ として扱っています。
まずは、同じ iMac18,3 を持つ方が「自分の環境でも鳴るのか」「どこで違いが出るのか」を確認するための材料になればと考えています。
対象環境
今回確認した環境は以下です。
- 機種:iMac 2017 27インチ Retina 5K
- Model Identifier:iMac18,3
- OS:Fedora
- Kernel:Linux 6.19.12
- 音声 codec:CS8409
- 関連する外部アンプ / codec:CS42L83 / TAS576
- 音声出力:ALSA / PipeWire analog-stereo
このパッチは、上記環境での内蔵スピーカー再生を対象にしています。
同じ iMac18,3 であっても、kernel バージョン、ディストリビューション、ファームウェア状態、過去の設定状態などによって挙動が変わる可能性があります。
なぜ内蔵スピーカーにこだわったのか
外部スピーカーや USB オーディオを使えば、音を出すだけなら回避できます。
しかし今回は、iMac 2017 Retina 5K を、Linux 環境でも一体型の機械として使いたかったため、内蔵スピーカーからの再生にこだわりました。
この背景には、古い機械の役割を変えながら使い続ける Network Garden という個人的な取り組みもあります。
ただし、この記事では技術的な検証内容を中心に扱います。
発生していた問題
iMac18,3 に Fedora を導入しただけの状態では、内蔵スピーカーから期待どおりに音が出ませんでした。
検証途中では、以下のような状態を確認しました。
- 内蔵スピーカーから音が出ない
- 音声デバイスは見えていても、実際には再生されない
- ALSA / PipeWire 側では出力先が存在するように見える
- 再生経路や profile を変更すると、状態が変わることがある
- 一部の設定では大きなノイズが出ることがある
- 内蔵スピーカー再生ができても、ヘッドフォン切替やマイク入力は別問題として残る
今回の検証で重要だったのは、単に「Linuxで音が出ない」という問題ではなく、iMac18,3 の内蔵スピーカー経路に CS8409 だけでなく、CS42L83 / TAS576 側の初期化が関係していると考えられた点です。
Fedora 環境では、内蔵 HDA audio path 自体は見えていても、外部アンプ側の初期化が不足すると、内蔵スピーカーが無音のままになる可能性があります。
調査の流れ
調査では、最初から Fedora 側のコードだけを見たわけではありません。
まず、内蔵スピーカーが鳴る既知の状態と、鳴らない状態を比較することから始めました。
大まかな流れは以下です。
- Ubuntu 22.04.5 側で、iMac18,3 の内蔵スピーカーが鳴る状態を確認
- Fedora 側で、同じ iMac18,3 の音声状態を確認
-
/proc/asound/card0/codec#0、dmesg、ALSA / PipeWire の出力状態を比較 - 再生前・再生中・停止後の DAC / Pin / stream 状態を確認
- CS8409 から内蔵スピーカーへ直接出ているだけではなく、CS42L83 / TAS576 側の初期化が関係している可能性を確認
- Fedora の CS8409 関連コードに、iMac18,3 向けの初期化処理を追加
- 内蔵スピーカー再生、左右バランス、不安定再生の改善を確認
- 公開用に探索用ログや一時的なテスト文言を整理し、patch と README を GitHub に公開
この過程で分かったことは、iMac18,3 の内蔵スピーカー問題は、単に ALSA / PipeWire の設定だけで完結する問題ではなさそうだという点です。
Linux 側から HDA audio path が見えていても、Apple 固有の外部アンプ制御が正しく初期化されないと、内蔵スピーカーは鳴らない可能性があります。
今回公開したパッチは、そのうち Fedora Linux 6.19.12 環境で確認できた、iMac18,3 向けの内蔵スピーカー初期化処理を整理したものです。
パッチについて
今回公開したパッチは、Fedora Linux 6.19.12 の未改造ソースツリーに対して適用することを想定した、iMac18,3 向けの CS8409 関連パッチです。
パッチ本体は GitHub の patches/ に置いています。
主な目的は、iMac18,3 の内蔵スピーカー再生に必要な初期化処理を追加することです。
大まかには、以下のような内容を含みます。
- iMac18,3 向けの CS8409 fixup
- CS42L83 / TAS576 側の初期化処理
- 内蔵スピーカー再生経路の安定化
- 探索段階の一時的なログやテスト文言を整理した公開用差分
このパッチは、Linux kernel 全体に対する完成された汎用修正ではありません。
あくまで、私の iMac18,3 / Fedora Linux 6.19.12 環境で内蔵スピーカー再生が確認できた差分を、再現確認しやすい形で公開したものです。
適用方法、ビルド確認、起動後の確認方法、既知の制限については GitHub の README を参照してください。
現在の状態
現在、私の iMac18,3 / Fedora Linux 6.19.12 環境では、内蔵スピーカーから通常のデスクトップ音声を再生できています。
確認した範囲では、以下の再生が可能です。
- デスクトップ環境での通常再生
- YouTube などのブラウザ再生
- ALSA / PipeWire の analog-stereo 出力
- 再起動後の内蔵スピーカー再生
当初残っていた左右差や、鳴ったり鳴らなかったりする不安定さについても、現在の公開パッチ段階では解消しています。
一方で、サウンド設定上に表示される profile / configuration の切り替えについては注意が必要です。
確認した環境では、profile を切り替えたあとに再生状態が崩れることがありました。
その場合でも、再度 Analog Stereo Output に戻すことで内蔵スピーカー再生へ復帰できました。
ただし、profile 切り替え後に音量状態が引き継がれず、想定より大きな音でノイズが出る可能性があります。
profile / configuration を切り替えて検証する場合は、必ず音量を下げてから試してください。
未対応・未確認の内容
今回のパッチは、現時点では 内蔵スピーカー再生 を主な対象にしています。
そのため、以下は未対応または未確認です。
- ヘッドフォン挿入時の自動切替
- ヘッドフォン出力経路
- 内蔵マイク入力
- 外部マイク入力
- Apple 純正と同等のスピーカーチューニング
- 他の iMac / MacBook モデル
- 他の kernel バージョン
- Ubuntu 用パッチの置き換え
特に、ヘッドフォン切替とマイク入力は、内蔵スピーカー再生とは別の経路や制御が関係する可能性があります。
そのため、今回のパッチをもって iMac18,3 の音声機能全体が解決したとは考えていません。
この記事で扱うのは、あくまで Fedora Linux 6.19.12 上で iMac18,3 の内蔵スピーカー再生を有効化した記録 です。
注意点
このパッチを試す場合は、必ず音量を下げた状態から確認してください。
特に注意が必要なのは、デスクトップのサウンド設定にある Configuration / Profile の切り替えです。
私の環境では、profile を切り替えたあとに再生状態が一時的に崩れることがありました。
その場合でも、再度 Analog Stereo Output に戻すことで内蔵スピーカー再生へ復帰できました。
ただし、profile を切り替えた際に音量状態が引き継がれない可能性があります。
その状態で再生すると、想定よりかなり大きな音でノイズが鳴ることがあります。
そのため、profile / configuration を切り替えて検証する場合は、事前に音量を十分下げてから試してください。
また、PipeWire やデスクトップのサウンド設定上で 2.1ch や 4.0ch などの profile が表示される場合がありますが、それらは現時点ではこのパッチで検証済み・対応済みの iMac18,3 内部スピーカーマッピングではありません。
今回の確認対象は、あくまで analog-stereo の内蔵スピーカー出力経路 です。
GitHubリポジトリ
パッチ本体、README、既知の制限、検証報告の受付先は GitHub にまとめています。
リポジトリには、主に以下を置いています。
- Fedora Linux 6.19.12 向けの patch
- 英語版 README
- 日本語補足 README
- LICENSE
- 既知の制限
- 動作確認用のコマンド例
- 再現確認・失敗報告のための情報
記事本文では概要のみを説明し、実際の patch 適用方法やビルド確認手順は GitHub 側に寄せています。
検証する場合は、必ず README と注意点を確認したうえで、音量を下げた状態から試してください。
再現確認・フィードバックのお願い
このパッチは、現時点では私の iMac18,3 1個体で確認した実験的なものです。
そのため、同じ iMac18,3 をお持ちの方による再現確認を歓迎します。
成功した場合だけでなく、失敗した場合の報告も重要です。
特に、同じ iMac18,3 であっても Fedora や kernel のバージョンによって挙動が変わる可能性があります。
検証結果は、GitHub Issues に投稿してもらえると助かります。
報告してもらえると助かる情報は、例えば以下です。
- 機種名
- Model Identifier
- Distribution
- Kernel version
- patch の適用結果
- build の結果
- 起動後に内蔵スピーカーから音が出たか
- 左右バランスに違和感があるか
- profile / configuration 切り替え時の挙動
-
Analog Stereo Outputに戻したときに復帰するか - 大きなノイズが出るか
- shutdown 時にポップ音が出るか
- ヘッドフォン切替を試した場合の結果
- マイク入力を試した場合の結果
成功・失敗のどちらであっても、同型機での報告が増えることで、この問題の再現性や環境差が見えやすくなると考えています。
おわりに
今回の検証では、iMac18,3 / Fedora Linux 6.19.12 環境で、内蔵スピーカーから音を出すところまで到達できました。
外部スピーカーや USB オーディオを使えば回避できる問題ではありますが、iMac を Linux 環境でも一体型の機械として使うという意味では、内蔵スピーカーから音が出ることには大きな意味がありました。
現時点では、ヘッドフォン切替やマイク入力など未対応の部分も残っています。
また、このパッチが他の iMac18,3 や他の kernel バージョンでそのまま動作するかは、まだ確認できていません。
それでも、同じ機種で困っている人にとって、調査の出発点や比較材料になればと思い、patch と検証内容を公開しました。
もし同じ iMac18,3 で試せる方がいれば、成功・失敗を問わず GitHub Issues などで報告してもらえると助かります。
この記録が、iMac 2017 Retina 5K を Linux で使い続けたい人の手がかりになれば幸いです。