Setup xfce and xrdp on NVIDIA AGX Orin jetson_39.2.1
1. Install xfce4
sudo apt update && sudo apt install xfce4 xfce4-goodies -y # select lightdm
2. System > Users disable auto login
3. Power off
4. Power on
5. See the login screen come up.
6. Click the Ubuntu circle and select xfce.
7. Login
You should see a background with squiggles and a mouse.
8. Set up xrdp
sudo apt update
sudo apt install xrdp -y
sudo systemctl status xrdp # Should see active
output:
● xrdp.service - xrdp daemon
Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; preset: enabled)
Active: active (running) since Sun 2026-09-20 15:59:38 UTC; 3min 56s ago
Docs: man:xrdp(8)
man:xrdp.ini(5)
Process: 2521 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
Process: 2530 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 2534 (xrdp)
Tasks: 1 (limit: 74773)
Memory: 1.2M (peak: 2.1M)
CPU: 28ms
CGroup: /system.slice/xrdp.service
└─2534 /usr/sbin/xrdp
Sep 20 15:59:36 tegra-ubuntu systemd[1]: Starting xrdp.service - xrdp daemon...
Sep 20 15:59:36 tegra-ubuntu xrdp[2530]: [INFO ] address [0.0.0.0] port [3389] mode 1
Sep 20 15:59:37 tegra-ubuntu xrdp[2530]: [INFO ] listening to port 3389 on 0.0.0.0
Sep 20 15:59:37 tegra-ubuntu xrdp[2530]: [INFO ] xrdp_listen_pp done
Sep 20 15:59:37 tegra-ubuntu systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: No such file or directory
Sep 20 15:59:38 tegra-ubuntu systemd[1]: Started xrdp.service - xrdp daemon.
Sep 20 15:59:39 tegra-ubuntu xrdp[2534]: [INFO ] starting xrdp with pid 2534
Sep 20 15:59:39 tegra-ubuntu xrdp[2534]: [INFO ] address [0.0.0.0] port [3389] mode 1
Sep 20 15:59:39 tegra-ubuntu xrdp[2534]: [INFO ] listening to port 3389 on 0.0.0.0
Sep 20 15:59:39 tegra-ubuntu xrdp[2534]: [INFO ] xrdp_listen_pp done
9. Add xrdp to ssl-cert group
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
output:
orin@tegra-ubuntu:~$ sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
info: Adding user `xrdp' to group `ssl-cert' ...
10. Install the firewall
sudo apt install ufw
sudo ufw allow 3389/tcp
output:
Rules updated
Rules updated (v6)
11. Install xfce
sudo apt install xfce4 xfce4-goodies -y # Duplicate
sudo apt install dbus-x11 -y
12. Remove GNOME
sudo apt remove xdg-desktop-portal-gnome -y
sudo apt install xdg-desktop-portal-gtk xdg-desktop-portal-xapp -y
sudo vi /etc/xrdp/startwm.sh
Use:
#!/bin/sh
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
exec dbus-launch --exit-with-session xfce4-session
rm -f ~/.xsession ~/.Xauthority ~/.vnc/xstartup
sudo systemctl restart xrdp
13. Reboot again
sudo systemctl reboot
output:
Broadcast message from root@tegra-ubuntu on pts/1 (Sun 2026-09-20 16:09:41 UTC):
The system will reboot now!
14. Login via USB
demo-user@demo:~/Downloads/Linux_for_Tegra$
ssh -t [email protected]
output:
[email protected]'s password:
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.12-1021-tegra aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Expanded Security Maintenance for Applications is not enabled.
311 updates can be applied immediately.
256 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable
34 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm
Last login: Sun Sep 20 16:11:36 2026 from 192.168.55.100
15. Get IP for VNC
ifconfig # Likely 192.168.137.146
output:
orin@tegra-ubuntu:~$ ifconfig
end0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.137.146 netmask 255.255.255.0 broadcast 192.168.137.255
inet6 fe80::c770:25e5:6dd:abcc prefixlen 64 scopeid 0x20<link>
ether 4c:bb:47:a4:0d:25 txqueuelen 1000 (Ethernet)
RX packets 23 bytes 6241 (6.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 61 bytes 7003 (7.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
l4tbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.55.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::341d:6bff:fea5:fbd5 prefixlen 64 scopeid 0x20<link>
inet6 fe80::1 prefixlen 64 scopeid 0x20<link>
ether 36:1d:6b:a5:fb:d5 txqueuelen 1000 (Ethernet)
RX packets 148 bytes 17992 (17.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 195 bytes 27907 (27.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 55 bytes 7597 (7.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 55 bytes 7597 (7.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::38af:79ff:fe69:4919 prefixlen 64 scopeid 0x20<link>
ether 3a:af:79:69:49:19 txqueuelen 1000 (Ethernet)
RX packets 161 bytes 19528 (19.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 218 bytes 40904 (40.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlP1p1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 50:2e:91:95:8d:87 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0