|
From: | Marc Epard |
Subject: | [Discuss-gnuradio] MIMO cable and timestamps (raw ethernet) |
Date: | Wed, 25 Aug 2010 16:33:54 -0500 |
With rx_streaming_samples.cc as a starting point, I created a new usrp2::rx_sample_handler that simply buffers samples in memory. The handler's operator() is shown below. I need precise timing data between receives, so it counts sample clock overflows to form a 64-bit time. To make sure it was working as I expected, it predicts the next metadata->timestamp according to the number of samples in the current frame and the decimation. In the next frame, I compare the actual timestamp to the expected timestamp and report any discrepancies. Once I got my own bugs out and worked around what appears to be a startup glitch, it's been working fine and never reports a problem unless there's an overrun. Elsewhere I check rx_missing() so know when overruns happen even if I don't see an S go by. Today I tried synchronizing a transmitter USRP2 and receiver USRP2 using a MIMO cable. Now it's reporting very frequent timestamp errors, but no overruns: ... Just having the MIMO cable hooked up causes the problem. I doesn't matter whether I config_mimo() to set up one box with MC_WE_LOCK_TO_MIMO and one with MC_PROVIDE_CLK_TO_MIMO or configure both to MC_WE_DONT_LOCK. In either case it spews errors. If I disconnect the MIMO cable, no time errors are reported. I'm using gnuradio 3.3.0. Both USRP2s have u2_rev3-20100603.bin. One has txrx_xcvr_raw_eth_20100608.bin and an xcvr2450, the other has txrx_raw_eth_20100608.bin and a DBSRX. Have I misunderstood something? Is there something more I need to do? Is there a bug in my code? Any other thoughts or suggestions? -Marc bool operator()(const uint32_t *items, size_t numItems, const usrp2::rx_metadata *metadata) |
[Prev in Thread] | Current Thread | [Next in Thread] |