# System configuration for Dell XPS 14/16 (Panther Lake) on Fedora: # - thermald: fix the boot race that leaves adaptive-only Panther Lake # without thermald # - kernel-install hook: sign *.dellptl* kernels with the akmods MOK key so # they boot with Secure Boot on # - xe: PSR1 instead of PSR2 selective fetch (glitches on the LG OLED) # - power profiles: KDE's slider drives Dell thermal modes (dell-pc) and the # SoC power slider, which the legacy platform_profile can't reach # - camera: keep the CVS vision chip awake, it fails to resume from runtime # suspend and the camera then opens only once per boot # - display: a user service runs the panel at 120 Hz on AC and 60 Hz on # battery (settings in ~/.config/dell-xps-ptl/refresh.conf) # - IR camera: relay the HM1092 IR sensor (Y10, root only raw node) into # /dev/video42 as GREY for face login, sensor and IR LED on only while a # client streams Name: dell-xps-ptl-config Version: 1.6 Release: 1%{?dist} Summary: Fedora configuration for Dell XPS on Intel Panther Lake License: MIT URL: https://github.com/onuralpszr/xps-fedora BuildArch: noarch Source0: thermald-ptl-adaptive.conf Source1: 10-sign-dellptl.install Source2: xe-psr.conf Source3: platform-profile Source4: ppd-mapping Source5: tuned-xps-ptl-powersave.conf Source6: tuned-xps-ptl-balanced.conf Source7: tuned-xps-ptl-balanced-battery.conf Source8: tuned-xps-ptl-performance.conf Source9: 90-dell-xps-ptl-cvs.rules Source10: refresh-switch Source11: dell-xps-ptl-refresh.service Source12: ir-relay Source13: dell-xps-ptl-ir-relay.service Source14: 70-dell-xps-ptl-ir-relay.rules BuildRequires: systemd-rpm-macros BuildRequires: systemd-udev Requires: thermald # Signing hook tools; the key itself comes from `kmodgenca` (akmods) Requires: sbsigntools Requires: openssl # initramfs carries xe and modprobe.d options Requires(posttrans): dracut Requires: tuned Requires: tuned-ppd Requires: python3 # refresh-switch: kscreen-doctor, busctl and gdbus Requires: libkscreen Requires: glib2 Requires: systemd # ir-relay: media-ctl and v4l2-ctl, numpy, v4l2loopback-ctl Requires: v4l-utils Requires: python3-numpy Requires: v4l2loopback %description thermald drop-in that waits for RAPL, coretemp and the INT3400 DPTF sensors before starting (Panther Lake is adaptive-only and otherwise ends up with no thermald), and a kernel-install plugin that re-signs locally built *.dellptl* kernels with the akmods MOK key for Secure Boot. Also runs the xe display driver without PSR2 selective fetch (PSR1), which is stable on the XPS LG OLED panel. Power profiles drive Dell's thermal modes and the SoC power slider through xps-ptl-* tuned profiles. A udev rule keeps the CVS camera vision chip awake so the camera opens more than once per boot. A user service switches the panel to 120 Hz on AC power and 60 Hz on battery. An IR camera relay turns the HM1092 IR sensor into /dev/video42 ("Dell IR Camera", 8-bit gray) for face login, with the sensor and IR LED on only while a client streams. %prep %build %install install -Dm644 %{SOURCE0} %{buildroot}%{_unitdir}/thermald.service.d/ptl-adaptive.conf install -Dm755 %{SOURCE1} %{buildroot}%{_prefix}/lib/kernel/install.d/10-sign-dellptl.install install -Dm644 %{SOURCE2} %{buildroot}%{_modprobedir}/dell-xps-ptl-xe.conf install -Dm755 %{SOURCE3} %{buildroot}%{_libexecdir}/dell-xps-ptl/platform-profile install -Dm755 %{SOURCE4} %{buildroot}%{_libexecdir}/dell-xps-ptl/ppd-mapping install -Dm644 %{SOURCE9} %{buildroot}%{_udevrulesdir}/90-dell-xps-ptl-cvs.rules install -Dm755 %{SOURCE10} %{buildroot}%{_libexecdir}/dell-xps-ptl/refresh-switch install -Dm644 %{SOURCE11} %{buildroot}%{_userunitdir}/dell-xps-ptl-refresh.service install -Dm755 %{SOURCE12} %{buildroot}%{_libexecdir}/dell-xps-ptl/ir-relay install -Dm644 %{SOURCE13} %{buildroot}%{_unitdir}/dell-xps-ptl-ir-relay.service install -Dm644 %{SOURCE14} %{buildroot}%{_udevrulesdir}/70-dell-xps-ptl-ir-relay.rules install -d %{buildroot}%{_userpresetdir} echo 'enable dell-xps-ptl-refresh.service' > %{buildroot}%{_userpresetdir}/80-dell-xps-ptl.preset # profile, Dell thermal mode, SoC power slider while read -r name dell soc; do d=%{buildroot}%{_prefix}/lib/tuned/profiles/xps-ptl-$name install -Dm644 %{_sourcedir}/tuned-xps-ptl-$name.conf $d/tuned.conf printf '#!/bin/bash\nexec %{_libexecdir}/dell-xps-ptl/platform-profile "$1" %s %s\n' \ "$dell" "$soc" > $d/platform.sh chmod 0755 $d/platform.sh done </dev/null 2>&1 || : %postun systemctl daemon-reload || : if [ $1 -eq 0 ]; then systemctl try-restart tuned.service tuned-ppd.service || : fi %files %{_unitdir}/thermald.service.d/ptl-adaptive.conf %{_prefix}/lib/kernel/install.d/10-sign-dellptl.install %{_modprobedir}/dell-xps-ptl-xe.conf %{_libexecdir}/dell-xps-ptl/ %{_prefix}/lib/tuned/profiles/xps-ptl-*/ %{_udevrulesdir}/90-dell-xps-ptl-cvs.rules %{_userunitdir}/dell-xps-ptl-refresh.service %{_userpresetdir}/80-dell-xps-ptl.preset %{_unitdir}/dell-xps-ptl-ir-relay.service %{_udevrulesdir}/70-dell-xps-ptl-ir-relay.rules %changelog * Sun Oct 11 2026 Onuralp SEZER - 1.6-1 - Add the dell-xps-ptl-ir-relay service: the HM1092 IR sensor as /dev/video42 "Dell IR Camera" (GREY 648x368) for face login, sensor and IR LED on only while a client streams; started by udev when hm1092 binds * Fri Oct 09 2026 Onuralp SEZER - 1.5-1 - Add the dell-xps-ptl-refresh user service: 120 Hz on AC power, 60 Hz on battery, configurable per user in ~/.config/dell-xps-ptl/refresh.conf * Thu Oct 08 2026 Onuralp SEZER - 1.4-1 - udev: keep the CVS camera vision chip out of runtime suspend; it fails to resume and the camera then opens only once per boot * Wed Oct 07 2026 Onuralp SEZER - 1.3-2 - Ship the tuned profiles as flat source files and generate their platform scripts, so the package builds in COPR * Tue Oct 06 2026 Onuralp SEZER - 1.3-1 - tuned-ppd: sysfs_acpi_monitor=false; its hotkey detection read the legacy platform_profile as "balanced" and undid every power-saver switch - platform-profile: no reset on stop * Tue Oct 06 2026 Onuralp SEZER - 1.2-1 - xps-ptl-* tuned profiles: power saver = Dell Quiet + SoC low-power, balanced = Optimized + balanced, performance = UltraPerformance + performance; tuned-ppd mapped to them (restored on removal) * Tue Oct 06 2026 Onuralp SEZER - 1.1-1 - xe: enable_psr2_sel_fetch=0 (PSR1) for the LG OLED; rebuild initramfs * Tue Oct 06 2026 Onuralp SEZER - 1.0-1 - thermald boot-race drop-in and dellptl kernel signing hook