ハードウェア DAC/アンプは電源を入れるだけで音が出てドライバ不要——ではソフト側は何をすれば音が再生できるのか?
帰属:原著者 Luo Zong(罗总)、Rockchip、WeChat 公式アカウント 「罗总开发笔记」 にて 2026-08-25 公開。元 URL:mp.weixin.qq.com/s/CqBo2NonYYGqC99ojL--4Q。シリーズ:「自分で CODEC ドライバを書く」第 2 回(DAC 再生)。著作権は原著者に帰属し、許諾を得て転載しています。
注釈付き正規版 → 技術ノート・第 2 回:DAC 再生(全文翻訳+Bestom エンジニア注釈)。
多くの DAC チップ(例:TI PCM5102A)は制御インターフェースすら不要です。I2S データ線をつなぎ電源を入れるだけで音が出ます——内蔵 PLL を持ち、MCLK すら不要です。本稿では、Rockchip Linux 上でこのような「制御ゼロ」DAC を駆動するための ダミーコーデック(dummy-codec) の使い方を解説します。
- 方向:再生 DAI ストリーム(
.playback)を宣言すると、サウンドカードは/dev/snd/pcmC0D0pを生成します。これは前回の PDM キャプチャ記事(キャプチャ/pcmC0D0c)の逆です。 - ドライバ:ダミーコーデックの
.playback能力宣言は単なるプレースホルダーで、ドライバコードは 0 行です。実チップのドライバ(例:pcm5102a.c)はデータシートに厳密に従って能力を宣言する必要があります。 - DTS 三點セット:Codec DAI(ダミーコーデックのプレースホルダー)→ CPU DAI(
&i2s0の有効化+ピンマルチプレックス)→ Machine(multicodecs-cardがサウンドカードを組み立てる)。PDM を I2S に、キャプチャを再生に差し替えるだけで同じように動きます。 - 検証:
cat /proc/asound/cards→ls /dev/snd/→aplay -D hw:0,0 ...。データ経路は wav → リングバッファ → DMA → I2S → DAC → スピーカー です。
/* ダミーコーデックの再生能力宣言(kernel-6.1) */
struct snd_soc_dai_driver dummy_dai = {
.name = "dummy_codec",
.playback = {
.stream_name = "Dummy Playback",
.channels_min = 1, .channels_max = 384,
.rates = SNDRV_PCM_RATE_CONTINUOUS,
.formats = SNDRV_PCM_FMTBIT_S16_LE | ... ,
},
};
Bestom との関連・当社のオーディオプラットフォームも同じ枠組み上に構築されています
本ノートの「ダミーコーデック+I2S 三點セット DTS」は、Bestom の RK2108D(M08D モジュール)、RK2118(フラグシップ車載オーディオ、Audio-NPU 40 GOPS)、RK962(ワイヤレスオーディオ) といった量産オーディオソリューションの基盤そのものです。その上に、マイクアレイのビームフォーミング、低消費電力音声ウェイクアップ(RT-Thread)、HiFi DSP フロントエンド処理、およびボイスレコーダー/スマートスピーカー/車載オーディオ向けの基板全体納入を追加しています。
技術ノート全文を読む → 原文(Luo Zong・WeChat、中国語) Copyright © Luo Zong(罗总), Rockchip. 許諾を得て転載。