📘 MMDVMHost構築手順書(OLED表示・ログ出力・DMR ID対応)20250619版
2025年6月19日
2025年6月25日
🗓 作業日:2025年6月19日
👤 作業者:pi@idtab
📡 コールサイン:JJ2YYK
📍 運用場所:Owariasahi-City, Aichi pref.
🔧 モデム:STM32_MMDVM_HS_HAT Rev1.7(GPIO)
📶 周波数:438.710 MHz / DMR ID:4401505
🔧 システム構成
| 項目 | 内容 |
|---|---|
| SBC | Raspberry Pi Zero 2 W |
| OS | Raspberry Pi OS Legacy Lite(32bit) |
| 表示 | OLED(I2C, Type=3) |
| 通信 | UART /dev/ttyAMA0 |
| モード | DMR専用(他モード無効) |
| ログ | /var/log/pi-star/MMDVM-YYYY-MM-DD.log |
| ID表示 | DMRIds.dat を使用 |
✅ ステップ1:依存パッケージのインストール
sudo apt update
sudo apt install -y git build-essential libusb-1.0-0-dev libasound2-dev i2c-tools libi2c-dev
✅ ステップ2:UARTとBluetoothの解放
sudo systemctl disable hciuart
sudo systemctl disable bluetooth
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo systemctl mask serial-getty@ttyAMA0.service
sudo reboot
✅ ステップ3:raspi-configでI2CとUARTの有効化
sudo raspi-config
- Interface Options → P6 Serial Port → 「コンソールを使わない」→「シリアル通信を使う」
- Interface Options → P5 I2C → 有効化
✅ ステップ4:MMDVMHostの取得とビルド
mkdir -p ~/DMRTools
cd ~/DMRTools
git clone https://github.com/g4klx/MMDVMHost.git
cd MMDVMHost
make -j2
✅ ステップ5:OLEDライブラリの導入とインストール
git clone https://github.com/hallard/ArduiPi_OLED.git
cd ArduiPi_OLED
make -f Makefile.Pi.OLED CFLAGS='-O3 -Wall -DBCM2835_USE_GPIOMEM'
sudo make install
✅ ステップ6:GPIOアクセス権限の設定
echo 'KERNEL=="gpiomem", GROUP="gpio", MODE="0660"' | sudo tee /etc/udev/rules.d/99-gpiomem.rules
sudo addgroup gpio
sudo usermod -a -G gpio pi
sudo reboot
✅ ステップ7:MMDVM.iniの主な設定
[General]
Callsign=JJ2YYK
Id=4401505
Display=OLED
LookupFile=/usr/local/etc/DMRIds.dat
[Log]
DisplayLevel=1
FileLevel=1
FilePath=/var/log/pi-star
FileRoot=MMDVM
[Modem]
Port=/dev/ttyAMA0
TXInvert=1
UARTPort=/dev/ttyAMA0
UARTSpeed=115200
[DMR]
Enable=1
ColorCode=1
Id=4401505
[OLED]
Type=3
Rotate=0
Scroll=0
Brightness=0
✅ ステップ8:RSSI.dat 警告の回避
sudo mkdir -p /usr/local/etc
sudo touch /usr/local/etc/RSSI.dat
✅ ステップ9:ログ出力ディレクトリの作成と権限設定
sudo mkdir -p /var/log/pi-star
sudo chown pi:pi /var/log/pi-star
✅ ステップ10:MMDVMHostの起動
cd ~/DMRTools/MMDVMHost
sudo ./MMDVMHost MMDVM.ini
ログ確認:
tail -f /var/log/pi-star/MMDVM-2025-06-19.log
✅ ステップ11:DMR IDデータベースの導入
1. CSVダウンロード
wget https://radioid.net/static/user.csv -O /usr/local/etc/user.csv
2. PythonスクリプトでDMRIds.datを生成
convert_csv_to_dmrids_dat.py:
#!/usr/bin/env python3
import csv
import struct
CSV_FILE = "/usr/local/etc/user.csv"
DAT_FILE = "/usr/local/etc/DMRIds.dat"
def main():
entries = []
with open(CSV_FILE, encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
try:
id = int(row["ID"])
callsign = row["Callsign"].strip().upper()
name = row["Name"].strip()
city = row["City"].strip()
state = row["State"].strip()
country = row["Country"].strip()
info = f"{name}, {city}, {state}, {country}".strip(", ")
entries.append((id, callsign, info))
except Exception:
continue
with open(DAT_FILE, "wb") as f:
f.write(struct.pack("<I", len(entries)))
for entry in entries:
id, callsign, info = entry
f.write(struct.pack("<I", id))
f.write(callsign.encode("ascii").ljust(16, b"\x00"))
f.write(info.encode("utf-8").ljust(64, b"\x00"))
print(f"Converted {len(entries)} entries to {DAT_FILE}")
if __name__ == "__main__":
main()
実行:
chmod +x convert_csv_to_dmrids_dat.py
./convert_csv_to_dmrids_dat.py
✅ ファイル構成
/usr/local/etc/
├── user.csv
├── DMRIds.dat
├── RSSI.dat
/home/pi/
└── convert_csv_to_dmrids_dat.py
~/DMRTools/MMDVMHost/
├── MMDVMHost
├── MMDVM.ini
/var/log/pi-star/
└── MMDVM-2025-06-19.log
✅ 自動更新用コマンド(任意)
wget -q https://radioid.net/static/user.csv -O /usr/local/etc/user.csv && /home/pi/convert_csv_to_dmrids_dat.py
以上が2025年6月19日時点の、Raspberry Pi + MMDVMHost構成によるDMRホットスポットの全手順です。
