Hi, I am discussing this question on usrp-users right now but I think this may actually be a question regarding the scheduler in gnuradio. I have the following simple flow graph (USRP in loopback configuration):
+---------+ +---------------+ | | | Cosine Source |---+-------------------------------------->| QT GUI | +---------------+ | +-----------+ +-------------+ | Freq | `--->| USRP Sink | | USRP Source |---->| Sink | +-----------+ +-------------+ | | +---------+ Both Source+Sink use the same motherboard which resets its time as follows: self.uhd_usrp_sink_0.set_time_unknown_pps(uhd.time_spec()) Furthermore, I let streaming start at the same time: self.uhd_usrp_sink_0.set_start_time(uhd.time_spec(1.0)) self.uhd_usrp_source_0.set_start_time(uhd.time_spec(1.0)) The very puzzling result: I only get a string of L's, most likely from USRP Sink, indicating that samples arrived too late (later than 1s). I can "fix" this in two ways: 1.) I break the connection from "Cosine Source" to "QT Freq Sink". Then both input and output sample streams are independent 2.) I let USRP Sink streaming start *later*: self.uhd_usrp_sink_0.set_start_time(uhd.time_spec(1.1)) self.uhd_usrp_source_0.set_start_time(uhd.time_spec(1.0)) Fix #1 I cannot use because I need both signals in my algorithm. Fix #2 is unsatisfying because it feels unreliable and if I add blocks like "Skip Head" with a sufficiently high number (which I want to use to align my signals within gnuradio" I receive "U" (Underrun, USRP Sink did not receive enough samples from gnuradio). My question is: How does the scheduler work exactly if we call the work functions of these blocks work1, work2, work3, work4? In which time order are they called and what makes it to break the above diagram when USRP Source/Sink start streaming at the same time? Thanks, Lukas