Raspberry Pi Zero WHとArduSimple simpleRTK2Bで構成する自前RTK基準局を、開発場所で完成品として検証してから本番場所へ設置し、正式運用を開始するまでの手順を定めます。Issue #33の本番設置・コミッショニング手順です。
この手順では、試験を次の2段階に分けます。
本番場所を開発・デバッグ場所にしません。現地で問題が見つかった場合はログを持ち帰り、修正後に設置前試験から再確認します。
Droggerタブレット
WireGuard: 10.0.0.3
|
| スマホBluetoothテザリング
v
VPS
WireGuard: 10.0.0.1
|
v
基準局 Raspberry Pi Zero WH
WireGuard: 10.0.0.4/32
NTRIP: 10.0.0.4:2101/RTK2B_BASE
|
| USB(simpleRTK2BのPOWER+GPS側)
v
simpleRTK2B + 本番用GNSSアンテナ
Pi、WireGuard、RTKLIB、systemdの導入内容はrtk-base-pi-zero-wh-setup.mdを正本とします。
2026-07-31時点の状況です。完了済みの試験は、部材を変更しない限り反復してコネクタやSDカードを消耗させません。
str2str異常終了後のsystemdによる自動復旧Running復帰確認開始前に、仮設場所で次が成立していることを確認します。
wg-quick@wg0がenabled / activeである。drogger-rtk-base.serviceがenabled / activeである。POWER+GPS側へ接続され、u-blox GNSS receiverとして認識される。10.0.0.4:2101/RTK2B_BASEへ接続し、ICY 200 OKとRTCM3継続受信を確認できる。10.0.0.4宛経路がtun0、送信元が10.0.0.3になる。Runningになる。FLOAT/FIXはこのフェーズの必須条件ではありません。
本番へ持ち込む装置と部材を確定します。試験用部材から本番用部材へ交換する場合は、交換後にフェーズ2以降を実施します。
可能ならアンテナだけを屋外へ設置し、Pi、simpleRTK2B、電源は屋内または十分に保護された場所へ置きます。
2026-07-31写真・申告確認:
2026-07-31ケーブル束線後の写真確認:
本番用アンテナはDrogger VRSC付属の3周波GNSSアクティブアンテナです。メーカー仕様ではアンテナ本体の防水・防塵はIP67のため、正常な筐体へ追加の防水処理や袋掛けは行いません。
/etc/wireguard/wg0.confの復旧方法を確認する。drogger-rtk-base.serviceの正本がdeploy/systemd/drogger-rtk-base.serviceにある。2026-07-31に、/etc/wireguard、NTRIP systemd unit、udevルール、NetworkManager接続設定をtar.gzへ保存し、このPCのリポジトリ外へmode 600で回収しました。Pi側と回収後のSHA-256が一致することを確認済みです。バックアップはWireGuard秘密鍵とWi-Fi認証情報を含むため、リポジトリ、Issue、Wikiへ添付しません。
WireGuard側から接続できない場合は、本番LAN内の端末からPiのmDNS名またはDHCPアドレスへSSH接続します。2026-07-31の試験では、同一LANからdrogger-rtk-base.localを名前解決し、LAN側SSHでWireGuardを再開始できることを確認しました。本番設置後のDHCPアドレスは変わりうるため、固定値を復旧手順へ記録しません。
本番用ケース、本番用電源、本番用USBケーブルを使用し、本番へ持ち込む形で試験します。
wg-quick@wg0が自動起動する。drogger-rtk-base.serviceが自動起動する。/dev/serial/by-id/...がunitの設定と一致する。POWER+GPS側へ接続されている。vcgencmd get_throttledに低電圧の現在値・履歴がない。0.0.0.0:2101がLISTENしている。127.0.0.1:2101/RTK2B_BASEへ接続できる。10.0.0.4:2101/RTK2B_BASEへ接続できる。ICY 200 OKである。10.0.0.4:2101へTCP接続できる。10.0.0.4:2101/RTK2B_BASEがNtrip Runningになる。このPCから移設後のPiへ管理接続する場合は、VPSを踏み台にWireGuard固定アドレスを使用します。
ssh -o ProxyJump=keinafarm \
-i ~/.ssh/id_ed25519_rtkbase \
droggerrtkbase@10.0.0.4
各試験について、開始時刻、操作、期待動作、実際の復旧時間、手動操作の有無、関連ログを記録します。
wg-quick@wg0とdrogger-rtk-base.serviceがactiveになることを確認する。合格条件:
Runningへ戻る。2026-07-30に、Pi再起動後のWireGuard、NTRIP service、固定by-id、TCP 2101、RTCM配信の自動復旧を確認しました。Android実機でのNtrip復帰確認だけ未実施です。
合格条件:
Runningへ戻る。2026-07-31実施結果:
wg-quick@wg0とdrogger-rtk-base.serviceはactive、failed unitはなかった。vcgencmd get_throttledは0x0だった。ICY 200 OKと、RTCM3 preamble 0xd3に続くデータを確認した。POWER+GPS側へ戻す。合格条件:
/dev/ttyACM0の番号ではなく固定by-idで復旧する。Runningへ戻る。2026-07-30に、USB切断時のservice自動停止と、再接続時の固定by-id、TCP 2101、RTCM入力、NTRIP配信の自動復旧を確認しました。既存str2strが古いTTYを保持する問題は、device unitへのBindsToとudev起動要求で修正済みです。Android実機でのNtrip復帰確認だけ未実施です。
合格条件:
この自家用常設設備ではUSBを通常運用中に抜き差ししません。試験の反復でコネクタを消耗させず、本番では抜け止めを施します。USB未接続起動後のhotplugで列挙しない場合は、USBを接続したままPiを再起動する運用を許容します。
2026-07-30に、USB未接続でもOSとWireGuardが正常起動することを確認しました。起動後のUSB接続でPi DWC OTGが列挙できない事象を確認したため、USBを常時接続して抜け止めを施し、USBを外した場合は接続状態でPiを1回再起動する運用とします。
str2str異常終了str2strを意図的に終了する。Restart=alwaysにより再起動することを確認する。合格条件:
systemctl startなしで復旧する。2026-07-30にstr2strを意図的に終了し、systemdが6秒で自動再起動すること、PIDとNRestartsの変化、TCP 2101、ICY 200 OK、RTCM配信の復帰を確認しました。
合格条件:
Runningへ戻る。2026-07-31実施結果:
nmcli radio wifi offで切断した。wg-quick@wg0、drogger-rtk-base.service、TCP 2101を確認した。ICY 200 OKとRTCM3データを再受信でき、Pi、WireGuard、NTRIP serviceの手動再起動は不要だった。合格条件:
Runningへ戻る。実施判断(2026-07-31):
この試験は実施対象外とします。稼働中の共有ルーターまたは上位回線を止めると、基準局以外の利用者と機器にも影響します。一方、PiのWi-Fi切断・再接続試験で、ネットワーク復帰後にWireGuardが再確立し、遠隔SSH、NTRIP、RTCM配信まで手動再起動なしで復旧することを確認済みです。共有設備を停止して追加確認する便益は限定的であり、影響に見合いません。
本番場所で実際の回線断が発生した場合は、Piやサービスを先に再起動せず、回線復帰後のWireGuardハンドシェイク、遠隔SSH、NTRIP配信を確認して実績を記録します。この判断により、上記の合格条件は未確認のまま残しますが、設置前完成判定を妨げる未解決試験とは扱いません。
合格条件:
10.0.0.4/32と経路が維持される。2026-07-31実施結果:
10.0.0.4経由SSHが到達不能になることを確認した。wg-quick@wg0を再開始した。これにより、WireGuard停止中でもLAN側から現地復旧できることを確認した。10.0.0.4/32、WireGuard経由SSH、NTRIP service、TCP 2101が復帰した。ICY 200 OKとRTCM3データを確認した。試験用timerは通常運用時の常設機能ではない。次をすべて満たした場合だけ、本番設置へ進みます。
候補地点の全景、アンテナ設置部、機器設置部、電源、ケーブル経路を写真と寸法で記録します。
POWER+GPS側へ接続する。アンテナ固定後は、座標確定と正式な変更手順なしに位置を動かしません。
2026-07-31に本番場所への設置を実施しました。設置後、このPCからVPSをProxyJumpとしてPiのWireGuard固定アドレス10.0.0.4へSSH接続でき、LAN側DHCPアドレスに依存しない遠隔管理経路が成立していることを確認しました。アンテナ固定方法、アンテナ高、ケーブル経路、設置写真は現地記録として追加します。
Survey-inの時間・精度条件は、根拠とともに作業記録へ残します。将来、より正確な既知座標へ変更する場合は、変更前座標、変更後座標、変更理由、影響、再検証結果を記録します。
2026-07-31設置直後のSurvey-in確認:
Minimum Observation Time = 3600s、Required Position Accuracy = 0.5000mのSurvey-in設定を保存済みである。2026-07-31 11:38以降の再確認:
convbinで解析した。ICY 200 OKを返す。2026-07-31設置直後の遠隔確認:
wg-quick@wg0 / drogger-rtk-base.service: enabled / active0.0.0.0:2101でLISTENstr2str: USB入力を約19kbpsで継続受信、NRestarts=0vcgencmd get_throttled: 0x0ICY 200 OKを確認し、8,192バイトの短時間サンプル中にRTCM3 preamble 0xd3を25個確認した。$GNRMC等のNMEAも含まれている。simpleRTK2Bの設定ではRTCM出力をUSBへ追加したが、NMEA出力を無効化していないため、設置前から同じ構成だった可能性が高い。過去の短時間確認はサンプル先頭がRTCM3 preamble 0xd3であることを見ただけで、NMEAが存在しないことは確認していなかった。RTCM3フレームは継続して含まれており、同じ構成でDrogger GPSのNtrip接続実績もあるため、NMEA混在だけを設置後の異常または運用ブロッカーとは判定しない。必要RTCMメッセージ種別と周期の確認、および1005の本番座標との照合は別項目として未完了である。bt-panを確立する。10.0.0.4がAndroidのtun0経路になる。10.0.0.4:2101へTCP接続できる。10.0.0.4:2101/RTK2B_BASEでNtrip Runningになる。この段階でFLOAT/FIXを確認します。ただし、NTRIP経路成立の合否とFLOAT/FIXの合否は分けて記録します。
設置前に完成済みの復旧機能を、本番環境依存部分だけ再確認します。
現地で新しい復旧ロジックやサービス構成を作りません。
本番設置状態で、最低24時間を目安に連続運転します。可能なら72時間まで延長します。
2026-07-31 11:43:35 JSTに24時間連続運転試験を開始しました。
開始時状態:
wg-quick@wg0 / drogger-rtk-base.service: activedrogger-rtk-base.serviceのNRestarts: 0vcgencmd get_throttled: 0x0最短の終了確認時刻は2026-08-01 11:43:35 JSTです。
記録する項目:
異常が発生した場合は、発生時刻、復旧時刻、利用者への影響、自動復旧の成否、関連ログを保存します。
新Pi経路のコミッショニングと連続運転が成功した後に実施します。
DOCKER-USERでPi向け往路・戻り規則を各1件に整理する。192.168.68.134/32だけを削除する。192.168.4.1/32と10.0.0.4/32は残す。管理方式を確認せず、iptables-persistentや独自systemd unitを追加しません。
次をすべて満たした日を正式運用開始日とします。
Runningになる。定期的に次を確認します。
drogger-rtk-base.serviceの稼働状態と再起動回数アンテナを動かした場合は通常復旧ではなく、フェーズ5以降を再実施します。
実施日:
実施者:
フェーズ:
場所:
使用機器・部材:
ソフトウェア・設定の版:
開始状態:
実施内容:
期待結果:
実測結果:
復旧時間:
取得ログ:
合格 / 不合格:
未解決事項:
次にすること: