-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
support for Omnia SDR #13
Comments
Hey Vojtech, Unfortunately there are not current plans to support this hardware. I would need a good framework that works well on Android + an actual hardware device to test on during development. Both of which I believe do not exist at the moment for this hardware. Martin |
I have found that there is a commercial implementation of a libusb audio driver for Android: The device also needs a low speed libusb control, but that should be trivial to implement. Would you be interested to play with the device? I think the authors would give you one for free. |
Actually it seems that to implement audio-in for a fixed USB ID and a fixed audio protocol on Android using libusb-1.0 is quite simple: I will try to sketch up a proof of concept with the Omnia. |
Hello Martin. It has been nearly three years since I opened this request. I did some experiments since then. First I got it compile, see I tested accessing the sound card of the Omnia hardware using libusb-1.0 on Windows and I got it working. I had to deregister the Windows sound card driver from the USB device and register the system libusub.sys using the https://zadig.akeo.ie/ tool. Then I was able to write a working http://www.hdsdr.de/ plugin for the Omnia hardware talking to the Omnia's sound card directly using libusb-1.0 isochronous transfer. It was not difficult at all using the following sketch, as the Omnia sound card emulation supports just a single isochronous mode and no sound card control interface. https://github.com/shenki/usbaudio-android-demo Now comes the interesting stuff. How to integrate it with your rtl_tcp driver? It seems to me relatively straightforward to clone RtlSdrDevice.java & RtlSdrDeviceProvider.java to an OmniaDevice.java & OmniaDeviceProvider.java, then to clone rtlsdrdevice.c & sdrtcp.c,h to my omniadevice.c, omniatcp.c,h and implement the libusb communication there. Using your infrastructure it should be relatively straightforward to pipe the data from the TCP channel to libusb and vice versa. So far so good. I have following difficulties:
For fun, this is the documentation to my firmware extensions to support standalone CW transmit. Tony Parks of http://fivedash.com/ sold thousands of SoftRock receivers and rxtx combos. While the SoftRock receivers are slowly being replaced by the crop of AirSpy+ and SdrPlay devices (they are still a bit more expensive than the SoftRock RX Ensamble kit + a reasonable sound card and the soft rocks likely perform better on HF), there is enough of SoftRocks around to consider supporting them. Implementing a full fledged USB audio driver over libusb as offered by https://superpowered.com/ is quite job in itself. There is https://github.com/Themaister/libmaru which looks interesting, but frozen years ago. It is a pity google does not provide these drivers, iOS devices support multiple USB sound cards with no issue. Still it may be a viable alternative to implement a subset of the isochronous USB sound card protocol, as I expect that the cheaper USB sound cards will implement just the isochronous protocol, being phase locked to the USB bus frequency. Thanks for your work. Being now full time on an open source project Vojtech |
When we are at it, it would be nice to run a SoftRock based server on Raspberry PI Zero or similar. Again, writing a rtlsdr server to sample from an USB sound card and passing it to a TCP channel is trivial, but it would require the SDR Touch to offer configuration of the sampling frequency and sampling depth. Piping my SDR to the sunny garden bench would be smashing. Also integrating some mode decoders into the application would be cool. I ported a multi-mode digital modes Linux application gmfsk to PocketPC years ago |
Dear Martin.
I wonder whether you would kindly implement a support for the Omnia SDR transceiver into your rtlsdr driver.
The Omnia SDR
www.omnia-sdr.com
is a short wave HAM radio SDR transceiver, implementing an USB hub, USB audio class device and a libusb low speed communication port for controlling an internal VFO, band pass filters etc. The Omnia firmware could be changed to let the USB audio class device identify itself as something different than an USB audio device as to avoid the stock Linux USB driver to open it, so I suppose it should be then possible to implement an audio like driver using the libusb interface by porting a Linux USB audio kernel driver to libusb in a similar way it has been done for the rtlsdr.
Once there is a driver for the Omnia, I suppose one would be able to use your stock sdrtouch Android application for receive. A transmit function would be cool as well :-)
Thanks for consideration,
Vojtech
The text was updated successfully, but these errors were encountered: