Repository navigation
Description
I don't have a second display or SSH access available while booted into the mkopec kernel atm, so I'm unable to provide a register dump at this time. Lmk if there's anything I can do :) Appreciate the work!
GPU: RX 9070 XT
Display: LG C4 webOS v. 10.3.0-25
HDMI ports: tried all of them
LG ULTRA HD Deep Colour: set to 4K
OS: CachyOS/Hyprland
Kernel: 6.18.6 mkopec-git from AUR
Cable: 48gbps certified something something
FRL link training fails on every attempt. The GPU side appears to be working correctly — FRL margin measurements succeed at rates 1, 2, 3, 4, and 6. However, every actual training attempt receives "sink does not support FRL" from the TV, causing training to fail and resulting in no display output.
Margin measurements completing successfully (GPU side working):
[HW_LINK_TRAINING]:HDMI FRL: Rate 1 Supported. Borrowed: 0, Margin: 796600 ppm
[HW_LINK_TRAINING]:HDMI FRL: Rate 2 Supported. Borrowed: 0, Margin: 724627 ppm
[HW_LINK_TRAINING]:HDMI FRL: Rate 3 Supported. Borrowed: 174, Margin: 691388 ppm
[HW_LINK_TRAINING]:HDMI FRL: Rate 4 Supported. Borrowed: 125, Margin: 375326 ppm
[HW_LINK_TRAINING]:HDMI FRL: Rate 6 Supported. Borrowed: 187, Margin: 378652 ppm
(above repeats across multiple passes)
FRL training attempts - TV rejects every attempt:
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=3 lanes=4)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 1 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 2 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 3 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 4 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 5 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 6 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 7 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 8 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 9 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: starting training (rate=2 lanes=3)
[HW_LINK_TRAINING]:FRL: sink does not support FRL
[HW_LINK_TRAINING]:FRL: Training attempt 10 failed! Will attempt rate 2 next
[HW_LINK_TRAINING]:HDMI FRL: training failed
(entire sequence repeats on every display detection attempt)
Activity
xerrni commentedon Apr 16, 2026
try: #23 (comment)
This is my general fix for LG tv's. should work.
piepgras commentedon Apr 21, 2026
Gave it a quick whirl. No luck sadly, I'll look into it soon.
piepgras commentedon Apr 21, 2026
Tried getting it to work.
I manually applied all three changes (sink version retry, FLT_UPDATE quirk, and DFM-selected rate bypass) directly to link_frl_training.c, since the line numbers have shifted.
After manually editing the source and confirming the changes compiled in, the kernel is missing critical modules for btrfs-based systems (btrfs, usbhid, overlay, crypto_lz4), maybe this is expected and I didn't do my homework. mkinitcpio fails and the initramfs is incomplete, so I can't fully boot to test.
What I can confirm tho:
manufacturer_id 0x6D1E is correctly detected for the LG C4
The LG C4 reports as "LG TV SSCR2" with product_id 82CD
I suppose the LG C4 must behave differently from the B9 used in @xerrni 's patch.. different webOS version (10.3.0-25), different panel generation.
I'll keep cracking. Happy to provide additional info :)
xerrni commentedon Apr 22, 2026
0005-FIX.patch
AUR package already takes care of correctly creating kernel config. Do not manually create one.
Just put my patch to correct place. I use btrfs and it works so it defenetly applies correct changes to kernel config file.
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=linux-mkopec-git#n122
https://aur.archlinux.org/packages/linux-mkopec-git
So to do it step by step once again:
linux-mkopec-gitpackage:yay -Suy linux-mkopec-gitor using other aur helper.This step will create
/etc/linux-mkopec-git/directory and required config files:0005-FIX.patch/etc/linux-mkopec-git/patchesdirectory as show above/etc/linux-mkopec-git/configfile:Rebuild kernel with this patch
yay -S linux-mkopec-git linux-mkopec-git-headers --rebuildMake sure that you boot to correct kernel -- edit your boot configuration file, I use systemd-boot,
my config:
/boot/loader/entries/arch_amd.confIf you still insist on Your manual way, link to config file from aur repo:
https://aur.archlinux.org/cgit/aur.git/tree/config?h=linux-mkopec-git
It has btrfs turned on https://aur.archlinux.org/cgit/aur.git/tree/config?h=linux-mkopec-git#n11062
Remember that its not advised to change kernel config by hand, rather use tool included in kernel source code, by executing
make menuconfigWhy ? because of e.g. dependencies.xerrni commentedon Apr 22, 2026
FIY I worked with grok to create this patch, feel free to do use is as base conversation. but remember one thing, he does not understand how to create good patches, so It's best to just get his diff and create patch by hand, how to do so:
piepgras commentedon Apr 22, 2026
There we go! 2160p@144hz, 10b 4L12 hdr10 with vrr.
Haven't done any testing yet, i seem to have some flickering, but that just might be hyprland and my current config.
Thanks for the assist @xerrni !
xerrni commentedon Apr 23, 2026
My pleasure, that's what GNU/Linux community is for.
Test for couple days and report back. Also did You just apply my patch or did you change sth, write about it so other people could also benefit from that.
also watch for logs using:
sudo dmesg --follow # or sudo dmesg --follow-newWe need to create robust solution that could be upstream-ed, so anyone could benefit.
FIY I tested on kde and some full screen games.
piepgras commentedon Apr 29, 2026
Been running great since we got it working, 0 issues I've noticed, my first reboot since the kernel switch was today.
I applied the patch just like you said.
Only issue I've encountered is that my secondary display needs to be disconnected at boot.
As for VRR flickering, running games in fullscreen fixes it.
Anything else I can do? Would very much like to see this go upstream :)
Log from fresh boot:
dmesg.log
jarrard commentedon May 2, 2026
Sadly tried this patchset on my AMD NUC with 780M GPU and it causes display to be stuck at 60hz max.
It did however get the colorspace correct at 10bit etc... but yeah looks like it just straight up looses the hz rates above that. Guessing DSC can't activate for some reason and its not dropping to 420 color to compensate.
Shame. This is one area where Windows is just massively dominant in atm, being able to display any colorspace and settings on any screen, but under Linux I've hit so many issues getting the correct settings to work.
Don't even get my started on Intel iGPU support under Linux, its even worse, lol