Skip to content

Common Issues

Charles Parent edited this page May 4, 2022 · 2 revisions

oscillatord not finding ubloxcfg.so of liboscillator-disciplining.so

  • Either it is not installed on the server → install the library
  • Or oscillatord is not able to find the dynamic library when startting
    • call oscillatord with Environnement variable LD_LIBRARY_PATH=<path_to_libraries.so> (usually something like /usr/local/lib or /usr/local/lib64)

Factory Parameters VS. User Parameters

Check oscillator_factory_settings is always set to true to use factory parameters and false to use user parameters

Cmake build

CMake not finding a library when doing cmake .. → call cmake with environnement variable PKG_CONFIG_PATH=<path_to_library’s_pc file> (check where the library has installed its pc file when doing sudo make insstall)

EXTTS not found

  • 10:12:53 ERROR PTP_EXTTS_REQUEST enable
  • 10:12:53 ERROR Could not enable ART internal pps external events
    • PTP Clock passed in config file is not the one of the card

EEPROM Filled with corrupt data: How to reset

If EEPROM has been corrupted, minipod will be able to handle it and use factory parameters hardcoded in the program, but it cannot assume that coarse value set in mRO50 is the factory one.

Here is the hexdump of a corrupted EEPROM. All data between 0000 and 0080 and filled with zeroes:

home :: art/oscillatord/build ‹70d00e8*› » sudo hexdump -C /sys/class/timecard/ocp0/i2c/5-0050/eeprom                                                                                                          1 ↵
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000080  40 e6 6e 12 f1 7f 00 00  40 e6 6e 12 f1 7f 00 00  |@.n.....@.n.....|
00000090  00 00 00 00 00 00 00 00  ff ff ff ff 00 00 00 00  |................|
000000a0  00 00 00 00 00 00 00 00  ff ff ff 7f 00 00 00 00  |................|
000000b0  50 a5 f8 12 f1 7f 00 00  68 ec 6e 12 f1 7f 00 00  |P.......h.n.....|
000000c0  10 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000d0  a0 8b 5d 5b fe 7f 00 00  00 de 2d 60 a0 e1 cd e2  |..][......-`....|
000000e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000f0  f0 8b 5d 5b fe 7f 00 00  d8 94 5d 5b fe 7f 00 00  |..][......][....|
00000100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|

Another way to see it is to use art_disciplining_manager (util tool from oscillatord) :

home :: art/oscillatord/build ‹70d00e8*› » sudo ./utils/art_disciplining_manager -m /dev/mro50.0 -r
18:12:19 INFO  Reading data from /dev/mro50.0
18:12:19 INFO  Calibration parameters:
18:12:19 INFO  ctrl_nodes_length = 0
18:12:19 INFO  ctrl_load_nodes[] =
18:12:19 INFO  ctrl_drift_coeffs[] =
18:12:19 INFO  Date of calibration: Jan 01 1970
18:12:19 INFO  coarse_equilibrium = 0
18:12:19 INFO  calibration_valid = 0
18:12:19 INFO  ctrl_nodes_length_factory = 0
18:12:19 INFO  ctrl_load_nodes_factory[] =
18:12:19 INFO  ctrl_drift_coeffs_factory[] =
18:12:19 INFO  coarse_equilibrium_factory = 0
18:12:19 INFO  estimated_equilibrium_ES = 0
18:12:19 INFO  Success

This process explains how to reset EEPROM data and fill it with mRO50 factory coarse value.

To do so, Oscillatord’s utils and test tools must be built:

  • in oscillatord project
mkdir build
cd build
cmake -DBUILD_TESTS=true -DBUILD_UTILS=true ..
make
sudo make install

Now there are 2 solutions to reset EEPROM data, depending on wether the server has access to the EEPROM file (depends on the driver version used)

EEPROM file can be accessed on system → art_eeprom_format

art_eeprom_format is a tool used in production to write manufacturing data and initialize disciplining parameters to factory data.

It can be used to restore disciplining parameters in EEPROM.

❗ Make sure that NO jumper are inserted on the card between the 2 pins on the side of the card

This jumper is used to enable writing manufacturing data, but this is not what we want to do here

  • ⚠️ First perform a power cycle of server so that mro50 resets its coarse value to factory
❗ If the previous step is not done coarse factory value that will be written in EEPROM will be wrong and disciplining may not work at all
  • Run art_eeprom_format:
sudo ./utils/art_eeprom_format -p /sys/class/timecard/ocp0/i2c/5-0050/eeprom -s F22170004 -d /dev/mro50.0

Program WILL FAIL as it is not able to write manufacturing data, but that is not what we want here.

home :: art/oscillatord/build ‹debug-eeprom*› » sudo ./utils/art_eeprom_format -p /sys/class/timecard/ocp0/i2c/5-0050/eeprom -s F22170004 -d /dev/mro50.0                                                          
14:28:09 INFO  Writing data to /sys/class/timecard/ocp0/i2c/5-0050/eeprom...
14:28:10 INFO  Reading back data just written...
14:28:10 ERROR Error writing data to eeprom
  • Check that data has been correctly written by using art_disciplining_manager:
home :: art/oscillatord/build ‹70d00e8*› » sudo ./utils/art_disciplining_manager -m /dev/mro50.0 -r                                                                                                          255 ↵
18:10:06 INFO  Reading data from /dev/mro50.0
18:10:06 INFO  Calibration parameters:
18:10:06 INFO  ctrl_nodes_length = 3
18:10:06 INFO  ctrl_load_nodes[] =
18:10:06 INFO   0.250000
18:10:06 INFO   0.500000
18:10:06 INFO   0.750000
18:10:06 INFO  ctrl_drift_coeffs[] =
18:10:06 INFO   0.000000
18:10:06 INFO   0.000000
18:10:06 INFO   0.000000
18:10:06 INFO  Date of calibration: Jan 01 1970
18:10:06 INFO  coarse_equilibrium = -1
18:10:06 INFO  calibration_valid = 0
18:10:06 INFO  ctrl_nodes_length_factory = 3
18:10:06 INFO  ctrl_load_nodes_factory[] =
18:10:06 INFO   0.250000
18:10:06 INFO   0.500000
18:10:06 INFO   0.750000
18:10:06 INFO  ctrl_drift_coeffs_factory[] =
18:10:06 INFO   1.200000
18:10:06 INFO   0.000000
18:10:06 INFO   -1.200000
18:10:06 INFO  coarse_equilibrium_factory = 4186526
18:10:06 INFO  estimated_equilibrium_ES = 0
18:10:06 INFO  Success

Factory values should exactly look like this, the only value that may change is the coarse_equilibrium_factory fetched from mRO50 of the card

EEPROM file cannot be accessed on system → art_disciplining-manager

  • ⚠️ First perform a power cycle of server so that mro50 resets its coarse value to factory
❗ If the previous step is not done coarse factory value that will be written in EEPROM will be wrong and disciplining may not work at all
  • Get coarse value from mRO50 using test tool mro50_ctrl:
home :: art/oscillatord/build ‹70d00e8*› » sudo ./tests/mro50_ctrl -d /dev/mro50.0 -c read -t coarse 
18:16:15 INFO  device = /dev/mro50.0, command = read, type = coarse
18:16:15 INFO  coarse value read is 4186526
  • Create a config file with the following values, and add the coarse value found using mro50_ctrl (4186526 here):
home :: art/oscillatord/build ‹70d00e8*› » cat default_disciplining_parameters_for_cardX.conf 
coarse_equilibrium=4186526
coarse_equilibrium_factory=4186526
ctrl_nodes_length=3
ctrl_load_nodes=0.25,0.5,0.75
ctrl_drift_coeffs=0.0,0.0,0.0
calibration_valid=false
calibration_date=0
estimated_equilibrium_ES=0
  • Use art_disciplining_manager to write these value on the EEPROM:
home :: art/oscillatord/build ‹70d00e8*› » sudo ./utils/art_disciplining_manager -m /dev/mro50.0 -w default_disciplining_parameters_for_cardX.conf
18:21:39 INFO  Writing default calibration to /dev/mro50.0
18:21:41 INFO  Success
  • Check value written are good:
home :: art/oscillatord/build ‹a2c46b8*› » sudo ./utils/art_disciplining_manager -m /dev/mro50.0 -r                                               
18:38:27 INFO  Reading data from /dev/mro50.0
18:38:27 INFO  Calibration parameters:
18:38:27 INFO  ctrl_nodes_length = 3
18:38:27 INFO  ctrl_load_nodes[] =
18:38:27 INFO   0.250000
18:38:27 INFO   0.500000
18:38:27 INFO   0.750000
18:38:27 INFO  ctrl_drift_coeffs[] =
18:38:27 INFO   0.000000
18:38:27 INFO   0.000000
18:38:27 INFO   0.000000
18:38:27 INFO  Date of calibration: Jan 01 1970
18:38:27 INFO  coarse_equilibrium = 4186526
18:38:27 INFO  calibration_valid = 0
18:38:27 INFO  ctrl_nodes_length_factory = 3
18:38:27 INFO  ctrl_load_nodes_factory[] =
18:38:27 INFO   0.250000
18:38:27 INFO   0.500000
18:38:27 INFO   0.750000
18:38:27 INFO  ctrl_drift_coeffs_factory[] =
18:38:27 INFO   1.200000
18:38:27 INFO   0.000000
18:38:27 INFO   -1.200000
18:38:27 INFO  coarse_equilibrium_factory = 4186526
18:38:27 INFO  estimated_equilibrium_ES = 0
18:38:27 INFO  Success