Howto

Armadillo-640でMQSオーディオを使う (Armadillo Base OS)

この Howto では、Armadillo Base OS を搭載した Armadillo-640 の MQS を使用したオーディオの再生の方法を紹介します。
Debian での方法はこちら

Armadillo-640 をベースにした内容になっていますが、同様の手順で Armadillo-IoT ゲートウェイ A6E でもモノラル出力で音声を再生できます。

Armadillo-640 の MQS 仕様

Armadillo-640 の CON9 に MQS のピンが配置されています。

CON9 ピン番号 MQS の信号名
17 RIGHT
18 LEFT

Armadillo-IoT ゲートウェイ A6E の MQS 仕様

Armadillo-IoT ゲートウェイ A6E の CON8 に MQS のピンが配置されています。

CON9 ピン番号 MQS の信号名
7 LEFT

必要な回路

以下の回路でイヤホンを接続し、確認しました。

なお、再生開始時と終了時に若干ポップノイズが出るので、必要であれば別途ミュート回路などを追加してください。

スピーカーなどを駆動する場合、MQS 信号の高周波成分と直流成分をカットし、スピーカーアンプに接続してください。

MQS 信号は電圧 0-3.3V 周波数 768kHz の PWM です(サンプルレート48kHz)。

Device Tree のカスタマイズ

MQS を使用する場合、製品マニュアル内「10.9.3. Device Tree をカスタマイズ」の方法で MQS を割り当て、生成された DTB を Armadillo-640 に書き込んでください。 at-dtweb による方法が簡単です。

コンテナの起動

動作テスト用コンテナの設定ファイルを作成します。

[armadillo ~]# cat /etc/atmark/containers/mqs_example.conf
set_image docker.io/alpine
add_devices /dev/snd
set_command sleep infinity

コンテナを起動します。

[armadillo ~]# podman pull docker.io/alpine
[armadillo ~]# podman_start mqs_example

コンテナ内で/bin/shを起動してログインします。

[armadillo ~]# podman exec -it mqs_example /bin/sh
[container /]# 

確認

準備

aplayを使用するため、alsa-utils をインストールします。

[container /]# apk update && apk upgrade && apk add alsa-utils
(省略)
(10/10) Installing alsa-utils (1.2.9-r0)
Executing busybox-1.36.1-r0.trigger
OK: 12 MiB in 25 packages

以下のコマンドでMQSデバイスが認識されているか確認できます。

[container /]# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: mqsaudio [mqs-audio], device 0: HiFi fsl-mqs-dai-0 [HiFi fsl-mqs-dai-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: mqsaudio [mqs-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

音声ファイルの再生(aplay)

以下コマンドでサンプリングレート 48kHz の.wavファイルを再生できます。

[container /]# wget http://download.atmark-techno.com/misc/howto_mqs-a640-abos/sin.wav
[container /]# aplay -D plughw:0 sin.wav

左だけ、右だけの音源も用意しました。

[container /]# wget http://download.atmark-techno.com/misc/howto_mqs-a640-abos/sin_left.wav
[container /]# wget http://download.atmark-techno.com/misc/howto_mqs-a640-abos/sin_right.wav
[container /]# aplay -D plughw:0 sin_left.wav
[container /]# aplay -D plughw:0 sin_right.wav

音声ファイルの再生(mpg123)

mpg123をインストールし、.mp3ファイルなどを再生します。 以下では、サンプルファイルをダウンロードし、再生しています。 また、ハードウェア的制約のため、サンプリングレートを 48kHz にリサンプリングしながら再生しています。

[container /]# apk update && apk upgrade && apk add mpg123
(省略)
(1/2) Installing mpg123-libs (1.31.3-r1)
(2/2) Installing mpg123 (1.31.3-r1)
Executing busybox-1.36.1-r0.trigger
OK: 12 MiB in 27 packages
[container /]# wget http://download.atmark-techno.com/misc/howto_mqs-a640-abos/sin.mp3
(省略)
[container /]# mpg123 -r 48000 -0 sin.mp3
(省略)
[0:03] Decoding of sin.mp3 finished.

音声ファイルの再生(ffplay)

ffmpeg をインストールし、.m4aファイルなどを再生します。 .aacファイルや、サンプリングレート 44.1kHz の.wavファイルも再生できます。 以下では、サンプルファイルをダウンロードし、再生しています。 また、ハードウェア的制約のため、サンプリングレートを 48kHz にリサンプリングしながら再生しています。

[container /]# apk update && apk upgrade && apk add ffmpeg
(省略)
(94/95) Installing ffmpeg-libavdevice (6.0-r15)
(95/95) Installing ffmpeg (6.0-r15)
Executing busybox-1.36.1-r1.trigger
Executing glib-2.76.4-r0.trigger
OK: 76 MiB in 122 packages
[container /]# wget http://download.atmark-techno.com/misc/howto_mqs-a640-abos/sin.m4a
(省略)
[container /]# ffplay -autoexit -ar 48000 sin.m4a
(省略)
  3.13 M-A: -0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

ソフトウェアバージョン

使用したソフトウェアのバージョンは以下の通りです。

項目 動作確認環境
インストールディスク v3.17.4-at.7
Linuxカーネル v5.10.185-r1
at-dtweb バージョン 2.9.0
alsa-utils バージョン 1.2.9-r0
mpg123 バージョン 1.31.3-r1
ffmpeg バージョン 6.0-r15