Automatically set the proper video output given a video device (VGA) is unavailable due to hardware-passthrough (VFIO) or any other reason, in the X.Org display environment for a Linux machine.
Download the Latest Release: Codeberg, GitHub
- Why?
- Related Projects
- Documentation
- Download
- Host Requirements
- Usage
- How It Works
- Contact
- References
X.Org will specify a VGA device to be the primary video output. When that VGA device is Passed-through or restricted to Virtual Machines (VMs) only (like in a VFIO setup), the VGA device cannot be used by the Host machine (Linux). Unfortunately, X.Org will not search for the next valid VGA device. This is where auto-X.Org steps in...
This script will automatically set the proper video output everytime, as it runs at Host startup. This flexibility is very useful for a new or changing VFIO setup.
Project | Codeberg | GitHub |
---|---|---|
Deploy VFIO | link | link |
Auto X.Org | link | link |
Generate Evdev | link | link |
Guest Machine Guide | link | link |
Libvirt Hooks | link | link |
Power State Virtual Machine Manager | link | link |
-
To download this script, you may:
-
Download the ZIP file:
- Viewing from the top of the repository's (current) webpage, click the drop-down icon:
···
on Codeberg.<> Code
on GitHub.
-
Click
Download ZIP
. Save this file. -
Open the
.zip
file, then extract its contents.
-
Clone the repository:
- Open a Command Line Interface (CLI).
- Open a console emulator (for Debian systems: Konsole).
- Open a existing console: press
CTRL
+ALT
+F2
,F3
,F4
,F5
, orF6
.- To return to the desktop, press
CTRL
+ALT
+F7
. F1
is reserved for debug output of the Linux kernel.F7
is reserved for video output of the desktop environment.F8
and above are unused.
- To return to the desktop, press
-
Change your directory to your home folder or anywhere safe:
cd ~
-
Clone the repository:
git clone https://www.codeberg.org/portellam/auto-xorg
git clone https://www.github.com/portellam/auto-xorg
-
-
To make this script executable, you must:
-
Open the CLI (see above).
-
Go to the directory of where the cloned/extracted repository folder is:
cd name_of_parent_folder/auto-xorg/
-
Make the installer script file executable:
chmod +x installer.bash
- Do not make any other script files executable. The installer will perform this action.
- Do not make any non-script file executable. This is not necessary and potentially dangerous.
-
systemd
for system services.X.Org
orX11
as the video display environment.Wayland
is not supported.- Wayland causes problems for NVIDIA devices.
- In general, it is a buggy mess not ready for production.
- From within the project folder, execute:
sudo bash installer.bash
- Or after installation, from any folder execute:
sudo bash auto-xorg
- The CLI's shell (bash) should recognize that the script file is located in
/usr/local/bin
.
- The CLI's shell (bash) should recognize that the script file is located in
-h, --help Print this help and exit.
Update X.Org:
-r, --restart-display Restart the display manager immediately.
Set device order:
-f, --first Find the first valid VGA device.
-l, --last Find the last valid VGA device.
Prefer a vendor:
-a, --amd AMD or ATI
-i, --intel Intel
-n, --nvidia NVIDIA
-o, --other Any other brand (past or future).
- Set options to find first valid AMD/ATI VGA device, then install:
sudo bash auto-xorg.bash -f -a
- Find last valid NVIDIA VGA device, then restart the display manager immediately:
sudo bash auto-xorg -l -n -r
If the auto-xorg service fails, to diagnose review the log, execute:
sudo journalctl -u auto-xorg
Failure may be the result of absent VGA device(s), or an exception. Review the log to debug.
- Runs once at boot.
- Parses list of VGA devices:
lspci -m | grep --extended-regexp --ignore-case 'vga|graphics'
- Saves valid and available VGA device:
lspci -ks 04:00.0 | grep --extended-regexp --ignore-case 'driver|VGA'
04:00.0 VGA compatible controller: ...
Kernel driver in use: nvidia
- Invalid example:
lspci -ks 04:00.0 | grep --extended-regexp --ignore-case 'driver|VGA'
01:00.0 VGA compatible controller: ...
Kernel driver in use: vfio-pci
- Appends to X.Org file:
/etc/X11/xorg.conf.d/10-auto-xorg.conf
Did you encounter a bug? Do you need help? Please visit the Issues page (Codeberg, GitHub).
PCI passthrough via OVMF. ArchWiki. Accessed June 14, 2024. https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF.
r/VFIO. Accessed June 14, 2024. https://www.reddit.com/r/VFIO/.
VFIO - ‘Virtual Function I/O’ - The Linux Kernel Documentation. The linux kernel. Accessed June 14, 2024. https://www.kernel.org/doc/html/latest/driver-api/vfio.html.