-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
set_time_next_pps and get_time_last_pps don't work #2
Comments
Source of this problem is that ZCU111 doesn't have internal PPS and 10MHz Ref generator. I don't have any simple/clever hack to solve this hardware related issue. However I've implemented an option to attach external PPS and 10MHz Ref signals (c12cdf4). GPSDO also can be connected externally (ad3f782). I'm using GPSDO taken from USRP N2x0 that is connected through USB-RS232 adapter at the moment. Currently 10MHz ref input is on adcio8 (N) and adcio9 (P) (I'm using balun to connect non-symetric 10MHz ref source to this input) and PPS input is on AMS_FPGA_REF_CLK SMA connector (for safety I'm using 3dB attenuator on this input). (c12cdf4) At the same time 10MHz ref should be connected to input of LMK04208 clock generator's input (J109). You need a way to split 10MHz signal source to two inputs. For testing simple SMA Tee worked fine. Without additional hardware I just removed PPS synchronization from the software that took it for granted (like srsLTE). |
Thanks. I thought it will be an issue. Thanks for all the workarounds provided. I did remove the PPS checks in 5G OAI for example for the same reason. BTW about possible hacks. I see that sample timestamping still works, like in OAI |
I'm currently facing similar issues with OAI and the x411. Did you manage to resolve the issue without an external PPS and Clock source? |
I have two solutions. One is to change the source code of the program so
it doesn't require PPS and external clock.
Another is to add PPS and 10MHz input from Octoclock of GPSDO.
The second solution requires addition of a balun connected to ADCIO
inputs in order to connect 10MHz signal to FPGA. 10MHz also has to be
connected to LMK04208 input. PPS can be connected to one of SMA inputs.
I described this in one of commit messages as far as I remember.
|
Hi, basically the solution is to edit usrp_lib.cpp in OAI source and remove several commands, which wait for the pps signal. https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/radio/USRP/usrp_lib.cpp?ref_type=heads#L198 https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/radio/USRP/usrp_lib.cpp?ref_type=heads#L222 https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/radio/USRP/usrp_lib.cpp?ref_type=heads#L336 Editing these lines will allow the OAI code to proceed. There might be still some error remaining, but I can't remember now. Cheers! |
Thanks for the quick response |
Hello, seems like I found an issue with the x411 code. Reporting it below. Thanks.
Issue Description
The clock source is set to Internal
Using set_time_next_pps doesn't seem to function.
Also using get_time_last_pps returns 0 always
Software which is relying on the checks like this are stuck forever
uhd::time_spec_t time_last_pps = s->usrp->get_time_last_pps();
while (time_last_pps == s->usrp->get_time_last_pps())
For example setting PC clock on next PPS in GNU Radio UHD source will stay forever waiting and doesn't provide any error.
options:
parameters:
author: ''
catch_exceptions: 'True'
category: '[GRC Hier Blocks]'
cmake_opt: ''
comment: ''
copyright: ''
description: ''
gen_cmake: 'On'
gen_linking: dynamic
generate_options: qt_gui
hier_block_src_path: '.:'
id: fsf
max_nouts: '0'
output_language: python
placement: (0,0)
qt_qss_theme: ''
realtime_scheduling: ''
run: 'True'
run_command: '{python} -u {filename}'
run_options: prompt
sizing_mode: fixed
thread_safe_setters: ''
title: Not titled yet
window_size: (1000,1000)
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 8]
rotation: 0
state: enabled
blocks:
id: variable
parameters:
comment: ''
value: '7680000'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [184, 12]
rotation: 0
state: enabled
id: qtgui_waterfall_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
axislabels: 'True'
bw: samp_rate
color1: '0'
color10: '0'
color2: '0'
color3: '0'
color4: '0'
color5: '0'
color6: '0'
color7: '0'
color8: '0'
color9: '0'
comment: ''
fc: '0'
fftsize: '1024'
freqhalf: 'True'
grid: 'False'
gui_hint: ''
int_max: '10'
int_min: '-140'
label1: ''
label10: ''
label2: ''
label3: ''
label4: ''
label5: ''
label6: ''
label7: ''
label8: ''
label9: ''
legend: 'True'
maxoutbuf: '0'
minoutbuf: '0'
name: '""'
nconnections: '1'
showports: 'False'
type: complex
update_time: '0.10'
wintype: window.WIN_BLACKMAN_hARRIS
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [608, 316.0]
rotation: 0
state: true
id: uhd_usrp_source
parameters:
affinity: ''
alias: ''
ant0: '"RX2"'
ant1: '"RX2"'
ant10: '"RX2"'
ant11: '"RX2"'
ant12: '"RX2"'
ant13: '"RX2"'
ant14: '"RX2"'
ant15: '"RX2"'
ant16: '"RX2"'
ant17: '"RX2"'
ant18: '"RX2"'
ant19: '"RX2"'
ant2: '"RX2"'
ant20: '"RX2"'
ant21: '"RX2"'
ant22: '"RX2"'
ant23: '"RX2"'
ant24: '"RX2"'
ant25: '"RX2"'
ant26: '"RX2"'
ant27: '"RX2"'
ant28: '"RX2"'
ant29: '"RX2"'
ant3: '"RX2"'
ant30: '"RX2"'
ant31: '"RX2"'
ant4: '"RX2"'
ant5: '"RX2"'
ant6: '"RX2"'
ant7: '"RX2"'
ant8: '"RX2"'
ant9: '"RX2"'
bw0: '0'
bw1: '0'
bw10: '0'
bw11: '0'
bw12: '0'
bw13: '0'
bw14: '0'
bw15: '0'
bw16: '0'
bw17: '0'
bw18: '0'
bw19: '0'
bw2: '0'
bw20: '0'
bw21: '0'
bw22: '0'
bw23: '0'
bw24: '0'
bw25: '0'
bw26: '0'
bw27: '0'
bw28: '0'
bw29: '0'
bw3: '0'
bw30: '0'
bw31: '0'
bw4: '0'
bw5: '0'
bw6: '0'
bw7: '0'
bw8: '0'
bw9: '0'
center_freq0: 2e9
center_freq1: '0'
center_freq10: '0'
center_freq11: '0'
center_freq12: '0'
center_freq13: '0'
center_freq14: '0'
center_freq15: '0'
center_freq16: '0'
center_freq17: '0'
center_freq18: '0'
center_freq19: '0'
center_freq2: '0'
center_freq20: '0'
center_freq21: '0'
center_freq22: '0'
center_freq23: '0'
center_freq24: '0'
center_freq25: '0'
center_freq26: '0'
center_freq27: '0'
center_freq28: '0'
center_freq29: '0'
center_freq3: '0'
center_freq30: '0'
center_freq31: '0'
center_freq4: '0'
center_freq5: '0'
center_freq6: '0'
center_freq7: '0'
center_freq8: '0'
center_freq9: '0'
clock_rate: 0e0
clock_source0: internal
clock_source1: ''
clock_source2: ''
clock_source3: ''
clock_source4: ''
clock_source5: ''
clock_source6: ''
clock_source7: ''
comment: ''
dc_offs0: 0+0j
dc_offs1: 0+0j
dc_offs10: 0+0j
dc_offs11: 0+0j
dc_offs12: 0+0j
dc_offs13: 0+0j
dc_offs14: 0+0j
dc_offs15: 0+0j
dc_offs16: 0+0j
dc_offs17: 0+0j
dc_offs18: 0+0j
dc_offs19: 0+0j
dc_offs2: 0+0j
dc_offs20: 0+0j
dc_offs21: 0+0j
dc_offs22: 0+0j
dc_offs23: 0+0j
dc_offs24: 0+0j
dc_offs25: 0+0j
dc_offs26: 0+0j
dc_offs27: 0+0j
dc_offs28: 0+0j
dc_offs29: 0+0j
dc_offs3: 0+0j
dc_offs30: 0+0j
dc_offs31: 0+0j
dc_offs4: 0+0j
dc_offs5: 0+0j
dc_offs6: 0+0j
dc_offs7: 0+0j
dc_offs8: 0+0j
dc_offs9: 0+0j
dc_offs_enb0: default
dc_offs_enb1: default
dc_offs_enb10: default
dc_offs_enb11: default
dc_offs_enb12: default
dc_offs_enb13: default
dc_offs_enb14: default
dc_offs_enb15: default
dc_offs_enb16: default
dc_offs_enb17: default
dc_offs_enb18: default
dc_offs_enb19: default
dc_offs_enb2: default
dc_offs_enb20: default
dc_offs_enb21: default
dc_offs_enb22: default
dc_offs_enb23: default
dc_offs_enb24: default
dc_offs_enb25: default
dc_offs_enb26: default
dc_offs_enb27: default
dc_offs_enb28: default
dc_offs_enb29: default
dc_offs_enb3: default
dc_offs_enb30: default
dc_offs_enb31: default
dc_offs_enb4: default
dc_offs_enb5: default
dc_offs_enb6: default
dc_offs_enb7: default
dc_offs_enb8: default
dc_offs_enb9: default
dev_addr: ''
dev_args: master_clock_rate=245.76e6
gain0: '0'
gain1: '0'
gain10: '0'
gain11: '0'
gain12: '0'
gain13: '0'
gain14: '0'
gain15: '0'
gain16: '0'
gain17: '0'
gain18: '0'
gain19: '0'
gain2: '0'
gain20: '0'
gain21: '0'
gain22: '0'
gain23: '0'
gain24: '0'
gain25: '0'
gain26: '0'
gain27: '0'
gain28: '0'
gain29: '0'
gain3: '0'
gain30: '0'
gain31: '0'
gain4: '0'
gain5: '0'
gain6: '0'
gain7: '0'
gain8: '0'
gain9: '0'
gain_type0: default
gain_type1: default
gain_type10: default
gain_type11: default
gain_type12: default
gain_type13: default
gain_type14: default
gain_type15: default
gain_type16: default
gain_type17: default
gain_type18: default
gain_type19: default
gain_type2: default
gain_type20: default
gain_type21: default
gain_type22: default
gain_type23: default
gain_type24: default
gain_type25: default
gain_type26: default
gain_type27: default
gain_type28: default
gain_type29: default
gain_type3: default
gain_type30: default
gain_type31: default
gain_type4: default
gain_type5: default
gain_type6: default
gain_type7: default
gain_type8: default
gain_type9: default
iq_imbal0: 0+0j
iq_imbal1: 0+0j
iq_imbal10: 0+0j
iq_imbal11: 0+0j
iq_imbal12: 0+0j
iq_imbal13: 0+0j
iq_imbal14: 0+0j
iq_imbal15: 0+0j
iq_imbal16: 0+0j
iq_imbal17: 0+0j
iq_imbal18: 0+0j
iq_imbal19: 0+0j
iq_imbal2: 0+0j
iq_imbal20: 0+0j
iq_imbal21: 0+0j
iq_imbal22: 0+0j
iq_imbal23: 0+0j
iq_imbal24: 0+0j
iq_imbal25: 0+0j
iq_imbal26: 0+0j
iq_imbal27: 0+0j
iq_imbal28: 0+0j
iq_imbal29: 0+0j
iq_imbal3: 0+0j
iq_imbal30: 0+0j
iq_imbal31: 0+0j
iq_imbal4: 0+0j
iq_imbal5: 0+0j
iq_imbal6: 0+0j
iq_imbal7: 0+0j
iq_imbal8: 0+0j
iq_imbal9: 0+0j
iq_imbal_enb0: default
iq_imbal_enb1: default
iq_imbal_enb10: default
iq_imbal_enb11: default
iq_imbal_enb12: default
iq_imbal_enb13: default
iq_imbal_enb14: default
iq_imbal_enb15: default
iq_imbal_enb16: default
iq_imbal_enb17: default
iq_imbal_enb18: default
iq_imbal_enb19: default
iq_imbal_enb2: default
iq_imbal_enb20: default
iq_imbal_enb21: default
iq_imbal_enb22: default
iq_imbal_enb23: default
iq_imbal_enb24: default
iq_imbal_enb25: default
iq_imbal_enb26: default
iq_imbal_enb27: default
iq_imbal_enb28: default
iq_imbal_enb29: default
iq_imbal_enb3: default
iq_imbal_enb30: default
iq_imbal_enb31: default
iq_imbal_enb4: default
iq_imbal_enb5: default
iq_imbal_enb6: default
iq_imbal_enb7: default
iq_imbal_enb8: default
iq_imbal_enb9: default
lo_export0: 'False'
lo_export1: 'False'
lo_export10: 'False'
lo_export11: 'False'
lo_export12: 'False'
lo_export13: 'False'
lo_export14: 'False'
lo_export15: 'False'
lo_export16: 'False'
lo_export17: 'False'
lo_export18: 'False'
lo_export19: 'False'
lo_export2: 'False'
lo_export20: 'False'
lo_export21: 'False'
lo_export22: 'False'
lo_export23: 'False'
lo_export24: 'False'
lo_export25: 'False'
lo_export26: 'False'
lo_export27: 'False'
lo_export28: 'False'
lo_export29: 'False'
lo_export3: 'False'
lo_export30: 'False'
lo_export31: 'False'
lo_export4: 'False'
lo_export5: 'False'
lo_export6: 'False'
lo_export7: 'False'
lo_export8: 'False'
lo_export9: 'False'
lo_source0: internal
lo_source1: internal
lo_source10: internal
lo_source11: internal
lo_source12: internal
lo_source13: internal
lo_source14: internal
lo_source15: internal
lo_source16: internal
lo_source17: internal
lo_source18: internal
lo_source19: internal
lo_source2: internal
lo_source20: internal
lo_source21: internal
lo_source22: internal
lo_source23: internal
lo_source24: internal
lo_source25: internal
lo_source26: internal
lo_source27: internal
lo_source28: internal
lo_source29: internal
lo_source3: internal
lo_source30: internal
lo_source31: internal
lo_source4: internal
lo_source5: internal
lo_source6: internal
lo_source7: internal
lo_source8: internal
lo_source9: internal
maxoutbuf: '0'
minoutbuf: '0'
nchan: '1'
num_mboards: '1'
otw: ''
rx_agc0: Default
rx_agc1: Default
rx_agc10: Default
rx_agc11: Default
rx_agc12: Default
rx_agc13: Default
rx_agc14: Default
rx_agc15: Default
rx_agc16: Default
rx_agc17: Default
rx_agc18: Default
rx_agc19: Default
rx_agc2: Default
rx_agc20: Default
rx_agc21: Default
rx_agc22: Default
rx_agc23: Default
rx_agc24: Default
rx_agc25: Default
rx_agc26: Default
rx_agc27: Default
rx_agc28: Default
rx_agc29: Default
rx_agc3: Default
rx_agc30: Default
rx_agc31: Default
rx_agc4: Default
rx_agc5: Default
rx_agc6: Default
rx_agc7: Default
rx_agc8: Default
rx_agc9: Default
samp_rate: samp_rate
sd_spec0: ''
sd_spec1: ''
sd_spec2: ''
sd_spec3: ''
sd_spec4: ''
sd_spec5: ''
sd_spec6: ''
sd_spec7: ''
show_lo_controls: 'False'
start_time: '0'
stream_args: ''
stream_chans: '[]'
sync: pc_clock_next_pps
time_source0: ''
time_source1: ''
time_source2: ''
time_source3: ''
time_source4: ''
time_source5: ''
time_source6: ''
time_source7: ''
type: fc32
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [288, 284.0]
rotation: 0
state: true
connections:
metadata:
file_format: 1
grc_version: 3.9.8.0
Additional Information
The console output of the gnuradio after this the program never returns an error or continues
Executing: /usr/bin/python3 -u /home/test1/fsf.py
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.4.0.x411-0-f2901c62
[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgmt_addr=192.168.0.2,type=x4xx,product=x411,serial=2032374,name=pk-x4xx-2032374,fpga=X4_200,claimed=False,addr=192.168.0.2,master_clock_rate=245.76e6
[WARNING] [MPM.RPCServer] A timeout event occured!
[INFO] [MPM.PeriphManager] init() called with device args `fpga=X4_200,master_clock_rate=245.76e6,mgmt_addr=192.168.0.2,name=pk-x4xx-2032374,product=x411,clock_source=mboard,time_source=internal'.
The text was updated successfully, but these errors were encountered: