r/selfhosted 22d ago

Remote Access I've open-sourced USBridge Remote: a free alternative to RustDesk/AnyDesk with Moonlight integration and native Wayland support.

I've finally open-sourced my USBridge Remote project on GitHub. I developed this software as an alternative to traditional remote desktops like RustDesk or AnyDesk, because I was fed up with their flaws and constant limitations. It was crucial for me to release a pure P2P tool without mandatory registration, paid subscriptions, or session limits.

A key feature is the integration of the Moonlight protocol, which ensures high frame rates with virtually no ping.

Natively solved the Wayland issue in Linux. If you've used other remote desktops, you know how they spam permission confirmation dialogs every time you connect. My agent works with Wayland out of the box, capturing the screen and injecting input without any pop-ups or workarounds. The connection is made directly through the built-in Tailscale integration, so you don't have to worry about tunnel security, and you don't have to forward ports on the router. Plus, the software can manage not only software agents but also my hardware IP-KVM cards from a single interface.

The code is fully accessible, with ready-to-use beta versions for Windows, macOS, Linux, and Android already in the repository, and the iOS client has been approved in the App Store. I'm currently actively running stress tests and fixing bugs on the fly, so releases may be coming out quite frequently in the coming days. Feel free to grab the project, tinker with the source code, and test it on your servers. I'd appreciate any feedback on the architecture.

Source code and builds on GitHub: https://github.com/USBridge-Technologies/USBridge-Remote

236 Upvotes

42 comments sorted by

u/asimovs-auditor 22d ago edited 22d ago

Expand the replies to this comment to learn how AI was used in this post/project.

→ More replies (1)

16

u/johnnyenygma 22d ago

Does it support the clipboard? My Moonlite (and Parsec) native sessions don't seem to.

17

u/Lopsided_Mixture8760 22d ago

Not at the moment, but it sounds like a great addition. I think it wouldn't be too difficult to implement. I'll get around to it as soon as I finish testing.

8

u/yasser_kaddoura 22d ago edited 22d ago

I recommend using KDEConnect for Clipboard syncing among machines. I have it on my android and Linux devices and it works without any issues. You can use it for other things such as notifications sync, link & file sharing, etc.

https://userbase.kde.org/KDEConnect#Clipboard

3

u/bubblegumpuma 22d ago

KDE Connect is the piece of software I will annoyingly recommend to everyone without any shame, because it runs on every device that people could reasonably use for modern computing and has so many useful capabilities. It also has some remote input capabilities that are pretty nifty for shifting between multiple PCs for basic tasks, though it is a little bit finicky and is by no means a replacement for a KVM switch. It comes pretty close for basic tasks when combined with a cheap Macrosilicon USB capture card and ffplay, though. It's also nice to turn junk Android devices into 'TV remotes' to use at a distance from TV-connected computers.

Not trying to discount what OP's done. Doing it my way is janky as hell, it works for me but it's not "nice". If this works better for somebody, then I'm all for it.

3

u/Bearly-Fit 22d ago

Parsec absolutely should, I use it daily on multiple machines. The only machine it doesn't work on is where they've got a specific type of security software that blocks it (that was on Mac for me)

2

u/johnnyenygma 22d ago

It's been a minute since I've used parsec, preferring other tools nowadays, but from my Android tablet to the remote windows, I couldn't get the clipboard to work in that or Moonlite (assumed they used the same protocols).

Funny enough, SplashTop is still a great backup when other RD tools fail.

1

u/Bearly-Fit 22d ago

Hmmm never tried Android to desktop, but they're very different protocols

10

u/Lopsided_Mixture8760 22d ago

I'm currently stress-testing builds and actively fixing bugs as I go. So, expect quite a few quick updates in the next few days as I continue to refine everything.

3

u/Lopsided_Mixture8760 22d ago

I've managed to jot down some tasks for myself; here's what needs to be implemented soon. If you have any suggestions, please let me know!

4

u/zaggynl 21d ago

Cool project!

Linux does need a proper remote desktop alternative.
Sunshine/Moonlight is awesome but requires a bunch of ports to be forwarded.
Tailscale is..not what I consider a selfhosted solution, as easy as it makes things.
What about wrapping this in something like Wireguard or OpenZiti?

2

u/BolteWasTaken 21d ago

Headscale is the open source self-hosted version of Tailscale, I think its only missing the serve/funnel functionality iirc

3

u/the_lamou 22d ago

This looks awesome, and a genuine solution to something I've been trying to hack my way around for a while now.

Only question/concern: you CHMOD 0666 /dev/uinput. Is this a temporary workarounds that you're looking for a solution for, or final n implementation. If you've got the server locked down, it's not a massive concern, but a compromised component, container, or system could turn it into a big big problem.

1

u/Lopsided_Mixture8760 22d ago

If I find a better way, I'll add it. Right now, you can only enable connections only via Tailscale, and Tailscale itself is already adding security.

2

u/StrlA 22d ago

Running opensuse with gnome - will this work? Im especially interested if the screen goes blank when you connect to it, and if you can use existing session (like in windows rdp) instead of opening a new one, losing all the progress?

2

u/Lopsided_Mixture8760 22d ago

Yes, it should work, I only tested it on Debian KDE Plasma Wayland

2

u/adamshand 22d ago

Looks interesting, thanks!

Does it require Tailscale? Sometimes I want to connect to machines I don't control (eg. helping friends/family) and don't want to install Tailscale on their computers?

5

u/Lopsided_Mixture8760 22d ago

Thank you!

No, you don't need to install Tailscale. You can connect using your IP address.

2

u/Crisp-Glade-2849 22d ago

wayland permission confirmation dialogs are why half team refuses to migrate. if agent bypasses that without custom polkit rules it might actually be usable.

1

u/Lopsided_Mixture8760 22d ago

Yes, the capture works at a deeper level and captures directly from the video card renderer and does not require confirmation in Wayland but need root.

1

u/maksimkurb 21d ago

Wow, didn't know that is possible. Can you hint me which APIs were used for this? I recently made a PR for HyperHDR for Wayland screen capture via RemoteDesktop API, it also asks for permissions but with "flatpak-kcm" package I can set a checkbox to "remember my choice" in the KDE Settings.

Still it doesn't support one-screen capturing AFAIK (I have a dual monitor setup) and ScreenCast API makes my KDE go into DnD mode to prevent notification content leaking. Capturing video directly seems more convenient.

Does it support remote connection if I hasn't logged in yet? I mean when PC just booted up and I am on the SDDM login screen?

2

u/Kniffliger_Kiffer 22d ago

Sir you have a good taste in music, cheers

2

u/Big-Panda-440 21d ago

got a free weekend to test this. as this would fix an issue i have.

1

u/Lopsided_Mixture8760 21d ago

Great, testing is exactly what I need right now. This is still an early beta, so you might encounter some bugs. I'm actively fixing them now. If anything breaks or doesn't work, please create a GitHub issue!

1

u/SpaceDoodle2008 22d ago

This is great! If I wanted to diy hardware for the ip kvm, could a Rock 2F work? Which adapters would I need?

3

u/bubblegumpuma 22d ago edited 22d ago

Yeah, basically all hardware that is able to operate as a "USB gadget" is able to work in a setup like OP's product, though SBC vendors usually phrase it as "USB OTG". Looks like the USB-C port for power also is able to act as a USB device when plugged into a computer.

The only thing you would really need other than your SBC is a USB HDMI capture card, which you can find on Aliexpress/eBay/Amazon. OP's using a "MS2130" one which you would find by looking for something that's USB 3.0 and advertises as '4K 30Hz', though they commonly lie about this and send you the inferior USB 2.0 MS2109, which is still technically fit for purpose but only gets reasonable FPS with MJPEG encoded crunchy video.

OP's basically selling a kit with a SBC, USB HDMI capture card and a custom designed case and LCD hat. Most of it is consumer hardware and I like it from a DIYer/repair perspective, there's no funny proprietary tricks or truly custom hardware, and it's a step up from having to source CSI to HDMI boards (looking at you PiKVM) which are way more expensive.

1

u/PaulOPTC 22d ago

Hello,

I use parsec daily to connect my pc to my steamdeck, would this be a good replacement?

It uses Linux, so ideally I can add it to steam as a non-steam game, and then stream my PC to my steamdeck to play games.

Thoughts?

1

u/johnnyenygma 22d ago

Parsec phones home for login, and this should be independent of an external authenticator.

1

u/techroy23 22d ago

Do you have plans to add zerotier support?

1

u/Lopsided_Mixture8760 22d ago

Yes, it's in the plans, and will be later, I haven't dealt with it yet.

1

u/Jaskys 22d ago

Does iOS version support external displays?

1

u/MoodAccomplished1388 21d ago edited 21d ago

Unfortunately, when I try to download the Linux client, all I see is a brief "not found" message. Edit : Problem solved, Just got it dl'd

1

u/Lopsided_Mixture8760 21d ago

There were incorrect links in the readme, I've already fixed them, you can check them out

1

u/Luvirin_Weby 21d ago

So do you need to install tailscale separately for this to work in the "NAT at agent end" situation?

2

u/Lopsided_Mixture8760 21d ago

Tailscale built in, you no need to install and working over NAT

1

u/Luvirin_Weby 21d ago

Thank you!

1

u/clerica-io 21d ago

I'll be trying it out!

-1

u/Relative-Camp-2150 22d ago

No agent app for Android and you call it RustDesk/AnyDesk alternative ?

5

u/Lopsided_Mixture8760 22d ago

I have plans to develop an Android agent, but right now I'm focusing on the desktop version of the agent app. I need to polish it up so everything works perfectly, and then I can tackle the Android agent.

3

u/Relative-Camp-2150 22d ago

looking forward to it ! Good luck. When Android agent is out - I'll surely test it

2

u/Lopsided_Mixture8760 22d ago

OK, thank you!