Supported PC Hardware

If you have to choose a new GPU, recent Nvidia GTX and AMD Radeon RX cards are supported well in the main Batocera image, and usually give very good results. A combination of an Intel i5 4xxx CPU + Nvidia GT1030 GPU will support all emulators up to the PS2 for a reasonable cost. You can check out some Batocera benchmarks on the "Choose a PC" page.

Current Nvidia drivers

Batocera includes the Linux versions of the Nvidia drivers and will use them automatically. Details about which driver is being used after boot can be found in the log file at /userdata/system/logs/nvidia.log.

The automatic setting can be overridden by modifying the boot configuration file. At the top level, find the batocera-boot.conf file and uncomment (i.e. remove the initial #) the nvidia-driver=true line. If the line is not present, add it anywhere. true can be replaced to specify a specific version.

## Manually override Nvidia driver selected. Leave this setting commented to have Batocera automatically select the correct driver.
## See https://wiki.batocera.org/supported_pc_hardware
## true -> Use the current production driver.
## legacy -> Use the "legacy" 470 driver (could be subject to change, though unlikely).
## legacy390 -> Use the older 390 driver.
## false -> Use the open-source Nouveau drivers.
nvidia-driver=true

Nvidia is… pretty bad at actually supporting the cards they say they support. Take their officially supported hardware list with a grain of salt, and do your research. Discovering what 'architecture' (Fermi/Maxwell/Kepler etc.) your card is will take you a long way in finding out whether it's actually supported or not.

Laptop GPUs in particular are very confusing, using identical naming schemes for cards that are generations older in terms of architecture. Cards with weird extensions to their names like “700M” or “1050Q” are usually not comparable to their desktop counterparts, as a rule of thumb consider them one of two generations behind.

If you edit the file under Windows, make sure you have an editor that respects Unix line terminators. Don't use Notepad, use a text editor like Notepad++, that doesn't replace the Unix line terminations (LF) with DOS/Windows line terminations (CR/LF). Wordpad has also been reported to corrupt Unix text files.

You can alternatively edit this file by connecting to Batocera through SSH and remounting the /boot partition on write mode like explained here, and edit /boot/batocera-boot.conf with Nano or Vim as text editors.

The official Nvidia drivers (495.46) included in Batocera v33 support the Maxwell architecture and newer. This includes the GTX 9XX series and above (special exception, the 750Ti is also supported).

The open-source Nouveau drivers (which are ironically more compatible than the official drivers, but aren't as performant) are the “fall-back” drivers; they should serve their purpose on those weaker and older cards not capable of running more modern systems anyway. All but the bleeding edge cards are supported by the Nouveau drivers.

How can you tell if the Nvidia driver is correctly set up? Go to SYSTEM SETTINGSINFORMATION and see if the OpenGL version mentions NVIDIA in its version. If it does, you're all set. If it mentions MESA, that means that the official Nvidia driver is not in use. You can also check which version Batocera had chosen automatically by running /etc/init.d/S04populate start.

Hybrid/Optimus Nvidia laptops

To clarify, hybrid graphics refers to the laptop's ability to automatically switch between its integrated graphics (Intel) and its discrete graphics (Nvidia), not its laptop/tablet form-factor.

For Batocera versions v31 and newer, if you use a laptop that has both an integrated Intel and a discrete Nvidia GPU (hybrid setup or “Optimus” technology, which is very common with post-2018 laptops), you need to tell your laptop to use the Nvidia card as a primary card with the nvidia-prime=true option. Your config should contain this uncommented line:

nvidia-prime=true

On Batocera versions v30 and older, you would instead run the batocera-hybrid-nvidia command from SSH or terminal after activating the drivers.

Some laptops may have a setting in their BIOS which allows you to manually select the state of the hardware multiplexer, effectively making your laptop have only one graphics device. This avoids the complexities of running two graphics drivers, but offers no power savings. Changing this setting is at your own risk and support cannot be provided for it.

External HDMI ports

If the second GPU has outputs that are not accessible by the primary GPU, you can use Reverse PRIME to make use of them. This will involve using the primary GPU to render the images, and then pass them off to the second GPU.

Using ssh or the terminal via the F1 option, create the following file - /etc/X11/xorg.conf.d/10-gpu.conf:

In this example, we use the nano command - nano /etc/X11/xorg.conf.d/10-gpu.conf

Copy the code below into nano for the file you're creating.

10-gpu.conf
Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nouveau"
    Inactive "intel"
EndSection

Section "Device"
    Identifier  "nouveau"
    Driver      "nouveau"
    BusID       "PCI:x:x:x" # Sample: "PCI:1:0:0"
EndSection

Section "Screen"
    Identifier "nouveau"
    Device "nouveau"
EndSection

Section "Device"
    Identifier  "intel"
    Driver      "intel"
    BusID       "PCI:x:x:x"  # Sample: "PCI:0:2:0"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

Hit [Ctrl] + [X] to exit and then Y to save the changes. Run batocera-save-overlay to make it permanent.

Legacy Nvidia drivers image
This image is no longer necessary as the legacy drivers are now included in the main Batocera image by default. This information is still here for archival purposes, but may be removed in the future.

Nvidia cards from the GTX 600/700 series or older may not be supported by the current official Nvidia drivers included with Batocera v33 and below.

Legacy Nvidia drivers were initially dropped from Batocera a while ago (back in 5.26 initially!), but there is an unmaintained beta build which has the legacy drivers available at the bottom of the downloads page (direct link). This build is not maintained so it may have major bugs. Support is not available for it. If issues occur with this build, upgrade to the current build first and see if they continue to persist.

Alternatively, you could try other Batocera versions from 5.26 and down. Unlike other operating systems that require the latest patches to stay secure, since Batocera isn't designed to be a secure system it's perfectly fine to use an older version just for playing your retro games.

Multiple Nvidia card configuration

It is possible to select which card to use when multiple Nvidia GPUs are installed to the same machine. Link to original post.

  1. Create the following file in /userdata/system/99-nvidia.conf:
    99-nvidia.conf
    Section "Device"
    Identifier "VideocardB(lowerDVI)"
    Driver "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName "GeForce GTX 1070"
    BusID "PCI:2:0:0"
    EndSection
    
    Section "Screen"
    Identifier "Screen0"
    Device "VideocardB(lowerDVI)"
    Monitor "Samsung0"
    DefaultDepth 24
    Option "RenderAccel" "On"
    Option "HWcursor" "On"
    Option "DamageEvents" "True"
    SubSection "Display"
    Depth 24
    EndSubSection
    EndSection
  2. Replace the information as appropriate. Usually the first card detected will be PCI:1:0:0, and the BusID for the second card detected will be PCI:2:0:0. So if 1 is being selected by default then just switch it to 2.

Batocera specifically looks for the filename 99-nvidia.conf, so to temporarily disable this just rename it to something different like 99-nvidia.conf.backup.

It's possible to combine this with scripting in order to enable easy card switching on the fly (no reboot is required, just restart ES).

AMD GPUs have their drivers installed and activated automatically, no need for manual activation. However, you may have no HDMI audio output by default, read on if that applies to your machine.

HDMI audio is disabled by default on Radeon graphics cards due to a black screen issue on some monitors. To enable it, edit the boot configuration file on the boot partition. In Batocera:

  • 5.25 and above, boot/syslinux/syslinux.cfg for legacy boot and boot/EFI/syslinux.cfg for EFI boot.
  • FIXME 5.24 to 5.XX, boot/syslinux.cfg for legacy boot
  • 5.XX and lower, boot/grub.cfg for legacy boot and EFI/boot/grub.cfg for EFI boot.

radeon.audio=1 at the end of the relevant boot line.

For FIXME 5.XX and above:

APPEND label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0

would become

APPEND label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0 radeon.audio=1

For 5.XX and lower:

menuentry "batocera.linux" {
linux /boot/linux label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0
initrd /boot/initrd.gz
}

would become

menuentry "batocera.linux" {
linux /boot/linux label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0 radeon.audio=1
initrd /boot/initrd.gz
}

Other hardware issues can be diagnosed with the help of the troubleshooting guide.

  • supported_pc_hardware.txt
  • Last modified: 8 months ago
  • by dmanlfc