niccollive

作れるものはなんでも作ります

View the Project on GitHub niccolli/log

Raspberry PiでM8 Headlessを扱う基盤をととのえる

Raspberry Piを使ってM8 Headlessを動かす手順をまとめます。基本的にはm8cのREADMEで十分なのですが、細かいつまずきポイントなどを追記しています。

準備

Teensy 4.1にM8 Headlessのファームウェアを書き込む

macOSの場合、ファームウェア書き込みに使うTyToolsが古く、TyUploaderは起動してもファイル選択ができません。Issueに、tycmdを使いターミナルから書き込む解決策があります。ただし、tycmdもセキュリティ機能の制限によりブロックされます。一度Finderから起動させ、設定.app→プライバシーとセキュリティ→下のほうの実行許可で起動するようになります。

Raspberry PiにOSを書き込む

今回は下記環境で試しています。

Raspberry Pi 4はメモリが少ないものでもいけるかもしれません。Raspberry Pi Zero 2でもできるか試しています。

一番新しいRaspberry Pi OSでも大丈夫でした。なぜかLiteだけ無線LANが無効になっています。rfkillコマンドで解除できますが、設定が済めば不要なので有線LANで対処しました。

m8cのビルドから起動まで

m8cのBuilding from source codeの章に沿って実行します。Raspberry Piでもそのままの手順で動きます。

デスクトップ環境以外から起動する

デスクトップ版のRaspberry Pi OSにSSHなどでログインしている場合、画面がないと言われてアプリが止まります。下記のように環境変数を設定すればOKです。

$ DISPLAY=:0 ./m8c

Lite版ではディスプレイ設定の必要なく、m8cを実行するだけでそのまま表示されます。

### マウスポインターを消したい

m8c起動後にFullscreen設定をOnにするとマウスポインターが消えますが、起動時に設定ファイルでフルスクリーンを有効にしていても反映されません。常時フルスクリーン稼働の場合はマウスポインターは表示されなくていいので、下記のようにコードを修正してからビルド・実行します。

# src/render.c
void render_screen(config_params_s *conf) {
  # ここを追加
  SDL_HideCursor();
  if (!dirty && !settings_is_open()) {

イヤホン端子ではなくDACを指定する

PCM5122など、広く使われているDACを指定するときは、下記手順でOKです。

  1. Raspberry Piの /boot/firmware/config.txt に適切に設定する。
  2. alsamixerに表示されることを確認し、表示名を記録する。
  3. m8cの設定ファイルの audio_device_name の項に、alsamixerの表示名と同じものを指定する。

Raspberry Piの起動後、すぐにm8cを実行させる。

crontabへの指定で十分です(参考)。@reboot としてm8cのフルパスを指定すれば、起動時にフルスクリーンで表示されます。

実行例

上記手順で設定したうえで実行すると、下記のようになります。

液晶画面出力は過去の記事を参照ください。