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