GPSアダプターで時間を設定

GPSアダプターで時間を設定

Linux環境の時間を設定できると主張するコードがあります。

http://blog.petrilopia.net/linux/raspberry-pi-set-time-gps-dongle/

date -s '01/01/2014 00:01'
sleep 1
pkill ntpd
pkill gpsd
gpsd -b -n -D 2 /dev/ttyUSB0
sleep 2
GPSDATE=`gpspipe -w | head -10 | grep TPV | sed -r 's/.*"time":"([^"]*)".*/\1/' | head -1`
echo $GPSDATE
date -s "$GPSDATE"
/usr/sbin/ntpd

ただし、PuTTyを介してこのコードを実行すると、時間は次のように設定されます。

2010年8月8日日曜日06:08:11太平洋標準時

2013年なのにGPS時間が2010年に設定される理由を知りたいです。

gpspipe -wこれはコマンドの出力です。

{"class":"TPV","tag":"MID2","device":"/dev/ttyUSB0","mode":1,"time":"1990-12-22T23:59:53.020Z","ept":0.005}
{"class":"TPV","tag":"MID2","device":"/dev/ttyUSB0","mode":1,"time":"1990-12-22T23:59:54.020Z","ept":0.005}
{"class":"SKY","tag":"MID4","device":"/dev/ttyUSB0","time":"1990-12-22T23:59:55.010Z"}
{"class":"TPV","tag":"MID2","device":"/dev/ttyUSB0","mode":1,"time":"1990-12-22T23:59:55.010Z","ept":0.005}
{"class":"TPV","tag":"MID2","device":"/dev/ttyUSB0","mode":1,"time":"1990-12-22T23:59:56.020Z","ept":0.005}
{"class":"TPV","tag":"MID2","device":"/dev/ttyUSB0","mode":1,"time":"1990-12-22T23:59:57.020Z","ept":0.005}

出力は連続的です。つまり、毎秒変化します。

ベストアンサー1

$GPSDATEとして報告されたため

Sun Aug 8 06:08:11 PKT 2010

このdate -sコマンドは、指示どおりに正確に実行されます。なぜ間違った年を報告するのですか(またはまったく報告しないのですか?)わかりません。

今、私はすでにそれを使用していますが、ntpdなぜNTPが機能するようにしないのですか?これは「GPSdateがあるので動作します」という質問ですか?

この問題をデバッグするのに役立つ最善の方法は、完全な出力を提供することです。

gpsdate -w

あなたの質問に。

gpsdate出力に応答するために追加されました:

~によるとGPSD文書TPVレコードのモードフィールドがある場合は、1「修理なし」を意味します。これは、GPS受信機が十分な(またはまったく)衛星データを見ていないことを意味します。これは時間価値がゴミであることを意味し、1990年や2014年を見ると当然理解になります。スクリプトで正しいGPS修正を取得するのにsleep 2時間がかかりません。gpsd長く待つと役に立ちます。正しいアンテナを接続しないと、問題が解決するまで永遠に待ちます。

これネットワーク時間プロトコル実装にはntpdGPSが動作する必要はありません。他のインターネットホストと時刻同期情報をやり取りし、その一部はGPSなどの基準ソースから時計を取得します。スクリプトはntpdを停止して再起動するので、GPS修正を忘れて使用することができます。たとえば、私がこれを入力しているコンピュータはntpdを使用し、UTCで+4.7ミリ秒の違いがあります。これは多くの目的で非常に正確です。これを使用して、ntpq -p時計が同期されているかどうか、どのくらいうまく同期しているかを確認できます。

おすすめ記事