reTerminal(Raspberry Pi CM4)でMoodeAudioを動かそう
reTerminalというRaspberry Pi CM4と5インチタッチパネルを組み込んだユニットが秋月電子で売っていました。
ラズパイ全般が品切れしているなか少し目立つ存在だったため、特に使う用途は考えずに購入してみました。
価格は24,800円(3月末までのキャンペーン価格は23,700円)と少々お高めですが、内蔵しているCM4はメモリ4GB、eMMC 32GB、WIFIありモデルで単体では12,000円くらいのものです。静電容量式タッチパネル5インチ1280x720のLCDと共にキレイなケースに収まっていることを考えると納得の価格設定とは思います。でも高い。
設定に苦労したので備忘録としてまとめました。興味のある方はどうぞ。
ドライバが必要
reTerminalの画面とタッチパネルなどのドライバは、RaspbaeeyPi OS用になっていて僅かなコマンドで組み込むことができるようになっています。ドライバソースなどは以下にあります。
https://github.com/Seeed-Studio/seeed-linux-dtoverlays
設定方法など詳細は後述します。
eMMC書換え方法
Seeed社の松岡氏が丁寧に説明されているので、そちらをご覧ください。
ブログ https://lab.seeed.co.jp/archive/category/reTerminal
この方法を使ってRaspberryPi OSではなくmoodeAudioを書き込みます。
moode-r761-iso.zipを使いました。
最初にVolumioをインストールしてみたのですが、画面のドライバ導入時にコンパイルエラーが発生して結局、画面を出せませんでした。修行が足りないようです。引き続き挑戦してみようかと思ってます。
気を取り直してMoodeAudioで挑戦したところ、うまく行きましたので本日の備忘録になっています。
MoodeAudioが起動したところからスタート
sshにてリモートログインします。
host: moode.local
user: pi
pass: moodeaudio
私の環境だけかもしれませんが、teratermから接続できるもののwebブラウザからアクセスできず少々苦労しました。
に繋がらないのです。
仕方ないのでteratermからコマンドでIPアドレスを強制的に指定します。
sudo ifconfig eth0 192.168.50.55 netmask 255.255.255.0
といった感じ。ご自身のネットワーク環境に合わせてください。
設定したらwebブラウザからそのIPアドレスにアクセスして、web-UI上からもう一度アドレスを固定します。
Configのネットワークから
※ アドレスはご自身の環境に合わせてください。
これで次回起動以降も安定して繋がるようになります。
DACの設定をして確認
これは後で設定しても良いのですが、どの時点で音がでなくなるのか確かめるために最初に設定しておくことにしました。(何度も再インストールして、途中で音が出なくなることが分ったので)
設定して再起動するとちゃんと音が出ます。
ストレージ拡張
ドライバを導入するときにrootパーティションの容量が足りなくなるのでeMMCの容量いっぱいまで拡張します。
sudo raspi-config
> 6 Advancd Option
> A1 Ecpand Filesystem
設定終了して再起動します。
この辺はRaspberryPi OSそのものです。MoodeAudioがRaspberryPi OSをベースにソフトを組み込んでいるので助かりますね。
画面ドライバの導入
では早速、画面ドライバを入れていきます。
基本的にこちらの「ドライバーをインストールする」項目の説明の通りに進めます。
sudo apt update
git clone --depth 1 https://github.com/Seeed-Studio/seeed-linux-dtoverlays
cd seeed-linux-dtoverlays
sudo ./scripts/reTerminal.sh
ここで長々と文字が出てきて、最後にエラーで止まります。
Can't compile with this kernel, aborting
Please try to compile with the option --compat-kernel
うーん。 良くわからないが --compat-kernel というオプションを試してくださいとの事らしいです。
sudo ./scripts/reTerminal.sh --compat-kernel
そうすると、
DKMS: install completed.
DTC overlays/rpi/reTerminal-overlay.dtbo
'overlays/rpi/reTerminal-overlay.dtbo' -> '/boot/overlays/reTerminal.dtbo'
DTC overlays/rpi/reTerminal-bridge-overlay.dtbo
'overlays/rpi/reTerminal-bridge-overlay.dtbo' -> '/boot/overlays/reTerminal-bridge.dtbo'
cp: cannot create directory '/usr/share/plymouth/themes/': No such file or directory
ディレクトリが無いとか吐いてますがドライバ自体はインストールできたっぽいです。
/boot/config.txtには下記のものが追記されていました。
enable_uart=1
dtoverlay=dwc2,dr_mode=host
dtparam=ant2
disable_splash=1
ignore_lcd=1
dtoverlay=vc4-kms-v3d-pi4
dtoverlay=i2c3,pins_4_5
gpio=13=pu
dtoverlay=reTerminal
dtoverlay=reTerminal-bridge
再起動します。
この時点でmoodeAudioの音はでなくります。(再生するとALSAエラーがでて再生不能)
lsmodではsoundドライバが取り込まれているのにaplay -lやalsamixerではDAC基板が無いことになっている。
縦横がへん
起動時にはこんな感じで文字が表示されるようになります。
画面が出たというところでホっとしました。Volmioでは一切出ませんでしたから。
pi@moode:~ $ DISPLAY=:0.0 xrandr
Screen 0: minimum 320 x 200, current 720 x 1280, maximum 7680 x 7680
HDMI-1 disconnected primary (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DSI-1 connected 720x1280+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
720x1280 60.00*+
最後のDSI-1というのがこのLCD画面らしいです。720x1280というのが縦横比がおかしい部分です。
気にしないで以下のコマンドで画面を出してみます。
startx
私も初めて知ったのですが、MoodeAudioでは最初からX11とchromiumなど一式インストールされていて、このコマンドでweb-UIがローカルで出力されるようになっています。
まあ、そうなりますよね・・・
正しく表示させる組み合わせ
Linuxで画面の縦横を回転させる方法は様々なところに存在します。環境によりどこで設定するのが適切なのか色々パターンがあります。とりあえず手あたり次第やってみました。(バージョンやディストリビューションによって設定方法が変わるのはLinuxあるあるですよね。)
■ /boot/cmdline.txt に以下の文字列を追記する方法
video=DSI-1:1280x720@60,rotate=270
-> 横長方向になるが、画面がチラついて 二重になる。 NG 戻す。
■ ここの「モニターを設定する」 という項目
~/.config/monitors.xml を作って指定しています。
->何も変わらない。 NG 消す。
ウインドウマネージャー用の設定なのか、素のstartxには利かないっぽいです。
■ .xinitrc設定(chromiumのkioskモード設定)
sudo nano .xinitrc を編集
SCREENSIZE="$(fbset -s | awk '$1 == "geometry" { print $2","$3 }')"
で画面サイズを検出している部分を強制的に指定する。( print $2と$3の入換えでも良いかも)
さくっと
SCREENSIZE="1280,720" にします。
ついでに画面が一定時間で消えるのを解消するために
xset s 600 を xset s off に変更しておきます。
-> 画面サイズは正しくなる。が、縦横回転していないためハミ出る。 採用
■モニターの回転指定
sudo nano /usr/share/X11/xorg.conf.d/30-monitor.conf で新規ファイルを作成して下記を記入
Section "Monitor"
Identifier "DSI-1"
Option "Rotate" "right"
EndSection
-> 正しく表示できた。 採用
ココまでで特に気にしていませんでしたが、タッチパネルの動きも正常な方向になっているようです。
pi@moode:~ $ DISPLAY=:0.0 xrandr
Screen 0: minimum 320 x 200, current 1280 x 720, maximum 7680 x 7680
HDMI-1 disconnected primary (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DSI-1 connected 1280x720+0+0 right (normal left inverted right x axis y axis) 0mm x 0mm
720x1280 60.00*+
と先ほどとは変わって「1280x720 right」となってますね。めでたしめでたし。
startxの自動起動
起動後sshログインしてstartxコマンドを打たないとweb-UIが出ないのは面倒ですね。自動起動しましょう。
sodu nano /etc/rc.local で exit 0 の前に以下の一行を追加します。
su -l pi -c startx
これで再起動後に自動でweb-UIが表示されるようになります。
だが、音は出ない。
音を出すには
sudo nano /boot/config.txt を編集します。
dtoverlay=vc4-kms-v3d-pi4,noaudio=on
それとHATのDACドライバを一番下に移動することでOKになります。(Moodeのweb-UIから設定すると中間くらいに記載が入ります。)
dtoverlay=hifiberry-dac <- (hifiberry-dacの場合)
■ちょっと詳細説明
vc4-kms-v3d-pi4 がHDMIなどの画面ドライバの設定ですが、HDMIは音も出せるため、サウンドドライバも同時に入ってしまいます。
dtoverlay=vc4-kms-v3d-pi4 の場合
pi@moode:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM vc4-hdmi-hifi-0 [MAI PCM vc4-hdmi-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM vc4-hdmi-hifi-0 [MAI PCM vc4-hdmi-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
dtoverlay=vc4-kms-v3d-pi4,noaudio=on の場合
pi@moode:~ $ aplay -l
aplay: device_list:272: no soundcards found...
dtoverlay=allo-digione を一番下に書いてみる
pi@moode:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndallodigione [snd_allo_digione], device 0: Allo DigiOne HiFi wm8804-spdif-0 [Allo DigiOne HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
となり、Moodeの側の設定と一致して音が出せるようになります。
HATのDACドライバを一番下に記載するのがミソです。これに気付くのに2日かかりました。
HAT基板のデカップリングコンデンサの影響
SB32+PRO DoPやNorthFoxDigiなど電源デカップリングの容量が大きいと、画面が表示されないという不具合が出ます。
画面が真っ黒のままなのでCM4が起動していないのかな、とも思ったのですが、MPDやwebアクセスなど基本動作はしているので単純にLCDのハードウェアのリセット不良が起きていると推測しています。
という訳で電源デカップリングの容量が大きい基板は使えません。
SabreberryDAC ZEROは問題なく使用できています。NorthFoxDigiは画面が出たり出なかったりと不安定。
格安で売られているHATのDAC基板は大容量のデカップリングは搭載されていないので、問題なく使えるかもしれません。
« アクリル板の加工データを作ろう(2) | トップページ | PRT-01、PRT-02を補充しました。 »
「Raspberry Pi」カテゴリの記事
- MotionEyeと余っているラズパイで監視カメラ(2024.11.21)
- 秋の夜長にはRaspberryPi5 RT-linux セルフビルド(2024.10.13)
- 秋の夜長にはRaspberryPi5 64bit版 Sabreberry32 ドライバコンパイル(2024.10.10)
- RaspberryPi 5 の公式OSは32bit版でも64bit?(2024.10.09)
- 秋の夜長にはRaspberry Pi5 64bit カーネル・セフル・ビルド (2024.10.07)
たかじんさん
これ、いいですね。 小さいので、電源関係を工夫すれば、音質改良もできそうだし。
次の解決策の記事を楽しみにしています。
投稿: n'Guin | 2022年2月20日 (日) 19時46分
n'Guin さん
画面の解像度が高くキレイなLCDなので見た目は良いです。
ただ、このUIだと文字が小さすぎて老眼にはつらい。。。
投稿: たかじん | 2022年2月23日 (水) 09時03分
こんばんは。ようやく自分もreTerminal入手できたので試してみました。
現在最新版のmoOde 8.1.2の64bitを使っています。
画面の向きはたかじんさんの検証の通りで、同様に修正しました。ありがとうございます。
web-UIは、moOdeの持っている「Local Display」機能を使って表示できました。「Local UI Display」のスイッチをONにするだけです。
確かに文字が小さすぎて結局スマホで操作することが多いので、web-UIは再生している間だけ表示するように設定しています。この設定もGUIでできます。
これまでずっとmoOdeを使ってきて「何に使う機能なんだろう?」と思っていたのですが、ようやく理解できました。基本的にヘッドレスで使っていたので思い至りませんでした。
投稿: h.imagine | 2022年7月21日 (木) 22時15分
h.imagineさん
moOde 8.1.2ですか。 相変わらず進化がとまらないですね。
「Local Display」がそんなにお手軽な表示機能として使えるとは知りませんでした。 素晴らしですね。
投稿: たかじん | 2022年7月23日 (土) 08時14分