I'm not super familiar with the octoclock-g, will it produce an output if
the GPS isn't locked?  I see what looks like a disconnected GPS Antenna
connector, which would make it unlikely for the GPS to ever lock.
Nick

On Fri, Jul 8, 2016 at 12:12 AM, Pavan Yedavalli <psy2...@columbia.edu>
wrote:

> It's an Octoclock-G (https://www.ettus.com/product/details/OctoClock-G is
> what I ordered). And yes, that is true about the external clock inputs and
> GPS lock. Does that matter if it's an Octoclock-G?
>
> On Thu, Jul 7, 2016 at 7:46 PM, <mle...@ripnet.com> wrote:
>
>> Is this an Octoclock, or Octoclock-G?
>>
>> If it's just an Octoclock, then it has no internal clocks, and acts as a
>> high-quality clock/pps distributor.
>>
>> I notice you don't have the external clock inputs connected to anything,
>> and there's no GPS LOCK indicator.
>>
>>
>>
>>
>>
>>
>>
>>
>> On 2016-07-07 17:08, Pavan Yedavalli wrote:
>>
>> Hi Marcus,
>>
>> I did what you suggested by wrapping the timed commands as follows:
>>
>> For the TX side (what you sent me in for_pavan.py):
>>
>>         self.uhd_usrp_source_0.set_time_unknown_pps(uhd.time_spec())
>>     now = self.uhd_usrp_source_0.get_time_now()
>>     start_time = now + uhd.time_spec(.5)
>>     self.uhd_usrp_source_0.set_command_time(start_time)
>>         self.uhd_usrp_source_0.set_clock_source("external", 0)
>>         self.uhd_usrp_source_0.set_time_source("external", 0)
>>         self.uhd_usrp_source_0.set_clock_source("external", 1)
>>         self.uhd_usrp_source_0.set_time_source("external", 1)
>>         self.uhd_usrp_source_0.set_samp_rate(samp_rate)
>>         self.uhd_usrp_source_0.set_time_unknown_pps(uhd.time_spec())
>>         self.uhd_usrp_source_0.set_center_freq(rx_center_freq, 0)
>>         self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0)
>>         self.uhd_usrp_source_0.set_antenna(Antenna_sel, 0)
>>         self.uhd_usrp_source_0.set_center_freq(rx_center_freq, 1)
>>         self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 1)
>>         self.uhd_usrp_source_0.set_antenna("TX/RX", 1)
>>     self.uhd_usrp_source_0.clear_command_time()
>>
>> And for the RX side (B210_Phase_Viewer.py):
>>
>>         self.uhd_usrp_sink_0.set_time_unknown_pps(uhd.time_spec())
>>     now = self.uhd_usrp_sink_0.get_time_now()
>>     start_time = now + uhd.time_spec(.5)
>>     self.uhd_usrp_sink_0.set_command_time(start_time)
>>         self.uhd_usrp_sink_0.set_clock_source("external", 0)
>>         self.uhd_usrp_sink_0.set_time_source("external", 0)
>>         self.uhd_usrp_sink_0.set_subdev_spec("A:0", 0)
>>         self.uhd_usrp_sink_0.set_clock_source("external", 1)
>>         self.uhd_usrp_sink_0.set_time_source("external", 1)
>>         self.uhd_usrp_sink_0.set_subdev_spec("A:0", 1)
>>         self.uhd_usrp_sink_0.set_samp_rate(samp_rate)
>>         self.uhd_usrp_sink_0.set_center_freq(915e6, 0)
>>         self.uhd_usrp_sink_0.set_gain(1.5, 0)
>>         self.uhd_usrp_sink_0.set_center_freq(915e6, 1)
>>         self.uhd_usrp_sink_0.set_gain(1.5, 1)
>>     self.uhd_usrp_sink_0.clear_command_time()
>>
>>
>> However, it still does not work when I have the phase viewer running and
>> stop and restart the for_pavan.py flowgraph. I had a run of three straight
>> where the phase offset was around 11 degrees, but then afterward it started
>> fluctuating again (-140, 45, 81 degrees, etc.).
>>
>> Attached is the front of the Octoclock. I believe the settings are
>> correct, but maybe something is wrong with that. Note that the PPS flashes
>> (but I couldn't capture when it flashed in the picture). Also note that I
>> get the thread priority warning when running each of them, but I don't
>> think that is a problem.
>>
>> I am really not sure what the issue is here, sadly. Thanks again for your
>> help and patience.
>>
>>
>> On Wed, Jul 6, 2016 at 6:22 PM, Marcus D. Leech <mle...@ripnet.com>
>> wrote:
>>
>>> On 07/06/2016 09:04 PM, Pavan Yedavalli wrote:
>>>
>>> Hi Marcus,
>>>
>>> Trying the attached code with two of the USRPs transmitting, and with
>>> the B210_Phase_Viewer for the other 2 USRPs receiving, still gives me
>>> different offsets for every different run call. And by different run call,
>>> I'm simply running the flowgraph once, seeing the offset, stopping the
>>> graph, and then running it again, seeing the new offset, and so on. I must
>>> be doing something wrong here. A you mentioned, since all of them are using
>>> the Octoclock, that means that they all are having the same reference and
>>> pps, but both receive boards may also not be timed in an aligned fashion
>>> for the same reason, right? So the receive side LO offsets could also be
>>> causing problems in narrowing down the issue, I'm assuming? Thanks again.
>>>
>>> Yes, the receive side needs to be as mutually-coherent as possible as
>>> well.
>>>
>>> Also, I forgot to mention that you'll need to modify the output of the
>>> flow-graph I provided to wrap timed-command stuff around the tuning.
>>>
>>> Same on any RX flow-graph.  That's the only sane we to be able to
>>> measure any kind of phase-offset that you can trust.
>>>
>>> If the RX side is a B210, you don't need to do timed commands (and,
>>> indeed, they aren't supported for tuning on the B210).  What I'd do is
>>>   leave the RX side running, while you bring the TX side up and down.
>>>
>>>
>>>
>>>
>>> On Wed, Jul 6, 2016 at 5:47 PM, Marcus D. Leech <mle...@ripnet.com>
>>> wrote:
>>>
>>>> On 07/06/2016 02:48 PM, Pavan Yedavalli wrote:
>>>>
>>>> I disconnected the MIMO cable and now have all 4 directly connected to
>>>> the Octoclock, but I get the same results in which the offset changes at
>>>> every run (using the above code).
>>>>
>>>> What about the attached code?
>>>>
>>>> Keep in mind that you'll have to measure it with something that is also
>>>> mutually coherent.
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Jul 5, 2016 at 9:11 PM, Marcus D. Leech <mle...@ripnet.com>
>>>> wrote:
>>>>
>>>>> On 07/05/2016 11:45 PM, Pavan Yedavalli wrote:
>>>>>
>>>>> Yes, sorry - two of them are actually connected via MIMO cable, with
>>>>> the master connected to the Octoclock. Then the other two are directly
>>>>> connected to the Octoclock. I used the MIMO cable just because I had it,
>>>>> but hopefully that's not changing the functionality.
>>>>>
>>>>> Yes, I added even more attenuation because the Tx gain was already
>>>>> quite low. Thanks for the suggestion.
>>>>>
>>>>> So, a useful experiment would be to do your coherent TX from a pair
>>>>> that are both hooked up to the Octoclock.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Jul 5, 2016 at 7:29 PM, Marcus D. Leech <mle...@ripnet.com>
>>>>> wrote:
>>>>>
>>>>>> On 07/05/2016 09:45 PM, Pavan Yedavalli wrote:
>>>>>>
>>>>>> According to the spectrum analyzer, there's nothing being transmitted
>>>>>> in the 900 MHz band around me, so that is actually fine. The biggest
>>>>>> unknown could be what you are saying about how they combine in the RSSI
>>>>>> circuit (which I'm not sure how it works).
>>>>>>
>>>>>> I am not gaining any more insight when using over-the-air antennas,
>>>>>> so I used 2 USRPs as transmitters and 2 as receivers, connected them
>>>>>> directly with SMA cables (and attenuation), and used Derek Kozel's
>>>>>> B210_Phase_Viewer on the receive side to see whether they were aligned
>>>>>> after each run. And I am noticing that they are not. The first run 
>>>>>> produced
>>>>>> a 125 degree phase offset, while the second one produced a 3 degree phase
>>>>>> offset, and this continues to fluctuate after each run (see attached). 
>>>>>> Note
>>>>>> that I am using the code that I pasted above to transmit.
>>>>>>
>>>>>> I must be doing something wrong with the code, or not wrapping the
>>>>>> timed commands around the correct code. I am not sure though. Thanks 
>>>>>> again.
>>>>>>
>>>>>> Looks like you have a bit of clipping as well.  Back off the gain on
>>>>>> the TX side.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Jul 5, 2016 at 5:51 PM, Marcus D. Leech <mle...@ripnet.com>
>>>>>> wrote:
>>>>>>
>>>>>>> On 07/05/2016 08:20 PM, Pavan Yedavalli wrote:
>>>>>>>
>>>>>>> I see, but the offset in phase between the two radios will affect
>>>>>>> the amplitude, right? That was the assumption I was using, since it 
>>>>>>> gives
>>>>>>> out an amplitude reading, but the phase clearly will affect that 
>>>>>>> reading, I
>>>>>>> presumed.
>>>>>>>
>>>>>>> Unfortunately, I don't have any documentation on the RSSI circuit
>>>>>>> apart from the following description from the vendor:
>>>>>>>
>>>>>>> The RSSI functionality allows the sampling of the received signal to
>>>>>>> provide an indication of the amount of energy being harvested. When 
>>>>>>> DSET is
>>>>>>> driven high the harvested DC power will be directed to an internal sense
>>>>>>> resistor, and the corresponding voltage will be provided to the DOUT 
>>>>>>> pin.
>>>>>>> The voltage on the DOUT pin can be read after a 50μs settling time. RSSI
>>>>>>> shows the actual power level that is being received at the antenna. This
>>>>>>> number is accurate from 0.04mW to 50mW.
>>>>>>>
>>>>>>> This probably does not help at all to debug. Sorry about that.
>>>>>>>
>>>>>>> You're making assumptions about how your signals will combine in
>>>>>>> that RSSI circuit, and how they'll combine with other ambient signals 
>>>>>>> within
>>>>>>>   your frequency band.  I cannot imagine that being stable.
>>>>>>>
>>>>>>> To measure the phase between two signals, you need a device that is
>>>>>>> phase sensitive (like, for example, another USRP with two inputs), and
>>>>>>>   compute conjugate multiplication between them, or the phase-angle,
>>>>>>> via the complex-argument block.
>>>>>>>
>>>>>>> Or just plot the two signals on a Qt Time sync, and observe that the
>>>>>>> phase relationship is the same--that of course requires that your
>>>>>>>   receiver system is internally coherent between the two channels.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jul 5, 2016 at 4:42 PM, Marcus D. Leech <mle...@ripnet.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On 07/05/2016 07:28 PM, Pavan Yedavalli wrote:
>>>>>>>>
>>>>>>>> The way I'm doing it is the following (please correct me if there
>>>>>>>> is a fundamental error in assumptions): I am actually using an RSSI 
>>>>>>>> circuit
>>>>>>>> that is receiving the power from the USRPs/antennas, and I'm 
>>>>>>>> determining
>>>>>>>> whether the phase offset is the same based on that RSSI value. For 
>>>>>>>> example,
>>>>>>>> I run the flowgraph once, and I get an RSSI value on the other side of 
>>>>>>>> 2.5
>>>>>>>> mW, but when I run the flowgraph again, it produces an RSSI value of 
>>>>>>>> 9.5
>>>>>>>> mW. In my mind, if that offset was constant, then it would have 
>>>>>>>> produced
>>>>>>>> something around 2.5 mW again. I know this adds another variable to the
>>>>>>>> mix, but I have confirmed the accurate functioning of the RSSI
>>>>>>>> circuit/receiver as well as the static nature of the channel, so its
>>>>>>>> reading is very reliable.
>>>>>>>>
>>>>>>>> Could you describe this RSSI circuit?  Normally, they're only
>>>>>>>> sensitive to amplitude, not phase.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jul 5, 2016 at 4:19 PM, Marcus D. Leech <mle...@ripnet.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On 07/05/2016 06:47 PM, Pavan Yedavalli wrote:
>>>>>>>>>
>>>>>>>>> Hi Marcus,
>>>>>>>>>
>>>>>>>>> Thanks for the background. That helps greatly. Having said that, I
>>>>>>>>> am unclear which commands specifically tune the radios, so I did the
>>>>>>>>> following around the frequency tuning (after all of the time source, 
>>>>>>>>> gain,
>>>>>>>>> and antenna setting code):
>>>>>>>>>
>>>>>>>>>         addr_string = "addr0=192.168.10.3,addr1=192.168.10.4"
>>>>>>>>>         self.uhd_usrp_sink_0_0 = uhd.usrp_sink(
>>>>>>>>>             ",".join((addr_string, "")),
>>>>>>>>>             uhd.stream_args(
>>>>>>>>>                 cpu_format="fc32",
>>>>>>>>>                 channels=range(2),
>>>>>>>>>             ),
>>>>>>>>>         )
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_clock_source("external", 0)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_time_source("external", 0)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_clock_source("mimo", 1)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_time_source("mimo", 1)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_gain(31.5, 0)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_gain(31.5, 1)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_antenna("TX/RX", 0)
>>>>>>>>>         self.uhd_usrp_sink_0_0.set_antenna("TX/RX", 1)
>>>>>>>>>         self.analog_sig_source_x_0_1 =
>>>>>>>>> analog.sig_source_c(samp_rate, analog.GR_CONST_WAVE, 10000, 1, 0)
>>>>>>>>>         self.analog_sig_source_x_0_0_0 =
>>>>>>>>> analog.sig_source_c(samp_rate, analog.GR_CONST_WAVE, 10000, 1, 0)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *
>>>>>>>>> self.uhd_usrp_sink_0_0.set_time_unknown_pps(uhd.time_spec())         
>>>>>>>>> now =
>>>>>>>>> self.uhd_usrp_sink_0_0.get_time_now()         start_time = now +
>>>>>>>>> uhd.time_spec(.5)
>>>>>>>>> self.uhd_usrp_sink_0_0.set_command_time(start_time)
>>>>>>>>> self.uhd_usrp_sink_0_0.set_center_freq(915000000, 0)
>>>>>>>>> self.uhd_usrp_sink_0_0.set_center_freq(915000000, 1)
>>>>>>>>> self.uhd_usrp_sink_0_0.clear_command_time()*
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> However, when running it, this does not appear to produce a
>>>>>>>>> constant offset either, but I'm not sure whether this is the correct 
>>>>>>>>> code
>>>>>>>>> to wrap around. Please keep me posted. Thanks.
>>>>>>>>>
>>>>>>>>> On Tue, Jul 5, 2016 at 12:49 PM, <mle...@ripnet.com> wrote:
>>>>>>>>>
>>>>>>>>>> That is precisely what I'm saying, and precisely what
>>>>>>>>>> timed-commands for tuning were invented.  On certain hardware, after 
>>>>>>>>>> the
>>>>>>>>>> tune is complete, a phase-reset pulse is sent by the FPGA. The only 
>>>>>>>>>> way for
>>>>>>>>>> THAT to have the desired effect is to make sure that the phase-reset 
>>>>>>>>>> pulse
>>>>>>>>>> happens at the same instant.
>>>>>>>>>>
>>>>>>>>>> Modern synthesizers use a technique called fractional-N
>>>>>>>>>> synthesis.  One of the side effects of this is that you can't 
>>>>>>>>>> predict where
>>>>>>>>>> the LO will "lock" with respect to the reference clock. So, any two 
>>>>>>>>>> PLL
>>>>>>>>>> synthesizers, even when feed an identical reference clock, will not 
>>>>>>>>>> have
>>>>>>>>>> the same phase offset with respect to one another.  It's the 
>>>>>>>>>> "physics" of
>>>>>>>>>> fractional-N PLL synthesis.
>>>>>>>>>>
>>>>>>>>>> SO, if you're using GRC to generate you flows, you'll have to
>>>>>>>>>> modify the generated code, and wrap 
>>>>>>>>>> set_command_time()/clear_command_time()
>>>>>>>>>> around the place in the code where it tunes the radios.
>>>>>>>>>>
>>>>>>>>>> Clearly, if this depends on TIME, then all radios involved need
>>>>>>>>>> to agree on the current time, to high precision, hence the related
>>>>>>>>>> requirement for set_time_unknown_pps(), which uses the 1PPS signal to
>>>>>>>>>> trigger loading of the time-of-day clocks on each USRP in the 
>>>>>>>>>> multi_usrp
>>>>>>>>>> object.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 2016-07-05 15:41, Pavan Srikrishna Yedavalli wrote:
>>>>>>>>>>
>>>>>>>>>> I am using USRP N210 with SBX daughterboards. All devices are
>>>>>>>>>> connected to the octoclock ref and octoclock PPS. It would be nice 
>>>>>>>>>> to get
>>>>>>>>>> phase alignment, but mere coherence-with-an-offset is sufficient if 
>>>>>>>>>> that
>>>>>>>>>> offset stays constant across different runs of the file/flowgraph. 
>>>>>>>>>> Are you
>>>>>>>>>> saying that that offset cannot be constant due to the randomness of 
>>>>>>>>>> the LO
>>>>>>>>>> phase offset at each run? Thanks again.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _____________________________
>>>>>>>>>> From: mle...@ripnet.com
>>>>>>>>>> Sent: Tuesday, July 5, 2016 12:35 PM
>>>>>>>>>> Subject: Re: [Discuss-gnuradio] random phase offset constantly
>>>>>>>>>> changing with octoclock setup
>>>>>>>>>> To: Pavan Yedavalli <psy2...@columbia.edu>
>>>>>>>>>> Cc: Discuss-gnuradio <
>>>>>>>>>> discuss-gnuradio-bounces+mleech=ripnet....@gnu.org>, GNURadio
>>>>>>>>>> Discussion List <discuss-gnuradio@gnu.org>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> WHat specific hardware line-up do you have?
>>>>>>>>>>
>>>>>>>>>> You have to use set_time_unknown_pps(), but also, if you want
>>>>>>>>>> phase alignment (as opposed to mere coherence-with-an-offset), you 
>>>>>>>>>> need to
>>>>>>>>>> use timed tuning commands across your systems. This will result in 
>>>>>>>>>> zero
>>>>>>>>>> relative phase offset between boards, if you're using SBX or UBX (on 
>>>>>>>>>> the
>>>>>>>>>> X310).  Note that this is phase between the boards, there's no way 
>>>>>>>>>> to make
>>>>>>>>>> certain the the LO phase has a predictable offset with respect to 
>>>>>>>>>> external
>>>>>>>>>> received signals, only that the two LO phases agree.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 2016-07-05 15:26, Pavan Yedavalli wrote:
>>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Despite all of my boards being connected via the Octoclock (ref
>>>>>>>>>> and pps), I am constantly getting different phase offsets every time 
>>>>>>>>>> I run
>>>>>>>>>> a gnuradio flowgraph (or python file).
>>>>>>>>>>
>>>>>>>>>> I am not sure why this is happening, but I do know that I need to
>>>>>>>>>> call one of the functions, set_time_now() and/or 
>>>>>>>>>> set_time_unknown_pps(), to
>>>>>>>>>> make sure all of them are synced. Which one am I supposed to call? I 
>>>>>>>>>> have
>>>>>>>>>> been calling set_time_unknown_pps(), but I am getting the above/below
>>>>>>>>>> problem with that, so maybe set_time_now() could be correct?
>>>>>>>>>>
>>>>>>>>>> In general, I don't understand why I continually get a different
>>>>>>>>>> random phase offset of all of the radios after every new flowgraph 
>>>>>>>>>> run.
>>>>>>>>>> Shouldn't this offset be the same if I continue to transmit at the 
>>>>>>>>>> same
>>>>>>>>>> frequency? Would one of the above functions fix that?
>>>>>>>>>>
>>>>>>>>>> Hopefully that is clear. Thank you so much for the help.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Pavan
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Discuss-gnuradio mailing list
>>>>>>>>>> Discuss-gnuradio@gnu.org
>>>>>>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Pavan
>>>>>>>>>
>>>>>>>>> How are you measuring the phase-offset between the two sinks?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Pavan
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Pavan
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Pavan
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Pavan
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Pavan
>>>>
>>>>
>>>
>>>
>>> --
>>> Pavan
>>>
>>>
>>
>>
>> --
>> Pavan
>>
>>
>
>
> --
> Pavan
>
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to