# Pi4: Output 2160x3840 image?

**URL:** <https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353>\
**Category:** Help\
**Created:** [April 3, 2025, 11:58am UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353 "2025-04-03T11:58:09Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![hi1](https://community.info-beamer.com/user_avatar/community.info-beamer.com/hi1/32/724_2.png) [@hi1](https://community.info-beamer.com/u/hi1)\
**Post date:** [April 3, 2025, 11:58am UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/1 "2025-04-03T11:58:09Z")

</div>

Hi,

i’m trying to set up device 36059 (Pi4 8GB) to output a 2160x3840px image (4k portrait mode). However, everythin i’ve tried so far did not yield any useful results.

On a Pi3 i’ve used the following snippet in the past (successfully), but even using exactly this will still make the pi output regular landscape video.

```auto
hdmi_timings=1080 0 18 16 48 1920 0 8 16 10 0 0 0 60 0 136000000 1
hdmi_group=2
hdmi_mode=87
hdmi_ignore_edid=0xa5000080
hdmi_cvt 1080 1920 60
max_framebuffer_width=1080
max_framebuffer_height=1920

```

Can you maybe give me a hint on what i’m doing wrong and how i can get the pi to output a portrait image?

---

<div class="post-metadata">

**Author:** ![infobeamer-fw](https://community.info-beamer.com/user_avatar/community.info-beamer.com/infobeamer-fw/32/3_2.png) [@infobeamer-fw](https://community.info-beamer.com/u/infobeamer-fw)\
**Post date:** [April 3, 2025, 12:56pm UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/2 "2025-04-03T12:56:56Z")

</div>

All `hdmi_*` settings in `config.txt` have been deprecated by newer Pis as KMS/DRM is now responsible for setting up video modes. The new way is to have something like `video=HDMI-A-1:1920x1080M@60D` which the kernel parse in the KMS/DRM subsystem and applies. **But** : For backwards compatibility and in case you transfer SD card from older Pis to a newer Pi4/5 and to unify setting resolutions, info-beamer OS has a limited backwards compatibility feature that still parses these options and emulates them.

What’s supported:

```auto
hdmi_group=[DMT|CEA]
hdmi_mode={some number}
hdmi_pixel_encoding=[0|1|2|3|4]

```

and in case of DMT 87:

```auto
hdmi_cvt={width} {height} {framerate}

```

The reason your settings don’t work is because the hdmi\_cvt with only spaces won’t work. You need the `hdmi_cvt=` prefix. You can get rid of `hdmi_timings`, `max_framebuffer_*` and `hdmi_ignore_edid` as they will be ignored. This probably also means that you might not see the boot messages as the mode is only applied once the info-beamer process takes over.

---

<div class="post-metadata">

**Author:** ![hi1](https://community.info-beamer.com/user_avatar/community.info-beamer.com/hi1/32/724_2.png) [@hi1](https://community.info-beamer.com/u/hi1)\
**Post date:** [April 3, 2025, 2:45pm UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/3 "2025-04-03T14:45:07Z")

</div>

Thanks for the quick reply.

I’ve tried fiddling with the proposed `hdmi_*` options, but none of them seem to have any effect.

I also can’t see any option in the hosted web interface to manually specify the `video=` option, the web interface only has a field for `config.txt`, not for `cmdline.txt`. Am i correct in assuming that fiddling with `cmdline.txt` on the system itself is not supported and will get removed on system updates?

---

<div class="post-metadata">

**Author:** ![infobeamer-fw](https://community.info-beamer.com/user_avatar/community.info-beamer.com/infobeamer-fw/32/3_2.png) [@infobeamer-fw](https://community.info-beamer.com/u/infobeamer-fw)\
**Post date:** [April 3, 2025, 6:20pm UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/4 "2025-04-03T18:20:00Z")

</div>

Ah. That feature was added only in the Dezember release of ‘stable’ while you are on the July version. I updated, but it seems the mode still isn’t accepted and it falls back to using FullHD instead:

```auto
info-beamer: [surface_kms.c] assigned mode for display 0 (blob_id=720): 2160x3840: 59.98 70Hz name: 2160x3840, clock: 722499 (flag:0x6 -hsync +vsync) - user defined
info-beamer: [surface_kms.c] testing mode on display 0
info-beamer: [surface_kms.c] VRR_ENABLED display 0 = 0
info-beamer: [surface_kms.c] Broadcast_RGB display 0 = Full
info-beamer: [surface_kms.c] Pixel encoding display 0 = Automatic
info-beamer: [surface_kms.c] SDR on display 0
info-beamer: [surface_kms.c] chosen mode not valid. Using FullHD fallback
info-beamer: [surface_kms.c] assigned mode for display 0 (blob_id=720): 1920x1080: 60.00 00Hz name: 1920x1080 @ 60Hz (1080p), clock: 148500 (flag:0x5 +hsync +vsync)

```

The corresponding DRM error is:

(Can be seen using `echo 0x19F > /sys/module/drm/parameters/debug` which then instantly floods the syslog)

```auto
vc4-drm gpu: [drm:drm_atomic_add_affected_connectors [drm]] Addingall current connectors for [CRTC:101:pixelvalve-2] to 000000008886960e
vc4-drm gpu: [drm:drm_atomic_add_affected_planes [drm]] Adding allcurrent planes for [CRTC:101:pixelvalve-2] to 000000008886960e
vc4-drm gpu: [drm:drm_atomic_add_encoder_bridges [drm]] Adding allbridges for [encoder:31:TMDS-31] to 000000008886960e
vc4-drm gpu: [drm:drm_atomic_add_encoder_bridges [drm]] Adding allbridges for [encoder:31:TMDS-31] to 000000008886960e
vc4-drm gpu: [drm:drm_atomic_helper_check_modeset [drm_kms_helper]] [ENCODER:31:TMDS-31] mode_valid() failed
vc4-drm gpu: [drm:drm_atomic_check_only [drm]] atomic driver checkfor 000000008886960e failed: -22
vc4-drm gpu: [drm:drm_atomic_state_default_clear [drm]] Clearing atomic state 000000008886960e 

```

`mode_valid() failed` I think happens if the configured mode isn’t allowed according to the EDID information provided by the display. Are you sure your display supports that? It seems to be a normal looking NEC display. Does that accept a portrait mode signal and then internally rotates it? Wouldn’t rotating the content via the assigned setup work instead?

---

<div class="post-metadata">

**Author:** ![hi1](https://community.info-beamer.com/user_avatar/community.info-beamer.com/hi1/32/724_2.png) [@hi1](https://community.info-beamer.com/u/hi1)\
**Post date:** [April 4, 2025, 3:53pm UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/5 "2025-04-04T15:53:23Z")

</div>

I’m not 100% sure this display supports that resolution, but i assume so because it does support rotating the screen to a portrait orientation, stretching a landscape signal to fit.

Rotating via the assigned setup would indeed work, however not all the setups we currently run do support rotation, so i thought this could be a sneaky way to get around implementing rotation in 5+ packages.

(For reference: This is a standard NEC P435 display in portrait mode, with “Picture” → “Advanced” → “Rotation” → “Rotate All” enabled.)

---

<div class="post-metadata">

**Author:** ![infobeamer-fw](https://community.info-beamer.com/user_avatar/community.info-beamer.com/infobeamer-fw/32/3_2.png) [@infobeamer-fw](https://community.info-beamer.com/u/infobeamer-fw)\
**Post date:** [April 4, 2025, 4:38pm UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/6 "2025-04-04T16:38:10Z")

</div>

Interesting approach. I’m not entirely sure on the mode validation logic. I think I traced it back to [linux/drivers/gpu/drm/vc4/vc4\_hdmi.c at 2a536bfca932b9df066dff0b03444dfe4a35b592 · raspberrypi/linux · GitHub](https://github.com/raspberrypi/linux/blob/2a536bfca932b9df066dff0b03444dfe4a35b592/drivers/gpu/drm/vc4/vc4_hdmi.c#L1807-L1822) and the clock test is here: [linux/drivers/gpu/drm/vc4/vc4\_hdmi.c at 2a536bfca932b9df066dff0b03444dfe4a35b592 · raspberrypi/linux · GitHub](https://github.com/raspberrypi/linux/blob/2a536bfca932b9df066dff0b03444dfe4a35b592/drivers/gpu/drm/vc4/vc4_hdmi.c#L1742-L1745).

This sounds relevant:

```cpp
	/* 4096x2160@60 is not reliable without overclocking core */
	if (!vc4->hvs->vc5_hdmi_enable_4096by2160 &&
	    mode->hdisplay > 3840 && mode->vdisplay >= 2160 &&
	    drm_mode_vrefresh(mode) >= 50)
		return MODE_CLOCK_HIGH;

```

The rotation would cause vdisplay to be 3840, so it should trigger this condition. Maybe? Can you check if it works if you temporarily reduce framerate to 30Hz?

`vc5_hdmi_enable_4096by2160` is set conditionally here:

```cpp
		max_rate = rpi_firmware_clk_get_max_rate(firmware,
							 RPI_FIRMWARE_CORE_CLK_ID);
        [...]
		if (max_rate >= 600000000)
			hvs->vc5_hdmi_enable_4096by2160 = true;

```

Not sure how that clock is set. Maybe `core_freq=600` in config.txt?

---

<div class="post-metadata">

**Author:** ![hi1](https://community.info-beamer.com/user_avatar/community.info-beamer.com/hi1/32/724_2.png) [@hi1](https://community.info-beamer.com/u/hi1)\
**Post date:** [May 20, 2025, 8:17pm UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/7 "2025-05-20T20:17:15Z")

</div>

Sorry for keeping this around for so long. I have tried fiddling with more and more settings and came to the conclusion that it will be more time-effective to implement rotation into the used setups.

Seems like this (the initial request) just can’t be done (or i’m not smart enough to figure it out)

---

<div class="post-metadata">

**Author:** ![infobeamer-fw](https://community.info-beamer.com/user_avatar/community.info-beamer.com/infobeamer-fw/32/3_2.png) [@infobeamer-fw](https://community.info-beamer.com/u/infobeamer-fw)\
**Post date:** [May 21, 2025, 8:00am UTC](https://community.info-beamer.com/t/pi4-output-2160x3840-image/1353/8 "2025-05-21T08:00:34Z")

</div>

I took a look at my NEC MA491 , which I discovered also has a way to rotate the output. It seems to work as follows:

In `/config/userconfig.txt`:

```auto
hdmi_group=2
hdmi_mode=87
hdmi_cvt=2160 3840 30

```

Once the info-beamer program starts (during bootup, the above settings are ignored, so it is using an auto-detected mode there), the NEC display shows that the resolution is active:

 ![image](https://community.info-beamer.com/uploads/default/original/1X/7f5dacd051e5815792357178319191f103cecaac.jpeg)

Assigning a setup with a portrait asset (1080x1920 in my case) looks good:

 ![image](https://community.info-beamer.com/uploads/default/original/1X/ebef41fcad8e33c61bd57c71259e9e7fb50d19fe.jpeg)

Using anything higher than 30Hz doesn’t seem to work though, even with the core\_freq setting or a lower resolution. Not sure why.

Alternatively, these settings in `/config/userconfig.txt` also work, but require the video mode is set to auto-detect in the config (so not `/config/screen-settings.txt` exists):

```auto
dtoverlay=append_cmdline
dtparam=append=video=HDMI-A-1:2160x3840M@30D

```
