SoapyRemote icon indicating copy to clipboard operation
SoapyRemote copied to clipboard

Access SoapyRemote from the public ip ?

Open santiaarana opened this issue 6 years ago • 11 comments

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?

santiaarana avatar Feb 25 '18 19:02 santiaarana

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 ?

npaisnel avatar Nov 11 '18 09:11 npaisnel

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.

  • https://github.com/pothosware/SoapyRemote/blob/master/server/ClientHandler.cpp#L339
  • https://github.com/pothosware/SoapyRemote/blob/master/client/Streaming.cpp#L246

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.

guruofquality avatar Nov 11 '18 15:11 guruofquality

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.

npaisnel avatar Nov 12 '18 10:11 npaisnel

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?

ast avatar Jan 06 '19 10:01 ast

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. :)

unixpunk avatar Jan 06 '19 18:01 unixpunk

Does SDR# work with SoapyRemote??

ast avatar Jan 06 '19 20:01 ast

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

unixpunk avatar Jan 06 '19 20:01 unixpunk

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.

ast avatar Jan 06 '19 20:01 ast

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

guruofquality avatar Jan 07 '19 03:01 guruofquality

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.

ajorg avatar Sep 16 '20 17:09 ajorg

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.

kevinelliott avatar Jan 23 '21 03:01 kevinelliott