RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Seeing only one video mode on raspberry pi 4

    Scheduled Pinned Locked Moved Help and Support
    videomodevideo moderaspberry pi 4custom
    21 Posts 2 Posters 3.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • mituM
      mitu Global Moderator @renepela
      last edited by

      @renepela The PI4 has a different GPU and a set of different drivers, so it's quite different than the previous models.

      1 Reply Last reply Reply Quote 0
      • R
        renepela
        last edited by

        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+?

        mituM 1 Reply Last reply Reply Quote 0
        • mituM
          mitu Global Moderator @renepela
          last edited by

          @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.

          1 Reply Last reply Reply Quote 0
          • R
            renepela
            last edited by

            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
            
            mituM 1 Reply Last reply Reply Quote 0
            • mituM
              mitu Global Moderator @renepela
              last edited by mitu

              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.

              1 Reply Last reply Reply Quote 0
              • R
                renepela
                last edited by

                I have the file, but how do I upload it?

                mituM 1 Reply Last reply Reply Quote 0
                • mituM
                  mitu Global Moderator @renepela
                  last edited by

                  https://send.firefox.com/ !

                  1 Reply Last reply Reply Quote 0
                  • R
                    renepela
                    last edited by

                    [https://send.firefox.com/download/27d6c4d2f9f1196e/#T5TKfmqzeDVC0TSu2h5WZw](link url)

                    1 Reply Last reply Reply Quote 0
                    • mituM
                      mitu Global Moderator
                      last edited by mitu

                      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 ?

                      1 Reply Last reply Reply Quote 0
                      • R
                        renepela
                        last edited by

                        @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 de

                        I 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)

                        1 Reply Last reply Reply Quote 0
                        • mituM
                          mitu Global Moderator
                          last edited by mitu

                          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.

                          1 Reply Last reply Reply Quote 0
                          • R
                            renepela
                            last edited by

                            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?

                            mituM 1 Reply Last reply Reply Quote 0
                            • mituM
                              mitu Global Moderator @renepela
                              last edited by mitu

                              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 the hdmi_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 via hdmi_group/hdmi_mode and set it to be the main resolution.

                              R 1 Reply Last reply Reply Quote 0
                              • R
                                renepela @mitu
                                last edited by

                                @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.

                                1 Reply Last reply Reply Quote 0
                                • mituM
                                  mitu Global Moderator
                                  last edited by mitu

                                  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.

                                  1 Reply Last reply Reply Quote 0
                                  • mituM
                                    mitu Global Moderator
                                    last edited by mitu

                                    @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 the hdmi_group, hdmi_mode and hdmi_cvt parameters
                                    • open the cmdline.txt file - should be next config.txt - and add the following at the end of the line
                                      video=HDMI-A-1:1024x600@60
                                      
                                      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.

                                    Reboot and see if the system boots with the correct resolution, then check if you can select additional resolutions when starting a game.

                                    R 1 Reply Last reply Reply Quote 0
                                    • R
                                      renepela @mitu
                                      last edited by

                                      @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?

                                      1 Reply Last reply Reply Quote 0
                                      • R
                                        renepela
                                        last edited by

                                        I've been reading a littl emore and it seems it is possible to ignore the screens edid data. Instead I can use an edid.dat file with the values I want.

                                        I think I have to add hdmi_ignore_edid and hmi_edid_file to config.txt

                                        The only thing I don't know is how to create a an edid.dat file with the correct information.
                                        If someone knows (or even better, give me a better edid file) how to do this I think this problem is solveable.

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        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.