Can I set hdmi output fps?

I want to use jetson nano as a camera for another device using HDMI output via HDMI → CSI bridge. This device applyes only 30 fps, but jetson gives 60. Can I set this FPS to 30?

What do you see from “xrandr”? That lists what is available on which port based on the intersection of the GPU driver capability and the monitor’s reported specs (via EDID).

I can’t use monitor, because HDMI output is used as camera for other device and I can use jetson only via SSH. If I connect monitor I see this:

val@val-desktop:~$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 480mm x 270mm
   1920x1080     60.00*+
   1680x1050     59.96  
   1600x900      60.00  
   1440x900      59.89  
   1400x1050     59.98  
   1280x1024     75.03    60.00  
   1280x800      59.81  
   1280x720      60.00    59.94  
   1152x864      75.00  
   1024x768      75.03    60.01  
   800x600       75.00    60.32  
   720x400       70.04  
   640x480       75.00    59.94  


I think it would be better to clarify what is jetson’s exact role here…

“xrandr” running on jetson side is to change the HDMI mode on jetson. Jetson is as a HDMI source here.
Thus, are we sure it is jetson’s HDMI driver that needs to do the work to switch the frame rate here?

Yes, jetson role is camera device for another device which expects 30 FPS only. That is why jetson have to set FPS.


What we want to ask is

  1. what does that mean jetson is a camera device? How is your connection here?
  2. What data is transferred to another device?
  1. Another device has CSI input. And connection is HDMI Jetson output → HDMI to CSI bridge → CSI input
  2. Data is just jetson HDMI output

ok, then just go back and check what @linuxdev is talking about.

Also, you need to run xrandr when you have your usecase setup. You should not connect another HDMI monitor to check … and just use ssh to check…

Maybe I’m doing somethinh wrong, but SSH tells me ‘xrandr can not open display’.

It has nothing wrong. You need to run export DISPLAY=:0 before running xrandr.

Okay, I will check and come back

So, xrandr gives me this

val@val-desktop:~$ xrandr
Screen 0: minimum 8 x 8, current 1280 x 720, maximum 16384 x 16384
HDMI-0 connected primary 1280x720+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1280x720      60.00*+  59.94    50.00
   720x480       59.94    59.94
   640x480       59.94


Could you share the dmesg with this setup? I don’t think this is a valid usecase that is supported.

Our HDMI driver only accepts EDID from monitor or device so that it can output corresponding modes.

dmesg.txt (65.4 KB)


The log format got something wrong and looks like some data are missing. Please dump it again.

Or you just dmesg > log.txt and share that log.txt here.

Did like this ‘dmesg > log.txt’
log.txt (59.5 KB)


There is no error inside kernel log. Which means your device, no matter what it is, only supports 1280x720p and fps =60, 59.94 and 50.00. There is no 30 fps supported here.

I didn’t mean jetson does not support it. I mean your device gives this EDID to jetson so jetson just follows the EDID it got.

So, can I hardcode 30 fps somehow ?

Our driver only accepts to hardcoded EDID. But not just the frame rate or xres/yres.

please check the “Forcing edid” in below webstie. Need to do it in kernel.