Hi all,
I'm trying to use the White Rabbit switch to synchronize the acquisition across multiple N310s receivers. I'm trying to use the instructions on this Ettus article:
I'm using the USRP sink block in gnuradio and set the "clock source" to "internal" and the "timing source" to "sfp0" as it indicates in the article
However I get the following error
I can't seem to find anything about "TDC" online. Once I get this error, it doesn't seem to recover even if I change the parameters back, and the only way I have found to fix it is to reset the device.[INFO] [UHD] linux; GNU C++ version 7.3.0; Boost_106501; UHD_3.14.0.HEAD-0-g6875d061[INFO] [MPMD] Initializing 1 device(s) in parallel with args: mgmt_addr=192.168.3.2, type=n3xx,product=n310,serial=316A5C2,claimed=False,addr=192.168.3.2[INFO] [MPM.main] Launching USRP/MPM, version: 3.14.0.0-g6875d061[INFO] [MPM.main] Spawning RPC process...[INFO] [MPM.PeriphManager] Device serial number: 316A5C2[INFO] [MPM.PeriphManager] Initialized 2 daughterboard(s).[INFO] [MPM.PeriphManager] init() called with device args `clock_source=internal,time_source=internal'.[INFO] [MPM.RPCServer] RPC server ready![INFO] [MPM.RPCServer] Spawning watchdog task...[INFO] [0/Replay_0] Initializing block control (NOC ID: 0x4E91A00000000004)[INFO] [MPM.PeriphManager] init() called with device args `clock_source=internal,product=n310,mgmt_addr=192.168.3.2,time_source=internal'.[INFO] [0/Radio_0] Initializing block control (NOC ID: 0x12AD100000011312)[INFO] [0/Radio_1] Initializing block control (NOC ID: 0x12AD100000011312)[INFO] [0/DDC_0] Initializing block control (NOC ID: 0xDDC0000000000000)[INFO] [0/DDC_1] Initializing block control (NOC ID: 0xDDC0000000000000)[INFO] [0/DUC_0] Initializing block control (NOC ID: 0xD0C0000000000002)[INFO] [0/DUC_1] Initializing block control (NOC ID: 0xD0C0000000000002)[INFO] [0/FIFO_0] Initializing block control (NOC ID: 0xF1F0000000000000)[INFO] [0/FIFO_1] Initializing block control (NOC ID: 0xF1F0000000000000)[INFO] [0/FIFO_2] Initializing block control (NOC ID: 0xF1F0000000000000)[INFO] [0/FIFO_3] Initializing block control (NOC ID: 0xF1F0000000000000)[ERROR] [RPC] TDC Failed to reset.Traceback (most recent call last):File "/home/cmatson/data_lts/muddi_char/test_multi_radio.py", line 206, in <module>main()File "/home/cmatson/data_lts/muddi_char/test_multi_radio.py", line 194, in maintb = top_block_cls()File "/home/cmatson/data_lts/muddi_char/test_multi_radio.py", line 78, in __init__self.uhd_usrp_source_0.set_time_source('sfp0', 0)File "/usr/local/lib/python2.7/dist-packages/gnuradio/uhd/uhd_swig.py", line 3067, in set_time_sourcereturn _uhd_swig.usrp_source_sptr_set_time_source(self, source, mboard)RuntimeError: RuntimeError: Error during RPC call to `set_time_source'. Error message: TDC Failed to reset.[INFO] [MPM.Magnesium-0] Re-initializing daughter board. This may take some time.[ERROR] [MPM.Sync-0] TDC Failed to Reset! Check your clocks! Status: 0x0[ERROR] [MPM.RPCServer] Uncaught exception in method set_time_source :TDC Failed to reset.Traceback (most recent call last):File "/usr/lib/python3.5/site-packages/usrp_mpm/rpc_server.py", line 182, in new_claimed_functionreturn function(*args)File "/usr/lib/python3.5/site-packages/usrp_mpm/periph_manager/n3xx.py", line 626, in set_time_sourceself.set_sync_source(source)File "/usr/lib/python3.5/site-packages/usrp_mpm/periph_manager/n3xx.py", line 723, in set_sync_sourceskip_rfic=args.get('skip_rfic', None)File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/magnesium.py", line 385, in update_ref_clock_freqself._reinit(self.master_clock_rate)File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/magnesium.py", line 344, in _reinitself.init(args)File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/magnesium.py", line 293, in initargs, self._init_args, fast_reinit)File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/mg_init.py", line 615, in initargsFile "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/mg_init.py", line 555, in _full_initargs)File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/mg_init.py", line 221, in _sync_db_clocktarget_offset=trace_delay_offset)File "/usr/lib/python3.5/site-packages/usrp_mpm/cores/tdc_sync.py", line 201, in runself.configure(force=True)File "/usr/lib/python3.5/site-packages/usrp_mpm/cores/tdc_sync.py", line 254, in configureraise RuntimeError("TDC Failed to reset.")RuntimeError: TDC Failed to reset.
I believe the white rabbit switch is configured properly because I am able to synchronize between two daughterboards within a single N310 by setting the "sync" parameter to "unknown PPS" which then calls the set_time_next_pps. If I don't set the "clock/timing_source" parameters in the usrp block and just have the "sync" parameter set to "unknown PPS" on two N310s, the individual pairs daughterboards are sync'd but not between the two radios and there's a seemingly random delay (of up to several ms) between the two radios.
Thanks,
Cameron
No comments:
Post a Comment