☆ Raspberry Pi Zero 2 W + STM32_MMDVM_HS_HAT での MMDVMHost 構築手順(DMR受信専用)
2025年5月26日
2026年6月3日
概要
このドキュメントは、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チャンネル) |
