remote desktop options

5 Best Remote Desktop Options for Raspberry Pi

There are several ways to access a Raspberry Pi remotely, and I’ve tried most of them over the years. Some are very easy to set up, while others work better depending on what computer you’re connecting from or what you want to do. In this article, I’ll compare the main options so you can see which one fits your setup best.

The easiest solution to remote access a Raspberry Pi with the full desktop experience is to use VNC. It’s included by default on Raspberry Pi OS and works from any computer or smartphone. Other good alternatives include TeamViewer, RDP, or Raspberry Pi Connect.

For each method, I will explain how to set it up on your Raspberry Pi and how to access it from any operating system (Windows, Linux, Mac, and even from your smartphone). Read on to learn everything about these solutions.

If you’re new to Raspberry Pi or Linux, I’ve got something that can help you right away!
Download my free Linux commands cheat sheet – it’s a quick reference guide with all the essential commands you’ll need to get things done on your Raspberry Pi. Click here to get it for free!

If you click our links and make a purchase, we may earn an affiliate commission. Learn more

1. XRDP on Raspberry Pi OS

Best for low latency.

XRDP is an open-source remote desktop protocol server, which allows you to connect to the Linux desktop from any operating system. If you need to open or redirect access on your router or firewall, know that XRDP uses the standard port 3389.

Warning: This method works on Raspberry Pi OS (bookworm or trixie) but doesn’t work on older releases (like bullseye). You won’t be able to log in. A workaround is to disable auto-login in the Raspberry Pi Configuration or use another account (create a new user).

Installation

The installation of XRDP is straightforward as it’s available in the default Raspberry Pi OS repositories.

The first step is to install the XRDP server on your Raspberry Pi:
sudo apt install xrdp

But you can also use the Add/Remove Software tool to install XRDP if you prefer not to use the command line.

Something not working as expected?
You can get answers from real experts in minutes.
Get help with your setup

Now that it’s installed, you can manage the XRDP service with the usual systemctl commands:
sudo systemctl start | stop | restart | status xrdp

Warning: XRDP cannot connect to the Wayland display manager, which is now the default on Raspberry Pi OS. For this method to work, you have to switch your Raspberry Pi desktop back to X11 using the steps below.

Next, make the desktop use the X11 display manager instead:

  • Launch the Raspberry Pi Software Configuration Tool:
    sudo raspi-config
  • Go to Advanced Options > Wayland.
  • Select X11 – Openbox window manager with X11 backend.
  • Exit the tool, and reboot when prompted.

Tip: Command lines can be a pain to memorize. I put the essential Linux commands on a printable cheat sheet so you don't have to keep googling them. You can grab the PDF here if you want to save some time.

That completes the server side setup.
Now let’s see how to connect from your other devices.

Connect From Linux

To connect from a Linux PC to your Pi, I recommend using a solution like Remmina.
It is included in the repositories for most distributions, so you can install it with:
sudo apt install remmina

But for Remmina to have the RDP option, you need to also install the RDP plugin:
sudo apt install remmina-plugin-rdp

Once installed, start it and connect to your Rasperry Pi’s IP address. If you don’t know how to get it, you can read this article that will explain several ways to find the IP address.

On my Ubuntu version, I encountered the following error:

"You requested an h264 GFX mode for server 192.168.1.15, but your libfreerdp does not support h264. Please check color depth settings."

So, I had to add it as a shortcut, as the quick connection does not allow defining the color depth.
By choosing GFX RFX in the list, the error disappeared, and I was able to connect.

Here is a screenshot of my configuration if you experience the same issue:

remmina remote desktop

Note: If you want to see all these steps in action, I have a video lesson available for the community members. You can join here and watch it directly if you are interested (with 20+ other lessons for Raspberry Pi and many other benefits).

Connect From Windows

The good thing about XRDP is that Windows users already have the client installed. It’s the same protocol that Windows uses to allow users to access Windows servers remotely, so we can use the same tool.

From Windows start the “Remote Desktop Connection” tool from the start menu.
(If you don’t have it installed for some reason, you can still download it from Microsoft.)

windows remote desktop client

Fill in the IP address. If you don’t know the IP address, you can read this article that will explain several ways to find the IP address. You can also type “raspberrypi” if there is only one on your network—that’s the default hostname.

Click on “Connect” and you will get the XRDP login screen:

All you need to do is enter your credentials and click OK. Set Session to “Xorg” if you’re not sure what you’re doing. In my case, the icons were a bit big, so I changed it in the appearance options, but otherwise the desktop will then be displayed relatively well.

Connect From MacOS

I was not able to do testing on MacOS, but there are several RDP clients that you can use the same way.

For example, on the Apple Store, install the official client from Microsoft, called the “Windows App,” and connect to your Raspberry Pi by specifying its IP address. Follow the same procedure as for Windows users once the app installed.

Connect From Mobile

You can also use the RDP protocol from a smartphone or tablet quite easily.
The application “Windows App Mobile” is also available for Android and iOS.

So, it’s possible to connect and use it, but don’t expect a great experience, as the smartphone screen is not ideal to control another computer!

Recommended next step
Master Raspberry Pi in 30 Days

If you want a clearer path than jumping from tutorial to tutorial, my book gives you a step-by-step roadmap to really understand your Raspberry Pi.

Check the book here

Why Choose XRDP?

  • Compatibility with Windows machines
  • Fits into corporate environments that prefer commercial software
  • Low latency for heavy graphics

2. SSH With X11 Forwarding

Best for limited environments or limited port access.

SSH gives you remote terminal access, but not everybody knows that it can also provide a graphical interface. X11 is the main Linux graphical window manager, and you can use SSH with X11 forwarding for remote desktop access.

X11 forwarding over SSH is one way to start an app from a server when connected to it via SSH. In our case, this will launch Raspberry Pi applications from our desktop (so it is not full access to the desktop).

This method could work from a remote location—all you would need to do is to open the default SSH port (22).
For security purposes, remember to limit the allowed IP addresses in this case, and maybe set up additional protections like Fail2ban to avoid any security issues.

Installation

You will need to enable the SSH service on your Pi first. X11 forwarding is enabled by default on Raspberry Pi OS,

The easy way to do this is to open the Pi menu > Preerences > Control Centre.
Go to the Interfaces tab, and enable SSH:

If you have any problems you can check that “X11Forwarding” is uncommented and set to yes in /etc/ssh/sshd_config.

I wrote an entire guide about SSH on Raspberry Pi; you should probably read it first if this is new for you.

From Windows

If you are on Windows, you’ll need these applications to make it work:
– PuTTY (download it from the official website) to connect via SSH.
– Xming (download it on Sourceforge) to display the graphical windows.

Once Xming is installed (the default options work very well), follow these steps:

  • Start PuTTY.
  • Fill the hostname with something like “pat@192.168.1.15”.
  • Fill the Saved sessions with something like “Raspberry Pi”.
  • From the left menu, go to Connection > SSH > X11 and check “Enable X11 forwarding”.
  • Go back to Session and click Save.
  • Then double-click on your new saved session to connect.

You can read this article to get more details on how to connect via SSH to a Raspberry Pi.
Once this is done, your SSH access to the Raspberry Pi is kept, with the X11 forwarding enabled.

Once in the console, you can launch a Raspberry application on your Windows computer with the nohup command:
nohup thonny &

Replace ‘thonny’ with the app of your choice.
The application will then open on your PC.

Connect From Linux or MacOS

Using Linux or macOS, SSH access is almost the same.
You’ll use the ssh command from the terminal as the client.

For the display, you don’t have to install anything on a Linux system, but you’ll have to install Xming on MacOS (download it on Sourceforge).

Except you have to connect to SSH by adding an extra parameter:
ssh -X pat@192.168.1.15
Obviously, you should replace the command above with your Raspberry Pi IP address.
After that you can launch a Raspberry application using nohup. For example:
nohup thonny &

Connect From Mobile

I don’t think it’s possible to use this method from your phone (tell me if you know how).

I’ve already seen people starting an X server on Android to use an android app on their PC, but not the other way around.

Why Choose SSH with X11 Forwarding?

  • For barebone systems that can’t install the newest software
  • Common default port for environments with strict firewalls

3. VNC on Raspberry Pi OS

Fastest setup on Raspberry Pi OS.

VNC (Virtual Network Computing) is a system to share a graphical desktop, pretty similar to XRDP. The difference is that you connect to the current session directly, unlike XRDP which creates a new session.

There are many cross-platform VNC servers and clients available (RealVNC, TightVNC, TigerVNC, etc.).

VNC runs on port 5900.
You can NAT this port to make it available from the outside if needed, but it’s not the safest option, consider the next solution listed in this article.

Installation

Like SSH, a VNC server is already installed on Raspberry Pi OS, so we just need to enable it.
To do this, open the Pi menu > Preferences > Control Centre.
Then go to the Interfaces tab and enable the box for VNC.

That’s it, the VNC server is installed and ready to use.

If you’re not using Raspberry Pi OS, you can still install TigerVNC server manually and use the same steps in the next sections.

Connect From Linux

On Linux, the easiest way I found was to install the TigerVNC client (in theory, you can also use Remmina for VNC, but it didn’t work for me).

You can find TigerVNC Viewer in the Ubuntu Software tool if you use Ubuntu:

And it’s available in the default repository on most Debian-based distributions:
sudo apt install tigervnc-viewer

But if necessary, you get the latest release from the official website, and install it manually.

Then the use of VNC is super simple, just indicate the IP of Raspberry Pi, the username and password, and you’ll be connected.

Connect From Windows and macOS

Installing TigerVNC on Windows or macOS is a bit more tricky, as you need to download the binaries from the Sourceforge website, which isn’t really intuitive.

One alternative that might be easier is to download & install is RealVNC Viewer.

I have a step-by-step installation guide in my article dedicated to VNC on Raspberry Pi. Click on the link to read more if this is a solution that suits you.

But once you have a VNC client installed, it’s basically the same thing as on Linux:

Connect From Mobile

I connect to my Raspberry Pi from my tablet quite often, and it works pretty well. You just need to install a VNC app from your device’s app store, like RealVNC Viewer.

Once you have the app, you just enter the IP address and login to connect.

Why Choose VNC?

  • Supported out of the box by Raspberry Pi OS
  • Easy and fast set up on Raspberry Pi OS
  • VNC clients available across many platforms

4. TeamViewer

Best for external access.

TeamViewer is a proprietary software very similar to VNC for remote desktop use but adds additional features, mostly business-oriented. For example, TeamViewer facilitates remote access to a machine in another building/city over the Internet.

The easy thing about TeamViewer is that there’s no need to open a specific port for each computer as with previous solutions. By default, TeamViewer connects on port 5938 but if that’s not opened, it can still use web ports 80 and 443 (so it will work natively most of the time).

I’ll give you a brief introduction about TeamViewer here, but if you want to know more, please check my complete guide about TeamViewer by clicking here.

Installation

The installation is not obvious because even if it is mentioned in the documentation of a package for the ARM, it’s not present in the Linux download links and there isn’t a Raspberry Pi category.

The download page is here. You should be able to open it on your Raspberry Pi, download the correct version for your system (32-bit or 64-bit) and then install it with the graphical tool.

If that doesn’t work, here’s how to install TeamViewer manually from a terminal:

  • Download the ARM64 package for TeamViewer:
    wget https://download.teamviewer.com/download/linux/teamviewer_arm64.deb
    (If you have a 32-bit system, use this link in the command above instead.)
  • Install it on your system manually:
    sudo dpkg -i teamviewer_arm64.deb
  • You will get some dependency errors, fix them by doing:
    sudo apt update
    sudo apt -f install
  • If you have a TeamViewer account (paid version), you can configure it by doing:
    sudo teamviewer setup
  • Otherwise, you’ll need to set a password to connect, like this:
    sudo teamviewer passwd YOURPASSWORD
    (If your password is too easy, it will fail, so try again with a more complex password.)
  • Finally, you can get your Raspberry Pi’s TeamViewer ID this way:
    sudo teamviewer info

Connect From Linux

On Linux, start by downloading the TeamViewer client from the official website.

Then install it with your package manager or by doing something like:
sudo dpkg -i teamviewer_amd64.deb

Start the app via the Start menu or by typing “TeamViewer” in a terminal.
Log in if you have an account.
Then enter the Raspberry’s TeamViewer ID into the Partner ID field and click Connect.

It will ask you the password defined previously and connect to the Raspberry Pi in remote desktop.

Connect From Windows and macOS

For Windows and macOS users, it’s the same procedure as above, so I won’t repeat it.

Download TeamViewer, install it, and then enter ID & Password previously set.

Connect From Mobile

TeamViewer provides support for its software to Android, iPhone, Windows and Blackberry smartphones. It is, therefore, possible to use the app in the same way to get spontaneous support from anywhere.

Why Choose TeamViewer?

  • Don’t need to open ports when accessing from outside the network
  • Don’t have to manage IP addresses
  • User-friendly apps for supporting others remotely

5. Raspberry Pi Connect

Easiest setup for different client devices.

Raspberry Pi Connect is a remote desktop tool installed by default on Raspberry Pi OS. This tool, created by the Raspberry Pi Team itself, is based on the WebRTC protocol, so you can access your Pi using a web browser from another device.

Since it uses web ports, you should be able to connect to it without having to open any ports or modify any firewall rules on your router. This makes it quite convenient.

Installation

If you’re on the latest release of Raspberry Pi OS, Raspberry Pi Connect should already be installed by default.

If you don’t have it already for some reason, install Raspberry Pi Connect:
sudo apt install rpi-connectOnce complete, the RPConnect icon will appear in the upper-right corner of your desktop.

Next, click the icon, and choose Turn On Raspberry Pi Connect. The first time, you’ll be asked to log in to your Raspberry Pi Account. Creating an account is completely free. After logging in, you’ll be asked to give your Raspberry Pi a name to link it to your account.

Connect From Any OS

Once the installation is complete on the Raspberry Pi , you can remote desktop into it from any PC. You don’t need to install any special software, since all you need is a web browser.

Just visit the Raspberry Pi Connect site, and log in via your web browser.
You should then see your Raspberry Pi listed as a linked device.

Expand the Connect via dropdown, and select Screen sharing.
A new window should appear showing your Raspberry Pi desktop, and you can now control it using your mouse and keyboard.

Connect From Mobile

Raspberry Pi Connect doesn’t offer a standalone app for Android or iOS, but I’d say that’s also its best selling point. Just open a web browser on your smartphone or tablet, log in to your account, and you can remote desktop into your Raspberry Pi with ease.

Why Choose Raspberry Pi Connect?

  • Easy setup on Raspberry Pi OS
  • Don’t need to open ports or know the IP address
  • Works on any client device via web browser

Video

Subscribe to the RaspberryTips YouTube channel to receive new videos in your feed :


🛠 This tutorial doesn't work anymore? Report the issue here, so that I can update it!

Something not working? Don't waste hours going in circles. Ask in the RaspberryTips Community and get help from people who've already figured it out. Get unstuck now.

Which Remote Desktop Solution Should I Choose?

So we learned to connect to the remote desktop in 5 ways:

  • With the XRDP package that provides a Windows-like remote desktop.
  • With SSH and X11 Forwarding that allows launching an app on the client computer (and not the entire desktop).
  • With VNC that enables local access to the Raspberry Pi.
  • With TeamViewer which allows for easy remote control over the internet.
  • With Raspberry Pi Connect that allows access via a web browser from anywhere.

So, what’s best for you? I made a decision tree to help you decide:

In my opinion, VNC and Raspberry Pi Connect are my favorites, with a quick and clean display, without the heaviness of other solutions. It’s because I only need it on my local network, so it depends on your use case.

However, if you want cross-compatibility with Windows PCs or Macs that’s also very responsive, I might go with XRDP. You can get it from the app store on either platform.

However, if you need to remote desktop to a Raspberry Pi from outside your local network, I recommend TeamViewer to get more features. It uses a protocol that’s safe and easy to set up (no port forwarding or firewall rules needed). It’s free for personal use with a license.

The other options listed in this article can be set up for external access, but it’s more complicated and less secure overall. Here’s a great tutorial that will walk you through this: 3 Easy Ways to Access Your Pi Over the Internet Remotely.

Lastly, one alternative option we didn’t cover in this article is AnyDesk. I wrote a tutorial recently about it, you can click on the link to learn more about this tool.

Whenever you’re ready, here are other ways I can help you:

Test Your Raspberry Pi Level (Free): Not sure why everything takes so long on your Raspberry Pi? Take this free 3-minute assessment and see what’s causing the problems.

The RaspberryTips Community: Need help or want to discuss your Raspberry Pi projects with others who actually get it? Join the RaspberryTips Community and get access to private forums, exclusive lessons, and direct help.

Master your Raspberry Pi in 30 days: If you are looking for the best tips to become an expert on Raspberry Pi, this book is for you. Learn useful Linux skills and practice multiple projects with step-by-step guides.

Master Python on Raspberry Pi: Create, understand, and improve any Python script for your Raspberry Pi. Learn the essentials step-by-step without losing time understanding useless concepts.

Master Linux Commands: Overwhelmed with Linux commands? This book is your essential guide to mastering the terminal. It includes practical tips, real-world examples, and a bonus cheat sheet to keep by your side.

You can also find all my recommendations for tools and hardware on this page.

Similar Posts

13 Comments

  1. Hi Patrick,

    Thanks for a super analysis — almost perfect (minor negative is that your tip is undated). And yes, VNC was my original plan, but Nomachine (new to me) looks interesting — I will dig into it when I get out of your site.

    BUT, is there a way to do any of this TRULY headless (as in the pi never connects to a screen/keyboard from cradle to grave)? …surely a couple of commands in an auto-run-once script could do the trick, no?

    I do have a single Ubuntu laptop, but use the GUI (Linux completely destroys Mac/Win for network admin tasks), but I am not capable of writing that auto-run-once script.

    Chris

  2. Aaaaaaaah: you said it very clearly — SSH/XII needs no intervention on the pi.
    Sorry to have troubled you — will try this route tomorrow.

    Chris

  3. In addition to above 5 ways, another way to remote desktop on Raspberry Pi (Windows/Linux/Mac) is by using tools like on premise R-HUB remote support servers. It works on all platforms.

  4. Hi Patrick,
    thnx for information.
    my favorite is Nomachine but…
    how do i solve the problem in Nomachine with the german keyboard?
    #Hans

    1. Hi Hans,

      I didn’t understand your question, what is your problem?

      If you set you Raspbian to use a german keyboard, it doesn’t work via NoMachine? (still in US?)

  5. Thanks for the guide with team viewer. This finally worked for me.

  6. Thanks so much – it got me going. I ended up using TeamViewer (I already manage a few machines, so it was straight forward to add my Pi to that account).
    Just two comments, if anyone is interested:
    RealVNC is not available on Appstore and on their website directly they seem to offer a paid version (free trial-then buy), so that’s costly.
    Teamviewer did work…but only using YOUR instructions. Kudos! If one goes directly to TV website, they offer linux 32b download but that bombs out.
    Net/net: great job, much appreciated

    1. Thanks for your feedback 🙂
      And yes, I’m now using TightVNC instead of RealVNC

  7. Thanks for guide- it was very easy to follow but I ran into one problem that I cannot figure out.

    I have my raspberry pi4 setup as my remote machine and am connecting to it via rdp from my Windows 10 Laptop. My laptop will connect to the raspberry pi and display everything but the raspberry pi does not accept the mouse/keyboard input from my laptop. Any suggestions would be appreciated!

    1. Yes, it’s more on the client side, but you can use it instead of the built-in tool on Windows.

Leave a Reply

Community members only
Comments are reserved for RaspberryTips Community members. Join the community to ask questions, get help, and interact with other Raspberry Pi users.

Join the community  or  log in