https://forums.raspberrypi.com/viewtopic.php?t=344067 IIRC (or AIUI) VNC does need X etc and, on a P4/P400 (with Raspberry PiOS "Bullseye") a "headless screen resolution" set** (for, as others have stated, a display buffer to be created). For "true headless" operation (remote command line / terminal only) just change the boot option to command-line only (and no auto-login), enable SSH, and connect via PuTTY (or equivalent SSH terminal) on the remote machine. (Or even use a serial connection via a suitable USB-to-serial dongle to the appropriate GPIO pins). I prefer the "boot to command line method" rather than use Raspberry PiOS Lite since my Pi's may or may not be (partially) headless (ie. no display, but maybe with a mini-keyboard + trackpad/ball attached) see http://www.cpmspectrepi.uk/raspberry_pi/MoinMoinExport/RealVNC_RaspiPIOS_Bullseye.html ----- pi 4.0 HDMI / VNC prob when headless https://forums.raspberrypi.com/viewtopic.php?t=253312 ----- force raspberry pi to boot to cli without raspi-config press CTRL+ALT+F2 then login on /dev/tty2, wait ten minutes, get a terminal ----- https://raspberrypi.stackexchange.com/questions/121850/boot-into-gui-by-default-without-raspi-config-command-line-only Here's the script that raspi-config runs when you enable the GUI without autologin: systemctl set-default graphical.target ln -fs /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty1.service rm /etc/systemd/system/getty@tty1.service.d/autologin.conf sed /etc/lightdm/lightdm.conf -i -e "s/^autologin-user=.*/#autologin-user=/" You may need to edit a different config file if you have a different desktop manager.