Dual Monitor setup with Jetson Nano developer kit

Hi,

I have connected two monitors to Jetson nano developer kit. One monitor via DP port and another via HDMI port, I want to show different content on each display (Image 1 on Monitor1 and Image 2 on Monitor 2). But both the monitors show the same image.

In display settings when I uncheck the mirror display check box and click apply, the change is not reflecting. When I close the display settings window and again open it I could see the check box is checked.

below are the logs when i ran,
xrandr --output HDMI-0 --mode 1280x720 --primary --output DP-0 --mode 1280x720 --right-of HDMI-0

Logs:
[ 2144.050] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.050] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.050] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.050] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.108] (II) NVIDIA(0): Setting mode “HDMI-0: nvidia-auto-select @1280x7201280x7201280x7201280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}, DP-0: nvidia-auto@1280x7201280x720select @1280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}”
[ 2144.158] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.158] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.158] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.158] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.159] (II) NVIDIA(0): Setting mode “HDMI-0: nvi@1280x7201280x720ia-auto-select @1280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}, D@1280x7201280x720-0: nvidia-auto-select @1280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}”
[ 2144.208] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.208] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.208] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.208] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.208] (WW) NVIDIA(0): Panning domain extends beyond virtual width; clamping mode
[ 2144.208] (WW) NVIDIA(0): “nvidia-auto-select@1280x720+1280+0” to virtual screen
[ 2144.210] (II) NVIDIA(0): Setting m@1280x7201280x720de “HDMI-0: nvidia-auto-select @@1280x720280x720280x720 +0+0 {ViewPortIn=1280x72@1280x720, ViewPortOut=@1280x720280x720+0+0}, DP-0: nvidia-auto-select @1280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}”
[ 2144.258] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.258] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144.258] (WW) NVIDIA(0): The requested panning domain width 2560 is larger than the
[ 2144.258] (WW) NVIDIA(0): virtual screen size width 1280; adjusting.
[ 2144@1280x720259] (II) NVID@1280x720A(0): Setting mode “HDMI-0: nvidia-auto-select @1280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}, DP-0: nvidia-auto-select @1280x720 +0+0 {ViewPortIn=1280x720, ViewPortOut=1280x720+0+0}”
[ 2144.378] (–) NVIDIA(GPU-0): Samsung U28E590 (DFP-0): connected
[ 2144.378] (–) NVIDIA(GPU-0): Samsung U28E590 (DFP-0): External TMDS
[ 2144.378] (–) NVIDIA(GPU-0): Acer B276HL (DFP-1): connected
[ 2144.378] (–) NVIDIA(GPU-0): Acer B276HL (DFP-1): External TMDS

xrandr output:

Screen 0: minimum 8 x 8, current 2560 x 720, maximum 16384 x 16384
HDMI-0 connected primary 1280x720+0+0 (normal left inverted right x axis y axis) 610mm x 350mm panning 2560x720+0+0
1280x720 60.00*+ 59.94 50.00
832x624 75.05
800x600 75.00 72.19 60.32 56.25
720x576 50.00
720x480 59.94
720x400 70.04
640x480 75.00 72.81 67.06 59.94
DP-0 connected 1280x720+0+0 (normal left inverted right x axis y axis) 600mm x 340mm panning 2560x720+0+0
1280x720 60.00*+ 59.94
800x600 60.32 56.25
640x480 67.06 59.94

I also tried using the below python code,
import tkinter as tk
from PIL import Image, ImageTk

Configuration

image1_path = “/home/aslvv/Downloads/1.jpg”
image2_path = “/home/aslvv/Downloads/2.jpg”
WIDTH = 1280
HEIGHT = 720

def create_window(image_path, x_pos, window_title):
window = tk.Toplevel()
window.title(window_title)

# "WIDTHxHEIGHT+X+Y" format for geometry
window.geometry(f"{WIDTH}x{HEIGHT}+{x_pos}+0")

# Remove window borders (True Fullscreen)
window.overrideredirect(True)

# Load and resize image
img = Image.open(image_path)
#img = img.resize((WIDTH, HEIGHT), Image.Resampling.LANCZOS)
photo = ImageTk.PhotoImage(img)

label = tk.Label(window, image=photo, borderwidth=0)
label.image = photo  # Keep a reference
label.pack(fill="both", expand=True)

return window

root = tk.Tk()
root.withdraw() # Hide the tiny main control window

Create window 1 at 0,0 and window 2 at 1280,0

win1 = create_window(image1_path, 0, “Screen 1”)
win2 = create_window(image2_path, WIDTH, “Screen 2”)

print(“Displaying images. Press Ctrl+C in terminal to exit.”)
root.mainloop()

but both the screens show the same image (image 1)

Thank you!

Hi,

In display settings when I uncheck the mirror display check box and click apply, the change is not reflecting. When I close the display settings window and again open it I could see the check box is checked

What is the xorg log telling after you do above operation?

Hi,
xorg log did not generate any logs for this operation.

But my issue is fixed now,
by modifying the /etc/X11/xorg.conf file
Section “Screen”
Identifier “Default Screen”
Monitor “Configured Monitor”
Device “Default Device”
SubSection “Display”
Depth 24
Virtual 2560 720
EndSubSection

previously it was Virtual 1280 720 which is the size of one of the monitor I am using, changing the width to 2560 enabled both the screens to display different content instead of just mirroring