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.
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.
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
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.
Raspi Configfrom the RetroPie menu in EmulationStation to set the resolution, or edit the
config.txtfile on the sdcard and add the following lines at the end:
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 file
config.txtfile on the sdcard and add a line with:
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:
More info in this topic.
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.
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.
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).
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
fbsetdoes not affect DRM/KMS enabled application, so dynamically changing the framebuffer resolution will not work propertly
NOTE this affects the existing CRT-geared configurations or emulators that rely on
vcgencmdto generate custom
hdmi_timingsmode and load it dynamically at runtime with
tvservice. One alternative route would be to use X11 and
xrandrfor 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 drivers
advmame-0.39- disabled because are not properly working with the emulated KMS/DRM framebuffer
advmameis compiled and configured with the SDL2 video/input drivers, so it loses the ability to create custom video timings for emulation
For 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 witht 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 -
- Reported working -
mkarcadejoystick. See here for instructions to setup a 13 buttons configuration using the
hotkeybtnvariant 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