discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: N310 Sync With White Rabbit


From: Cameron Matson
Subject: Re: N310 Sync With White Rabbit
Date: Wed, 9 Dec 2020 19:04:27 -0600

Hello again,

Can anyone shed some light on this issue?  I found a similar reported issue here that doesn't seemed to have been resolved either:

http://ettus.80997.x6.nabble.com/USRP-users-ERROR-RPC-TDC-Failed-to-reset-td15582.html

Thank you,
Cameron

On Sat, Dec 5, 2020 at 5:28 PM Cameron Matson <ncmatson95@gmail.com> wrote:
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:

https://kb.ettus.com/Using_Ethernet-Based_Synchronization_on_the_USRP%E2%84%A2_N3xx_Devices

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

image.png
However I get the following error

[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 main
    tb = 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_source
    return _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_function
    return function(*args)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/periph_manager/n3xx.py", line 626, in set_time_source
    self.set_sync_source(source)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/periph_manager/n3xx.py", line 723, in set_sync_source
    skip_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_freq
    self._reinit(self.master_clock_rate)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/magnesium.py", line 344, in _reinit
    self.init(args)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/magnesium.py", line 293, in init
    args, self._init_args, fast_reinit)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/mg_init.py", line 615, in init
    args
  File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/mg_init.py", line 555, in _full_init
    args)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/dboard_manager/mg_init.py", line 221, in _sync_db_clock
    target_offset=trace_delay_offset)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/cores/tdc_sync.py", line 201, in run
    self.configure(force=True)
  File "/usr/lib/python3.5/site-packages/usrp_mpm/cores/tdc_sync.py", line 254, in configure
    raise RuntimeError("TDC Failed to reset.")
RuntimeError: TDC Failed to reset.
 
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.

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]