With the Raspberry Pi 4's release, I thought it would be useful to post here about something that I have to conclude is not widely known. It turns out that CRT users (and I suppose OSSC users also) can very easily obtain real 240p RGB analog output from a Raspberry Pi's HDMI out without the need for analog RGB hats. Instead, the digital (HDMI) to analog conversion can be done easily with devices that have a lower cost, and that you may already own. HDMI 240p RGB output uses the same method that RGB hats rely on, that is, by adding a few entries in the RBP's config.txt file.
After configuring the config.txt file (see below), all that is needed is to connect the RBP's HDMI output to an HDMI-VGA converter (the often-recommended cheap Tendak dongle, for example), which can then be connected to any device that can combine sync to attain RGBS (or RGsB). Besides the better-known RGB interfaces, there are many other low-cost Extron devices that can pass through the RGB signal while outputting the required sync (many can also output component, for use with consumer CRT TVs). As an additional advantage, this approach can preserve digital audio if it is extracted (via an HDMI switch or audio extractor) before the DAC. Yet another advantage is not having to rely on custom images supplied by the RGB hat sellers.
My own setup is RBP3+ HDMI -> Digital audio extracted by HDMI switch -> HDFury3 -> Extron Rxi 203 -> RGB switch -> BVM
Like with the RGB hats, you will want to turn off bilinear filtering, set integer scaling, etc., on the image/emulator that you use to get an accurate 240p picture. Setting a "super resolution" of 1920 is ideal.
The required config.txt settings are the following:
hdmi_cvt=1920 240 60 1 1 0 0
hdmi_ignore_edid=0xa5000080
hdmi_pixel_encoding=2
avoid_safe_mode=1
disable_overscan=0
config_hdmi_boost=4
hdmi_drive=2
hdmi_group=1
hdmi_mode=6
kernel=zImage
hdmi_force_hotplug=1
gpu_mem_256=128
gpu_mem_512=256
gpu_mem_1024=512
dtparam=audio=on
boot_delay=3
Source:
https://github.com/recalbox/recalbox-os ... h-HDMI-(EN) (more information, in particular what each of the entries does, can be found there also). I suspect that not many people find this page because the Recalbox wiki has the wrong link for it in its manual.
Do take note of the hdmi_mode=6 entry. HDMI mode 6 (CEA group) is 480i, which is active only for the frontend (EmulationStation, Retropie, etc.) to make it legible. Retropie may not need it, and if you hate 480i you can remove this entry or change it to mode 12 (240p). More info on HDMI modes here: (
https://www.raspberrypi.org/documentati ... t/video.md). Furthermore, specific core overrides can be set to use yet another video mode (such as 480p for, say, retro PC games), though how this is done varies by the image used (on Recalbox, for example, this is done in the recalbox.conf file). I also recommend setting the frontend's global video mode to prevent temporary transitions to the default 720p, when using some images, when loading cores. The mode should be set to either 480i or 240p (remember that the monitor itself does not distinguish between these two).
The same settings should also work with Retropie and Lakka. I tested it on both and only had problems (random black screens) with Lakka, though it may have just been a bad image.
I imagine that the RBP4 will allow Retroarch to fully support CRT SwitchRes. As far as I can tell it does seem to work on current RBP3s too with the above config, though I've seen some claim that it's not supposed to, but setting the integer scale manually is always possible anyway. These HDMI video mode settings should be the same on the RBP4, and so before people spend money on new hats that are likely to come out for the RBP4 I would suggest giving this method a try first. If you try to set this up and encounter any problems I'll try to help.
If only I read this a week ago. Anyhow I'm going for a rpi4+retrotink ultimate combo to a consumer crt. There seems to be an early lakka build that works for pi4 already.
No word yet on retropie release for the pi4 yet.