You are not logged in.
To begin my system environment:
I am running a China NUC with Intel N100 under lxqt with openbox, x11 and intel-media-driver. The computer is connected to a 4k LG TV via HDMI. Maybe important: a soundbox is connected to the TV via "HDMI ARC". kodi runs as a permanently started application, but it is intended to be a full desktop replacement.
Problem:
When the computer starts up, the resolution is recognised correctly and everything works perfectly. When I switch off the TV (and it stops receiving a signal after a certain time) and then switch it on again, it tries to recognise the correct resolution. This is where errors usually occur (sometimes FullHD, sometimes only 800x600, sometimes correct 4k). The problem is that kodi then also gets completely confused and only fills a quarter (FullHD) of the screen at 4k.
Requested solution:
Set a fixed resolution regardless of what the devices are signalling.
Attempted solution:
I have tried to integrate an EDID according to https://wiki.archlinux.org/title/Kernel … s_and_EDID. Unfortunately, the screen remains black at startup, so I think I have set the wrong modes. Unfortunately, these cannot be read out using read-edid. The output from get-edid always ends with "I'm sorry nothing was successfull".
What could I do to set a fixed resolution?
Many thanks in advance for your ideas!
Last edited by paulchenplump (2024-02-02 18:52:43)
Offline
The Tv will likely un- and re-register and something on the system responds to that. So the question becomes
it tries to recognise the correct resolution
What is "it"?
There's most likely some randr monitoring deamon - or kodi.
Try to select a resolution in kodi instead of "auto", if that doesn't help,
1. check whether the behavior exists w/o kodi
2. post a full process list (ps fax)
As for the edid, you can straight up copy that from /sys/class/drm/*/edid while the output is attached w/o your custom edid being applied.
I doN't think that's the problem, though - some client will recognize that the output disappears, disable it and avoid the 0x0 resolution (which will likely cause several clients unprepared for that condition to crash) with some fallback resolution.
Also gl contexts tend to dislike being resized.
Offline
First of all, thank you @seth for your ideas and sorry for the late response: the test always takes a long time (because of standby) and also the peripheral conditions (working, WAF) have to fit...
At first I really thought it was kodi alone, but in rare cases even lxqt doesn't recognise the resolution correctly (FullHD). However, Kodi makes the situation worse, as it then tries to recognise the resolution when it is switched on. With kodi, a resolution change starts from 3 to what feels like 10 times, then a resolution is finally set (but this is rarely correct).
I have therefore fixed the following settings in kodi, but these are ignored when starting from standby:
<advancedsettings version="1.0">
<videoscreen>
<screenmode default="true">00384002160060.00000pstd</screenmode>
<resolution default="true">17</resolution>
<monitor>HDMI-1</monitor>
<screen default="true">0</screen>
<whitelist>0384002160060.00000pstd</whitelist>
</videoscreen>
</advancedsettings>
I also tried a customised edid that only contained the wanted resolution, but it still flickers...
I am currently at the end of my knowledge and hope for your ideas!
PS the "ps fax":
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:00 \_ [pool_workqueue_release]
4 ? I< 0:00 \_ [kworker/R-rcu_g]
5 ? I< 0:00 \_ [kworker/R-rcu_p]
6 ? I< 0:00 \_ [kworker/R-slub_]
7 ? I< 0:00 \_ [kworker/R-netns]
9 ? I< 0:00 \_ [kworker/0:0H-events_highpri]
12 ? I< 0:00 \_ [kworker/R-mm_pe]
14 ? I 0:00 \_ [rcu_tasks_kthread]
15 ? I 0:00 \_ [rcu_tasks_rude_kthread]
16 ? I 0:00 \_ [rcu_tasks_trace_kthread]
17 ? S 0:00 \_ [ksoftirqd/0]
18 ? I 0:00 \_ [rcu_preempt]
19 ? S 0:00 \_ [rcub/0]
20 ? S 0:00 \_ [migration/0]
21 ? S 0:00 \_ [idle_inject/0]
22 ? S 0:00 \_ [cpuhp/0]
23 ? S 0:00 \_ [cpuhp/1]
24 ? S 0:00 \_ [idle_inject/1]
25 ? S 0:00 \_ [migration/1]
26 ? S 0:00 \_ [ksoftirqd/1]
28 ? I< 0:00 \_ [kworker/1:0H-events_highpri]
29 ? S 0:00 \_ [cpuhp/2]
30 ? S 0:00 \_ [idle_inject/2]
31 ? S 0:00 \_ [migration/2]
32 ? S 0:00 \_ [ksoftirqd/2]
34 ? I< 0:00 \_ [kworker/2:0H-kblockd]
35 ? S 0:00 \_ [cpuhp/3]
36 ? S 0:00 \_ [idle_inject/3]
37 ? S 0:00 \_ [migration/3]
38 ? S 0:00 \_ [ksoftirqd/3]
40 ? I< 0:00 \_ [kworker/3:0H-events_highpri]
41 ? S 0:00 \_ [kdevtmpfs]
42 ? I< 0:00 \_ [kworker/R-inet_]
43 ? S 0:00 \_ [kauditd]
44 ? I 0:00 \_ [kworker/1:1-mm_percpu_wq]
45 ? S 0:00 \_ [khungtaskd]
46 ? S 0:00 \_ [oom_reaper]
48 ? I< 0:00 \_ [kworker/R-write]
49 ? S 0:00 \_ [kcompactd0]
50 ? SN 0:00 \_ [ksmd]
52 ? SN 0:00 \_ [khugepaged]
53 ? I< 0:00 \_ [kworker/R-kinte]
54 ? I< 0:00 \_ [kworker/R-kbloc]
55 ? I< 0:00 \_ [kworker/R-blkcg]
56 ? I< 0:00 \_ [kworker/R-tpm_d]
57 ? I< 0:00 \_ [kworker/R-ata_s]
58 ? I< 0:00 \_ [kworker/R-edac-]
59 ? I< 0:00 \_ [kworker/R-devfr]
60 ? S 0:00 \_ [watchdogd]
61 ? I< 0:00 \_ [kworker/3:1H-kblockd]
62 ? S 0:00 \_ [kswapd0]
63 ? I< 0:00 \_ [kworker/R-kthro]
64 ? S 0:00 \_ [irq/122-aerdrv]
65 ? S 0:00 \_ [irq/123-aerdrv]
66 ? I 0:00 \_ [kworker/3:1-mm_percpu_wq]
67 ? I< 0:00 \_ [kworker/R-acpi_]
68 ? S 0:00 \_ [hwrng]
69 ? S 0:00 \_ [scsi_eh_0]
70 ? I< 0:00 \_ [kworker/R-scsi_]
71 ? S 0:00 \_ [scsi_eh_1]
72 ? I< 0:00 \_ [kworker/R-scsi_]
74 ? I< 0:00 \_ [kworker/R-mld]
76 ? I< 0:00 \_ [kworker/R-ipv6_]
77 ? I< 0:00 \_ [kworker/1:1H-events_highpri]
84 ? I< 0:00 \_ [kworker/R-kstrp]
85 ? I< 0:00 \_ [kworker/R-zswap]
86 ? I< 0:00 \_ [kworker/u9:0-i915_flip]
87 ? I< 0:00 \_ [kworker/R-charg]
88 ? I< 0:00 \_ [kworker/2:1H-events_highpri]
131 ? I< 0:00 \_ [kworker/0:1H-kblockd]
135 ? I< 0:00 \_ [kworker/R-sdhci]
136 ? S 0:00 \_ [irq/16-mmc0]
140 ? I< 0:00 \_ [kworker/R-ttm]
141 ? S 0:00 \_ [card1-crtc0]
142 ? S 0:00 \_ [card1-crtc1]
143 ? S 0:00 \_ [card1-crtc2]
157 ? S 0:00 \_ [jbd2/sdb2-8]
158 ? I< 0:00 \_ [kworker/R-ext4-]
171 ? I 0:00 \_ [kworker/0:9-mm_percpu_wq]
249 ? S 0:00 \_ [psimon]
292 ? I< 0:00 \_ [kworker/R-cfg80]
295 ? S 0:00 \_ [irq/127-mei_me]
316 ? I< 0:00 \_ [kworker/R-crypt]
318 ? I< 0:00 \_ [kworker/u9:2-hci0]
324 ? S 0:00 \_ [jbd2/sda1-8]
325 ? I< 0:00 \_ [kworker/R-ext4-]
333 ? S 0:00 \_ [irq/130-rtw88_pci]
536 ? S 0:00 \_ [psimon]
874 ? S< 0:00 \_ [krfcommd]
1029 ? I< 0:00 \_ [kworker/R-tls-s]
1199 ? I 0:00 \_ [kworker/2:2-mm_percpu_wq]
1200 ? I 0:00 \_ [kworker/u8:3-flush-8:16]
1252 ? I 0:00 \_ [kworker/3:0-cgroup_destroy]
1269 ? I 0:00 \_ [kworker/u8:1-events_unbound]
1288 ? I 0:00 \_ [kworker/2:1-mm_percpu_wq]
1325 ? I 0:00 \_ [kworker/2:0-events]
1360 ? I 0:00 \_ [kworker/u8:2-flush-8:16]
1386 ? I 0:00 \_ [kworker/0:0-cgroup_destroy]
1417 ? S 0:00 \_ [psimon]
1460 ? I 0:00 \_ [kworker/1:0]
1495 ? I 0:00 \_ [kworker/u8:0-flush-8:16]
1512 ? I 0:00 \_ [kworker/0:1]
1 ? Ss 0:01 /sbin/init
202 ? Ss 0:00 /usr/lib/systemd/systemd-journald
248 ? Ss 0:00 /usr/lib/systemd/systemd-udevd
259 ? Ss 0:00 /usr/lib/systemd/systemd-networkd
346 ? Ss 0:00 /usr/lib/systemd/systemd-resolved
347 ? Ssl 0:00 /usr/lib/systemd/systemd-timesyncd
354 ? Ss 0:00 /usr/bin/dbus-broker-launch --scope system --audit
355 ? S 0:00 \_ dbus-broker --log 4 --controller 9 --machine-id c8890d5f1bdb4bd08e30dccd3f4ed06f --max-bytes 536870912 --max-fds 4096 --max-matches 16384 --audit
356 ? Ss 0:00 /usr/bin/cupsd -l
369 ? Ss 0:00 login -- username
566 tty1 Ss+ 0:00 \_ /bin/sh /usr/bin/startx
591 tty1 S+ 0:00 \_ xinit /home/username/.xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -keeptty -auth /tmp/serverauth.lvSymPxf76
592 tty1 Sl 0:05 \_ /usr/lib/Xorg -nolisten tcp :0 vt1 -keeptty -auth /tmp/serverauth.lvSymPxf76
629 tty1 Sl 0:00 \_ lxqt-session
653 tty1 S 0:00 \_ /usr/bin/openbox
678 tty1 Sl 0:00 \_ /usr/bin/pcmanfm-qt --desktop --profile=lxqt
679 tty1 Sl 0:00 \_ /usr/bin/lxqt-globalkeysd
680 tty1 Sl 0:00 \_ /usr/bin/lxqt-notificationd
681 tty1 Sl 0:04 \_ /usr/bin/lxqt-panel
682 tty1 Sl 0:00 \_ /usr/bin/lxqt-policykit-agent
683 tty1 Sl 0:00 \_ /usr/bin/lxqt-runner
791 ? S 0:00 \_ /bin/sh /usr/bin/kodi
796 ? Sl 2:51 \_ /usr/lib/kodi/kodi.bin
450 ? Ssl 0:25 /usr/bin/tvheadend -c /etc/tvheadend -f -p /run/tvheadend/tvheadend.pid -C
546 ? Ss 0:00 /usr/lib/systemd/systemd --user
553 ? S 0:00 \_ (sd-pam)
564 ? Ssl 0:00 \_ /usr/bin/spotifyd -b pulseaudio -B 320 --device-type speaker --initial-volume 100 --no-daemon
633 ? Ss 0:00 \_ /usr/bin/dbus-broker-launch --scope user
634 ? S 0:00 | \_ dbus-broker --log 4 --controller 10 --machine-id c8890d5f1bdb4bd08e30dccd3f4ed06f --max-bytes 100000000000000 --max-fds 25000000000000 --max-matches 5000000000
703 ? Ssl 0:00 \_ /usr/lib/gvfsd
710 ? Sl 0:00 | \_ /usr/lib/gvfsd-trash --spawner :1.11 /org/gtk/gvfs/exec_spaw/0
709 ? Sl 0:00 \_ /usr/lib/gvfsd-fuse /run/user/1000/gvfs -f
727 ? Ssl 0:00 \_ /usr/lib/gvfs-udisks2-volume-monitor
757 ? S<sl 0:00 \_ /usr/bin/pipewire
758 ? S<sl 0:00 \_ /usr/bin/wireplumber
759 ? S<Lsl 0:00 \_ /usr/bin/pipewire-pulse
642 ? Ssl 0:00 /usr/lib/polkit-1/polkitd --no-debug
734 ? Ssl 0:00 /usr/lib/udisks2/udisksd
742 ? Ssl 0:00 /usr/lib/upowerd
765 ? SNsl 0:00 /usr/lib/rtkit-daemon
1410 ? Ss 0:00 /usr/lib/systemd/systemd --user
1412 ? S 0:00 \_ (sd-pam)
Offline
/etc/X11/xorg.conf.d/11-monitor.conf
Section "Monitor"
Identifier "HDMI-1"
Option "DefaultModes" "False" # allow only edid modes
EndSection
And please post your Xorg log, https://wiki.archlinux.org/title/Xorg#General after switching off/on the Tv (mostly for the active edid and output names)
Offline
I had high hopes for the "DefaultModes" option, but unfortunately nothing has changed. I have now found a solution for myself (even if I can't quite explain it): the "video=" parameter in the kernel command line. For whatever reason, it works: only in FullHD, but stable without redetecting the resolution. As a result, it is not as sharp, but the scaling factor in openbox also had disadvantages.
Thank you for your support, if you have another good idea I'll try to test it! I think we can leave it at that for now and I would consider the case "solved".
Offline