Lukas,
Can you confirm the exact git hash for both UHD and the FPGA image you are
using? Perhaps the easiest way is to run uhd_usrp_probe.
Rob

On Fri, Mar 13, 2020 at 1:00 AM Lukas Haase <lukasha...@gmx.at> wrote:

> Dear Marcus, Dear Rob,
>
> Thank you very much for these tips with "Unknown PPS", stream 2 streams
> and the explanation of set_start_time. That makes sense.
>
> Since then I spent hours and hours every day on TX+RX but STILL no
> synchronized phase for dspfreq!
> Timed commands seem to work.
> Also, in general, synchronization.
> With this code, I get my long desired cohrent phase between TX+RX but ONLY
> if I do not touch dsp tuning (and only use the PLL in integer-N mode):
>
>         tune_req_rx = uhd.tune_request()
>         tune_req_rx.rf_freq_policy = uhd.tune_request.POLICY_MANUAL
>         tune_req_rx.dsp_freq_policy = uhd.tune_request.POLICY_NONE #
> IMPORTANT!
>         tune_req_rx.rf_freq = rf_freq
>         tune_req_tx.dsp_freq = -dsp_freq
>         tune_req_rx.args=uhd.device_addr(','.join(["mode_n=integer",
> "int_n_step=1000e3",]))
>
>         tune_req_tx = uhd.tune_request()
>         tune_req_tx.rf_freq_policy = uhd.tune_request.POLICY_MANUAL
>         tune_req_tx.dsp_freq_policy = uhd.tune_request.POLICY_NONE #
> IMPORTANT!
>         tune_req_tx.rf_freq = rf_freq
>         tune_req_tx.dsp_freq = dsp_freq
>         tune_req_tx.args=uhd.device_addr(','.join(["mode_n=integer",
> "int_n_step=1000e3",]))
>
>         now = usrp_sink.get_time_now()
>         when = now + uhd.time_spec(1.0)
>         print("Clicked to switch R-T-X frf=" + str(rf_freq) + ", fdsp=" +
> str(dsp_freq) + " at " + str(now.get_full_secs()) + ":" +
> str(now.get_frac_secs()) + " for " + str(when.get_full_secs()) + ":" +
> str(when.get_frac_secs()))
>
>         usrp_sink.set_command_time(when)
>         usrp_source.set_command_time(when)
>         res2 = usrp_sink.set_center_freq(tune_req_tx)       # "TX/RX" of
> first UBX160 is transmitter
>         res1 = usrp_source.set_center_freq(tune_req_rx, 1)  # "RX2" of
> second UBX160 is receiver
>         usrp_sink.clear_command_time()
>         usrp_source.clear_command_time()
>
> With phase coherence I mean if I read out the received phase and I switch
> between f1 and f2, I always get the same phase for f1 and f2, respectively.
>
> But if I set dsp_freq_policy to MANUAL (or I add an LO offset which also
> required dsp retuning) I just don't get any coherent phase.
>
> I used the tricks you mentioned:
>
> - I use unknown PPS in both which makes USRP time start at zero (tested)
> - Both "USRP Source" and "USRP Sink" have 2 channels (and one of each
> connects to Null Source/Sink). This should ensure that stream start time is
> set! (tested)
> - Even if not, I also used explicitely
>    tb.uhd_usrp_source_0.set_start_time(uhd.time_spec(10))
>    tb.uhd_usrp_sink_0.set_start_time(uhd.time_spec(10))
>   at the beginning of my flow graph. I see no signal until 10s, as expected
> - I experimented with "tx_time" and stream tags but for some reason many
> timed I get flooded with L's
>
>
> Can it be that there is another bug lurking somewhere deep in the USRP
> firmware?
>
> Thanks,
> Lukas
>
>
>
> Gesendet: Mittwoch, 04. März 2020 um 19:27 Uhr
> Von: "Marcus D Leech" <patchvonbr...@gmail.com>
> An: "Rob Kossler" <rkoss...@nd.edu>
> Cc: "Lukas Haase" <lukasha...@gmx.at>, "USRP-users@lists.ettus.com" <
> usrp-users@lists.ettus.com>
> Betreff: Re: [USRP-users] USRP X310 ignored DSP retuning on TX when using
> a timed command
>
> When you select one of the PPS synch options in a GRC USRP block it will
> set the time to zero.
>
> Easy enough to modify the code to do something more sophisticated, but
> knowing that it will be set to zero helps you know how to proceed.
>
>
> Sent from my iPhone
>  On Mar 4, 2020, at 12:43 PM, Rob Kossler via USRP-users <
> usrp-users@lists.ettus.com> wrote:
>
> 
>
> Regarding #2)
> I don't think that what you want is a "command" tag, but rather a "time
> stamp tag" which I believe is "tx_time" based on the link you provided to
> the documentation.  The documentation says, "The timestamp tag value is a
> PMT tuple of the following: (uint64 seconds, double fractional seconds)".
> If I am correct, perhaps the code snipped you provided will not come into
> play.
>
> Just to be clear, I don't think you should need to do both #1 and #2.
> But, I "believe" that either method should be possible to accomplish the
> goal of attaching a time stamp to the streaming.
>
> Also, keep in mind that the time stamp that you provide to the DUC block
> for the freq change is related to the time stamp you attach to the
> streaming samples.  Let me explain with a few remarks:
>
> If you apply the time stamp of 0.5 to the streaming samples, then the
> first sample will have time 0.5 and then UHD will keep track of all
> subsequent samples to know the absolute time of any given sample.  I am
> assuming that once you start transmitting you will keep transmitting
> continuously until the flow graph ends.If you then start hopping your DUC
> with time stamps such as 0.6, 0.7, 0.8, etc, then UHD should apply the hop
> at the correct part of the stream since it knows the time of each
> sample.But, be sure that you know for certain that the UHD time is truly
> set to zero at the start of the run.  Otherwise, if it is at some arbitrary
> value at startup such as 9876.1 seconds, and you are using time stamps to
> set your DUC tuning such as "get_time_now()+0.5", then it will want to
> apply the tuning at 9876.6 seconds. Thus, if you time stamped your tx
> stream at 0.5 seconds, you will have a long time to wait before the tuning
> occurs.
> Rob
>
> On Wed, Mar 4, 2020 at 12:13 PM Rob Kossler <rkoss...@nd.edu[mailto:
> rkoss...@nd.edu]> wrote:
>
> Hi Lukas,
> Let me respond to #1 right away.  The "set_start_time" function sets the
> time of the tx stream.  It does not set the "clock time" on the usrp.  If
> you are indeed correct that the "clock time" on the usrp is initialized to
> 0.0 at the start of the GR run, then you are lucky and all you should need
> to do is use the "set_start_time" function with a time spec of something
> like 0.2 or 0.5 (any time after 0.0 with perhaps a little delay built in).
> To see if it is working, you could set the time spec to something very
> large like 5.0 or 10.0 and then you should see the GR run start up but no
> Tx for the next 5 or 10 seconds.  Then the Tx should start.  Does that make
> sense?
> Rob
>
>
> On Wed, Mar 4, 2020 at 12:06 PM Lukas Haase <lukasha...@gmx.at[mailto:
> lukasha...@gmx.at]> wrote:Hi Rob,
>
> 1.) I do not really understand how "set_start_time" is related to my
> problem and why this is what I need. Based on my experiments, the time is
> automatically set to 0 when the flow diagram starts.
>
> I am also sure others must have used timed TX+RX but it does not seem so.
> No kidding, I am working on this since Dec and I still do not have it
> working. I left my traces various times on this and the gnuradio mailing
> list but I did not get help.
>
> 2.) I have played around using stream tags and was very happy that it
> worked but I found now that this is because gr-uhd does NOT attach a
> command time although the documentation says so.
>
>
> https://www.gnuradio.org/doc/doxygen/classgr_1_1uhd_1_1usrp__sink.html[https://www.gnuradio.org/doc/doxygen/classgr_1_1uhd_1_1usrp__sink.html]
> :
> tx_command tag. The command is attached to a sample, and will executed
> before the sample is transmitted, and after the previous sample.
>
> However, in the code (usrp_sink_impl.cc:433, usrp_sink_impl::tag_work):
>
>         else if (pmt::equal(key, COMMAND_KEY)) {
>             if (my_tag_count != samp0_count) {
>                 max_count = my_tag_count;
>                 break;
>             }
>             // TODO set the command time from the sample time
>             msg_handler_command(value);
>         }
>
> 3.) So I am really back to the start. What is generally a bit annoying is
> that I have two objects for the same device (*one* USRP and "USRP
> Source"+"USRP Sink", both with their independent uhd::usrp::multi_usrp
> objects. My question is, is it possible to just use "USRP Source" (this is
> where timed commands work) to execute the retuning for *both* RX+TX?
>
> 3.a.) Given: X310 with 2xUBX-160. What is the subdev spec if I wanted to
> receive on all FOUR inputs??
> The problem is that both RX and TX frontends have the same name "0"
> (according to uhd_usrp_probe).
>
> Two receivers, receiving both from "TX/RX" input of each UBX-160 would be
> trivial: "A:0 B:0". However, how do I address "RX2"? Intuitively "A:0 A:1
> B:0 B:1" but as said, both "TX/RX" and "RX2" are named "0".
> What would I do if I wanted to transmit from "TX/RX" of the second UBX and
> receive on all other boards?
>
> On the USRP Sink: "B:0"
> On the USP Source intuitively: "A:0 A:1 B:1" but that's wrong.
>
> 3.b.) In gr, there will be two multi_usrp objects: One for the receiver
> (member variable of USRP Source) and one for the transmitter (member
> variable of USRP Sink).
> Can I set up a USRP Source that has two channels where the second one is
> actually a TX channel? (only used for retuning via timed commands)?
>
>
> Thanks,
> Lukas
>
>
>
>
>
> Gesendet: Dienstag, 03. März 2020 um 15:22 Uhr
> Von: "Rob Kossler" <rkoss...@nd.edu[mailto:rkoss...@nd.edu]>
> An: "Lukas Haase" <lukasha...@gmx.at[mailto:lukasha...@gmx.at]>
> Cc: "Sam Reiter" <sam.rei...@ettus.com[mailto:sam.rei...@ettus.com]>, "
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]"; <
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]>
> Betreff: Re: [USRP-users] USRP X310 ignored DSP retuning on TX when using
> a timed command
>
> I did a quick google search using "gnuradio uhd timed tx streaming". I
> found that the GR usrp_sink[
> https://www.gnuradio.org/doc/sphinx-3.7.7/uhd.html[https://www.gnuradio.org/doc/sphinx-3.7.7/uhd.html]]
> has the function "set_start_time" which seems to be what you need.  The
> question is: what time do you set?  Probably just something like
> "get_time_now() + 0.1". It may be a bit tricky since this value is to be
> set before starting the flow graph.  Maybe you could set it to some fixed
> constant like 0.5 and then when the flow graph starts you could execute a
> command to set_time_now() to 0.0.  Anyway, if this advice doesn't pan out,
> perhaps just search around a bit in GR archives.  I'm sure others have
> successfully streamed with timed Tx commands.
> Rob
>
> On Tue, Mar 3, 2020 at 3:00 PM Lukas Haase <lukasha...@gmx.at[mailto:
> lukasha...@gmx.at][mailto:lukasha...@gmx.at[mailto:lukasha...@gmx.at]]>
> wrote:
>
> Hi Sam, Hi Rob,
>
> This makes so much sense!
> I think you are right.
> And indeed, the issue I found only with TX, not RX.
>
>
> Could you think of a possible hack sending a "dummy command" to the RF
> board along with the timed tuning request?
>
>
> Regarding the sending of time stamps in the TX in gr-uhd, I am confused
> though. I do think this IS happening. I reproduce the work function of
> "USRP Sink" here:
>
> int usrp_sink_impl::work(int noutput_items,
>                          gr_vector_const_void_star& input_items,
>                          gr_vector_void_star& output_items)
> {
>     int ninput_items = noutput_items; // cuz it's a sync block
>
>     // default to send a mid-burst packet
>     _metadata.start_of_burst = false;
>     _metadata.end_of_burst = false;
>
>     // collect tags in this work()
>     const uint64_t samp0_count = nitems_read(0);
>     get_tags_in_range(_tags, 0, samp0_count, samp0_count + ninput_items);
>     if (not _tags.empty())
>         this->tag_work(ninput_items);
>
>     if (not pmt::is_null(_length_tag_key)) {
>         // check if there is data left to send from a burst tagged with
> length_tag
>         // If a burst is started during this call to work(), tag_work()
> should have
>         // been called and we should have _nitems_to_send > 0.
>         if (_nitems_to_send > 0) {
>             ninput_items = std::min<long>(_nitems_to_send, ninput_items);
>             // if we run out of items to send, it's the end of the burst
>             if (_nitems_to_send - long(ninput_items) == 0)
>                 _metadata.end_of_burst = true;
>         } else {
>             // There is a tag gap since no length_tag was found
> immediately following
>             // the last sample of the previous burst. Drop samples until
> the next
>             // length_tag is found. Notify the user of the tag gap.
>             std::cerr << "tG" << std::flush;
>             // increment the timespec by the number of samples dropped
>             _metadata.time_spec += ::uhd::time_spec_t(0, ninput_items,
> _sample_rate);
>             return ninput_items;
>         }
>     }
>
>     boost::this_thread::disable_interruption disable_interrupt;
> #ifdef GR_UHD_USE_STREAM_API
>     // send all ninput_items with metadata
>     const size_t num_sent = _tx_stream->send(input_items, ninput_items,
> _metadata, 1.0);
> #else
>     const size_t num_sent = _dev->get_device()->send(input_items,
>                                                      ninput_items,
>                                                      _metadata,
>                                                      *_type,
>
>  ::uhd::device::SEND_MODE_FULL_BUFF,
>                                                      1.0);
> #endif
>     boost::this_thread::restore_interruption
> restore_interrupt(disable_interrupt);
>
>     // if using length_tags, decrement items left to send by the number of
> samples sent
>     if (not pmt::is_null(_length_tag_key) && _nitems_to_send > 0) {
>         _nitems_to_send -= long(num_sent);
>     }
>
>     // increment the timespec by the number of samples sent
>     _metadata.time_spec += ::uhd::time_spec_t(0, num_sent, _sample_rate);
>
>     // Some post-processing tasks if we actually transmitted the entire
> burst
>     if (not _pending_cmds.empty() && num_sent == size_t(ninput_items)) {
>         GR_LOG_DEBUG(d_debug_logger,
>                      boost::format("Executing %d pending commands.") %
>                          _pending_cmds.size());
>         BOOST_FOREACH (const pmt::pmt_t& cmd_pmt, _pending_cmds) {
>             msg_handler_command(cmd_pmt);
>         }
>         _pending_cmds.clear();
>     }
>
>     return num_sent;
> }
>
> From this code, it can be seen that the data is transmitted including
> _metadata:
>
> const size_t num_sent = _tx_stream->send(input_items, ninput_items,
> _metadata, 1.0);
>
> The "time_spec" is updated for each block that is sent out:
>
> _metadata.time_spec += ::uhd::time_spec_t(0, num_sent, _sample_rate);
>
> Now you mentioned "has_time_spec" below. I extended to code in the
> following way:
>
>     // increment the timespec by the number of samples sent
>     _metadata.time_spec += ::uhd::time_spec_t(0, num_sent, _sample_rate);
>     GR_LOG_DEBUG(d_debug_logger, boost::format("Setting metadata
> time_spec: %d:%f") % _metadata.time_spec.get_full_secs() %
> _metadata.time_spec.get_frac_secs());
>     _metadata.has_time_spec = true;
>
>
> To my understanding, gr-uhd now passes the correct timestamps on to UHD.
> However, the timed command is still ignored.
>
>
> Thanks,
> Lukas
>
>
> PS: I will attempt to use the tagged stream ... but then I will have the
> issue that I need to tune TX *plus* RX at the same time! Furthermore, the
> streaming tags API is super rudimentary. Also, skimming the source code for
> the tag processing, I am not sure if this would change anything.
>
>
>
>
>
>
>
>
> Gesendet: Dienstag, 03. März 2020 um 13:25 Uhr
> Von: "Sam Reiter" <sam.rei...@ettus.com[mailto:sam.rei...@ettus.com
> ][mailto:sam.rei...@ettus.com[mailto:sam.rei...@ettus.com]]>
> An: "Rob Kossler" <rkoss...@nd.edu[mailto:rkoss...@nd.edu][mailto:
> rkoss...@nd.edu[mailto:rkoss...@nd.edu]]>
> Cc: "Lukas Haase" <lukasha...@gmx.at[mailto:lukasha...@gmx.at][mailto:
> lukasha...@gmx.at[mailto:lukasha...@gmx.at]]>, "USRP-users@lists.ettus.com
> [mailto:USRP-users@lists.ettus.com][mailto:USRP-users@lists.ettus.com
> [mailto:USRP-users@lists.ettus.com]]"; <usrp-users@lists.ettus.com[mailto:
> usrp-users@lists.ettus.com][mailto:usrp-users@lists.ettus.com[mailto:
> usrp-users@lists.ettus.com]]>
> Betreff: Re: [USRP-users] USRP X310 ignored DSP retuning on TX when using
> a timed command
>
> Everything Rob is saying is dead on - the "sense of time" for the radio is
> a 64-bit counter within the radio core that other blocks (like the DDC and
> DUC) don't have access to. Those blocks need to derive a sense of time from
> the timestamps of CHDR packets passing through them. I just wrapped up a
> new app note that covers this (among other synchronization-related topics):
>
>
> https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD#Clocking_and_Timekeeping_in_the_USRP[https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD#Clocking_and_Timekeeping_in_the_USRP][https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD#Clocking_and_Timekeeping_in_the_USRP[https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD%23Clocking_and_Timekeeping_in_the_USRP]]
> <https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD#Clocking_and_Timekeeping_in_the_USRP[https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD%23Clocking_and_Timekeeping_in_the_USRP][https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD%23Clocking_and_Timekeeping_in_the_USRP[https://kb.ettus.com/Synchronizing_USRP_Events_Using_Timed_Commands_in_UHD%23Clocking_and_Timekeeping_in_the_USRP]]>
>
> Lukas, I would doubt that this is an undiscovered bug as much as it is an
> issue with implementation. If this were in C++, you'd want to set the
> 'has_time_spec' and 'time_spec' fields of your TX metadata for at least 1
> packet to impart a sense of time on the DUC:
>
>
> https://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html[https://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html][https://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D][https://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D%5D]
> <https://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D%5D%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5Bhttps://files.ettus.com/manual/structuhd_1_1tx__metadata__t.html%5D%5D%5D>
>
> I just spoke with someone on my end who said you need to use stream tags
> to do this, but again, I don't currently have much direction for how that
> would be implemented in your code.
>
>
> Sam Reiter
>
> On Tue, Mar 3, 2020 at 11:48 AM Rob Kossler <rkoss...@nd.edu[mailto:
> rkoss...@nd.edu][mailto:rkoss...@nd.edu[mailto:rkoss...@nd.edu]][mailto:
> rkoss...@nd.edu[mailto:rkoss...@nd.edu][mailto:rkoss...@nd.edu[mailto:
> rkoss...@nd.edu]]]> wrote:
> Also, note that there is no corresponding issue on receive because the Rx
> radio always inserts the time stamp in the sample stream. So, I guess you
> would not see this with the DDC.
> Rob
>
> On Tue, Mar 3, 2020 at 12:43 PM Rob Kossler <rkoss...@nd.edu[mailto:
> rkoss...@nd.edu][mailto:rkoss...@nd.edu[mailto:rkoss...@nd.edu]][mailto:
> rkoss...@nd.edu[mailto:rkoss...@nd.edu][mailto:rkoss...@nd.edu[mailto:
> rkoss...@nd.edu]]]> wrote:
>
> Hi Lukas,
> The FPGA image on the USRP is divided into blocks such as the DUC block
> and the Radio block.  The latter controls the RF daughterboard and has
> access to the device clock.  So, when you provide a timed command to the
> Radio block (such as for tuning the RF) it can implement the command at the
> specified time by comparing to the device clock.  The DUC block does not
> have access to the MB clock and so when you give it a timed command, it
> monitors the incoming sample stream to extract the time. If the sample
> stream does not include a time stamp, the command never executes.  Don't
> think of this as a bug, but rather as a design limitation.
>
> When I work directly with UHD from C++, I use the function
> rx_streamer::issue_stream_command() which has options to stream data with
> no time stamp or with a time stamp.  When using timed commands with DUC or
> DDC, I must include the time stamp or else the command will never be
> executed.  But, with GR, I don't know how to specify the corresponding
> options.
> Rob
>
> On Tue, Mar 3, 2020 at 12:29 PM Lukas Haase <lukasha...@gmx.at[mailto:
> lukasha...@gmx.at][mailto:lukasha...@gmx.at[mailto:lukasha...@gmx.at
> ]][mailto:lukasha...@gmx.at[mailto:lukasha...@gmx.at][mailto:
> lukasha...@gmx.at[mailto:lukasha...@gmx.at]]]> wrote:Hi Sam, Hi Rob,
>
> Thanks for following up on this!
> I am very happy you were able to reproduce this ... which means that at
> least an issue exists :)
>
> What Sam suggests makes sense even though hard to believe for me:
>
> 1. How could something like that go unnoticed for so long? (I am sure I am
> not the first performing digital tuning)
> 2. In the past I got successful phase coherence using automatic tuning
> (passing center frequency + offset to tune_request_t and using integer-N
> tuning) using timed commands. This did not work reliably and only for
> certain frequencies but in my opinion this should have INCLUDED the DUC
> tuning. If the DUC retune wouldn't have been executed as part of this
> automatic tuning, I could not have gotten phase coherence (and actually,
> not even the desired frequency).
>
> The reason why I am only doing DUC tuning now is to avoid all the hassle
> with integer-N tuning, PLL retuning and settling time.
>
> Sam, what is the "radio block" you were talking about?
>
> Anyway, would it be worthwile to attempt debugging this is absence of gr?
> The only reason this prevented me from doing is that I would need to
> manually create the baseband samples and continuously stream them out while
> in parallel do the retuning.
> I am not too familiar with UHD on its own but I assume this would be very
> complicated, require multithreading etc.
> Do you have any demo code that could be easily modified for this scenario?
>
> Best,
> Lukas
>
>
> Gesendet: Dienstag, 03. März 2020 um 12:08 Uhr
> Von: "Sam Reiter" <sam.rei...@ettus.com[mailto:sam.rei...@ettus.com
> ][mailto:sam.rei...@ettus.com[mailto:sam.rei...@ettus.com]][mailto:
> sam.rei...@ettus.com[mailto:sam.rei...@ettus.com][mailto:
> sam.rei...@ettus.com[mailto:sam.rei...@ettus.com]]]>
> An: "Rob Kossler" <rkoss...@nd.edu[mailto:rkoss...@nd.edu][mailto:
> rkoss...@nd.edu[mailto:rkoss...@nd.edu]][mailto:rkoss...@nd.edu[mailto:
> rkoss...@nd.edu][mailto:rkoss...@nd.edu[mailto:rkoss...@nd.edu]]]>
> Cc: "Lukas Haase" <lukasha...@gmx.at[mailto:lukasha...@gmx.at][mailto:
> lukasha...@gmx.at[mailto:lukasha...@gmx.at]][mailto:lukasha...@gmx.at
> [mailto:lukasha...@gmx.at][mailto:lukasha...@gmx.at[mailto:
> lukasha...@gmx.at]]]>, "USRP-users@lists.ettus.com[mailto:
> USRP-users@lists.ettus.com][mailto:USRP-users@lists.ettus.com[mailto:
> USRP-users@lists.ettus.com]][mailto:USRP-users@lists.ettus.com[mailto:
> USRP-users@lists.ettus.com][mailto:USRP-users@lists.ettus.com[mailto:
> USRP-users@lists.ettus.com]]]" <usrp-users@lists.ettus.com[mailto:
> usrp-users@lists.ettus.com][mailto:usrp-users@lists.ettus.com[mailto:
> usrp-users@lists.ettus.com]][mailto:usrp-users@lists.ettus.com[mailto:
> usrp-users@lists.ettus.com][mailto:usrp-users@lists.ettus.com[mailto:
> usrp-users@lists.ettus.com]]]>
> Betreff: Re: [USRP-users] USRP X310 ignored DSP retuning on TX when using
> a timed command
>
> For what it's worth, I was able to reproduce the behavior described here,
> but didn't get to dig into it much. My leading suspicion would be what Rob
> mentioned about timestamping. Lukas' code sets a command time, but I'm not
> clear on how timestamp metadata for packets being sent to the radio are
> handled. Might be a good question to loop the discuss-gnuradio mailing list
> in on?
>
>
>
> Sam Reiter
>
> On Tue, Mar 3, 2020 at 10:59 AM Rob Kossler via USRP-users <
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]]][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]]]]> wrote:
> I wonder if the issue is related to a missing time stamp on the baseband
> samples going from GR to UHD.  If the stream does not have a time stamp,
> the DUC is unable to apply the timed command because the DUC does not
> really know the time - it must pull the time from the streaming samples.
> This is in contrast to the radio block which does have access to time and
> can apply timed commands by referring to the motherboard clock.
>
> I am not too familiar with GR so I'm not sure how to know if GR is putting
> a time stamp on the streaming samples.
> Rob
>
> On Mon, Mar 2, 2020 at 10:04 AM Lukas Haase via USRP-users <
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]]][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com][mailto:
> usrp-users@lists.ettus.com[mailto:usrp-users@lists.ettus.com]]]]>
> wrote:Hi Marcus,
>
> Thank you that would be amazing!
>
> I followed the tutorial and built everything from source:
>
> $ lsb_release -a
> No LSB modules are available.
> Distributor ID: Ubuntu
> Description:    Ubuntu 18.04.4 LTS
> Release:        18.04
> Codename:       bionic
> $ uname -a
> Linux sdr 5.3.0-40-generic #32~18.04.1-Ubuntu SMP Mon Feb 3 14:05:59 UTC
> 2020 x86_64 x86_64 x86_64 GNU/Linux
> $ cd uhd
> $ git status
> HEAD detached at v3.15.0.0
> $ cd ../gnuradio
> $ git status
> HEAD detached at v3.7.14.0
>
>
> Thank you!
>
> Lukas
>
>
>
> PS: For some reason I sometimes do not get responses from this list. I
> just saw it looking at the mailman archives. Hence I cannot respond (to
> keep headers intact) but need to create a new message and manually "quote".
> I hope that still preserves the context somehow.
>
>
>
> Marcus Leech wrote:
> > On 02/28/2020 01:01 PM, Lukas Haase via USRP-users wrote:
> >> Hi again,
> >>
> >> I created a minimum example (gnuradio) that shows the issue described
> below.
> >> To summarize: Retuning to a different dsp frequency on an USRP X310
> (+UBX160) does not work (command ignored) ONLY if a timed command (in
> future is used).
> >> The code shows it in a simple manner. Commenting out the single line
> with set_command_time makes the example work.
> >>
> >> I am absolutely out of ideas and would appreciate any input!
> >>
> >> Best,
> >> Lukas
> > Lukas.
> >
> > Thanks for sticking with this.  I'll have a discussion with Ettus R&D to
> > see if this is a known issue and/or if there's a workaround.
> >
> > Remind me which version of UHD you're using?
>
>
>
> _______________________________________________
> USRP-users mailing list
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]]][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]]]]
>
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________
>
> USRP-users[http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users][http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D][http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D%5D]
> <http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com_______________________________________________USRP-users%5D%5D%5D>
> mailing list
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]]][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com][mailto:
> USRP-users@lists.ettus.com[mailto:USRP-users@lists.ettus.com]]]]
>
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com[http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com][http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D][http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D%5D]_______________________________________________
> USRP-users
> <http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5Bhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com%5D%5D%5D_______________________________________________USRP-users>
> mailing list
> USRP-users@lists.ettus.com
>
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com[http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com]
>
_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to