Open Kuurusch opened 5 years ago
So someone helped me in the mailing-list and I could solve the problem for me with using the python-script under firmware/usrp3/x300/x300_debug.py --addr 192.168.10.1 --poke=0x00100058 --data=1
But I wouldn't say the issue is solved, its clearly a bug and during setup-process of USRP some buffers are not cleared!
It also didn't helped to wait for several minutes before restart. I think the problem is because after killing the app the streaming on the USRP continuous until I restart the app (led under RX2 port is still on).
Would it be helpful to post our FPGA-Code concerning the PSD-block?
I just forgot to mention, that we've tested our FPGA-Image firstly with GNU-Radio and there it works without a problem. But I think GNU-Radio does not use multi_usrp, it uses directly a device3, right?
Just tested the final release of 3.14.0.0 and the problem is still there!
@Kuurusch Can you please email support@ettus.com and we can help further debug the issue through that channel.
Issue Description
It is not possible to restart our application and initialize the USRP's after the application crashed or was terminated by the user with ctrl-c. It seems, the USRP's are not properly reset during initializing the USRP's again.
Setup Details
We are working on Ubuntu 18.04 LTS and have installed UHD 3.14 rc. We use RFNoC in combination with multi_usrp (5 USRP's x310 with daughterboard ubx-160). We tested the USRP's with the standard DDC- and a customized PSD-block (power spectral density). Samples per packed and per buffer is set to 256, because one PSD has 256 bins.
Expected Behavior
The USRP's should be able to reinitialize without powercycle. So when the application crashes or is terminated in terminal with ctrl-c, it should be possible to restart the application, without powercycle the hardware. Under UHD 3.9 and with our custome FPGA was this no problem.
Actual Behaviour
After a powercyle of the devices the initialization and the start of an rx_stream works just fine and we get the expected data. But if the application crashes or we kill it with ctrl-c in the terminal, a second restart of the application is not possible. Initialization and start of the rx_stream works just fine, but after several received packages with the recv() function the application stuck after a further call of the recv() function and it prints out repeatedly the following error:
[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.
The recv() function never returns.
Because it happens only after several successfully received packages, I think it's a problem with a buffer. So a buffer is overwritten partially and the data are corrupt. Thats maybe the reason, why it cant's time-align the packages anymore. But we resized the linux socket-buffer already with: sudo sysctl net.core.rmem_max=33554432
Steps to reproduce the problem
We initialize the USRP's with the following code/steps:
//================= //Set-up streaming: //================= uhd::device_addr_t streamer_args(streamargs); std::vector rx_channel_nums;
Additional Information
I've wrote already in the mailing-list and it seems, I'm not the only person who has this problem!