FriendlyCore環境にてNanoPiNEOとGNSS測位ボードと接続。
測位データ取得を常駐アプリ化するための設定を行う。
SimpleRTK2Bとの接続
接続:
USB2.0 Conn(NanoPi NEO) – J1_MicroUSB(simpleRTK2B)
認識確認
$ lsusb
Bus 008 Device 003: ID 1546:01a9 U-Blox AG
シリアルポート名の確認
$ ls /dev/ | grep -e ttyUSB -e ttyACM
ttyACM0
※シリアルポート名はttyACM0であることを確認
str2strの実行
$ sudo str2str -in serial://ttyACM0:115200#ubx -out /home/share/`date +%Y%m%d%H%M%S`.ubx
armbianの時と違い、sudoが無いとエラー発生
ttyACM0へのアクセスにroot権限必要だがchmodしても起動やUSB再接続のたびに戻ってしまう。
対処方法
$ sudo vi /lib/udev/rules.d/50-udev-default.rules
viで下記修正
(修正前)KERNEL==”tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*”, GROUP=”dialout”
(修正前)KERNEL==”tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*”, GROUP=”dialout”, MODE=”0666″
この処理により再起動後も下記コマンドで正常動作を確認
$ str2str -in serial://ttyACM0:115200#ubx -out /home/share/`date +%Y%m%d%H%M%S`.ubx
str2strの常駐プログラム化
シェルスクリプト新規作成
$ sudo vi /usr/bin/str2str.sh
内容:
#!/bin/bash
str2str -in serial://ttyACM0:115200#ubx -out /home/share/`date +%Y%m%d%H%M%S`.ubx
シェルスクリプトファイルの実行権限付与
$ sudo chmod +x /usr/bin/str2str.sh
ユニットファイル作成
FriendlyCore環境ではsystemdをそのまま実行すると何故か認証を求められ、何を入力しても先へ進めない状態に。
ユーザー権限でサービス実行を行うための設定を行う。
ユニットファイルを置くフォルダを作成
$ mkdir -p ~/.config/systemd/user/
ユニットファイルの新規作成
$ sudo vi ~/.config/systemd/user/str2str.service
内容:
[Unit]
Description=RTKLIB str2str Service
[Service]
ExecStart=/usr/bin/str2str.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
※注:ExecStartは絶対パスで指定しないとstart実行時にエラーとなる。
常駐開始
$ systemctl –user start str2str.service
常駐終了
$ systemctl –user stop str2str.service
サービス状態確認
$ systemctl –user status str2str.service
※上記の「–user」はハイフン2つ(表示が何故かハイフン1つに変換されてしまう)
上記コマンドで無事に共有フォルダに測位データが出力されていることを確認できた。