paulh002 / sdrberry

Raspberry pi SDR tranceiver using lvgl gui
GNU General Public License v3.0
47 stars 7 forks source link

Support for rpitx #28

Open hiperiondev opened 10 months ago

hiperiondev commented 10 months ago

Do you have any plans to support RPITX? https://github.com/F5OEO/librpitx

paulh002 commented 10 months ago

Sdrberry supports (almost) every SDR that has an SoapySDR driver. I don't know this project, Is it like transmitting using the GPIO directly? That would be interesting. The most easy way to support is to have a SoapySDR driver for librpitx. Building a SoapySDR driver is relative simple, the librpitx project should implement this. In this way the SDR can be used by multiple SDR software projects

hiperiondev commented 10 months ago

There is no SoapySDR support for RPITX that I know of. Whether there is support for GNU Radio: https://github.com/jmfriedt/gr-rpitx An alternative would be to make this support. A long time ago I made an implementation for OpenHPSDR, it works correctly but it is a bit unstable to frequency change: https://github.com/hiperiondev/hpsdr-p1-rpitx

paulh002 commented 10 months ago

The documentation of the library is very minimum, SoapySDR requires API for setting gain (optional), frequency and sending the samples. That is all. You can check my library for audio / tayloe QSD/QSE SoapyHifiBerry. If these API's are defined it should not take much to create a SoapySDR driver.

hiperiondev commented 10 months ago

That is probably the best option. For a while I had a conversation about the documentation with the author but he never added anything about how it works. To better understand how it works and correct some problems I made a C translation of the library. When I have a bit of time I will surely try to create support for SoapySDR

paulh002 commented 10 months ago

If you have a first version i am happy to test it.

hiperiondev commented 10 months ago

I will reopen when I have something working

hiperiondev commented 10 months ago

I have written the skeleton of the driver based on the PlutoSDR driver Responds correctly to detection. When I have something functional I'll let you know.

https://github.com/hiperiondev/SoapySDR_rpitx

paulh002 commented 10 months ago

The PlutoSDR driver is a good starting point, I also used it. I have to do some research on rpitx how they achieve to create that high frequency. Maybe we can also use it as a LO source for a tayloe mixer. That would be interesting.

hiperiondev commented 9 months ago

It already works... but with certain transmission outage problems. I think it is because of the buffer loading thread. But you can now try: https://github.com/hiperiondev/SoapySDR_rpitx

paulh002 commented 9 months ago

I have created a fork of the project to test it. I am not 100% sure what is the best solution, because the SoapySDR driver for rpitx does not have a RX channel. In principle it should report 0 channels for RX. But Sdrberry can not handle that currently, this I am fixing now first. But in the end I think it would be nice to support 2 SoapySDR drivers at the same time. One for TX and one for RX. But that will take some time. Once I have things working I will update the repository.

hiperiondev commented 9 months ago

I have allowed the Soapy driver to report the RX channel because I have encountered several programs that require it. It does not have functionality but it exists to avoid this problem.

paulh002 commented 9 months ago

In that case you should also support the streaming of rx data, in the right timing fashion. For sdrberry I prefer that the SoapySDR driver reports no rx channels. Maybe add a configuration option or a compile define option to select the behaviour. Maybe you can also add cmake support, the installation of the driver depends on the version of raspberry pi OS, I will also try to mae a cmake file, because it makes cross compilation easier.

Op zo 17 sep 2023 om 13:56 schreef Hiperión @.***>:

I have allowed the Soapy driver to report the RX channel because I have encountered several programs that require it. It does not have functionality but it exists to avoid this problem.

— Reply to this email directly, view it on GitHub https://github.com/paulh002/sdrberry/issues/28#issuecomment-1722460297, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIOBYUFHJ72RG3FEBD5WP4DX23QODANCNFSM6AAAAAA4ISTR7Q . You are receiving this because you commented.Message ID: @.***>

paulh002 commented 9 months ago

I get some output, but the frequency does not match. I will wait for your update.

image

hiperiondev commented 9 months ago

I have made a lot of progress and it already transmits fairly well. I have found that the rate of consumption of the transmission FIFO in RPITX is not constant and create constant glitches I hope to be able to solve it within a short time.