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

概要

Raspberry Pi Zero 2 W + STM32_MMDVM_HS_HAT(GPIO 接続)の環境で、MMDVMHost を受信専用で動作させるための実装手順書です。

前提条件

動作確認環境

  • SBC:Raspberry Pi Zero 2 W
  • OS:Raspberry Pi OS Legacy Lite(32bit)
  • モデム:STM32_MMDVM_HS_HAT Rev1.7(GPIO 接続)
  • DMR ID:4401505
  • 周波数:438.710 MHz

ステップ 1:ロケール・タイムゾーン・キーボード設定

ロケール(Locale)の設定

ロケールは、OS の表示言語や日付・時刻の表記、文字コードの形式などに影響する設定です。日本向けの推奨設定は以下のとおりです。

  • 言語:ja_JP.UTF-8
  • タイムゾーン:Asia/Tokyo
  • キーボード:Japanese(JIS 配列)

手順

1. ロケール設定を起動する。

sudo dpkg-reconfigure locales

2. 一覧から ja_JP.UTF-8 UTF-8 にスペースでチェックを入れる。

3. デフォルトロケールとして ja_JP.UTF-8 を選択する。

確認コマンド:

locale

出力例:

LANG=ja_JP.UTF-8
LANGUAGE=
LC_ALL=

タイムゾーンの設定

1. タイムゾーンを Asia/Tokyo に設定する。

sudo timedatectl set-timezone Asia/Tokyo

キーボード設定(任意)

1. キーボード設定を起動する。

sudo dpkg-reconfigure keyboard-configuration

2. 以下を選択する。

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

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

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

  • git:GitHub からソースコードを取得するために使用
  • build-essential:C/C++ のビルド環境(make、gcc など)をまとめて導入
  • libusb-1.0-0-dev:一部 USB 接続型のモデムに必要なライブラリ(GPIO 接続でも念のため導入を推奨)

1. パッケージリストを更新し、依存パッケージをインストールする。

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 より強力)。

1. Bluetooth および UART 競合サービスを無効化・停止・マスクする。

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 機能を完全に停止する。

1. /boot/firmware/config.txt を開く。

sudo nano /boot/firmware/config.txt

2. 以下の設定を確認・追加する。

enable_uart=1
dtoverlay=pi3-disable-bt

3. ファイルを保存して再起動する。

sudo reboot

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

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

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

1. ホームディレクトリに移動し、MMDVMHost をクローンしてビルドする。

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 とし、受信専用とする。

1. MMDVM.ini を開いて編集する。

nano MMDVM.ini

2. 全文の MMDVM.ini 設定を貼り付ける(別途共有済みの内容)。

ステップ 7:MMDVMHost の起動テスト

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

1. MMDVMHost を起動する。

./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 構成が完了です。

JJ2YYK
  • JJ2YYK

コメントする

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