How about if you use an unmodified "benchmark_rate"? On Mon, Dec 18, 2023 at 11:43 AM Anabel Almodovar < anabel.almodo...@gmail.com> wrote:
> Even with a single card I still get the same error. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Creating the usrp device with: > addr0=192.168.60.2,second_addr0=192.168.50.2,recv_buff_size=900000000...Creating > the subdevice with: A:0 A:1 B:0 B:1...Using Device: Single USRP: Device: > X-Series Device Mboard 0: X310 RX Channel: 0 RX DSP: 0 RX Dboard: > A RX Subdev: TwinRX RX0 RX Channel: 1 RX DSP: 1 RX Dboard: A > RX Subdev: TwinRX RX1 RX Channel: 2 RX DSP: 0 RX Dboard: B RX > Subdev: TwinRX RX0 RX Channel: 3 RX DSP: 1 RX Dboard: B RX > Subdev: TwinRX RX1 TX Channel: 0 TX DSP: 0 TX Dboard: A TX > Subdev: Unknown (0xffff) - 0 TX Channel: 1 TX DSP: 0 TX Dboard: B > TX Subdev: Unknown (0xffff) - 0Número de canales detectados: 4Número de > tarjetas detectadas: 1Actual RX Rate: 50.000000 Msps...Actual Acquisition > Time to: 0.000000 Seconds.Actual RX Freq: 800.000000 MHz...Actual RX Gain: > 5.000000 dB...Actual RX Bandwidth: 50.000000 MHz...Setting LO > source...[INFO] [MULTI_USRP] 1) catch time transition at pps edge[INFO] > [MULTI_USRP] 2) set times next pps (synchronously)Press Ctrl + C to > stop streaming...STAR SAMPLING ...D[ERROR] [STREAMER] The receive packet > handler failed to time-align packets. 1002 received packets were processed > by the handler. However, a timestamp match could not be determined.D[ERROR] > [STREAMER] The receive packet handler failed to time-align packets. 1002 > received packets were processed by the handler. However, a timestamp match > could not be determined.^CReceived 199995208 samples in 6.703929 > seconds29.8325 MspsDone!* > > > El lun, 18 dic 2023 a las 17:13, Rob Kossler (<rkoss...@nd.edu>) escribió: > >> Several comments: >> >> - It seems like multiple things are going on. You mentioned the >> original "failed to time align" error and below you mentioned 'O' and 'D'. >> - The time-align error I did not expect had anything to do with >> "performance". This seemed to me that the first packet arriving from >> device >> 1 had a different time stamp than the first packet arriving from >> device 2. >> Now, I'm not so sure >> - But, the 'O' and 'D' are often related to "performance". >> Overflow 'O' occurs when the 'Radio' block has A/D samples that it >> needs to >> put in a FIFO but the FIFO is full because it is not being emptied fast >> enough (presumably by the host PC). A dropped packet (or sequence >> error) >> 'D' occurs when the host PC detects that the incoming packets are not >> in >> sequential order. This can occur if the host PC Ethernet handling >> becomes >> overwhelmed and simply discards a set of incoming packets for a time >> period. Both 'O' and 'D' can imply that the host PC is not keeping up >> with >> incoming data >> - In any case, you may want to simplify the problem by dropping from >> two devices to one device. See if you can eliminate some or all of these >> problems when using only 4 channels. >> - If you drop to one device, you can use benchmark_rate to test >> performance. If you do not use "second_addr", you should be able to get >> 4x50 MS/s. If you use "second_addr", you should be able to get 4x100 >> MS/s. >> - Regarding your needed changes to "rx_samples_to_file", I guess I >> was thinking about the latest version which supports multiple channels. >> Perhaps UHD 3.12 has a version of this example that only supports a single >> channel. You could compare your version to the latest version (say, UHD >> 4.6) to see the improvements to this example. >> >> >> On Mon, Dec 18, 2023 at 7:44 AM Anabel Almodovar < >> anabel.almodo...@gmail.com> wrote: >> >>> Hi Rob, >>> >>> Thanks for the suggestions. I have tried deleting the LO sharing, and >>> nothing changes. Then removing the second addr, and that leads me to get >>> 'Ds' in addition to the error already mentioned, as it is not able to >>> handle that much information. Although I don't quite understand the >>> difference between 'O' and 'D'. >>> >>> From what I understand the program is set up for a single channel, so I >>> need to modify it to get more than one. >>> >>> Thank you in advance. >>> >>> Regards, >>> Anabel >>> >>> El vie, 15 dic 2023 a las 15:39, Rob Kossler (<rkoss...@nd.edu>) >>> escribió: >>> >>>> Hmmm. I'm not sure. Here are a few comments: >>>> >>>> - Try running without "second_addr". I realize that you will need >>>> it for full rate (4 x 100MS/s for each X310), but you could run at 50 >>>> MS/s >>>> without second_addr >>>> - Try running without shared LO. I don't think you would need to >>>> physically change any sharing cables. >>>> - I am curious why you needed to modify the streamer, pointer >>>> buffer and file writing. I would expect that this would scale with the >>>> number of channels such that you didn't need to modify any code in this >>>> area >>>> - If you were using a more recent UHD, I would recommend switching >>>> to the example benchmark_rate which natively supports external PPS and >>>> multiple devices. I noticed that even the most recent >>>> rx_samples_to_file >>>> does not support external PPS (without modifying the code) >>>> - I know you mentioned you were unable to upgrade because of >>>> compatibility constraints. But, even if you cannot upgrade the OS, >>>> would >>>> you be able to install a new UHD - perhaps in a local folder that did >>>> not >>>> interfere with the system-wide UHD 3.12 installation. I typically have >>>> multiple UHD versions on my system and switch among them by "sourcing" a >>>> given setup file as needed. >>>> >>>> >>>> On Fri, Dec 15, 2023 at 12:52 AM Anabel Almodovar < >>>> anabel.almodo...@gmail.com> wrote: >>>> >>>>> Dear Rob, >>>>> >>>>> Yes, I use an external clock configuration. >>>>> >>>>> *std::this_thread::sleep_for( std::chrono::milliseconds(int64_t(1000 * >>>>> setup_time) );* >>>>> >>>>> >>>>> >>>>> *usrp->set_clock_source("external", >>>>> uhd::usrp::multi_usrp::ALL_MBOARDS); usrp->set_time_source("external", >>>>> uhd::usrp::multi_usrp::ALL_MBOARDS);usrp->set_time_unknown_pps(uhd::time_spec_t(0.0));std::this_thread::sleep_for(std::chrono::seconds(1));* >>>>> >>>>> I have only modified the code to get 8 channels and LO sharing. I want >>>>> to get a continuous acquisition setup without losing samples. But I am >>>>> starting with something basic at the moment. Any suggestions are welcome. >>>>> So I've modified the streamer, the pointer buffer, and added writing >>>>> files. >>>>> >>>>> my line is >>>>> *$sudo ./rx_samples_to_file_v1 >>>>> --args="addr0=192.168.60.2,second_addr0=192.168.50.2,addr1=192.168.40.2,second_addr1=192.168.30.2,recv_buff_size=900000000" >>>>> --subdev="A:0 A:1 B:0 B:1" --channel="0,1,2,3,4,5,6,7" --freq 800e6 --rate >>>>> 25e6 --bw 25e6 --gain 70 * >>>>> >>>>> Regards, >>>>> >>>>> *Anabel* >>>>> >>>>> >>>>> >>>>> El jue, 14 dic 2023 a las 18:25, Rob Kossler (<rkoss...@nd.edu>) >>>>> escribió: >>>>> >>>>>> Hi Anabel, >>>>>> In my opinion, the error you are experiencing has nothing to do with >>>>>> streaming performance settings (such as "performance" governor, network >>>>>> descriptors, MTU size, etc). The issue seems to be that the two X310 >>>>>> devices do not have synchronized clocks. In addition to the physical >>>>>> synchronization using OctoClock, you must also configure each device to >>>>>> use >>>>>> external synchronization and you must tell each device to reset its FPGA >>>>>> clock count at a common PPS. The typical sequence is: (1) wait for a PPS >>>>>> to >>>>>> occur (by querying either device), (2) tell each device to reset its FPGA >>>>>> clock at the subsequent PPS (this step must complete before the next PPS >>>>>> arrives). >>>>>> >>>>>> You mentioned that you are using rx_samples_to_file. Did you modify >>>>>> it in any way? What is your exact command line with all parameters? >>>>>> Rob >>>>>> >>>>>> On Thu, Dec 14, 2023 at 10:29 AM Anabel Almodovar < >>>>>> anabel.almodo...@gmail.com> wrote: >>>>>> >>>>>>> Dear Rob >>>>>>> >>>>>>> Thank you for your answer. >>>>>>> I make use of the CDA-2990 octoclock as a source of synchronization >>>>>>> between both USRPs, in addition to local oscillator sharing. I use dual >>>>>>> 10GigEth connections and a MTU of 9000 to connect the USRPs to the PC. >>>>>>> >>>>>>> Due to various compatibility issues I am unable to upgrade the >>>>>>> system. >>>>>>> >>>>>>> When I work with a sample rate of 10MSps I don't get problems but >>>>>>> when I increase to 25MSps I start to get the error. I need them working >>>>>>> with 100MSps. I have tried changing the CPU governor to "performance" to >>>>>>> get the maximum working frequency (*sudo cpupower frequency-set >>>>>>> --governor performance*), as well as changing the number of network >>>>>>> interface descriptors to maximum (*sudo ethtool -G <interface> tx >>>>>>> <max> rx <max>*), or increasing the dirty memory buffer (*sudo >>>>>>> sysctl -w vm.dirty_ratio=80; sudo sysctl -w >>>>>>> vm.dirty_background_ratio=50*), >>>>>>> but I still get the same problem. >>>>>>> >>>>>>> Regards, >>>>>>> Anabel >>>>>>> >>>>>>> El jue, 14 dic 2023 a las 15:38, Rob Kossler (<rkoss...@nd.edu>) >>>>>>> escribió: >>>>>>> >>>>>>>> Hi Anabel, >>>>>>>> How are you sync-ing the clocks on the two units? Do you have an >>>>>>>> external PPS source and are you configuring both devices to use this >>>>>>>> external source? >>>>>>>> >>>>>>>> Finally, do you have the ability to upgrade your OS and your UHD >>>>>>>> versions? There aren't many user's that are using UHD 3.12 so if you >>>>>>>> have >>>>>>>> issues, it will be hard to get support. >>>>>>>> Rob >>>>>>>> >>>>>>>> On Thu, Dec 14, 2023 at 5:20 AM Anabel Almodovar < >>>>>>>> anabel.almodo...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Dear all, >>>>>>>>> >>>>>>>>> I am trying to make an acquisition with two X310 equipped with two >>>>>>>>> TwinRx. I am using Ubuntu 16.04 LTS 64-bit and UHD 3.12. My PC >>>>>>>>> contains >>>>>>>>> 128GB RAM and an Intel® Xeon(R) Silver 4114 CPU @ 2.20GHz × 40 and a >>>>>>>>> 4TB >>>>>>>>> SSD. I have modified the example rx_samples_to_file.cpp code to get 8 >>>>>>>>> channels and I get the following error: >>>>>>>>> >>>>>>>>> *D* >>>>>>>>> *[ERROR] [STREAMER] The receive packet handler failed to >>>>>>>>> time-align packets. 1002 received packets were processed by the >>>>>>>>> handler. >>>>>>>>> However, a timestamp match could not be determined.* >>>>>>>>> *Timeout while streaming* >>>>>>>>> >>>>>>>>> *[ERROR] [X300] 192.168.60.2 <http://192.168.60.2>: x300 fw >>>>>>>>> communication failure #1* >>>>>>>>> *EnvironmentError: IOError: x300 fw poke32 - reply timed out* >>>>>>>>> *[ERROR] [UHD] An unexpected exception was caught in a task >>>>>>>>> loop.The task loop will now exit, things may not work.AssertionError: >>>>>>>>> reply.sequence == request.sequence* >>>>>>>>> * in virtual void >>>>>>>>> x300_ctrl_iface_enet::__poke32(uhd::wb_iface::wb_addr_type, uint32_t)* >>>>>>>>> * at >>>>>>>>> /home/rs3_lab/workarea-uhd/uhd/host/lib/usrp/x300/x300_fw_ctrl.cpp:135* >>>>>>>>> >>>>>>>>> I don't know how to solve the Timeout problem, I have tried to >>>>>>>>> start the acquisition 1.1 sg in time. But it didn't work. >>>>>>>>> >>>>>>>>> >>>>>>>>> * stream_cmd.stream_now = false; >>>>>>>>> stream_cmd.time_spec = usrp->get_time_last_pps(0)+1.1;* >>>>>>>>> >>>>>>>>> What is the problem and how can I fix it? >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Anabel >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> USRP-users mailing list -- usrp-users@lists.ettus.com >>>>>>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com >>>>>>>>> >>>>>>>>
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com