Armadillo(ABOS対応製品)で、GPSデバイス(BU-353S4)を動かしてみました。
ABOSのカーネルでは、GPSデバイス(BU-353S4)とUSB接続するための
USBシリアルのデバイスドライバ(USB CP210x family of UART Bridge Controllers)がデフォルトで有効になっています。
ついては、GPSデバイス(BU-353S4)だけ接続してると、/dev/ttyUSB0で認識します。
備考)他のUSBデバイスが接続されていたり、中途半端にUSBデバイス挿抜してると
デバイス番号が変わる可能性があります。
以下では、/dev/ttyUSB0で認識されていることを前提とします。
ここでは、とりあえずGPSデバイス(BU-353S4)を動かす手順です。
(以下の手順では実施した内容は保存されません。Armadilloを再起動すると、再度実行し直す必要があります。)
GPSデバイス(BU-353S4)を動かす手順
シリアル通信のボーレートを合わせます。
armadillo:~# stty -F /dev/ttyUSB0 4800
Armadilloをインターネット接続可能なネットワークに接続して、
GPS通信に必要なパッケージ(gpsd)をインストールします。
armadillo:~# apk update
armadillo:~# apk add gpsd
armadillo:~# apk add gpsd-clients
/etc/conf.d/gpsdの内容を下記に書き換えます。
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# Config file for gpsd server
GPSD_OPTIONS=""
DEVICES="/dev/ttyUSB0"
GPSD_SOCKET="-N -F /var/run/gpsd.sock -b -n"
gpsdを再起動します。
armadillo:~# rc-service gpsd restart
cgpsコマンドで、GPSの情報が確認できます。
armadillo:~# cgps -s
実行結果は下記のように表示されます。
(下記、枠線の表示が実際と異なりますが、ご容赦ください。)
x Time 2025-02-03T07:58:01.060Z ( 0)xxGNSS S PRN Elev Azim SNR Usex
x Latitude 35.62433666 N xxGP 2 2 75.5 352.5 30.0 Y x
x Longitude 139.72335287 E xxGP 10 10 5.5 33.0 31.8 Y x
x Alt (HAE, MSL) 123.240, 88.160 m xxGP 17 17 19.0 291.0 15.0 Y x
x Speed 0.63 km/h xxGP 27 27 10.5 93.0 26.5 Y x
x Track (true, var) 92.8, -7.6 deg xxGP 9 9 21.0 123.0 0.0 N x
x Climb 0.72 m/min xxGP 16 16 69.0 96.0 0.0 N x
x Status 3D FIX (5 secs) xxGP 19 19 6.5 160.5 0.0 N x
x Long Err (XDOP, EPX) 0.79, +/- 11.8 m xxGP 20 20 47.5 279.0 0.0 N x
x Lat Err (YDOP, EPY) 1.68, +/- 25.2 m xxGP 24 24 15.0 268.5 0.0 N x
x Alt Err (VDOP, EPV) 1.65, +/- 38.0 m xxGP 26 26 4.5 37.5 0.0 N x
x 2D Err (HDOP, CEP) 1.80, +/- 34.2 m xxGP 32 32 3.0 126.0 0.0 N x
x 3D Err (PDOP, SEP) 1.80, +/- 34.2 m xx x
x Time Err (TDOP) 1.17 xx x
x Geo Err (GDOP) 2.74 xx x
x Speed Err (EPS) +/- 181 km/h xx x
x Track Err (EPD) n/a xx x
x Time offset 0.547594892 s xx x
x Grid Square PM95uo69 xx x
x ECEF X, VX -3959989.000 m -0.120 m/sxx x
x ECEF Y, VY 3355541.000 m -0.120 m/sxx x
x ECEF Z, VZ 3694462.000 m 0.000 m/sxx x
上記表示は、Ctrl+Cで終了します。
時刻同期してみる
GPSデバイス(BU-353S4)の時刻と同期させてみます。
なお、GPSデバイス(BU-353S4)はUSB接続なので、PPSを使った時刻精度は得られません。
用途としては、ネットワーク接続不可な環境で、GPSの時刻を使わざるを得ない場合かと思います。
以下では、GPSデバイス(BU-353S4)のみから時刻同期する手順を説明します。
NTPサーバー(chronyd)関連のデフォルト設定を無効化(※)しておきます。
※)
Armadillo-X2製品マニュアル「3.10. Network Time Protocol (NTP, ネットワーク・タイム・プロトコル) の設定」を参考。
ここでは、中身のないconfファイルを作って、デフォルトのconfを無効化します。
armadillo:~# touch /etc/chrony/conf.d/initstepslew.conf
armadillo:~# touch /etc/chrony/conf.d/servers.conf
/etc/chrony/chrony.confの内容を下記に書き換えます。
# include files ending in .conf in the following directories
# if a file has the same name in both, only the first one is loaded
# otherwise files are loaded in lexicographical order in the file
# names.
# Note /etc/atmark/chrony.conf.d is left for backwards compatibility,
# files in /etc/chrony/conf.d can be modified normally.
confdir /etc/atmark/chrony.conf.d /etc/chrony/conf.d /lib/chrony.conf.d
refclock SHM 0 refid GPS precision 1e-1 offset 0.9999 delay 0.2
Armadilloをネットワーク接続を外してから、下記コマンドででたらめな日付を設定します。
(このあと、GPSの情報のみで時刻が反映されることを確認するため)
armadillo:~# date -s "2022-11-11"
Fri Nov 11 00:00:00 JST 2022
armadillo:~# date
Fri Nov 11 00:00:03 JST 2022
NTPサーバー(chronyd)を再起動します。
armadillo:~# rc-service chronyd restart
時刻同期は、chronyc sources -vで確認してみます。
restart直後は、同期がとれてない(実行結果の末尾「#? GPS」)ので、日付はでたらめなままです。
armadillo:~# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#? GPS 0 4 0 - +0ns[ +0ns] +/- 0ns
armadillo:~# date
Fri Nov 11 00:00:36 JST 2022
数分程度待ってから、再度確認します。
実行結果、「#* GPS」となっていれば、GPSと同期がとれているらしく、
dateコマンドの実行結果がGPSの時刻に更新されています。
armadillo:~# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#* GPS 0 4 37 17 -2103us[-6203us] +/- 200ms
armadillo:~# date
Tue Feb 4 08:08:03 JST 2025