orolia2s / oscillatord Goto Github PK
View Code? Open in Web Editor NEWDaemon used to discipline the Atomic Reference Time Card from Orolia
License: GNU General Public License v2.0
Daemon used to discipline the Atomic Reference Time Card from Orolia
License: GNU General Public License v2.0
Tried to run the oscillatord v3.3.9 on CLS Time Card to configure the new u-blox module, however it comes up with permission error. Please refer to the attached log file.
oscillatord config ublox fail log.txt
Oscillatord 3.4.5 is segfaulting
After updating to Oscillatord 3.5 we can no longer get the "disciplining" parameters for CLS time card. We check if one of the sub parameters "ready_for_holdover" is true or false and based on the result we start the holdover test or continue disciplining the Time Card.
Even though we set "disciplining: false" in oscillatord config file, can the "ready_for_holdover" parameter be added regardless of the config file parameters?
We constantly observe a problem with oscillatord - it show huge offset just before entering Holdover, which creates phase offset and provides wrong timestamp on ptp device. You can find this behaviour in logs, and the diff is visible in ts2phc logs
oscillatord.log.txt
ts2phc.log.txt
Hi guys,
We noticed an issue when a GNSS antenna signal is instantly lost (disconnected or died) we update the number of satellites, but not the survey in error
which stays on the previous level forever, giving an impression that everything is fine:
06:22:11 DEBUG GNSS data: Fix no fix (1), Fix ok: False, satellites num 0, survey in error: 1.07, antenna status: 4......
Ideally, the survey in should be updated to reflect the issue.
Thank you!
It takes a while to start monitoring socket after oscillatord
restart and until it's up we see "connection refused" which is easy to confuse with oscillatord
being down.
Please make sure we have monitoring socket up at an earlier stage.
We see a situation when oscillatord doesn't report any errors, but at the same time /dev/ptp2 returns time in 1970
In 3.4.4 these values are missing when mRO-50 is initializing. We have to have these values populated, even if these are just defaults.
Please always keep compatibility with the tools relying on the API https://github.com/facebook/time/blob/main/oscillatord/monitoring.go#L174-L189
Condition for oscillatord to be initialized properly are too strict, with no pps gnss we are locked in a loop until we have one, so (for instance), as a side effect, oscillatord main loop never start and some of the features aren't working properly, here we noticed that gnss is not connected to shared data exposed by monitoring-socket so ubx data are fetched but monitoring keeps sending dummy/default values.
We need to segregate what's about disciplining, which may indeed stay blocked in init without good conditions, and what's about basic daemon feature (here, monitoring and exposing system status properly), which should always be working even with poor conditions.
To fix GNSS case, a good start could be modifying/moving/deleting the loop (do ... while ...) line 386 in oscillatord.c and adapt the code consequently, there are probably other similar issues in the code.
In case, we wait gnss data for init, the software can't react to SIGNAL:
12:09:46 DEBUG Phasemeter: GNSS, ts 1679051385507904405
12:09:46 DEBUG Phasemeter: INT , ts 1679051386000000000
12:09:46 DEBUG Phasemeter: phase_error: -492095595ns
12:09:47 DEBUG UBX-TIM-SVIN: dur: 814, meanX 420386803, meanZ 16332503, meanZ 477796615, meanV 348072, obs 790, valid 0, active 1
12:09:47 DEBUG GNSS data: Fix 3D (5), Fix ok: True, satellites num 32, survey in error: 0.59, antenna status: 2, valid 1, time 1679051387, leapm_seconds 18, leap_notify 0, lsChange 0, timeToLsChange -40993787, lsSet: True, QErr(n) 0, qErr(n-1) 0
12:09:47 WARN Could not tai time from gnss, please check GNSS Configuration if this message keeps appearing more than 25 minutes
Probably in init state we can't kill the soft properly otherwise init can last forever whitout proper gnss conditions orwhitout mro lockness
Finally there is a timeout but maybe we could do better
[email protected]: State 'stop-sigterm' timed out. Killing.
listen_inet_socket()
uses inet_addr()
to resolve string to sockaddr_in. This limits us to use IPv4 addresses only. This is hard limitation in 2023, let's remove it and use proper interfaces like getadrinfo()
Currently, after a restart of oscillatord
we enter uncalibrated
(52) clock class and then transition to holdover
(7) while fine disciplining is in progress. We should transition to calibrating
(13) instead.
It seems like art_integration_in_server_test
version using serial interface to mRO50 is currently broken. Here is the observation summary:
Items | Timecard Driver | ART Firmware | Oscillatord | disciplining-minipod | art_integration_in_server_test |
---|---|---|---|---|---|
1 | 3rd Aug | 0.0.15 | 3.3.6 | 3.3.6 | FAILED |
2 | 3rd Aug | 0.0.13 | 3.3.6 | 3.3.6 | FAILED |
3 | 3rd Aug | 0.0.15 | 3.2.4 | 3.2.4 | PASSED |
4 | 3rd Aug | 0.0.13 | 3.2.4 | 3.2.4 | PASSED |
5 | 3rd Aug | 0.0.13 | 3.3.7 | 3.3.7 | FAILED |
6 | 3rd Aug | 0.0.15 | 3.3.7 | 3.3.7 | FAILED |
rx0: Connecting to receiver at port /dev/ttyS4@115200
rx0: Receiver detected: TIM 2.20 (ZED-F9T)
16:57:05 DEBUG Receiver version successfully detected ! Major is 2, Minor is 20
16:57:06 DEBUG Config (CFG-TP-ANT_CABLEDELAY (0x30050001, I2) = 50 [0.000000001s]) differs from current config (CFG-TP-ANT_CABLEDELAY (0x30050001, I2) = 600 [0.000000001s])
16:57:06 INFO Receiver not configured to default configuration, starting reconfiguration
16:57:06 INFO Configuring receiver with ART parameters...
rx0: Sending 604 key-value pairs in 11 UBX-CFG-VALSET messages
rx0: Sending UBX-CFG-VALSET 1/11 (64 items: 1..64/604, 338 bytes, RAM,BBR,Flash, transaction begin)
rx0: Sending UBX-CFG-VALSET 2/11 (64 items: 65..128/604, 332 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 3/11 (64 items: 129..192/604, 332 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 4/11 (64 items: 193..256/604, 332 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 5/11 (64 items: 257..320/604, 332 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 6/11 (64 items: 321..384/604, 332 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 7/11 (64 items: 385..448/604, 376 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 8/11 (64 items: 449..512/604, 381 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 9/11 (64 items: 513..576/604, 417 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 10/11 (28 items: 577..604/604, 173 bytes, RAM,BBR,Flash, transaction continue)
rx0: Sending UBX-CFG-VALSET 11/11 (no items, 12 bytes, RAM,BBR,Flash, transaction end)
16:57:07 INFO Successfully reconfigured GNSS receiver
16:57:07 DEBUG Performing hardware reset
rx0: Doing receiver reset: Hardware reset
rx0: Receiver detected: TIM 2.20 (ZED-F9T)
16:57:10 INFO hardware reset performed
16:57:10 INFO No preferred timescale, assuming GNSS receiver is correctly set
rx0: Sending 1 key-value pairs in 1 UBX-CFG-VALSET messages
rx0: Sending UBX-CFG-VALSET 1/1 (1 items: 1..1/1, 18 bytes, RAM, no transaction)
rx0: Doing receiver reset: Start GNSS
rx0: Receiver detected: TIM 2.20 (ZED-F9T)
Jul 26 06:15:15 srv oscillatord[117392]: 06:15:15 #033[33mWARN #033[0m Error parsing gnss-cable-delay value
Missing option should act as 0 IMHO.
Currently setting to 0 doesn't send an update (I had to set 1).
Right now it takes up to 12 minutes to reconfigure GNSS receiver and get first signal from it. But actually we need no reconfigure it once after host power up. It would be great if oscillatord could check GNSS receiver configuration at start up and apply only difference to it. It will greatly reduce the speed up time in case of software restart
The track for the issue when mRO50 is drifting too much and oscillatord filters out all the points instead of disciplining atomic clock.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.