You are not logged in.
EDIT 2026/03/19:
I have finaly figured it out! Check the post here if you are also having trouble! TL;DR: Do not focus on EDIT modifications but instead focus on VBT edits to solve this issue!
---
Hi everyone.
I'm stumped with a small issue that I'm unsure it's or isn't a bug of mkinitcpio.
I have made a modified EDID file for my laptop to have additional refresh rates available (tested and working under Windows), and i am trying to add it to my initramfs image using mkinitcpio, but no matter what i do it won't add the file.
I have the file added under "/usr/lib/firmware/edid/edid_chuwi.bin", i added the full file path on "/etc/mkinitcpio.conf" under "FILES()" and i tried running "mkinitcpio -P" to regenerate the initramfs but it wont add the file.
I then re-ran the command using mkinitcpio -Pv to get verbose, and i do get the following logged on the text file, as if the files where added but they are not:
adding dir: /usr/lib/firmware/edid
adding file: /usr/lib/firmware/edid/edid_chuwi.bin
I checked if the files where there opening the image in "ark" and by running the command "zstdcat /boot/initramfs-linux.img | cpio -t | grep edid" which returns only the file count and not the edid path as expected.
Can anyone try to add a file to their initramfs and check if mkinitcpio is actualy doing so?
Thank you for any help provided.
Last edited by paulocesarsc (2026-03-19 10:33:44)
Offline
Uhmmm....
There's also a line like
adding file: /bin/e2fsck
Though, greping for e2fsck in your proposed way doesn't seem to turn up anything. Maybe it is not also not being added? Though, in all seriousness, it's obviously being added and your method of confirming that a file was added maybe wanting
Offline
Offline
Oh man do i feel dumb right now! Using seth's tool i can confirm the files are both inside the .img!
Now i must break my head for a while longer trying to understand why my custom EDID bin isn't being applied to the system ![]()
Thank you both for the help!
Offline
Did you also add it to your kernel command line?
Offline
Hi jec15. I think i followed the procedure properly:
I copied the .bin EDID file to /usr/lib/firmware/edid/edid_chuwi.bin (this file is then Symlinked to /lib/firmware/edid)
I added the file under FILES() in /etc/mkinitcpio.conf
Recreated the .img file using mkinitcpio -P
Edited my systemd boot entry to add the edid file, like so: options root=PARTUUID=81ecb4ef-2d27-4dde-89dc-a97a99606042 zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs fbcon=rotate:1 drm.edid_firmware=card1-DSI-1:edid/edid_chuwi.binFrom what i followed in the wiki i tough this would be enough, but i still cannot select the additional refresh rates like i can under windows. I need to debug this further, as my device (Chuwi Minibook X) has an entry on the Arch Wiki, and i'd like to contribute to it with these instructions (this device comes with a 50hz screen, it's not terrible for office/multimedia, but the display can easily do 90 Hz by changing the EDID, and if we don't want it that high we can always settle for 60hz, a "more default" refresh rate). I'm also trying to create a bash script to automate switching to tablet mode, so far i can already successfully rotate the screen to portrait and block input from the physical keyboard and touchpad, although manually (by executing the script).
Last edited by paulocesarsc (2025-04-08 17:36:44)
Offline
card1-DSI-1
Not sure about the card1 there, but "DSI-1"?
Are you sure about this?
ls /sys/class/drm/card*/edidOffline
Hi Seth! I got the name from a similar command, but running yours outputs a similar output:
[paulo@paulo-minibookx ~]$ ls -la /sys/class/drm/card*/edid
-r--r--r-- 1 root root 0 Apr 8 19:58 /sys/class/drm/card1-DP-1/edid
-r--r--r-- 1 root root 0 Apr 8 19:58 /sys/class/drm/card1-DP-2/edid
-r--r--r-- 1 root root 0 Apr 8 19:58 /sys/class/drm/card1-DSI-1/edid
-r--r--r-- 1 root root 0 Apr 8 19:58 /sys/class/drm/card1-HDMI-A-1/edid
-r--r--r-- 1 root root 0 Apr 8 19:58 /sys/class/drm/card1-HDMI-A-2/edidI also just tried using "DSI-1" only but it did not work as well!
Offline
So let's see what that is
cat /sys/class/drm/card1-DSI-1/edid | curl -F 'file=@-' 0x0.stOffline
Well this is weird... it says it's unavailable due to legal reasons:
[root@paulo-minibookx paulo]# cat /sys/class/drm/card1-DSI-1/edid | curl -F 'file=@-' 0x0.st
451 Unavailable For Legal ReasonsI even ran it as root to make sure.
Unsure this helps you in your thought process, but here's the output from kscreen-doctor -o:
Output: 1 DSI-1
enabled
connected
priority 1
Panel
Modes: 1:1200x1920@50*! 2:1024x768@60
Geometry: 0,0 1536x960
Scale: 1.25
Rotation: 8
Overscan: 0
Vrr: incapable
RgbRange: unknown
HDR: incapable
Wide Color Gamut: incapable
ICC profile: none
Color profile source: sRGB
Color power preference: prefer efficiency and performance
Brightness control: supported, set to 40% and dimming to 100%Thank you for trying to help me out !
Offline
Does the machine have a LCD / LED display like for troubleshooting ?
If so, it could be a https://en.wikipedia.org/wiki/Display_Serial_Interface
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Offline
Hi Lone_Wolf. I don't think so, it's a 10 inch Hybrid Laptop/Tablet from a lesser known brand (Chuwi Minibook X), i suppose the internal display is connected trough DSI, as it's the only display that shows up on kscreen-doctor!
Offline
"451 Unavailable For Legal Reasons" is a response from 0x0.st, https://en.wikipedia.org/wiki/HTTP_451
Looks like the proper output, though.
Please post your complete system journal for the boot:
sudo journalctl -b | curl -F 'file=@-' 0x0.stexcept that 0x0.st don't work, maybe
sudo journalctl -b | nc termbin.com 9999?
Offline
The first command seemed to have worked, it uploaded the contents correctly! To keep the log cleaner, i restarted the device before running it:
http://0x0.st/8_Iz.txtOffline
Apr 08 20:43:13 paulo-minibookx kernel: [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
Apr 08 20:43:13 paulo-minibookx kernel: ACPI: video: Video Device [GFX0] (multi-head: yes rom: no post: no)
Apr 08 20:43:13 paulo-minibookx kernel: input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input4
Apr 08 20:43:13 paulo-minibookx kernel: fbcon: i915drmfb (fb0) is primary device
…
*************** Apr 08 20:43:13 paulo-minibookx kernel: i915 0000:00:02.0: [drm] *ERROR* DSI link not ready
Apr 08 20:43:13 paulo-minibookx kernel: Console: switching to colour frame buffer device 240x75
Apr 08 20:43:13 paulo-minibookx kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer devicei915 seems already in the initramfs, it would seem that the output is too late for this?
https://wiki.archlinux.org/title/Kernel … s_and_EDID
Use the debugfs to write the edid before starting sddm?
https://wiki.archlinux.org/title/System … ided_units
Offline
Hi again! I just tried disabling SDDM and manually run the overwrite using the instructions, but i think it's not working because the DSI monitor does not support hot plugging.
I disabled SDDM and rebooted the system;
On TTY, i entered root and followed the example for the edid overwrite of the first link:
cat /usr/lib/firmware/edid/edid_chuwi.bin > /sys/kernel/debug/dri/128/DSI-1/edid_overrideThe monitor also showed up here:
cat /usr/lib/firmware/edid/edid_chuwi.bin > /sys/kernel/debug/dri/0000\:00\:02.0/DSI-1/edid_overrideI then manually started plasma using "startplasma-wayland".
In case it's useful, here's an ls of both DRI folders for the DSI-1 device:
[root@paulo-minibookx paulo]# ls /sys/kernel/debug/dri/128/DSI-1/
edid_override force i915_lpsp_capability output_bpc vrr_range
and
[root@paulo-minibookx paulo]# ls /sys/kernel/debug/dri/0000\:00\:02.0/DSI-1/
edid_override force i915_lpsp_capability output_bpc vrr_rangeAny idea what i could try to force the EDID to be refreshed?
Last edited by paulocesarsc (2025-04-08 20:44:58)
Offline
Override the edid, start some X11 seesion (can be startx xterm) and post your Xorg log, https://wiki.archlinux.org/title/Xorg#General resp. the output of "xrandr --verbose"
They'll include the edid the x11 server sees (why it's not helpful to start wayland and runx xrandr there, because that's then synthetic on xwayland only)
Offline
Alright, i know this is a bit of a necrowing, but over one year later of using this laptop i gave this one more shot, and since some one might also need help with this, i came to update the post!
From what i understand, DSI panels get their modes from the BIOS's built in VBT firmware profile and not from EDID.
By replacing the bios loaded VBT firmware with a custom edited one you can get a single mode forced onto the panel (Ex.: 60Hz, 90hz) when the OS is being loaded.
This Github Repo by godorowski has a small script (and includes an already moded .bin file, use at your own risk) you can follow in order to load the custom VBT file.
In order to get other modes you need to edit the VBT firmware again manually.
Hope this helps some other lost soul out there!
Offline
Thanks for the update, please prepend [Solved] to the thread title (edit first post) .
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Offline