✅ 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 モデム専用にする必要があります。
hciuartとbluetoothサービスが有効だと 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]のCallsignやIdはライセンスに基づいた正確な情報を設定する。[Modem]のUARTPortは正確に/dev/ttyAMA0を指定すること(誤ると起動エラー)。DMRセクションはEnable=1とColorCode=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 構成が完了です。
