Pi 4
Raspberry Pi 4B specific questions, configurations and differences.
Which PI 4 model ?
There are currently a few Raspberry Pi 4 models available, differentiated only by the RAM option - 1Gb, 2Gb, 4Gb or 8Gb. Either of them will be fine for RetroPie, the memory capacity doesn't influence the emulation speed.
Hardware
Connecting a Tv/Monitor
The Pi 4B model has 2 microHDMI ports. It's recommended to use the port adjacent to the UCB-C power input (labelled HDMI0) to connect your display, since is has sound enabled by default and it's the only port that supports CEC.
NOTE: The Pi 0 miniHDMI cables are not usable for the Pi 4B microHDMI ports.
Analog video
Composite video from the analog RCA port is not enabled by default on the Pi 4B, you need to add enable_tvout=1
to the config.txt
boot configuration file. This will disable the HDMI video output, so make sure you remove this option if you change the video output on your Pi 4 to one of the microHDMI ports.
IMPORTANT: the configuration comes with a performance penalty. Because composite video requires a very specific clock, setting that clock to the required speed on the Pi 4 means that other clocks connected to it are detrimentally affected, which slightly slows down the entire system.
More details about video configuration options - Video Options in the official Raspberry Pi documentation.
4k video display
The Pi 4B can use 4k video resolutions when supported by the display. By default it will select a 30hz refresh rate for a 4k resolution. To change it 60hz refresh rate, add hdmi_enable_4kp60=1
to config.txt
or use raspi-config
to enable the 4k@60Hz video mode.
NOTE: If you are using both HDMI ports of the Raspberry Pi 4 for simultaneous 4k video output, you are limited to 4k@30Hz for both displays.
Issues using a 4k TV
Using a 4k resolution on the Pi 4 is still too demanding when using RetroPie, so if you have a 4k display and you're seeing slowdowns/stuttering the first time you boot, there a few options available to alleviate this issue:
-
Use a 1080p video mode by default.
Either useRaspi Config
from the RetroPie menu in EmulationStation to set the resolution, or edit theconfig.txt
file on the sdcard and add the following lines at the end:hdmi_group=1 hdmi_mode=16
When using the 2nd HDMI port, the lines above need to be set to:
hdmi_group:1=1 hdmi_mode:1=16
To choose another video resolution, consult the options available for
hdmi_group
/hdmi_mode
in the Official RaspberryPi documentation.You'll still be able to use 4k video resolutions in RetroPie for Kodi or the Pixel desktop, but the default resolution at boot will be 1080p.
-
Disable 4k video modes completely.
Edit the boot configuration fileconfig.txt
file on the sdcard and add a line with:hdmi_max_pixel_freq:0=200000000 hdmi_max_pixel_freq:1=200000000
The Pi will now ignore any 4k video modes and display using best matching video mode available (most likely 1080p).
Using 4k video with Kodi/VLC
Hardware video decoding for 4k (HEVC) video needs more memory allocated to the GPU. If you have issues with 4k videos in Kodi, then edit the config.txt
file on the sdcard and add a line with:
gpu_mem=320M
More info in this topic.
Power up
The first Pi 4b revision (1.1) has a non-compliant USB-C charging port and doesn't work with as many chargers as it should, especially E-marked USB-C cables/chargers. This has been corrected in the 1.2 revision of the board, released Feb 2020.
If you have the official power supply for your Pi 4, you shouldn't have any problems.
Software
The Raspberry Pi 4 model is supported by Raspbian starting with Raspbian Buster (based on Debian 10 'buster'), while RetroPie added support the the 4.6 image version.
Configuration changes
Memory Split
Previous models' GPU memory configuration (Memory split) are not needed for the Pi 4B. The 3D component of the GPU is able to use the main (ARM) memory, without any additional settings. Reserving additional memory with the gpu_mem
configuration settings in config.txt
is only necessary for hardware video decoding (i.e. 4k movies in Kodi).
Audio Configuration
By default, only the first HDMI (HDMI0) port has audio enabled, so if you plug your TV/Monitor to the 2nd port, audio will not work. If you'd like to use the 2nd HDMI port, then the use the Audio menu in the RetroPie system from EmulationStation to choose it.
Video drivers/GPU Changes
The Raspberry Pi 4 model features a new GPU (Videocore VI), capable of OpenGL ES 3.2 and Vulkan. Support for the new GPU is offered GPU Mesa/Linux v3d
driver - without support from the legacy 3D Broadcom drivers. Currently, the open source driver included in Raspbian implements OpenGL ES 3.1 and OpenGL 2.1, but support for ES 3.2 and Vulkan is under development in the upstream Mesa3d project.
Key differences from the previous Raspberry Pi models:
- the new GPU driver is implemented using the standard Linux KMS/DRM APIs
- the new GPU does not offer hardware OpenVG support
- display rotation works only for simple 180 ° rotations, there's no direct rotation support for 90 ° and 270 ° (see the current Video Documentation)
- directly changing the screen resolution using
tvservice
/fbset
does not affect DRM/KMS enabled application, so dynamically changing the framebuffer resolution will not work propertlyNOTE this affects the existing CRT-geared configurations or emulators that rely on
vcgencmd
to generate customhdmi_timings
mode and load it dynamically at runtime withtvservice
. One alternative route would be to use X11 andxrandr
for custom mode generation and mode switching
- applications using the legacy GL drivers will not function anymore, with the dreaded:
* failed to add service - already in use?
- new ports/emulators can use the OpenGL 2.1 API.
RetroPie changes for Raspberry Pi 4
- Runcommand had extensive changes to implement video resolution switching for KMS/DRM. The option for using a different RetroArch render resolution is no included when KMS/DRM is included, since it relied on the dispmanx video driver for scaling the resolution.
- Emulators that used directly the legacy proprietary drivers have been re-compiled for KMS support or disabled on the Pi 4. Some examples:
pcsx_rearmed
- disabled since it's using the legacy GL driversadvmame-1.4
/advmame-0.39
- disabled because are not properly working with the emulated KMS/DRM framebuffer-
advmame
is compiled and configured with the SDL2 video/input drivers, so it loses the ability to create custom video timings for emulationFor a list of emulators/packages supported on the Raspberry Pi 4, you can consult the Platform support page, updated automatically from the current RetroPie-Setup Github repository.
- GPIO based controller drivers might not work correctly. They are currently compatible with the Pi 4 GPIO changes (they build and install), but due to the lack of hardware available for testing, their status should be considered experimental.
- Reported working -
gamecondriver
- Reported working -
mkarcadejoystick
. See here for instructions to setup a 13 buttons configuration using thehotkeybtn
variant of the driver.
- Reported working -
As an alternative to the drivers included in RetroPie, GPIOnext can be used.
If you happen to use one of the GPIO controller drivers, please consider testing and reporting any problems in the RetroPie forums