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 · 9 comments

Comments

Projects
None yet
5 participants
@santiaarana
Copy link

commented Feb 25, 2018

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 santiaarana reopened this Feb 25, 2018

@npaisnel

This comment has been minimized.

Copy link

commented Nov 11, 2018

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

This comment has been minimized.

Copy link
Contributor

commented Nov 11, 2018

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

This comment has been minimized.

Copy link

commented Nov 12, 2018

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

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link

commented Jan 6, 2019

Does SDR# work with SoapyRemote??

@unixpunk

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link
Contributor

commented Jan 7, 2019

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.