Directly access the display memory instead of relying on Qt or any other high-level API

We aim to achieve fast and low-latency image display. To accomplish this, we attempted to write images to the framebuffer “/dev/fb0”. However, when I press Alt+Ctrl+F#, nothing appears on the screen.

According to section 29 of this document (, the Jetson Tx2i has three windows: 1 graphics window (Window A) and 2 overlay windows (Windows B and C). There are five memory clients responsible for managing these windows. However, I haven’t yet determined how to directly manage these memory clients to display images on the windows.

Please let me know if there are any misunderstandings in my interpretation.

It is not supported to access framebuffer directly. You can use nvoverlaysink or nvdrmvideosink in gstreamer. Please refer to examples in gstreamer user guide

Or can use DRM in jetson_multimedia_api. Please check
Jetson Linux API Reference: 08_video_dec_drm (Direct Rendering Manager) | NVIDIA Docs

1 Like

I have followed the steps for Tx2i, but I am getting errors

sudo sh -c 'echo 4 > /sys/class/graphics/fb1/blank'
sudo sh -c 'echo 4 > /sys/class/graphics/fb2/blank'
sudo sh -c 'echo 4 > /sys/class/graphics/fb0/blank'
sudo sh -c 'echo 0x0 > /sys/class/graphics/fb1/device/win_mask'
sudo sh -c 'echo 0x0 > /sys/class/graphics/fb2/device/win_mask'
sudo sh -c 'echo 0x0 > /sys/class/graphics/fb0/device/win_mask'
sudo sh -c 'echo 0x3f > /sys/class/graphics/fb0/device/win_mask'
sudo sh -c 'echo 0 > /sys/class/graphics/fb0/blank'

Ensure the Ubuntu desktop is disabled:

sudo systemctl stop gdm
sudo loginctl terminate-seat seat0

If there are two display outputs, unblank the second inactive display:
sudo sh -c 'echo 0 > /sys/class/graphics/fb1/blank'

But I am getting below-error

# sudo ./video_dec_drm --disable-video
nvbuf_utils: Could not get EGL display connection
Set governor to performance before enabling profiler
Using VT number 2