✅ MMDVMHost 実装手順書(Raspberry Pi Zero 2 W + STM32_MMDVM_HS_HAT)

📘 MMDVMHost 実装手順書(受信専用・Pi Zero 2 W + STM32_MMDVM_HS_HAT GPIO接続)


🧱【前提環境】

  • SBC:Raspberry Pi Zero 2 W
  • OS:Raspberry Pi OS Legacy Lite (32bit)
  • モデム:STM32_MMDVM_HS_HAT Rev1.7(GPIO接続)
  • DMR ID:4401505
  • 周波数:438.710MHz
  • UARTポート:/dev/ttyAMA0
  • ユーザー名:pi-star

🧩【ステップ1】Raspberry Pi のロケール・タイムゾーン・キーボード設定

🇯🇵 ロケール(Locale)の設定

💡 解説

  • ロケールは、OSの表示言語や日付・時刻の表記、文字コードの形式などに影響する設定です。
  • 日本向けの推奨設定:
    • 言語:ja_JP.UTF-8
    • タイムゾーン:Asia/Tokyo
    • キーボード:Japanese(JIS配列)

🖥️ 設定コマンド

$ sudo dpkg-reconfigure locales
  • 一覧から ja_JP.UTF-8 UTF-8 にスペースでチェック
  • デフォルトロケールとして ja_JP.UTF-8 を選択

確認コマンド:

$ locale

例:

LANG=ja_JP.UTF-8
LANGUAGE=
LC_ALL=

⏰ タイムゾーンの設定

$ sudo timedatectl set-timezone Asia/Tokyo

⌨️ キーボード設定(任意)

$ sudo dpkg-reconfigure keyboard-configuration

選択例:

  • キーボード種類:Generic 105-key (Intl) PC
  • キーマップ:Japanese

🛠【ステップ2】依存パッケージのインストール

💡 解説

このステップでは、MMDVMHost のビルドに必要なツールやライブラリをインストールします。

  • git:GitHub からソースコードを取得するために使用
  • build-essential:C/C++ のビルド環境(make, gcc など)をまとめて導入
  • libusb-1.0-0-dev:一部 USB 接続型のモデムやツールと連携する際に必要になる場合あり

🖥️ 実行コマンド

$ sudo apt update
$ sudo apt install -y git build-essential libusb-1.0-0-dev

🔌【ステップ3】UARTポート(ttyAMA0)専用化の設定

💡 解説

Raspberry Pi の GPIO UART(ttyAMA0)は、デフォルトで Bluetooth 機能やシリアルログイン用の getty サービスと共有されているため、それらを停止・無効化して MMDVM モデム専用にする必要があります。

  • hciuartbluetooth サービスが有効だと UART ポートを使用してしまう
  • serial-getty@ttyAMA0.service が起動していると、ログイン用プロンプトが ttyAMA0 に表示され競合する
  • mask はサービス起動を完全に禁止(disable より強力)

🖥️ 実行コマンド(root 権限)

# sudo systemctl disable hciuart
# sudo systemctl stop hciuart
# sudo systemctl disable bluetooth
# sudo systemctl stop bluetooth
# sudo systemctl disable serial-getty@ttyAMA0.service
# sudo systemctl stop serial-getty@ttyAMA0.service
# sudo systemctl mask serial-getty@ttyAMA0.service

💾【ステップ4】config.txtの編集

💡 解説

Raspberry Pi のブート設定ファイル /boot/firmware/config.txt を編集して、UART を有効化し、Bluetooth を無効化します。

  • enable_uart=1 によって UART をアクティブにする
  • dtoverlay=pi3-disable-bt によって Bluetooth 機能を完全に停止

🖥️ 実行コマンド

# sudo nano /boot/firmware/config.txt

以下を確認・追加:

enable_uart=1
dtoverlay=pi3-disable-bt

保存して再起動:

# reboot

🧰【ステップ5】MMDVMHostのダウンロードとビルド

💡 解説

MMDVMHost は Jonathan Naylor 氏によって開発されたデジタルボイスモデム制御ソフトウェアです。GitHub から取得し、ローカルでビルドします。

  • make -j2 は Raspberry Pi Zero 2 W のようなリソースの限られたデバイスで安全に並列ビルドを行うための指定です。-j4 だとビルド中にフリーズする場合があります。

🖥️ 実行コマンド

$ cd ~
$ git clone https://github.com/g4klx/MMDVMHost.git
$ cd MMDVMHost
$ make -j2

📝【ステップ6】MMDVM.iniファイルの設定

💡 解説

MMDVMHost の設定ファイル MMDVM.ini を編集して、受信専用・DMR用として必要なパラメータをセットします。

🔍 注目・必須ポイント:

  • [General]CallsignId はライセンスに基づいた正確な情報を設定
  • [Modem]UARTPort は正確に /dev/ttyAMA0 を指定すること(誤ると起動エラー)
  • DMR セクションは Enable=1ColorCode=1 が基本
  • [DMR Network]Enable=0 とし、受信専用とする

🖥️ 実行コマンド

$ nano MMDVM.ini

※ここに 全文の MMDVM.ini 設定 を貼り付けてください(既に共有済みの内容)


🚀【ステップ7】MMDVMHostの起動(テスト)

💡 解説

MMDVMHost を ini ファイル指定で起動し、ログに「received RF voice header」等が出力されれば、DMR信号の受信に成功しています。

🖥️ 実行コマンド

$ ./MMDVMHost MMDVM.ini

📋 起動メッセージ例(正常)

I: 2025-05-30 01:14:41.258 MMDVMHost-20250424 is starting
I: 2025-05-30 01:14:41.258     Callsign: JJ2YYK
I: 2025-05-30 01:14:41.259     Protocol: uart
I: 2025-05-30 01:14:41.260     UART Port: /dev/ttyAMA0
...
I: 2025-05-30 01:14:41.300 DMR Slot 2, received RF voice header from 4401378 to TG 9

このようなログが出れば、受信動作は成功です。


以上で、DMR受信専用のMMDVMHost構成が完了です。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です