HDMI splitter not working with Torizon OS

I have Torizon OS 7.2.0+build.13 on Verdin iMX8M-Plus and I can use an external HDMI display (native interface of iMX8M-Plus) 1920x1080@60Hz.
It works fine.
I connected a HDMI splitter (1 input - 2 outputs) to duplicate the displays (same resolution on both the displays). The splitter is compatible with HDCP 1.4.
The HDMI splitter works, because I tested on my Windows PC with the same two displays.
On the other side, Torizon OS is not able to drive the splitter properly.
I see glitches, green lines on the display, …
Is there any Linux driver that must be included in Torizon OS?

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

The Verdin iMX8M Plus module supports HDMI with a default resolution of 1920x1080, as detailed in the Toradex documentation. While this documentation confirms basic HDMI functionality, it does not specifically address the use of HDMI splitters.

Given that the hardware functions correctly under Windows but not with Torizon, this suggests a potential software configuration issue rather than a hardware incompatibility. Unfortunately, the available documentation does not provide specific guidance on HDMI splitter support or any additional drivers that might be required.

For troubleshooting display issues on Torizon OS, you might consider checking the display settings and ensuring that the correct drivers and configurations are applied. Additionally, exploring community forums and repositories can be helpful for insights and potential solutions from other users who might have faced similar challenges.

If you have further questions or need additional guidance, feel free to ask!

Best regards,
Toradex AI Assistant

Hi @vix !

Personally, I usually have quite some headaches when trying to use those HDMI splitters (1 input - 2 outputs) even with my personal computer. And the behavior varies with the monitors/displays used as well.

AFAIK they work on HDMI signal level: they “simply” provide the same data from the input to their outputs, so the original source knows nothing about the splitter’s existence. Therefore, no software setup should be needed.

Are you using a passive or active splitter?
For a passive one, please be sure to use short HDMI cables. Keep in mine that in this case, the signal energy is being split in two.
Have you tried other splitters? (I highly recommend trying other splitters just in case)

Best regards,

The only thing that I can say is that on Windows I see that when I connect the splitter, I see it as a device “HDMI splitter” with its own driver.
This is the reason why I asked for Torizon OS drivers.

Are you using a passive or active splitter?

It’s active.
There are a series of passive splitters that are simp,y electrical switches: the outpiut is routed either on output 1 or on output 2 (but not together).
These splitters works without any driver, but they’re not what I need.

Have you tried other splitters? (I highly recommend trying other splitters just in case)

I bought one of them on the marketplace.
I don’t have another brand.

Hi, @vix !

Maybe the HDMI splitter advertises itself with such “HDMI splitter” name via EDID?

Also, could you please share a picture or video of the bad behavior of the display?

Best regards,

Here is what I see

weston-imx8-1      | Switching VT tty1 to text mode if currently in graphics mode
weston-imx8-1      | Switching to VT 7
weston-imx8-1      | SoC is: 'i.MX8MP'
weston-imx8-1      | SoC has GPU: true
weston-imx8-1      | SoC has DPU: false
weston-imx8-1      | g2d implementation: viv
weston-imx8-1      | Removing previously created '.X*-lock' entries under /tmp before starting Weston. Pass 'IGNORE_X_LOCKS=1' environment variable to Weston container to disable this behavior.
weston-imx8-1      | dos2unix: converting file /etc/xdg/weston/weston.ini to Unix format...
weston-imx8-1      | dos2unix: converting file /etc/xdg/weston-dev/weston.ini to Unix format...
weston-imx8-1      | 00:00:00.000 [INFO] [seatd/seat.c:39] Created VT-bound seat seat0
weston-imx8-1      | 00:00:00.001 [INFO] [seatd/seatd.c:194] seatd started
weston-imx8-1      | Date: 2025-01-08 UTC
weston-imx8-1      | [18:29:08.786] weston 12.0.4
weston-imx8-1      |                https://wayland.freedesktop.org
weston-imx8-1      |                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
weston-imx8-1      |                Build: 12.0.4
weston-imx8-1      | [18:29:08.786] Command line: weston -Bdrm-backend.so -Swayland-0 --use-g2d
weston-imx8-1      | [18:29:08.786] OS: Linux, 6.6.84-7.2.0-g87bfb710b6f1, #1-Torizon SMP PREEMPT Mon Mar 31 08:47:48 UTC 2025, aarch64
weston-imx8-1      | [18:29:08.787] Flight recorder: enabled
weston-imx8-1      | [18:29:08.787] Using config file '/etc/xdg/weston/weston.ini'
weston-imx8-1      | [18:29:08.790] Output repaint window is 7 ms maximum.
weston-imx8-1      | [18:29:08.794] Loading module '/usr/lib/aarch64-linux-gnu/libweston-12/drm-backend.so'
weston-imx8-1      | [18:29:08.858] initializing drm backend
weston-imx8-1      | [18:29:08.858] Trying libseat launcher...
weston-imx8-1      | 00:00:00.203 [INFO] [seatd/server.c:145] New client connected (pid: 29, uid: 1000, gid: 1000)
weston-imx8-1      | 00:00:00.203 [INFO] [seatd/seat.c:170] Added client 7 to seat0
weston-imx8-1      | 00:00:00.204 [INFO] [seatd/seat.c:480] Opened client 7 on seat0
weston-imx8-1      | [18:29:08.859] [libseat/libseat.c:73] Seat opened with backend 'seatd'
weston-imx8-1      | [18:29:08.859] [libseat/backend/seatd.c:212] Enabling seat
weston-imx8-1      | [18:29:08.859] libseat: session control granted
weston-imx8-1      | [18:29:08.867] using /dev/dri/card1
weston-imx8-1      | [18:29:08.867] DRM: supports atomic modesetting
weston-imx8-1      | [18:29:08.867] DRM: does not support GBM modifiers
weston-imx8-1      | [18:29:08.867] DRM: does not support async page flipping
weston-imx8-1      | [18:29:08.867] DRM: supports picture aspect ratio
weston-imx8-1      | [18:29:08.871] Loading module '/usr/lib/aarch64-linux-gnu/libweston-12/g2d-renderer.so'
weston-imx8-1      | [18:29:09.277] event0  - 30370000.snvs:snvs-powerkey: is tagged by udev as: Keyboard
weston-imx8-1      | [18:29:09.279] event0  - 30370000.snvs:snvs-powerkey: device is a keyboard
weston-imx8-1      | [18:29:09.350] event2  - eGalax Inc. USB TouchController Touchscreen: is tagged by udev as: Tablet
weston-imx8-1      | [18:29:10.149] event2  - eGalax Inc. USB TouchController Touchscreen: libinput bug: missing tablet capabilities: resolution. Ignoring this device.
weston-imx8-1      | [18:29:10.152] event2  - eGalax Inc. USB TouchController Touchscreen: device is a tablet
weston-imx8-1      | [18:29:10.254] event2  - failed to create input device '/dev/input/event2'
weston-imx8-1      | [18:29:10.329] event3  - eGalax Inc. USB TouchController UNKNOWN: is tagged by udev as: Mouse
weston-imx8-1      | [18:29:10.330] event3  - eGalax Inc. USB TouchController UNKNOWN: device is a pointer
weston-imx8-1      | [18:29:10.338] event4  - eGalax Inc. USB TouchController: is tagged by udev as: Touchscreen
weston-imx8-1      | [18:29:10.340] event4  - eGalax Inc. USB TouchController: device is a touch device
weston-imx8-1      | [18:29:10.345] event1  - audio-hdmi HDMI Jack: is tagged by udev as: Switch
weston-imx8-1      | [18:29:10.464] event1  - not using input device '/dev/input/event1'
weston-imx8-1      | [18:29:10.548] libinput: configuring device "30370000.snvs:snvs-powerkey".
weston-imx8-1      | [18:29:10.549] libinput: configuring device "eGalax Inc. USB TouchController UNKNOWN".
weston-imx8-1      | [18:29:10.549] input device event3 has no enabled output associated (none named), skipping calibration for now.
weston-imx8-1      | [18:29:10.549] Touchscreen - eGalax Inc. USB TouchController - /sys/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.2.auto/usb1/1-1/1-1.2/1-1.2:1.0/0003:0EEF:0001.0001/input/input9/event4
weston-imx8-1      | [18:29:10.549] libinput: configuring device "eGalax Inc. USB TouchController".
weston-imx8-1      | [18:29:10.549] input device event4 has no enabled output associated (none named), skipping calibration for now.
weston-imx8-1      | [18:29:11.095] DRM: head 'HDMI-A-1' found, connector 35 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
weston-imx8-1      |                Supported EOTF modes: SDR
weston-imx8-1      | [18:29:11.095] Registered plugin API 'weston_drm_output_api_v1' of size 40
weston-imx8-1      | [18:29:11.095] Registered plugin API 'weston_drm_virtual_output_api_v2' of size 48
weston-imx8-1      | [18:29:11.095] Color manager: no-op
weston-imx8-1      | [18:29:11.096] Module '/usr/lib/aarch64-linux-gnu/libgbm.so' already loaded
weston-imx8-1      | [18:29:11.096] Output 'HDMI-A-1' attempts EOTF mode: SDR
weston-imx8-1      | [18:29:11.096] Output 'HDMI-A-1' using color profile: built-in default sRGB SDR profile
weston-imx8-1      | [18:29:11.113] Output HDMI-A-1 (crtc 33) video modes:
weston-imx8-1      |                1920x1080@60.0, current, 172.8 MHz
weston-imx8-1      |                1024x768@60.0, 65.0 MHz
weston-imx8-1      |                800x600@60.3, 40.0 MHz
weston-imx8-1      |                800x600@56.2, 36.0 MHz
weston-imx8-1      |                848x480@60.0, 33.8 MHz
weston-imx8-1      |                640x480@59.9, 25.2 MHz
weston-imx8-1      | [18:29:11.113] associating input device event0 with output HDMI-A-1 (none by udev)
weston-imx8-1      | [18:29:11.113] associating input device event3 with output HDMI-A-1 (none by udev)
weston-imx8-1      | [18:29:11.114] associating input device event4 with output HDMI-A-1 (none by udev)
weston-imx8-1      | [18:29:11.115] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1
weston-imx8-1      | [18:29:11.115] Compositor capabilities:
weston-imx8-1      |                arbitrary surface rotation: yes
weston-imx8-1      |                screen capture uses y-flip: yes
weston-imx8-1      |                cursor planes: yes
weston-imx8-1      |                arbitrary resolutions: no
weston-imx8-1      |                view mask clipping: yes
weston-imx8-1      |                explicit sync: yes
weston-imx8-1      |                color operations: no
weston-imx8-1      |                presentation clock: CLOCK_MONOTONIC, id 1
weston-imx8-1      |                presentation clock resolution: 0.000000001 s
weston-imx8-1      | [18:29:11.116] Loading module '/usr/lib/aarch64-linux-gnu/weston/desktop-shell.so'
weston-imx8-1      | [18:29:11.131] Loading module '/usr/lib/aarch64-linux-gnu/libweston-12/xwayland.so'
weston-imx8-1      | [18:29:11.427] Registered plugin API 'weston_xwayland_v1' of size 32
weston-imx8-1      | [18:29:11.427] Registered plugin API 'weston_xwayland_surface_v1' of size 16
weston-imx8-1      | [18:29:11.427] xserver listening on display :0
weston-imx8-1      | [18:29:11.430] Loading module '/usr/lib/aarch64-linux-gnu/weston/screen-share.so'
weston-imx8-1      | [18:29:11.432] launching '/usr/lib/aarch64-linux-gnu/weston-keyboard'
weston-imx8-1      | [18:29:11.439] launching '/usr/lib/aarch64-linux-gnu/weston-desktop-shell'
weston-imx8-1      | could not load cursor 'dnd-move'
weston-imx8-1      | could not load cursor 'dnd-copy'
weston-imx8-1      | could not load cursor 'dnd-none'
weston-imx8-1      | could not load cursor 'dnd-move'
weston-imx8-1      | could not load cursor 'dnd-copy'
weston-imx8-1      | could not load cursor 'dnd-none'
weston-imx8-1      | [     1] wl_drm_is_format_supported, format = 0x30335241
weston-imx8-1      | [     2] wl_drm_is_format_supported, format = 0x30335258
weston-imx8-1      | [     3] wl_drm_is_format_supported, format = 0x30334241
weston-imx8-1      | [     4] wl_drm_is_format_supported, format = 0x30334258
weston-imx8-1      | [     5] wl_drm_authenticate, id = 1
weston-imx8-1      | g2d_blitEx: Invalid src rect, left 0, top 0, right 0, bottom 0, width 0, height 0, stride 0!
weston-imx8-1      | [18:29:13.177] SRC: physicAddr = 0 left = 0 right = 0 top=0 bottom=0 stride= 0 tiling = 0, format=0
weston-imx8-1      | [18:29:13.177] DST: physicAddr = af500000 left = 0 right = 1920 top=0 bottom=1080 stride= 1920 tiling = 1, format=4

Here is the relevant lines, I think

weston-imx8-1      | [18:29:11.113] Output HDMI-A-1 (crtc 33) video modes:
weston-imx8-1      |                1920x1080@60.0, current, 172.8 MHz
weston-imx8-1      |                1024x768@60.0, 65.0 MHz
weston-imx8-1      |                800x600@60.3, 40.0 MHz
weston-imx8-1      |                800x600@56.2, 36.0 MHz
weston-imx8-1      |                848x480@60.0, 33.8 MHz
weston-imx8-1      |                640x480@59.9, 25.2 MHz

I see current 172.8MHz, but it should be 60.0 MHz (I think).

Here is a picture form Windows (everything is ok)

Here is a picture from Torizon OS (see the horizontal lines, but sometimes the image disappears completely)