ik1xpv / ExtIO_sddc

ExtIO_sddc.dll - BreadBoard RF103 / HDSDR
Other
69 stars 26 forks source link

Make it work under linux with gqrx/gr-osmosdr #223

Open vladisslav2011 opened 2 years ago

vladisslav2011 commented 2 years ago

Requires patched gr-osmosdr (gr3.7 only so far) https://github.com/vladisslav2011/gr-osmosdr/tree/ngrx No correct device listing and sample rates list. Gain selection is still a bit buggy.

Fix test segfault. Do not delete fx3Handler as RadioHandlerClass::~RadioHandlerClass() have already taken care of it. Retry opening the USB device after download for 5 times As it may be slow to reenumerate on some platforms. Include the firmware into libsddc binary as a BLOB Make USB HS work at lower sampling rates/tuner at <7MHz BW Implement r82xx bandwidth selection Prevent freeze on close after live device disconnection Allow low sample rates Improve compatibility with intel hubs Restore attenuations after band switch

Merging this may close https://github.com/ik1xpv/ExtIO_sddc/issues/201 Do not merge before testing under windows, please. Hints and suggestions are welcome.

vladisslav2011 commented 2 years ago

Thanks for a review. Changes plan:

  1. Split FX3Class.h into a separate PR
  2. Split ringbuffer mutex addition into a separate PR
  3. Split r828d bandwidth setting (firmware and host) into a separate PR
  4. Split Intel HUB freeze fix (firmware) into a separate PR
  5. Rebase this PR with latest changes on top of the sequence and request a review.

To be done later:

  1. Do not waste CPU time copying buffers when not using the decimator.
  2. Make the decimator work under linux. And maybe try switch to FIR as it should be more efficient, than FFT.
  3. Switch from plain pointers to std::shared_ptr.
howard0su commented 2 years ago

thank you for effort. your plan looks great.

vladisslav2011 commented 2 years ago

1,4 and 5 (on top of latest PR) are done. 2 is not required without arbitrary sampling rate implementation as it fixes crash when the sampling rate is changed while streaming. 3 would be hard to do while keeping compatibility with downconverter as changing the bandwidth would change center frequency offset too. It was done to make the device work at HS speed to reduce L-band interference from USB SS HUBS.

howard0su commented 2 years ago

1,4 and 5 (on top of latest PR) are done. 2 is not required without arbitrary sampling rate implementation as it fixes crash when the sampling rate is changed while streaming. 3 would be hard to do while keeping compatibility with downconverter as changing the bandwidth would change center frequency offset too. It was done to make the device work at HS speed to reduce L-band interference from USB SS HUBS.

My original idea for Linux implementation is implementing a new r2iqCntrl class which doesn't do complex IQ converting. but it really depends on what we want to expose from libsddc.