🔧 補足【ステップ2】UARTポート(ttyAMA0)専用化の目的と理由
2025年5月30日
2025年6月2日
🧩 1. ttyAMA0 はデフォルトで OSやBluetoothの制御用に使われている
Raspberry Pi OS(特に32bit Legacy)では:
ttyAMA0(PL011 UART)が Bluetooth に割り当てられることがある- また、**シリアルコンソール(login用のgetty)**が
ttyAMA0にバインドされる設定も有効
これが原因で、MMDVM_HS_HATと通信しようとしてもポートが既に占有されているため失敗するのです。
❌ 典型的な競合例
| デバイス | 機能 | 競合の結果 |
|---|---|---|
hciuart.service | Bluetooth通信にUARTを使用 | MMDVMが使用できない |
serial-getty@ttyAMA0.service | シリアルログイン端末として動作 | 起動時にMMDVMHostがエラーになる |
✅ 解決のための手順(ステップ2)
- Bluetoothサービス無効化
hciuartとbluetoothを停止し、再起動後にも起動しないようにします。 bashコピーする編集するsudo systemctl disable hciuart sudo systemctl stop hciuart sudo systemctl disable bluetooth sudo systemctl stop bluetooth - シリアルコンソールの無効化
OSがttyAMA0でgetty(ログイン待ち受け)を動かすのを完全に止めます。 bashコピーする編集するsudo systemctl stop serial-getty@ttyAMA0.service sudo systemctl disable serial-getty@ttyAMA0.service sudo systemctl mask serial-getty@ttyAMA0.servicemaskすることで、ユーザーや他のサービスが再度enableしようとしても無効のままになります。
❓ なぜ最初から enable されているのか?
これは Raspberry Pi OS の汎用初期設定の一部として、次の意図で有効化されているからです:
- Bluetooth機能 を使う想定(BLE通信や外部デバイス連携)
- デバッグ用のシリアル端末として
ttyAMA0を利用可能にする- USB経由でターミナルからログインできるようにする設計
このため、無線通信用途でGPIO直結のデジタルモデム(MMDVM_HS_HATなど)を使用する場合は、このデフォルト設定が障害になるのです。
🧪 補足:/boot/firmware/config.txt の設定も関係する
これらの無効化とあわせて、/boot/firmware/config.txt に以下の設定を入れることで、
Bluetooth → mini UART(ttyS0)に回して、PL011 UART(ttyAMA0)をフル機能で使用可能にします。
iniコピーする編集するdtoverlay=disable-bt
enable_uart=1
✅ まとめ
| 設定対象 | 役割 | なぜ無効化するのか |
|---|---|---|
hciuart.service, bluetooth.service | Bluetooth機能 | UART使用を避けるため |
serial-getty@ttyAMA0.service | シリアルログイン端末 | MMDVM通信と競合するため |
/boot/firmware/config.txt | UART制御設定 | ttyAMA0を完全解放するため |
これらをすべて行うことで、ttyAMA0がMMDVM専用ポートとして使えるようになります。
