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!