Unable to connect to Clients without monitor attached (headless linux) #48

Closed
opened 2026-02-20 22:21:12 -05:00 by deekerman · 30 comments
Owner

Originally created by @Midnex on GitHub (Jun 4, 2021).

OS: Linux Mint 20.1 x64
Kernel: 5.4.0-58

Unable to connect to Linux machines with no monitor attached.
Remote Error:
No Display

Originally created by @Midnex on GitHub (Jun 4, 2021). OS: Linux Mint 20.1 x64 Kernel: 5.4.0-58 Unable to connect to Linux machines with no monitor attached. Remote Error: No Display
deekerman 2026-02-20 22:21:12 -05:00
Author
Owner

@Midnex commented on GitHub (Jun 5, 2021):

What is invalid about it? I am confused, I have tried several machines with no displays connected and get the same error. All running various versions of Linux Mint and Manjaro Linux. I have no tried with Windows.

@Midnex commented on GitHub (Jun 5, 2021): What is invalid about it? I am confused, I have tried several machines with no displays connected and get the same error. All running various versions of Linux Mint and Manjaro Linux. I have no tried with Windows.
Author
Owner

@rustdesk commented on GitHub (Jun 5, 2021):

I understand your scenario, but in the near future, we can not create virtual display. It is not a simple job.

@rustdesk commented on GitHub (Jun 5, 2021): I understand your scenario, but in the near future, we can not create virtual display. It is not a simple job.
Author
Owner

@Midnex commented on GitHub (Jun 5, 2021):

RustDesk seems to be a remote control app more then a screen sharing. Screen sharing usually lacks controlling. While I understand, other rdp/vnc solutions can already do it. And would love to see it eventually make its way into your app. It is a extremely nice app so far, extremely fast, low memory, and I love it.

@Midnex commented on GitHub (Jun 5, 2021): RustDesk seems to be a remote control app more then a screen sharing. Screen sharing usually lacks controlling. While I understand, other rdp/vnc solutions can already do it. And would love to see it eventually make its way into your app. It is a extremely nice app so far, extremely fast, low memory, and I love it.
Author
Owner

@gongjiaji commented on GitHub (Jun 21, 2021):

google remotedesktop could do it, would you please reconsider this scenario as quite a lot of servers are running without a monitor. Thank you.

@gongjiaji commented on GitHub (Jun 21, 2021): google remotedesktop could do it, would you please reconsider this scenario as quite a lot of servers are running without a monitor. Thank you.
Author
Owner

@rustdesk commented on GitHub (Jun 21, 2021):

without a monitor

Of course

@rustdesk commented on GitHub (Jun 21, 2021): > without a monitor Of course
Author
Owner

@rustdesk commented on GitHub (Jun 23, 2021):

As a temp solution, you can install xrdp on Linux, and rdp to Linux using RustDesk port forwarding.

@rustdesk commented on GitHub (Jun 23, 2021): As a temp solution, you can install xrdp on Linux, and rdp to Linux using RustDesk port forwarding.
Author
Owner

@Jimmo-o commented on GitHub (Jun 25, 2021):

image
you can solve this problem through this https://service.oray.com/question/11969.html
then
image

@Jimmo-o commented on GitHub (Jun 25, 2021): ![image](https://user-images.githubusercontent.com/46884440/123378830-d4c3be80-d5bf-11eb-97c6-142445cf7ae0.png) you can solve this problem through this https://service.oray.com/question/11969.html then ![image](https://user-images.githubusercontent.com/46884440/123379250-6e8b6b80-d5c0-11eb-8856-3c9d652e4adc.png)
Author
Owner

@starccy commented on GitHub (Nov 9, 2021):

This problem also appears on Windows when the screen is locked.

@starccy commented on GitHub (Nov 9, 2021): This problem also appears on Windows when the screen is locked.
Author
Owner

@rustdesk commented on GitHub (Mar 3, 2022):

https://github.com/pavlobu/deskreen/discussions/86

@rustdesk commented on GitHub (Mar 3, 2022): https://github.com/pavlobu/deskreen/discussions/86
Author
Owner

@fufesou commented on GitHub (Apr 23, 2022):

Xvfb is a solution. While as methoned in the wiki:
As of 2016, Xvfb was slated to be replaced by xf86-video-dummy in X.org 7.8.

Xdummy is a supported by default.
You can find the driver file in Ubuntu /usr/lib/xorg/modules/drivers/ and Centos /lib64/xorg/modules/drivers/.

The solutions of xrdp and xpra are good references.

  1. Detect if there is a physical monitor.
  2. Provide a login window, input username and password.
  3. Start a session and X Display Manager. The steps should be the same as startx.
@fufesou commented on GitHub (Apr 23, 2022): [Xvfb](https://en.wikipedia.iwiki.eu.org/wiki/Xvfb) is a solution. While as methoned in the wiki: _As of 2016, Xvfb was slated to be replaced by xf86-video-dummy in X.org 7.8._ [Xdummy](https://github.com/Xpra-org/xpra/blob/master/docs/Usage/Xdummy.md) is a supported by default. You can find the driver file in Ubuntu `/usr/lib/xorg/modules/drivers/` and Centos `/lib64/xorg/modules/drivers/`. The solutions of [xrdp](https://github.com/neutrinolabs/xrdp) and [xpra](https://github.com/Xpra-org/xpra) are good references. 1. Detect if there is a physical monitor. 2. Provide a login window, input username and password. 3. Start a session and [X Display Manager](https://en.wikipedia.iwiki.eu.org/wiki/X_display_manager). The steps should be the same as [startx](https://linux.die.net/man/1/startx).
Author
Owner

@rustdesk commented on GitHub (May 26, 2022):

https://github.com/rustdesk/rustdesk/issues/192#issuecomment-1133901726

@rustdesk commented on GitHub (May 26, 2022): https://github.com/rustdesk/rustdesk/issues/192#issuecomment-1133901726
Author
Owner

@tcoombs commented on GitHub (Jun 22, 2022):

Try using a dummy HDMI connector as this should enable a display that RustDesk can connect too.

@tcoombs commented on GitHub (Jun 22, 2022): Try using a dummy HDMI connector as this should enable a display that RustDesk can connect too.
Author
Owner

@Luluno01 commented on GitHub (Aug 8, 2022):

The virtual monitor solution seems to conflict with real monitor - installing a virtual monitor will disable the output to the real monitor (but maybe it is possible to make the real monitor a secondary display?). This will make it harder to rescue your PC when, for example, the network fails, so that you have to connect a real monitor, which won't output anything if you have a virtual monitor installed already. I guess rustdesk will need a sesman equivalent counterpart?

@Luluno01 commented on GitHub (Aug 8, 2022): The virtual monitor solution seems to conflict with real monitor - installing a virtual monitor will disable the output to the real monitor (but maybe it is possible to make the real monitor a secondary display?). This will make it harder to rescue your PC when, for example, the network fails, so that you have to connect a real monitor, which won't output anything if you have a virtual monitor installed already. I guess rustdesk will need a [sesman](https://linux.die.net/man/8/sesman) equivalent counterpart?
Author
Owner

@rustdesk commented on GitHub (Aug 31, 2022):

For windows, a virtual display driver is recommended:

https://github.com/rustdesk/rustdesk/issues/418#issuecomment-1233018617

@rustdesk commented on GitHub (Aug 31, 2022): For windows, a virtual display driver is recommended: https://github.com/rustdesk/rustdesk/issues/418#issuecomment-1233018617
Author
Owner

@viniciusnevescosta commented on GitHub (Mar 9, 2023):

Try using a dummy HDMI connector as this should enable a display that RustDesk can connect too.

So if I connect an HDMI cable from my machine (Windows 11) to my other computer (Fedora 37 - Gnome, Xorg), would this error be resolved?

@viniciusnevescosta commented on GitHub (Mar 9, 2023): > Try using a dummy HDMI connector as this should enable a display that RustDesk can connect too. So if I connect an HDMI cable from my machine (Windows 11) to my other computer (Fedora 37 - Gnome, Xorg), would this error be resolved?
Author
Owner

@rustdesk commented on GitHub (Mar 10, 2023):

https://github.com/rustdesk/rustdesk/issues/3592 xserver-xorg-video-dummy may be a good solution.

@rustdesk commented on GitHub (Mar 10, 2023): https://github.com/rustdesk/rustdesk/issues/3592 xserver-xorg-video-dummy may be a good solution.
Author
Owner

@JfiungoM commented on GitHub (Mar 13, 2023):

I was with the same problem. I used VGA dummy plug. It works for me.
https://www.geeks3d.com/20091230/vga-hack-how-to-make-a-vga-dummy-plug/

@JfiungoM commented on GitHub (Mar 13, 2023): I was with the same problem. I used VGA dummy plug. It works for me. https://www.geeks3d.com/20091230/vga-hack-how-to-make-a-vga-dummy-plug/
Author
Owner

@nekuneko commented on GitHub (Mar 19, 2023):

I'm an headless-linux-workstation xrdp user, so I want to remote control the workstation by VNC/XRDP/AnyDesk/RustDesk/SSH and so many protocols I can in order to keep access to it in case of failure. This my temporal and ugly "hack" for RustDesk server without monitor attached:

  1. Connect to the remote machine and login through XRDP (Remmina/Microsoft RDP).
  2. Open a terminal and write: sudo killall rustdesk && sudo service rustdesk restart
  3. At this point RustDesk has been opened within the xrdp session which previously created a virtual display (I think following /etc/X11/xrdp/xorg.conf file).
  4. Open RustDesk on your local machine and login with your remote ID and pre-configurated password.
  5. Now you are logged in on the remote machine through RustDesk and no Display connected.
  6. Close XRDP session, RustDesk session with the xrdp virtual monitor will keep on.

I already tried the solution of making a custom /etc/X11/xorg.conf file but I loosed the HDMI hot-plug with it.
With this "hack" solution HDMI hot-plug is maintained. I will update if I can improve this solution.

I hope RustDesk developers could implement a solution similar to xrdp actually does for creating a virtual environment, I think this feature is crucial to be implemented for headless machines in order to switch from AnyDesk.

@nekuneko commented on GitHub (Mar 19, 2023): I'm an headless-linux-workstation xrdp user, so I want to remote control the workstation by VNC/XRDP/AnyDesk/RustDesk/SSH and so many protocols I can in order to keep access to it in case of failure. This my temporal and ugly "hack" for RustDesk server without monitor attached: 1. Connect to the remote machine and login through XRDP (Remmina/Microsoft RDP). 2. Open a terminal and write: `sudo killall rustdesk && sudo service rustdesk restart` 3. At this point RustDesk has been opened within the xrdp session which previously created a virtual display (I think following `/etc/X11/xrdp/xorg.conf` file). 4. Open RustDesk on your local machine and login with your remote ID and pre-configurated password. 5. Now you are logged in on the remote machine through RustDesk and no Display connected. 6. Close XRDP session, RustDesk session with the xrdp virtual monitor will keep on. I already tried the solution of making a custom `/etc/X11/xorg.conf` file but I loosed the HDMI hot-plug with it. With this "hack" solution HDMI hot-plug is maintained. I will update if I can improve this solution. I hope RustDesk developers could implement a solution similar to xrdp actually does for creating a virtual environment, I think this feature is crucial to be implemented for headless machines in order to switch from AnyDesk.
Author
Owner

@congzhangzh commented on GitHub (Apr 3, 2023):

If you have an intel integrated graphics, you can turn on the virtual display, and desktop acceleration is available.

https://github.com/medlab/daily-scripts-4-us/blob/main/enable_headless_intel_igpu_4_nomachine.sh

@congzhangzh commented on GitHub (Apr 3, 2023): If you have an intel integrated graphics, you can turn on the virtual display, and desktop acceleration is available. https://github.com/medlab/daily-scripts-4-us/blob/main/enable_headless_intel_igpu_4_nomachine.sh
Author
Owner

@congzhangzh commented on GitHub (Apr 3, 2023):

https://github.com/medlab/daily-scripts-4-us/blob/main/enable_headless_intel_igpu_4_nomachine.sh

Cool

I think fake hdmi is still simple and efficient, and it can be done for less than 20 yuan. It takes a lot of effort to get virtual output, and all the linux knowledge at the bottom of the box is used.

https://item.m.jd.com/product/100016651011.html

To test graphics card acceleration, you can use this https://webglsamples.org/aquarium/aquarium.html

@congzhangzh commented on GitHub (Apr 3, 2023): > > https://github.com/medlab/daily-scripts-4-us/blob/main/enable_headless_intel_igpu_4_nomachine.sh > > Cool I think fake hdmi is still simple and efficient, and it can be done for less than 20 yuan. It takes a lot of effort to get virtual output, and all the linux knowledge at the bottom of the box is used. https://item.m.jd.com/product/100016651011.html To test graphics card acceleration, you can use this https://webglsamples.org/aquarium/aquarium.html
Author
Owner

@madroots commented on GitHub (Sep 12, 2023):

Solution for raspberry pi as of September 2023:

edit file /boot/config.txt like this:

Uncomment -> hdmi_force_hotplug=1
Uncomment and change group -> hdmi_group=2
Uncomment and change mode -> hdmi_mode=82
Comment -> #dtoverlay=vc4-kms-v3d

save and reboot your pi. Rust desk should connect now.
Credit goes to @viniwludwig, found this on some youtube video in comments.

@madroots commented on GitHub (Sep 12, 2023): Solution for raspberry pi as of September 2023: edit file /boot/config.txt like this: Uncomment -> hdmi_force_hotplug=1 Uncomment and change group -> hdmi_group=2 Uncomment and change mode -> hdmi_mode=82 Comment -> #dtoverlay=vc4-kms-v3d save and reboot your pi. Rust desk should connect now. Credit goes to @viniwludwig, found this on some youtube video in comments.
Author
Owner

@Kareltje1980 commented on GitHub (May 7, 2024):

Solution for raspberry pi as of September 2023:

edit file /boot/config.txt like this:

Uncomment -> hdmi_force_hotplug=1 Uncomment and change group -> hdmi_group=2 Uncomment and change mode -> hdmi_mode=82 Comment -> #dtoverlay=vc4-kms-v3d

save and reboot your pi. Rust desk should connect now. Credit goes to @viniwludwig, found this on some youtube video in comments.

For the RPI5 this doesnt work anymore, you need to add vc4.force_hotplug=1 to the end of the only one line in /boot/firmware/cmdline.txt

@Kareltje1980 commented on GitHub (May 7, 2024): > Solution for raspberry pi as of September 2023: > > edit file /boot/config.txt like this: > > Uncomment -> hdmi_force_hotplug=1 Uncomment and change group -> hdmi_group=2 Uncomment and change mode -> hdmi_mode=82 Comment -> #dtoverlay=vc4-kms-v3d > > save and reboot your pi. Rust desk should connect now. Credit goes to @viniwludwig, found this on some youtube video in comments. For the RPI5 this doesnt work anymore, you need to add ```vc4.force_hotplug=1``` to the end of the only one line in /boot/firmware/cmdline.txt
Author
Owner

@mayemu commented on GitHub (Jul 6, 2024):

is there a cleaner more reliable solution besides HDMI dummy plug yet? I really need this functionality for my server. I'll get a dummy plug if I have to but id rather not haha

@mayemu commented on GitHub (Jul 6, 2024): is there a cleaner more reliable solution besides HDMI dummy plug yet? I really need this functionality for my server. I'll get a dummy plug if I have to but id rather not haha
Author
Owner

@rustdesk commented on GitHub (Jul 6, 2024):

https://github.com/rustdesk/rustdesk/wiki/FAQ#headless-linux-support

@rustdesk commented on GitHub (Jul 6, 2024): https://github.com/rustdesk/rustdesk/wiki/FAQ#headless-linux-support
Author
Owner

@gregoryPM commented on GitHub (Jul 17, 2024):

vc4.force_hotplug=1

Can confirm this does solve the issue on RPi 5 running Ubuntu).

@gregoryPM commented on GitHub (Jul 17, 2024): > vc4.force_hotplug=1 Can confirm this does solve the issue on RPi 5 running Ubuntu).
Author
Owner
@rustdesk commented on GitHub (Sep 24, 2024): raspberry pi os 12 (bookworm). https://www.reddit.com/r/rustdesk/comments/1fodeku/headless_linux_on_rustdesk_display_and_desktop/ https://forums.raspberrypi.com/viewtopic.php?t=363503
Author
Owner

@jlinkels commented on GitHub (Nov 19, 2024):

Add vc4.force_hotplug=1 to the end of the only one line in /boot/firmware/cmdline.txt.

I confirm this works on a Pi4 running Bullseye.

The only downside is that the local LXDE session cannot be controlled locally when this parameter is set if a screen is connected anyway. That is, the Desktop shows up. But no menu bar or mouse interaction. That is not a Rustdesk problem.

@jlinkels commented on GitHub (Nov 19, 2024): Add vc4.force_hotplug=1 to the end of the only one line in /boot/firmware/cmdline.txt. I confirm this works on a Pi4 running Bullseye. The only downside is that the local LXDE session cannot be controlled locally when this parameter is set if a screen is connected anyway. That is, the Desktop shows up. But no menu bar or mouse interaction. That is not a Rustdesk problem.
Author
Owner

@jashanbhullar commented on GitHub (Feb 7, 2025):

it works on pi 5 with video=HDMI-A-1:2048x1440@60D in file /boot/firmware/cmdline.txt

After connecting it shows a blank screen but it toggle recording, it works 🤷‍♂️

Also, pi 5 uses the 64bit version

@jashanbhullar commented on GitHub (Feb 7, 2025): it works on pi 5 with `video=HDMI-A-1:2048x1440@60D` in file `/boot/firmware/cmdline.txt` After connecting it shows a blank screen but it toggle recording, it works 🤷‍♂️ Also, pi 5 uses the 64bit version
Author
Owner

@Liverpooler10 commented on GitHub (Feb 28, 2025):

Any idea whether this works on a dell wyse 5070 aswell?

@Liverpooler10 commented on GitHub (Feb 28, 2025): Any idea whether this works on a dell wyse 5070 aswell?
Author
Owner

@coolDad7777 commented on GitHub (Jan 9, 2026):

I understand your scenario, but in the near future, we can not create virtual display. It is not a simple job.

What>?

@coolDad7777 commented on GitHub (Jan 9, 2026): > I understand your scenario, but in the near future, we can not create virtual display. It is not a simple job. What>?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/rustdesk-rustdesk#48
No description provided.