Skip to content
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

Access SoapyRemote from the public ip ? #38

Open
santiaarana opened this issue Feb 25, 2018 · 11 comments
Open

Access SoapyRemote from the public ip ? #38

santiaarana opened this issue Feb 25, 2018 · 11 comments

Comments

@santiaarana
Copy link

Thank you very much for your help with the installation of soapy remote. I have been listening to GQrx and win7 pro from my local network for 19 days and I am very satisfied. Will it be possible soon to access SoapyRemote from the public ip ?. Is there any other sdr client that works from windows 7?

@npaisnel
Copy link

Yes, I'd like to know how to do that too.

Trying to access it using CubicSDR 0.2.5

Locally I can add a device using the Manual Device tab
SoapyRemote in drop down, 192.168.1.72:55132 in the text box
It sees the device and hitting Start and it works

If I add the device as
paisnel.noip.me:55132
It too is detected, the RSP device serial number is seen

BUT hitting Start does nothing, there is no streaming of audio or waterfall starting.

I have had a friend across the Atlantic try it remotely and he too can see my device, but Start fails. No crash or hang, just nothing happens

Router set up for Single Port forwarding TCP/UDP on 55132

Is there another undocumented port that is needed too ? I only found 55132 via help here, wonder if there is another that is needed too ?

@pothosware pothosware deleted a comment from npaisnel Nov 11, 2018
@guruofquality
Copy link
Contributor

Thats probably why this is an open issue, the control is TCP on a configurable server port. But the streaming (which can be TCP or UDP) just uses the first port available which is allocated by the OS.

You can change this by changing the bind port to something specific that you can put into your NAT/router.

Keep in mind that both sides are binding to a socket, and this isnt a case of UDP hole punching. So if its an rx stream, the server is running a server for the rx stream, but the client is also running a server for the flow control messages, and status messages. You can skip status probably, but both sides need a way to get to the port on either side through NAT.

@npaisnel
Copy link

Ok, thanks
Looks a bit more than I’d have any idea how to do.

I’ll stick with the rtlsdr stick and software for now. Bought an SDRPLAY RSP device as they promised so much more than the rtl usb sticks, but as yet, no software capable of streaming across internet for the RSP devices. At moment I can tune and stream to iPhone via RTL -TCP stream, which is my ultimate goal

RTL-SDR Receiver Iphone app.

@ast
Copy link

ast commented Jan 6, 2019

I was thinking about this problem and came to the conclusion that perhaps it's better to write a "SoapyInternet" server/device.

The problems are really quite orthogonal; it's a big difference streaming over the Internet vs streaming over a local network. You suddenly have to deal with security, smaller MTU, packet loss, NAT, and firewalls.

I'm thinking about writing something using RTP/RTCP.

Thoughts, ideas?

@unixpunk
Copy link

unixpunk commented Jan 6, 2019

Thanks for the work on this! Maybe the ship has sailed, but ideally the current protocol would be changed to be "one-way". Meaning the client (sdr#/cubicsdr) would be the only one making the connection to the server running the SDR. Maybe you'd also have more flexibility to allow manually entered SoapyRemote addresses rather than only using avahi? Happy to help brainstorm and test if you'd like. My interest here would be the ability to place plutosdr devices running SoapyRemote directly on them (like PlutoWeb) facing the web, similar to how Airspy has done. With a OTG ethernet adapter PlutoSDR can even be headless, no computer needed on the SDR side. (cpu usage would be of concern as well in my use-case due to the limited nature of embedded SoC's.)

Would also have to take into consideration the bandwidth required of the IQ data obviously, would be very easy to change a setting and have 10MB/sec start coming down the wire. :)

@ast
Copy link

ast commented Jan 6, 2019

Does SDR# work with SoapyRemote??

@unixpunk
Copy link

unixpunk commented Jan 6, 2019

Just an example, but don't really see why it couldn't: http://www.andrej-mohar.com/plugin-basics-for-sdr

@ast
Copy link

ast commented Jan 6, 2019

Thanks for the link. Someone should definitely work on a SDR# plugin. It would increase the audience a lot... Unfortunately I don't know C# nor have Windows.

@guruofquality
Copy link
Contributor

If I had to choose between starting a new project or expanding soapyremote, I would expand it since I think all of the hard stuff of unix sock cross platformness and wrapping every API call has been taken care of.

Mentioned above, its probably an afternoons work to get the NAT issue solved, its a matter of ports and who first binds the sockets and who first sends to that socket. But with that in mind, its a unencrypted protocol with no security or permissions whatsoever :-)

Here is a list of what I think is missing in SoapyRemote to make it internet safe:

Security

  • It needs ssl and credentials for the connection and control
  • Permissions based on credentials. So once you can connect to the server, which device can you use? which streams can be accessed, which settings can be used, getters only, etc..

Locating servers
We wouldn't use mdns/ssdp obviously. But other than explicitly specifying the server, it would be cool to provide a static list of servers as like a conf file on the PC. Some kind of server list that could be sync'd or downloaded from the web. That way apps like cubicsdr could enumerate all of the devices out there on the "cloud" or whatever.

Changes to streaming

  • we probably want the ability to share the same rx stream to multiple clients
  • as mentioned earlier in the issue, the socket setup is a little different because of NATing

@ajorg
Copy link

ajorg commented Sep 16, 2020

Hello, I ran into the same issue and I'm wondering if UPnP could be used so that SoapyRemote can open the ports on the firewall. Either of MiniUPnP or GUPnP could be used to talk to the firewall when establishing connections that appear to be from a remote network.

I would not require security be added to the server before supporting this, though obviously that's always a good idea.

@kevinelliott
Copy link

Any chance there is a list of public SoapyRemote SDRs? If not, I would be willing to build and maintain a directory for them, similar to Spyserver Network.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants