背景:
私は出力に間違った時間を置くことができるように偽のGPSデバイスを作成しようとしています。次に、設定したときに設定したシリアルソースから時間を取得することを確認しchrony
てくださいgpsd
。実際のGPS出力を使用している場合は、NTPがまだ時間を受信しているかどうかは実際にはわかりません。
私が試したこと:
私はこれに従いました:https://stackoverflow.com/questions/52187/virtual-serial-port-for-linux
socat -d -d pty,raw,echo=0 pty,raw,echo=0
次に、次のように新しく変更されたフィードをパイピングしてみました。
cat /dev/ttyUSB0 | sed 's/11/15/g' > /dev/pts/5
(現在11:??UTCなので時間を変更する必要があります)
このように出力を見ればcat /dev/pts/6
そうです。 (cat /dev/ttyUSB0
交換後も同様)
今接続してみてください。
gpsd -D 5 -N -n /dev/pts/10
悪いニュースがあります:
$ sudo gpsd -D 5 -N -n /dev/pts/6
gpsd:INFO: launching (Version 3.22)
gpsd:IO: opening IPv4 socket
gpsd:IO: opening IPv6 socket
gpsd:INFO: listening on port gpsd
gpsd:PROG: NTP: shmat(15,0,0) succeeded, segment 0
gpsd:PROG: NTP: shmat(16,0,0) succeeded, segment 1
gpsd:PROG: NTP: shmat(17,0,0) succeeded, segment 2
gpsd:PROG: NTP: shmat(18,0,0) succeeded, segment 3
gpsd:PROG: NTP: shmat(19,0,0) succeeded, segment 4
gpsd:PROG: NTP: shmat(20,0,0) succeeded, segment 5
gpsd:PROG: NTP: shmat(21,0,0) succeeded, segment 6
gpsd:PROG: NTP: shmat(22,0,0) succeeded, segment 7
gpsd:PROG: successfully connected to the DBUS system bus
gpsd:PROG: shmget(0x47505344, 24512, 0666) for SHM export succeeded
gpsd:PROG: shmat() for SHM export succeeded, segment 23
gpsd:INFO: stashing device /dev/pts/6 at slot 0
gpsd:PROG: no /etc/gpsd/device-hook present, skipped running ACTIVATE hook
gpsd:INFO: SER: opening GPS data source type 6 at '/dev/pts/6'
gpsd:ERROR: SER: device open of /dev/pts/6 failed: Permission denied - retrying read-only
gpsd:ERROR: SER: read-only device open of /dev/pts/6 failed: Permission denied
gpsd:ERROR: initial GPS device /dev/pts/6 open failed
gpsd:ERROR: can't run with neither control socket nor devices open
万が一に備えて777
編集しました。/dev/pts/5
/dev/pts/6
これは実際に権限の問題ですか?それとも私の偽のGPSが足りないのでしょうか?
注:私が得ることができるアドバイスは何でも受け入れます。
- GPSから時間を取得するより良い方法
- 偽のGPSデバイスを作成するより良い方法
- 上記の偽のGPSに私は何が間違っていたのですか?
コメントに応じて、以下が関連性があると思いますstrace
。
openat(AT_FDCWD, "/dev/pts/9", O_RDWR|O_NOCTTY|O_NONBLOCK) = -1 EACCES (Permission denied)
...
openat(AT_FDCWD, "/dev/pts/9", O_RDONLY|O_NOCTTY|O_NONBLOCK) = -1 EACCES (Permission denied)
1つは最初の試みで、2番目は読み取り専用で再試行することです。 root btwでgpsdを実行しています。sudo strace /usr/sbin/gpsd -D 5 -N -n /dev/pts/9
(/dev/pts#は設定されるたびに変わります。すべて一貫していないので申し訳ありません。)