この 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 |