• General
  • [Feature Request] PWM display options to reduce screen flickering

Sindbad The relevant code is a single line of code, with adjustable values to change the PWM rate.

That is not the "relevant code", if it absolutely requires an unknown amount of code being present in the kernel, which it does. Repeating the click-bait claim that the echo command that configures the code is the code seems unlikely to convince anybody in a decision-making role to invest time looking into this.

Sindbad Applying the method right now requires root and a custom kernel, but this would not be the case anymore if GrapheneOS would be able to integrate the function as a native software feature.

Correct. And it is possible that a GrapheneOS developer would decide to spend time on that based on this forum thread. It is also possible that would not happen. Something that could increase the likelihood of it happening would be a community contribution, such as an Android developer who isn't a member of the GrapheneOS developer team reading the code, porting it to GrapheneOS, and trying it.

To be clear, I am absolutely not telling anybody what to do. That said, I would advise staying away from the "one line of code" framing, because the people who would need to evaluate and support the actual code will know better.

aw22 The XDA article linked above by Sindbad contains a GitHub link to a branch with 8 commits at present. That may or may not apply cleanly to a GrapheneOS tree.

In addition to caveats about color infidelity and potential lockups, note the disclaimer about possible hardware damage. Personally I have no idea how likely that might be, but I could imagine longevity issues.

aw22 The fact this solution is described as "a single line of code" is a misnomer. The single line of code in the article is writing values to a parameter of the modified kernel driver of the display panel controller that is implemented in this commit. Presumably it is signaled to the display panel controller and otherwise opaque to the host.

Accessing the kernel module parameter as described in the article involves root access but an implementation integrated into the operating system could be written. For integration it is a question of the project how such "tunables" should be exposed to the user without needing root.

I assume the values in question were derived through knowledge of the existing values and experimentation. As far as I know no data-sheets for the display panel controller of this detail have ever surfaced publicly.

https://github.com/GrapheneOS/os-issue-tracker/issues/3850

Came across this ticket on the GrapheneOS issue tracker. Extremely disappointed by the response. It is ok to stare at a screen with aggressive flickering even when it triggers a physical manifestation of medical symptoms? And it can not be solved by any current medical treatment!

The display industry is rather secretive. As far as I am aware no one from Samsung or other company has joined in to either justify the decision or work towards a solution.

    Elephant

    For me it's like erasing flash memory with zeros for privacy - it would also affect the chip's lifespan and failure rate, and I believe it's up to the user to accept the risk, if any.

    I do not think using flawed analogies is productive towards this cause either. Wear leveling going to get ya ;-)

    @Sindbad while the following won't help regarding GrapheneOS or Pixel devices, this is exactly what Daylight is doing with their flicker-free and no-blue light DC-1 tablet. Keep in mind, this is a health-oriented device designed for such people, but Daylight is taking on a hugely important topic and doing some seriously cool stuff with their display technology.

    Seth for Privacy (GrapheneOS advocate) reviewed his unit here:
    https://sethforprivacy.com/posts/daylight-dc1-magical-imperfection/

    If anyone wants to nerd out further on this stuff, Dr. Jack Kruse is generally regarded as the go-to source for all things circadian biology and how it pertains to the technology we use.

    I also would greatly appreciate improved PWM if in any way it was a simple addition to the (already heavily modified custom) grapheneos kernel.

    4 months later

    Sindbad Applying the method right now requires root and a custom kernel, but this would not be the case anymore if GrapheneOS would be able to integrate the function as a native software feature.

    A developer I'm in contact via XDA is working on getting the PWM mod he made for his own GOS build into the main GOS. But I don't know if he will be successful.

    "The PWM modded GrapheneOS kernel is working." https://xdaforums.com/t/a-mod-on-pwm-frequency-v3-20241027.4683727/post-89808904

    a month later

    pwmsensitive See also: the display module repository. These do not function in isolation as they just expose certain display parameters in sysfs.

    Certainly I believe a solution for integration into GrapheneOS requires additional work.