** 2022/05/13 新しい記事を書いたのでこちらを参照してください。
https://zenn.dev/tetsu_koba/articles/d931a843f16a4c
** 以降は古い記事。
以前に書いたラズパイ+momoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する と同じことをjetson nano でもやってみました。
オーディオループバックのカーネルモジュールのビルド
なんと、jetson nano のカーネルではオーディオループバックのカーネルモジュール(snd-aloop.ko)が標準では入っていません。
そこで自分でこれをビルドします。
ビルドの手順は以下のページの手順にそってやって問題なくできました。
https://developer.ridgerun.com/wiki/index.php?title=Jetson_Nano/Development/Building_the_Kernel_from_Source
私がやったときの手順をここに残します。
Jetson nano のリリースは 32.3.1 でした。
wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
sudo tar xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz -C /usr/local
wget https://developer.nvidia.com/embedded/dlc/r32-3-1_Release_v1.0/Sources/T210/public_sources.tbz2
tar xvf public_sources.tbz2
cd Linux_for_Tegra/source/public/
JETSON_NANO_KERNEL_SOURCE=$(pwd)
tar xf kernel_src.tbz2
vi env.sh
JETSON_NANO_KERNEL_SOURCE=$(pwd)
TOOLCHAIN_PREFIX=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
TEGRA_KERNEL_OUT=$JETSON_NANO_KERNEL_SOURCE/build
KERNEL_MODULES_OUT=$JETSON_NANO_KERNEL_SOURCE/modules
. env.sh
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} tegra_defconfig
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} menuconfig
ここでオーデォオループバックデバイスをモジュールでビルドするように指定します。
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
[*] Generic sound devices --->
<M> Generic loopback driver (PCM)
module をビルドします、
make -C kernel/kernel-4.9/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} -j2 --output-sync=target modules
cp build/sound/drivers/snd-aloop.ko .
必要なのはこのファイルひとつだけです。これをjetson nano に持っていきます。
面倒ですが、jetson nanoのカーネルのバージョンが上がるたびに同様の作業が必要になります。
snd-aloop.ko も標準で入れてくれないかなあ。
オーディオループバックのカーネルモジュールのロード
jetson nano で
sudo insmod snd-aloop.ko pcm_substreams=2
これで特にエラーメッセージがでなければOK。
念のために sudo lsmod |grep aloop
でこのモジュールが入っていることを確認します。
pulseaudio を無効にする
ALSAを直接使いたいので、pulseaudio を無効にします。
このページの手順でできました。
https://kodi.wiki/view/PulseAudio/HOW-TO:_Disable_PulseAudio_and_use_ALSA_(without_removing_PulseAudio)_for_Ubuntu
以降はこのページの手順でいけます。
ラズパイ+momoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する