WIP: Recognize XPS 15 7590 OLED variant - #5
Conversation
|
Are there systems that would match this but not have an OLED display? |
|
I am very unsure of this. Dell has several configurations of this laptop. Some with the OLED screen and some without. There is, to my knowledge, not a single place to identify which SKU the laptops with OLED screens have - other than running the commands and checking manually. I've not done too much work on this since opening the PR - exams and all that - but I also not convinced I am knowledgeable enough to identify the strange behavior of the program on this specific machine. |
|
Could you provide the EDID information? That may be better to identify the display as OLED |
|
I wrote that I couldn't get what looked like valid EDID, but I managed to get It also comments that no video blocks are present, which supposedly is highly unusual. |
|
I would have expected and Identifier or ModelName set which would allow differentiating the OLED panel. |
|
I use the command |
|
Please try the following: |
|
Running that command using the iGPU-only mode (which is what I prefer to run) results in no EDID information being found. Switching to the hybrid mode results in the same result as the one posted earlier - no video blocks and the |
|
I talked to a friend about this, and we identified |
|
Heh, that's the same panel we have in the System76 Adder Pro. I think using the panel identifier would be a reliable way to do this. |
|
My plan is to add the edid crate as a dependency, look for and parse all the EDID files in the directories in Ideally it'd also support both multiple cards and multiple OLED displays but that seems out of scope right now. After that is implemented I also still need to identify why it's managing to set the brightness correctly on startup, but not when adjusting while the program is actually running. |
|
That looks pretty good. I would also test the vendor ID. There is code in gnome-settings-daemon that changes the gamma settings. That is what is overriding changes here. |
|
I added the checks for vendor ID and removed the Do you know how to change the behaviour of |
|
Looks great! I will get this tested sometime this week. We have a patch for gnome-settings-daemon that may interest you here: https://github.com/pop-os/gnome-settings-daemon/blob/master_eoan/debian/patches/oled_brightness.patch It currently uses the DMI information but there may be a way to clean it up so the detection happens in system76-oled. |
|
Parsing out the two required values from the EDID files shouldn't be too hard in C. Even in the Rust code I considered not including the extra parser dependency. For this task the specification is fairly simple and straightforward. Doing the check manually in C does of course result in a duplication of the known OLED list. If this is intended to be a more general solution as more laptops get OLED screens that might not be ideal. However, I'm not well versed enough in dbus communication to propose a solution for containing it in this program. |
|
@Herbstein that sounds good, to do the check in C inside of gnome-settings-daemon |
|
I am unsure what the development workflow on the daemon is. Adding, generating, and applying patches is fairly straight forward. Should I apply the OLED patch, write the new checking, and then generate a new patch? And should that patch override the old OLED patch or be a secondary patch to it? |
|
Yep, that is correct. Update the OLED patch is the best way to do it. |
|
Is this still waiting for review? Are there changes required in another daemon? I am struggling with a 7590 as well; gnome-tweaks |
I'm in the same situation, hope in a fast resolution. |
|
The situation is that I suddenly got super busy with my bachelor project and general university stuff. The final part of the patch requires modifying the pop-os gnome-settings-daemon fork. Specifically, the patch for OLED , though a second patch is required to build on pop-os itself. The change needed for the OLED patch is parsing the file If anyone wants to swoop in and handle the C-part I more than welcome it! Otherwise I'll get to it when my workload slows down slightly. |
|
I wrote the above, and then actually started working on it. @jackpot51 What is the process for reviewing changes to the daemon before merging them? Do I just create a pull request containing the single patch file, or do you want to have a "normal" source-based pull request that can then be turned into a patch as a final step? Also, how do I test whether what I've written works? I guess it involves running the custom daemon in place of the normal one, but not sure how. |
|
Yes, please create a pull request and I will review it. We can talk about testing and other stuff there if you make one. |
|
Let me know if any help is needed with testing, I also have this laptop with the OLED and stumbled on this when looking for solutions. I am happy to do whatever I can. Not sure if it applies to this type of testing, but I also have access to a docking station(Dell D3100) and multiple monitors, however the monitors are not 4k. |
|
If I try to compile this application I get this error:
An x11 versions dependency issue, what I'm doing wrong? |
|
I'm not at my laptop right now, but I think you want to install |
|
I missed your edit. You want to install |
Thanks. The application doesn't work but I just want try by myself and maybe start to contribute :D Out of curiosity, can I ask you what is the support in gnome-settings-daemon for? |
Of course! gnome-settings-daemon also does some work in modifying and handling brightness values in a Pop_Os! install. When this program intercepts brightness changes gnome-settings-daemon reverts the display to full brightness. That is what, on my machine, results in a flashing screen when trying to turn the brightness way down. If you try turning the brightness all the way down and then start this program your actual brightness should go down to the desired level. This is because (as I understand it) gnome-settings-daemon only reverts back when you're pressing on the shortcut key. EDIT: Let me expand a little on what the specific support changes needed in both this program and gnome-settings-daemon was/is. When System76 needed the OLED brightness for their Adder WS laptop they simply used checked the laptop model information to make sure it didn't interfere with normal usage on other laptops. To support other models of laptop I instead (with guidance from Jeremy) started parsing the EDID from the built-in display. The OLED in the XPS7590 turns out to be the same panel, so supporting both models is fairly easy with that approach. Lastly, adding another display now only requires knowing two values from the EDID of the new display. It still needs to be inserted into both programs, however. |
|
Thanks for the explanation, I followed the discussion in this PR but I missed that information. |
|
Just found the other PR in gnome settings daeomn repo :) |
|
I really, really felt like I needed this when I created the PR but I've grown accustomed to the harsh light - to other people it's harsh even in daylight. But I want to see this through because I can see other people are struggling with the issue. |
|
@Herbstein Really appreciate the effort you're putting into this! I just built this PR and it's the first fix for the OLED brightness issue that I've found that actually works well. Much appreciated! |
|
OLED brightness working on XPS 7590 after last update. |
|
@rhb388 on Pop!_OS 20.04? |
yes it is working on Pop!_OS 20.04 |
This is a WIP pull request that does not currently work as desired.
The current behaviour is that running the tool while a non-max brightness is set it turns down the brightness as expected. However, attempting to further increase or decrease the brightness makes the brightness go to max brightness.
When trying to increase and decrease the brightness flashes of lower brightness can be seen. Could this be related to the two TODOs at the bottom about Mutter changing the gamma values?
Lastly, I added two new values to be looked at when determining the output. This was needed as the
versionis simply an empty file on the XPS 15 7590.