☆ Raspberry Pi Zero 2 W + STM32_MMDVM_HS_HAT での MMDVMHost 構築手順(DMR受信専用)
2025年5月26日
2025年7月7日
Raspberry Pi Zero 2 W + STM32_MMDVM_HS_HAT での MMDVMHost 構築手順(DMR受信専用)
このドキュメントは、Raspberry Pi OS Legacy 32bit Lite 上で MMDVMHost を使用して、MMDVM_HS_HAT を介して DMR 信号を受信するための構築手順と、不具合対応も含めた備忘録です。
📦 前提環境
- SBC: Raspberry Pi Zero 2 W
- OS: Raspberry Pi OS Legacy 32bit Lite
- モデム: STM32_MMDVM_HS_HAT Rev1.7(GPIO接続)
- 使用周波数: 438.710 MHz
- DMR ID: 4401505
- UARTポート:
/dev/ttyAMA0
🛠 ステップ1:ビルドツールとGitのインストール
sudo apt update
sudo apt install -y git build-essential
🛠 ステップ2:UART有効化(Bluetooth無効化)
/boot/config.txt 編集
sudo nano /boot/config.txt
末尾に以下を追加:
enable_uart=1
dtoverlay=pi3-disable-bt
Bluetoothサービス無効化
sudo systemctl disable hciuart
sudo systemctl disable bluetooth
gettyによるUART占有を防止
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo systemctl mask serial-getty@ttyAMA0.service
再起動
sudo reboot
🧪 ステップ3:UARTデバイス確認と権限設定
デバイス確認
ls -l /dev/ttyAMA0
pi-star ユーザーが tty グループに属しているか確認
groups pi-star
含まれていなければ:
sudo usermod -aG tty pi-star
sudo reboot
🛠 ステップ4:MMDVMHostの取得とビルド
mkdir -p ~/DMRTools
cd ~/DMRTools
git clone https://github.com/g4klx/MMDVMHost.git
cd MMDVMHost
make -j4
🛠 ステップ5:設定ファイル MMDVM.ini の作成
nano MMDVM.ini
以下のような構成を設定(DMR受信用):
[General]
Callsign=JJ2YYK ## 元: G9BF
Id=4401505 ## 元: 123456
Timeout=180
Duplex=0 ## 元: 1
# ModeHang=10
RFModeHang=10
NetModeHang=3
Display=None
Daemon=0
[Info]
RXFrequency=438710000 ## 元: 435000000
TXFrequency=438710000 ## 元: 435000000
Power=1
Latitude=35.0 ## 元: 0.0
Longitude=135.0 ## 元: 0.0
Height=10 ## 元: 0
Location=Shiga ## 元: Nowhere
Description=PiZeroDMR ## 元: Multi-Mode Repeater
URL=https://example.com ## 元: www.google.co.uk
[Log]
DisplayLevel=1
FileLevel=1
FilePath=.
FileRoot=MMDVM
FileRotate=1
[Modem]
Protocol=uart
UARTPort=/dev/ttyAMA0 ## 元: コメントアウトされていた
UARTSpeed=115200 ## 元: 460800
TXInvert=1
RXInvert=0
PTTInvert=0
TXDelay=80 ## 元: 100
DMRDelay=0
RXLevel=50
TXLevel=50
RFLevel=100
RSSIMappingFile=RSSI.dat
UseCOSAsLockout=0
Trace=0
Debug=0
[DMR]
Enable=1
Beacons=0
ColorCode=1
SelfOnly=1 ## 元: 0
EmbeddedLCOnly=0
DumpTAData=1
CallHang=3
TXHang=4
[DMR Network]
Enable=0 ## 元: 1
Type=Gateway
LocalAddress=127.0.0.1
LocalPort=62032
RemoteAddress=127.0.0.1
RemotePort=62031
Jitter=360
Slot1=1
Slot2=1
Debug=0
# 以下のセクションは無効化したいが削除せずコメントアウト
#[D-Star]
#Enable=1
#[System Fusion]
#Enable=1
#[P25]
#Enable=1
#[NXDN]
#Enable=1
#[M17]
#Enable=1
#[POCSAG]
#Enable=1
#[FM]
#Enable=1
#[AX.25]
#Enable=1
#[D-Star Network]
#Enable=1
#[System Fusion Network]
#Enable=1
#[P25 Network]
#Enable=1
#[NXDN Network]
#Enable=1
#[M17 Network]
#Enable=1
#[POCSAG Network]
#Enable=1
#[FM Network]
#Enable=1
#[AX.25 Network]
#Enable=1
#[TFT Serial]
#Port=/dev/ttyAMA0
#[Nextion]
#Port=/dev/ttyAMA0
#[OLED]
#Type=3
#[LCDproc]
#Address=localhost
#[Lock File]
#Enable=0
#[Remote Control]
#Enable=0
🚀 ステップ6:MMDVMHost 起動
cd ~/DMRTools/MMDVMHost
./MMDVMHost MMDVM.ini
✅ 正常動作ログ例
M: Opening the MMDVM
M: Using /dev/ttyAMA0 at 115200 baud
M: MMDVM protocol version: 1, description: MMDVM_HS_Hat-v1.5.2 ...
M: Mode set to Idle
📡 RF受信成功ログ例(送信機で送信後)
M: DMR Slot 2, received RF voice header from 4401505 TG 1
D: DMR Slot 2, audio sequence no. X, errs: 0/141 ...
M: DMR Slot 2, received RF end of voice transmission ... BER: 0.2%
⚠ よくあった不具合と対処まとめ
| 症状 | 原因 | 対処 |
|---|---|---|
Cannot open device - /dev/ttyAMA0 | agetty による占有 | serial-getty@ttyAMA0.service を停止・無効・マスク |
device.empty() エラー | MMDVM.ini の UARTPort 未指定 | UARTPort=/dev/ttyAMA0 を明記 |
RF user rejected | SelfOnly=1 の設定 | 他局も受信したいなら SelfOnly=0 に変更 |
✅ ここまでの結果
- MMDVMHost は Pi Zero 2 W + GPIO接続の MMDVM_HS_HAT にて正常に動作
- UART通信成功
- DMR受信フレームと音声データのログ確認済み
🔜 今後の拡張候補
- AMBEserver + Analog_Bridge による音声再生
- DMRネットワーク接続(BrandMeisterなど)
- Web UI やログビューア導入
- DMR IDデータベース連携
- 自動応答・定時送信機能
以上が、Pi Zero 2 W 上で MMDVMHost を用いた DMR 受信専用構成の構築手順です。
https://www.petitmonte.com/labo/wave-format
| ビット | 符号あり 16bit [PCM] |
|---|---|
| 周波数 | 8000 Hz |
| チャンネル | モノラル (1チャンネル) |
