Portál AbcLinuxu, 2. května 2025 05:39
Po internete sa povaľuje zopár blbých návodov ako zmeniť frekvenciu PWM z defaultných 200Hz (hnusné blikanie) na povezme prijateľných 2 000Hz. Nie, že by to nefungovalo, ale zápis frekvencie PWM do príslušného registra GPU vyradí ovládanie podsvietenia cez xbacklight a podobné nástroje.
Nasledujúci postup môže spôosobiť zničenie hardvéru. Hodnoty, ktoré nastavujem pre svoj notebook nemusia na iných modeloch vôbec fungovať. Uvedený postup môže výrazne znížiť životnosť zdroja. Hodnoty som nastavoval bez toho aby som poznal vnútornosti svojho notebooku systémom pokus-omyl. Ak mi po týždni umire zdroj - môj problém (mám v šuflíku ďalšie 2 náhradné).
PWM (alebo slovensky pulzne šírková modulácia) umožäuje generovať signál, ktorý sa tvári ako analógový (spojitý) aj keď v skutočnosti môžme generovať len 1 (zapnutý) a 0 (vypnutý). Parametrami PWM modulácie sú frekvencia a šírka impulzov.
V príklade budem používať namiesto frekvencie periódu (1/frekvencia). Ak teda budeme mať periódu dĺžky 10 časových úsekov môžme meniť šírku impulzu (intenzitu podsvietenia) od 1 po 10. Minimálna úroveň podsvietenia by bola modulovaná takto:
100000000010000000001000000000
Jednoduchý návod a kalkulačka na nastavenie frekvencie PWM je na tomto odkaze. Surový zápis do registra pre nastavenie 2 000 HZ vyzerá takto: intel_reg write 0xC8254 0x1e801e8
. Hodnota 01e8
je perióda PWM (do registru je zapísaná 2x, horné byty nastavujú periódu, dolné šírku, takže zápis rovno nastaví 100% jas).
Problémom je, že po nastavení hodnoty v registri nastavuje kernel stále šírku impulzu v plnom rozhahu, takže perióda je po zápise v mojom prípade 488, ale kernel umožňuje nastaviť šírku impulzu v rozaahu 1-4437. Xbacklight síce bude fungovať, ale jas sa bude meniť len v rozsahu 0-10%, všetky nad 10% bude mať maximálny jas.
Problémom je, že BIOS u Lenova nastavuje nezmyselne nízku hodnotu 200Hz (nie je to ako 200Hz CRT, tie aspoň nezhasli hneď, ale mali nejakú latenciu). Logickým riešením by bola oprava BIOSu, ale to jej pomerne zložité. Rozhodol som sa preto o menej drastický krok - upraviť trochu kernel.
Upraviť stačí jediný súbor - drivers/gpu/drm/i915/intel_panel.c
vo funkcii pch_setup_backlight, riadok:
// nastavenie šírky aj periódy na 0x01e8 teda 488 I915_WRITE(BLC_PWM_PCH_CTL2, 0x01e801e8); // Tento riadok treba pridať nad nasledujúci riadok pch_ctl2 = I915_READ(BLC_PWM_PCH_CTL2);
Gentooisti si samozrejme môžu umiestniť patch do príslušného adresára aby sa im pri inštalácii automaticky opatchoval kernel.
Tiskni
Sdílej:
Do kernelu to nepatrí, oprava by mala ísť do BIOSu.
Ešte aby odpoveď nebola taká strohá.
Dostupný rozah frekvencie PWM je od jednotiek Hz až po desiatky kHz. Pri nízkych frekvenciách sa prejavuje blikanie. Od 1kHz u niektorých modelov počuť pískanie (to mimochodom u mojej T420 počuť aj keď je hibernovaná a vydáva ju zdroj ktorý napája blbú blikajúcu LED). PWM podsvietenie tu na 2kHz nepočujem. Frekvencia sa dá nastaviť vysoko nad 20kHz.
Možnosti nastavenia PWM sú u všetkých modelov s rovnakou integrovanou grafikou rovnaké. Kernel nemá ako zistiť typ zdroja, ktorý napája LED. Frekvenčný rozsah zdroja môže byť výrazne obmedzený, pri niektorých frekvenciách môže vydávať zvuk, pri vysokých frekvenciách nemusí fungovať vôbec, alebo sa môže jeho životnosť výrazne znížiť. Neexistuje žiadna univerzálna frekvencia, pri ktorej je blikanie minimálne, ale neprejavia sa žiadne vedľajšie efekty. Kernel môže maximálne tak poskytnúť rozhranie cez ktoré by sa dala nastaviť frekvencia PWM, ale zápis zlej hodnoty do registra môže fyzicky zničiť hardvér.
Súčasný stav kedy frekvenciu určuje výrobca pretože výrobca by mal vedieť ako sa zdroj správa je správny. Kernel nemení hodnotu, ktorú nastavil BIOS.
Gentooisti si samozrejme môžu umiestniť patch do príslušného adresára aby sa im pri inštalácii automaticky opatchoval kernel.Funguje tohle prosimte na gentoo i s jinymi balicky?
S tou kompiláciou to až tak horúce nie je. Ja som nedávno robil čistú inštaláciu na môj "nový" thinkpad t420 (5-ročný bazárový) a bola hotová za pár hodín (asi 4-6 ak si dobre spomínam) vrátane desktopu. Priebežná údržba je tak 5 minút týždenne. Momentálne tu mám starý dvojjadrový Core i5, dá sa upgradovať na novšiu generáciu i7 (štvorjadrový).
total offtipic ale strasne mi to nici nervy:)
http://jazykovaporadna.sme.sk/q/2212/
D.
Poznám, stačí mať biely text na čiernom pozadí. Ešte pri frekvencii 1000Hz vidím pri čítaní obraz rozsekaný na PWM intervaly. Blikanie samozrejme od tých 60Hz (80 v periférnom videní) nevnímam, ale pri pohybe očí to vadí tak isto ako mi vadia DLP projektory.
pokud okem poznas rozdil mezi 200 a 2000 Hz, jsi asi superman...Oko vidí podstatně větší frekvence v periferní části, než se běžně uvažuje pro část, na kterou ostříš. Já takhle běžně vidím blikat zářivky na 60Hz, kdysi jsme to zkoušeli i s displejem kalkulačky. 200Hz už se mi teda zdá taky hodně, ale nevylučoval bych to. Nemůže to být aliasing?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.