-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deprecate and remove Transitions to protect VDU NVRAM #93
Comments
Decided to deprecate Preset Transitions. They are now inoperative by default, but can be re enabled by disabling the protect-nvram setting. Preset Transitions are slated for removal in 2.2.0 unless objections are persuasive. |
As quoted above, a vintage-2010 VDU seems to be able to sustain at least 100,000 writes. To obtain a ten year lifespan that would indicate 27 writes per day or less. When designing lux-brightness response curves, perhaps try to keep the changes you experience in this range and avoid hundreds or thousands of changes per day. A modern VDU may have a large amount of USB-drive style NVRAM, potentially it may accommodate more writes. But we don't know, perhaps some manufacturers have decided to be particularly cheap. I would guess VDUs that include volume-controls, gaming/cinema modes, or internal-lux metering, would have to include better NVRAM. In respect to steps in the curve, note that the default algorithm won't make a change unless it's more than 10%, so even when interpolation is on, the adjustments will still be throttled. I would just keep a rough count of changes and tweek the curves to stay within less than 30 per day, or more if you think your monitors are more modern or up-market. My current set of curves are similar to those pictured in the README.md, so not particularly finely detailed. What I'm currently experiencing with an old VDU, an HP ZR24w from 2010, is that outwardly it appears to have a bad-block. At a low rates of writes, the writes mostly work and the settings are properly saved. Every now and then, a setting does not stay set and reverts after DPMS sleep or power-cycling. If I step up my testing and increase the frequency of writes, I can get failures to happen more often. To me, it appears that the VDU is cycling through its NVRAM and sometimes the cycle steps through the bad-block, and at a low rate of writes it cycles through the bad block less often. Now this particular monitor has been absolutely hammered over the past four years because it's the one I use for testing. Having implemented Initialization-Preset, that run at startup and when the monitor wakes up, I'm not no longer affected by the NVRAM problem. |
Thanks for the extensive and informative answer. I now decided that I keep my curves as they are but decreased the adjustment frequency to every 20 minutes. I think this should be enough to handle most situations. |
I've added internal counters to v2.1.1 that count the writes made to each VDU during the current execution. The current values are displayed on the bottom of the About-Window whenever it is brought up. So, for example, if you start vdu_controls at the start of the day, bring up the About-Window window at the end of the day will reveal the day's total, which would allow you to judge whether this is acceptable.
The main limitation with the fallback is that it is limited to the DDC VCP features exposed by the VDU, so it can't necessarily restore everything. The fallback works best when using the DBUS ddcutil-service because that detects VDUs waking-up or being powered-on which can then trigger the restore.
If the total count reported in the About-Window is <30 writes per day, that likely result in a long lifespan. That's a conservative value, a newer VDU may well allow for more than that. |
What I have attempted to do for my own VDUs is to identity a level for sunny, overcast, dark-rainy-day, eventing and night. So I don't vary infinitely, just between a few levels. I've attempted to set a conservative kick in for overcast to stop moving clouds from flip flopping the brightness, but still sometimes have to switch to manual when light levels are very changeable, which is not often. In my case I've assign these levels to Presets and the Presets are attached to the lux-curve. This is mainly because I coded Presets before I coded lux-metering. (If I had got out a soldering iron a year or two earlier, I think I could have avoided coding a lot of features which I now don't use - such as all the solar elevation and weather stuff.) I think you should try what pleases you, and if the write count is low, don't worry too much. I've just fixed the write count (it was erroneously counting attempts to change the VDUs when they were offline/asleep). |
Ahh I see, that also explains why you have put so much effort into this whole presets thing, something that I haven't used yet. I'll keep the write count on my radar. Thanks again for your great work and the effort in general that you put into this project. |
Preset transitions and Auto-Lux interpolation should come with a warning.
The text was updated successfully, but these errors were encountered: