Changing GUI Resolution in Android

I try to use the VIM3 with a UHD 4k display (3860x2160) for a digital signage project. Unfortunately, while the display is running in the high resolution mode, the android GUI is rendered in 1920x1080 (which can be seen by entering wm size).
Is there a way to build an image that renders the GUI in 4k?

I tried to change HWC_PRIMARY_FRAMEBUFFER_WIDTH to 3860 and HWC_PRIMARY_FRAMEBUFFER_HEIGHT to 1920 in device/khadas/kvim3/, however this leads to a broken display output.

Is there something I am missing?

Only the Nvidia Shield can render the Android UI in 4K and the RK3588 that will be released next year.
The Mali GPU used in developer boards and tv boxes are too weak to render the UI in 4K, so it’s rendered in 1080p instead with video playback that uses the VPU and a different layer to output in 4K.
So display output is 1080p but video playback is 4K.

1 Like

IMHO that is not true: I am evaluating various SBCs for my project, and the NanoPi M4 based on RK3399 is able to run Android in 4K. The graphics performance is a bit sluggish, but it works - even Chrome is usable.

I still haven’t been successful unfortunately. Here is what I tried:

Changing common/arch/arm64/boot/dts/amlogic/kvim3.dts:

&meson_fb {
display_size_default = <3840 2160 3840 2160 32>;
4k2k_fb = <1>;

Changing device/khadas/kvim3/


What I get is a display where the line offset seems to be wrong, e.g. a white square is displayed as a lot of white lines that do not touch.

Can somebody from khadas tell me whether a 4K framebuffer should work on this hardware? Am I missing something?
Unfortunately, not even the ubuntu image seems to support such a resolution (unlike other SBC such as the Raspberry Pi 4).

In the Odroid forum, the N2 also a S922x device, they said the hardware is too slow for a 4K frame-buffer in Android.
You will have to wait for the Rockchip RK3588 next year that will be the 2nd Android device apart from the Nvidia Shield that will support a 4K frame-buffer in Android.

Not sure how the NanoPi RK3399 can run a 4K framebuffer if it has a slower CPU & GPU than the S922x. In Linux it’s possible but in Android it would run very slow.

1 Like

My problem ATM is not that it runs too slow, but that it does not work at all. I expect it too run somewhat slowly, but I can’t get it too run in 4K at all, neither on android nor on linux.

As I said, the RK339 can run a 4K framebuffer, however the performance is not optimal. Since the AM311D should be faster than the RK3399, I expected a somewhat better performance from it, but it seems the hardware simply does not support such a large framebuffer - or I am missing some configuration change somewhere.