OpenThinRDP

OpenThinRDP

The open source thin client OS with RDP over UDP
for Windows Remote Desktop, RDS and VDI: FreeRDP with the UDP transport that upstream does not ship yet.

⬇ Download the ISO (latest release)  ·  Try it live, nothing installed  ·  Website  ·  Italiano

Boot menu: try it live or install Sign-in form Settings of the device

OpenThinRDP turns small PCs and old thin clients into kiosks that boot straight into a sign-in form and connect
to Windows: through an RD Connection Broker to the user's desktop or VM, or straight to a session host or to any
Windows PC with Remote Desktop turned on. They are managed from a shared folder with a small Windows manager: status
of every device, central settings, logo, signed updates, and the screen of any device in your browser. No agent,
no management server, no cloud, no licence per device.

Not openthinclient. OpenThinRDP is a new, independent project, not affiliated with openthinclient: the names
sound alike, nothing else is shared. openthinclient is an older project whose devices boot over the network (PXE)
from its management server; OpenThinRDP is installed on each device or runs live from a USB stick, needs no server
and is built around RDP with FreeRDP's UDP transport.

It grew out of a real migration away from a commercial thin client OS, on a fleet of Dell OptiPlex 3000 Thin
Clients connected to a Windows 11 VDI on Hyper-V, where the system it comes from runs every day.

Status: in production every day. It runs the whole thin client fleet of the company it comes from: 14 Dell
OptiPlex 3000 Thin Clients at desks, tills, a laboratory, weighing stations and a wall screen on Wi-Fi, on a
Windows 11 VDI on Hyper-V behind two RD Connection Brokers, signing in with Kerberos and NTLM as fallback. The
devices were converted in place from the system they ran before and take every release straight from the GitHub
releases, signed, installed during sessions and applied when the session is over. FreeRDP security releases reach OpenThinRDP within 7 days
(3.32.2: four hours). The ISO is tested in QEMU/KVM with Secure Boot at every release and the system tests run on
every commit (CI). What is in production,
what is only tested and what does not exist yet:
docs/status.md. Try it live, then on one device, before rolling it out.

RDP over UDP that keeps going on a bad line

It started with a faulty switch port losing 43% of the large packets: over TCP the remote desktop froze. We
reproduced that line, then raised the loss on every packet from the virtual machine step by step (Windows 11 VDI,
full-screen load changing every pixel, frame rate measured by the server):

packets lost over TCP OpenThinRDP over UDP
20% 0.6 frames per second: the screen barely moves not measured (19-21 fps at 50%)
43% of the large packets* (the faulty port) 0-0.1 fps 16-21 fps, 7 minutes in a row
50% not measured (0.2 fps already at 30%) 19-21 fps, as on a clean line
70% not measured 18-19 fps**
80% not measured 4 fps, then the tunnel gives up

* The other rows lose that share of every packet; this one 43% of the large packets and 5% of the small ones.
** At 70% the TCP connection RDP keeps beside the tunnel may end the session after 20 s without an
acknowledgement. One environment (Dell OptiPlex 3000 Thin Client, Windows 11 VDI on Hyper-V), loss emulated with
netem: the method and the scripts, to get your own numbers.

Getting there took a fix to FreeRDP's UDP transport, which we found and reported in
#13608, and which is now part of it. Every step and the TCP
numbers: docs/udp.md.

Who it is for

Not for you (yet): Citrix, VMware/Omnissa Horizon and other protocols (OpenThinRDP does RDP only), ARM devices,
PCs without UEFI.

Requirements

Minimum
Device any 64-bit x86 PC or thin client with UEFI (Secure Boot supported, not required): old office PCs are fine
Memory 2 GB of RAM
Storage 8 GB to install it (eMMC, SSD or disk); nothing to try it live from a USB stick
Network cable, Wi-Fi (WPA2 personal) or a USB Ethernet adapter
TPM 2.0 optional: with one, the device's secrets (management folder password, Wi-Fi key, SSH host keys) are kept encrypted in it (security); without one it works the same
Windows side an RD Connection Broker (RDS session hosts or a Hyper-V VDI collection), or any Windows PC or server that accepts Remote Desktop (Pro, Enterprise, Server)

Tested hardware and firmware settings: docs/hardware.md.

Try it in five minutes

  1. Download openthinrdp-<version>.iso and write it
    to a USB stick with any raw image writer (Rufus in DD mode, balenaEtcher, dd).
  2. Boot the PC from the stick. The menu starts the live system by itself after 10 seconds: it runs from the
    stick and never writes to the disk.
  3. With a network, when GitHub has a newer version than the ISO it asks whether to download it or to use the
    ISO's (no answer in 30 seconds: the newer one), so the ISO does not need downloading again for every release.
    Then the settings dialog opens: set the broker (or the name of a Windows PC) and the domain, save, sign in.
  4. Like it? Restart and choose Install: it shows the disk it is going to erase and asks before writing
    anything (answer Yes to go on), then about three minutes. It installs on the first internal disk, never
    a USB disk (not even the installation stick). For rollouts, Unattended install skips the question.

What the device needs: Requirements.

What it does

Desktop start with the real steps End of session with a countdown Software update in progress

The manager: the whole fleet from one window

OpenThinRDP-Manager is one PowerShell script for Windows 10/11 (English and Italian, nothing to install) that works
on the shared folder the devices report to. No server, no agent, no database: what you see is the files in the folder.

Manager: every device, its settings and the Remote screen button Remote screen of a device in the browser, with the notice on the device

Every change is written to a change log in the folder. Guide: docs/management.md.

Screens that only show a web page

The same image runs the screens that never need a Windows desktop: a TV in the hall, a dashboard in the
office, an info point, a board in production. With WEB_BUTTON=kiosk and KIOSK_URL:

Settings: docs/configuration.md.

Why it is built this way

Why FreeRDP is not updated automatically. Debian security updates install by themselves, but FreeRDP is
excluded. First, the image ships its own FreeRDP build with UDP, which Debian's packages would replace with a
version without it. Second, the remote desktop client is the part users depend on: a new FreeRDP version can
change how sessions, USB devices, smart cards or the graphics behave, and on a fleet a regression stops everyone
at the same moment. So FreeRDP comes with OpenThinRDP releases, after testing on real devices, and you can still
keep it as it is on one device (/etc/openthinrdp/freerdp-pinned).

Why UDP from a pull request that is not merged yet. Over TCP, a busy server or a lossy line makes the screen
fall behind; over UDP, Windows lowers quality instead. The pull request is solid in our tests, and the only way
it gets merged is people using it and reporting. TRANSPORT=tcp is one setting away, and the image follows the
upstream code as it changes.

Why a shared folder instead of a management server. Every Windows network already has a file share and
someone who can manage permissions on it. The devices only read and write files there, so there is nothing to
install, patch or license on the server side, and the settings are plain text files you can read, diff and back
up.

Why Debian. Stable, security updates for years, every driver and firmware package, and a kiosk on top of it
that you can read: the whole client side is a few shell scripts in rootfs/opt/openthinrdp.

How it compares

OpenThinRDP Dell ThinOS IGEL OS Stratodesk NoTouch ThinStation
Cost free comes with Dell thin clients subscription per device licence per device free
Source open (Apache 2.0) closed closed closed open
Runs on x86-64 PCs and thin clients with UEFI Dell thin clients many x86-64 devices x86-64 PCs, Raspberry Pi x86 PCs
Protocols RDP only Citrix, Omnissa/VMware, Microsoft and more Citrix, Omnissa/VMware, Microsoft and more many many (you build the image)
Management shared folder + Windows tool, no server Wyse Management Suite UMS server NoTouch Center configuration files on a network server
Updates signed, from GitHub or your folder vendor firmware vendor vendor rebuild the image
Install ISO, live or automatic installation preinstalled installer or preinstalled installer build, then PXE or USB

If you need Citrix or Horizon, vendor support or certified hardware, the commercial systems are the right
choice. OpenThinRDP is for networks built on Windows Remote Desktop that want a free, open client that is simple
to manage, and for anyone who wants to put FreeRDP's UDP transport to work. Product names are trademarks of
their owners; the comparison reflects public information and our understanding, corrections are welcome.

What comes next

Ideas we would like to build, roughly in this order. Tell us in an issue which ones you need, or send a pull
request:

Build your own image

Your logo, your broker, your settings and keys built in (Linux with Docker or Podman):

cp -r image/site.example image/site      # then edit image/site/site.conf and build.conf, add your logo
image/build.sh

The result is out/openthinrdp-<version>.iso. See docs/building.md.

Documentation

Layout

Folder Content
rootfs/ everything installed on the thin client (/opt/openthinrdp, udev rules, systemd units)
image/ the ISO build (live-build in a container), the FreeRDP build and the example site folder
management/windows/ the Windows manager (PowerShell, no installation)
management/publish/ building and signing update packages
tests/ tests that run in a Debian container

Contributing

Issues and pull requests are welcome. Please describe the hardware and the Windows side (broker, session
host version) for anything related to connections or devices. See CONTRIBUTING.md and the
code of conduct.

Security problems: please report them privately, see SECURITY.md.

License

Apache License 2.0, see LICENSE. OpenThinRDP uses FreeRDP (Apache 2.0), the noVNC viewer for the remote
screen (included unmodified, MPL 2.0 and BSD, rootfs/opt/openthinrdp/novnc) and Debian packages under
their own licenses. Windows and Remote Desktop are trademarks of Microsoft; this project is not affiliated with
Microsoft or with any vendor named above.