Seeing only one video mode on raspberry pi 4
-
I have a tabletop arcade cabinet with a 1024x600 screen resolution.
To make this resolution available in retropie I added the following lines to config.txthdmi_group=2 hdmi_mode=87 hdmi_cvt 1024 600 60 6 0 0 0
This works just fine. In retropie the 1024x600 is used.
However I do have a problem with this when using the raspberry pi 4 (on the latest retropie 4.6).
I used to use a raspberry Pi 3B+ with these settings.
After starting an emulator and pressing a button I came in the runcommand menu and was able to change the resolution. Because sometimes I didn' t want to use the optimal 1024x600 resolution, but a different one.
I saw a whole list of video modes (87 was the 1024x600 one) and could just pick one.However on the raspberry pi 4 this no longer seems possible. Whatever I do, I only see the 1024x600 resolution which I added in the config.txt. So I can only choose one video mode now.
The weird thing is, when I start raspi-config I can see all video modes (not just the 1024x600 one) in the list.
So how can I make the list of video modes visible again in the runcommand menu so I can choose different resolutions ? -
@renepela said in Seeing only one video mode on raspberry pi 4:
The weird thing is, when I start raspi-config I can see all video modes (not just the 1024x600 one) in the list.
Probably because it uses
tvservice
.So how can I make the list of video modes visible again in the runcommand menu so I can choose different resolutions ?
We'll have to see if your display reports the video modes available correctly. Can you run the following 2 commands and post the output
tvservice -m DMT /opt/retropie/supplementary/mesa-drm/modetest -r
-
I will do that as soon as I'm at home, but it works just fine on the raspberry pi 3B+ with that display. So I don't think the display is causing the problem.
-
@renepela The PI4 has a different GPU and a set of different drivers, so it's quite different than the previous models.
-
I tried the commands you asked for, but don't know how to post the screen output. Because I'm typing this on my pc.
First the output without the hdmi_cvt option and hdmi_mode options in config.txt
The tvservice command gives me 17 available video modes.
The second modetest-r command gives a lot of output but it's scrolling up to fast to read it. Don't know how to scroll back.Now with the hdmi_cvt and hdmi_mode option in config.txt:
The tvservice command still gives me 20 available video modes (option 87 was added and has the word (prefer) next to it). Also a mode 88 was added automatically with the same settings. Probably for the second hdmi port.
The second command is still hard to capture.How can I capture the output of the second comand? Is there anything specific I should look at?
Looks like tvservice detects the modes just fine. So why aren't these modes available in retropie on a raspberry pi 4 and why are they available on the raspberry pi 3B+?
-
@renepela Try redirecting the output to the ROMs folder and get the files via file shares:
cd $HOME/RetroPie/roms tvservice -m DMT > tvservice_output.txt /opt/retropie/supplementary/mesa-drm/modetest -r > modetest-output.txt
Looks like tvservice detects the modes just fine. So why aren't these modes available in retropie on a raspberry pi 4 and why are they available on the raspberry pi 3B+?
Because
tvservice
will not properly scale the screen on a Pi4, like it was the case for the previous models. -
Here is the modetest-output
trying to open device 'vc4'...done Encoders: id crtc type possible crtcs possible clones Encoder map: 50 to 49 50 49 TMDS 0x00000001 0x00000000 Connectors: id encoder status name size (mm) modes encoders 51 50 connected HDMI-A-1 0x0 1 50 modes: name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot) Mode: 1024x600 @ 60 Hz n/a (49.00 Mhz, phsync, pvsync, preferred, driver) connector 50 0 props: 1 EDID: flags: immutable blob blobs: value: 2 DPMS: flags: enum enums: On=0 Standby=1 Suspend=2 Off=3 value: 0 5 link-status: flags: enum enums: Good=0 Bad=1 value: 0 6 non-desktop: flags: immutable range values: 0 1 value: 0 19 CRTC_ID: flags: object value: 49 52 left margin: flags: range values: 0 100 value: 0 53 right margin: flags: range values: 0 100 value: 0 54 top margin: flags: range values: 0 100 value: 0 55 bottom margin: flags: range values: 0 100 value: 0 56 Broadcast RGB: flags: enum enums: Automatic=0 Full=1 Limited 16:235=2 value: 0 CRTCs: id fb pos size 49 59 (0,0) (1024x600) Mode: 1024x600 @ 60 Hz n/a (49.00 Mhz, phsync, pvsync, preferred, driver) crtc 49 0 props: 20 ACTIVE: flags: range values: 0 1 value: 1 21 MODE_ID: flags: blob blobs: value: 68bf0000000428049004200500005802 5b026202700200003c00000005000000 4800000046495845445f4d4f44450000 00000000000000000000000000000000 00000000 18 OUT_FENCE_PTR: flags: range values: 0 18446744073709551615 value: 0 Planes: id crtc fb CRTC x,y x,y gamma size possible crtcs 28 49 59 0,0 0,0 0 0x00000001 formats: XR24 AR24 RG16 RG24 BG24 YU16 YU12 YV12 NV12 NV21 props: 7 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 1 16 FB_ID: flags: object value: 59 17 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 19 CRTC_ID: flags: object value: 49 12 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 13 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_W: flags: range values: 0 2147483647 value: 1024 15 CRTC_H: flags: range values: 0 2147483647 value: 600 8 SRC_X: flags: range values: 0 4294967295 value: 0 9 SRC_Y: flags: range values: 0 4294967295 value: 0 10 SRC_W: flags: range values: 0 4294967295 value: 67108864 11 SRC_H: flags: range values: 0 4294967295 value: 39321600 27 IN_FORMATS: flags: immutable blob blobs: value: 01000000000000000a00000018000000 03000000400000005852323441523234 52473136524732344247323459553136 59553132595631324e5631324e563231 ff030000000000000000000000000000 00000000000000000700000000000000 00000000000000000100000000000007 00010000000000000000000000000000 0400000000000007 in_formats blob decoded: XR24: LINEAR MOD_BROADCOM_VC4_T_TILED AR24: LINEAR MOD_BROADCOM_VC4_T_TILED RG16: LINEAR MOD_BROADCOM_VC4_T_TILED RG24: LINEAR BG24: LINEAR YU16: LINEAR YU12: LINEAR YV12: LINEAR NV12: LINEAR (UNKNOWN MODIFIER) NV21: LINEAR 30 alpha: flags: range values: 0 65535 value: 65535 31 rotation: flags: bitmask values: rotate-0=0x1 rotate-180=0x4 reflect-x=0x10 reflect-y=0x20 value: 1 32 COLOR_ENCODING: flags: enum enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1 ITU-R BT.2020 YCbCr=2 value: 0 33 COLOR_RANGE: flags: enum enums: YCbCr limited range=0 YCbCr full range=1 value: 0 34 zpos: flags: range values: 0 127 value: 0 35 0 0 0,0 0,0 0 0x00000001 formats: XR24 AR24 RG16 RG24 BG24 YU16 YU12 YV12 NV12 NV21 props: 7 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 0 16 FB_ID: flags: object value: 0 17 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 19 CRTC_ID: flags: object value: 0 12 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 13 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_W: flags: range values: 0 2147483647 value: 0 15 CRTC_H: flags: range values: 0 2147483647 value: 0 8 SRC_X: flags: range values: 0 4294967295 value: 0 9 SRC_Y: flags: range values: 0 4294967295 value: 0 10 SRC_W: flags: range values: 0 4294967295 value: 0 11 SRC_H: flags: range values: 0 4294967295 value: 0 27 IN_FORMATS: flags: immutable blob blobs: value: 01000000000000000a00000018000000 03000000400000005852323441523234 52473136524732344247323459553136 59553132595631324e5631324e563231 ff030000000000000000000000000000 00000000000000000700000000000000 00000000000000000100000000000007 00010000000000000000000000000000 0400000000000007 in_formats blob decoded: XR24: LINEAR MOD_BROADCOM_VC4_T_TILED AR24: LINEAR MOD_BROADCOM_VC4_T_TILED RG16: LINEAR MOD_BROADCOM_VC4_T_TILED RG24: LINEAR BG24: LINEAR YU16: LINEAR YU12: LINEAR YV12: LINEAR NV12: LINEAR (UNKNOWN MODIFIER) NV21: LINEAR 37 alpha: flags: range values: 0 65535 value: 65535 38 rotation: flags: bitmask values: rotate-0=0x1 rotate-180=0x4 reflect-x=0x10 reflect-y=0x20 value: 1 39 COLOR_ENCODING: flags: enum enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1 ITU-R BT.2020 YCbCr=2 value: 0 40 COLOR_RANGE: flags: enum enums: YCbCr limited range=0 YCbCr full range=1 value: 0 41 zpos: flags: range values: 0 127 value: 0 42 0 0 0,0 0,0 0 0x00000001 formats: XR24 AR24 RG16 RG24 BG24 YU16 YU12 YV12 NV12 NV21 props: 7 type: flags: immutable enum enums: Overlay=0 Primary=1 Cursor=2 value: 2 16 FB_ID: flags: object value: 0 17 IN_FENCE_FD: flags: signed range values: -1 2147483647 value: -1 19 CRTC_ID: flags: object value: 0 12 CRTC_X: flags: signed range values: -2147483648 2147483647 value: 0 13 CRTC_Y: flags: signed range values: -2147483648 2147483647 value: 0 14 CRTC_W: flags: range values: 0 2147483647 value: 0 15 CRTC_H: flags: range values: 0 2147483647 value: 0 8 SRC_X: flags: range values: 0 4294967295 value: 0 9 SRC_Y: flags: range values: 0 4294967295 value: 0 10 SRC_W: flags: range values: 0 4294967295 value: 0 11 SRC_H: flags: range values: 0 4294967295 value: 0 27 IN_FORMATS: flags: immutable blob blobs: value: 01000000000000000a00000018000000 03000000400000005852323441523234 52473136524732344247323459553136 59553132595631324e5631324e563231 ff030000000000000000000000000000 00000000000000000700000000000000 00000000000000000100000000000007 00010000000000000000000000000000 0400000000000007 in_formats blob decoded: XR24: LINEAR MOD_BROADCOM_VC4_T_TILED AR24: LINEAR MOD_BROADCOM_VC4_T_TILED RG16: LINEAR MOD_BROADCOM_VC4_T_TILED RG24: LINEAR BG24: LINEAR YU16: LINEAR YU12: LINEAR YV12: LINEAR NV12: LINEAR (UNKNOWN MODIFIER) NV21: LINEAR 44 alpha: flags: range values: 0 65535 value: 65535 45 rotation: flags: bitmask values: rotate-0=0x1 rotate-180=0x4 reflect-x=0x10 reflect-y=0x20 value: 1 46 COLOR_ENCODING: flags: enum enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1 ITU-R BT.2020 YCbCr=2 value: 0 47 COLOR_RANGE: flags: enum enums: YCbCr limited range=0 YCbCr full range=1 value: 0 48 zpos: flags: range values: 0 127 value: 0 Frame buffers: id size pitch
-
Your display reports only 1 video mode is available, so that's why you don't have any other resolution shown.
Mode: 1024x600 @ 60 Hz n/a (49.00 Mhz, phsync, pvsync, preferred, driver) connector 50 0
I was more curious to see what
tvservice
reports. Can you try dumping the EDID from the display:cd $HOME/RetroPie/roms tvservice -d edit.dat
then upload the
edit.dat
file from\\retropie\roms\
just to check what the display reports. -
I have the file, but how do I upload it?
-
-
-
So your display reports a bunch of resolutions - none of them being (natively) 1024x600. From the information extracted by the edidparser - is this the display ?
What happens if you remove the HDMI configuration lines and leave
config.txt
as default ? -
@mitu said in Seeing only one video mode on raspberry pi 4:
So your display reports a bunch of resolutions - none of them being (natively) 1024x600. From the information extracted by the edidparser - is this the display ?
What happens if you remove the HDMI configuration lines and leave config.txt as deI will try that when I'm at home again. But I think I already tried that yesterday. Not sure though. What I do know is when I don;t add the videomode 87 retropie/emulationstation uses the wrong resolutions, making it look terrible.
The display is part of a kit: The waveShare ARcade-101-1p. So I don;t know the exact brand of the screen.
[https://www.waveshare.com/arcade-101-1p.htm](link url) -
According to the information reported by the display, it may be choosing 576p
HDMI0:EDID preferred mode remained as CEA (17) 720x576p @ 50 Hz with pixel clock 27 MHz
EDIT: see if, without any HDMI configuration, the runcommand shows a list of resolutions, like before.
-
Sorry for the late reply.
I tried it again an without the lines in config.txt I do see a list of resolutions in the run command.
Even 1024x600 is in that list. (option 49-0) 1024x600 @ 60 Hz n/a
So it does show it, but is n/a so not working. When I try it anyway my screen turns red and says the resolution is not supported.So without the lines in config.txt the resolutions do show up in runcommand, but I can no longer use 1024x600 which is the native resolution of the monitor which looks best.
With the lines in config.txt I only see 1024x600 which looks perfect, however I can't choose other resolutions anymore which I sometimes need (e.g. Amiga works best at a 50Hz resolution etc.)
Is there any way to have the best of both options? So all resolutions + 1024x600 as option 87?
-
So it does show it, but is n/a so not working. When I try it anyway my screen turns red and says the resolution is not supported.
That's probably because the resolution is improperly configured in the display's EDID and what it reports is not correct.
HDMI:EDID failed to find a matching detail format for 1024x600p hfp:5 hs:13 hbp:270 vfp:2 vs:3 vbp:17 pixel clock:49 MHz HDMI:EDID calculated refresh rate is 60 Hz HDMI:EDID guessing the format to be 1024x600p @60 Hz HDMI:EDID found unknown detail timing format: 1024x600p hfp:5 hs:13 hbp:270 vfp:2 vs:3 vbp:17 pixel clock:49 MHz HDMI:EDID established timing I/II bytes are AF EF 00
This is why the installation instructions make you configure the 'best' resolution explicitly with
hdmi_cvt
. Unfortunately, using thehdmi_cvt
line makes all other supported resolutions 'disappear' for the video driver.I don't know enough about EDID specs and detailed video timings to be able to edit it and fix it. You could ask the vendor about Pi4 compatibility, though from what I've seen on the Waveshare wiki, they recommend disabling the new OpenGL driver - I think especially because this kind of issue. That's not an option if you want to use Retropie.
Try to find a video mode - from the ones that the device supports - that's closest to the one you've used and set it in
config.txt
viahdmi_group
/hdmi_mode
and set it to be the main resolution. -
@mitu I already asked the vendor. Unfortunately no reply so far.
I hope someone knows how to change the edid of the monitor to fix this issue.
Disabling the OpenGL driver is something I already tried, but retropie won't start anymore and gives a render error message.Anyway, thanks for your help. I really appreciate it.
-
I did a few more tests and it might be possible to work around this in a different way, but I've hit a bug in
runcommand
that makes the resolution switching impossible.I'll see if we can get this sorted out in
runcommand
. -
@renepela I have another idea we could test to see if can remedy the problem.
First, you'll have to update the RetroPie-Setup script so you're on the latest version and make sure to update the
runcommand
package, from the core section.Seconds, there's another way to set a custom resolution for your display, without modifying the
config.txt
file. So perform these steps:- remove any configurations you made in the
config.txt
boot file for the video mode settigns - comment/remote thehdmi_group
,hdmi_mode
andhdmi_cvt
parameters - open the
cmdline.txt
file - should be nextconfig.txt
- and add the following at the end of the line
Note that the file contains only one line, make sure you don't add extra lines to it, everything should be on a single line.video=HDMI-A-1:1024x600@60
Reboot and see if the system boots with the correct resolution, then check if you can select additional resolutions when starting a game.
- remove any configurations you made in the
-
@mitu Thanks for the help. I'v tried it but unfortunately it didn;t work. It's booting in the wrong resolution. Is there a way to use fake edid data?
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.