seerge / g-helper

Lightweight Armoury Crate alternative for Asus laptops and ROG Ally. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models
https://seerge.github.io/g-helper/
GNU General Public License v3.0
6.83k stars 247 forks source link

Laptop screen frequency options shows up when connected to an external display and the laptop's 60hz display is off #2871

Closed yesrab closed 1 month ago

yesrab commented 1 month ago

Rules

What's wrong?

The Laptop screen frequency select option shows up when i connect an external display and the laptop display is off even tho the laptop display is only 60Hz image

How to reproduce the bug?

  1. connect external display
  2. open system settings
  3. go to system > Display
  4. select "show only on 2" in '" Select a display to change the settings for it. Drag displays to rearrange them. "" area

Logs

log.txt

Device and Model

Asus Zephyrus G14 GA401IU

Additional information.

No response

Armoury Crate

Uninstalled

Asus Services

0

Version

0.179.0

OS

Windows 11 23H2 (0S Build 22631.3880)

seerge commented 1 month ago

@yesrab hello,

I honestly didn't get what's wrong?

You have turned internal display OFF. App UI says exactly that and makes refresh rate selection section inactive.

Thanks

yesrab commented 1 month ago

@yesrab hello,

I honestly didn't get what's wrong?

You have turned internal display OFF. App UI says exactly that and makes refresh rate selection section inactive.

Thanks

but the internal display is only 60hz pannel so no matter if the laptop display is off or on having the frequency select option is pointless

seerge commented 1 month ago

@yesrab yeah, but since internal display is completely OFF app simply can not "read" maximum refresh rate of it. So it shows default UI in that case :)

I assume when display is ON, whole refresh rate section is properly hidden ?

yesrab commented 1 month ago

@yesrab yeah, but since internal display is completely OFF app simply can not "read" maximum refresh rate of it. So it shows default UI in that case :)

can't the app save the internal display refresh rate in filesystem? or if the laptop display is off then show the external display refresh rate options? (like measure at first opening of the app and save it in some config)

also as far as i know the 60hz internal display is a 30pin edp cable and the higher refresh rate once have 40pins so its not like some one will swap their internal display with a diffrent rr

thanks for the fast responce :)

seerge commented 1 month ago

@yesrab

It can, but it will create more problems that it can solve.

Currently app just re-iterates over all connected screens every time display configuration is changed (in windows), tries to find internal screen and get it's current and max refresh rates and update UI accordingly.

I had few cases when people had either broken or not-installed GPU drivers, and cause of that refresh rate would be also limited either to 60hz or to 64hz in system. Updating drivers obviously fixes that. If app would "remember" that display can't go above 60hz, it will keep hiding UI even after drivers are updated.

Devices with only 60hz refresh rate are quite rare (most of new models support 120hz+). You are actually the first one who have managed to encounter situation and only cause internal screen was off :)

yesrab commented 1 month ago

so as of now there is no way to fix this? and if the refresh rate data were to be remembred there is a better way to find if the data has gone stale, btw how dose armoury crate handles this?

thanks :)

seerge commented 1 month ago

@yesrab try this build, I have added max refresh rate to config, but it will be used only as a backup only in situation like yours

GHelper.zip

yesrab commented 1 month ago

hi i have found out one more thing if you set the display setting to 'extend these displays' go to device manager > monitors > integrated Monitor and disable the integrated monitor now ghelper allows you to controll the external display's refresh rate note: the laptop's display is set to disabled in device manger but in settings > system > display set ti to 'extend these displays' ghelper version is 0.179.0 image

yesrab commented 1 month ago

@yesrab try this build, I have added max refresh rate to config, but it will be used only as a backup only in situation like yours

GHelper.zip

image yes this works as intended and dose not show unnecessary options. also this effect still persists

seerge commented 1 month ago

@yesrab

hi i have found out one more thing if you set the display setting to 'extend these displays' go to device manager > monitors > integrated Monitor and disable the integrated monitor now ghelper allows you to controll the external display's refresh rate note: the laptop's display is set to disabled in device manger but in settings > system > display set ti to 'extend these displays' ghelper version is 0.179.0

I can't reproduce this. Check what is written in the log when app enumerates displays in your case

yesrab commented 1 month ago

image here is a ss of what settings to make when in this configuration i get to change the external display's RR via the laptop RR settings in ghelper log.txt here is the log

seerge commented 1 month ago

@yesrab ah, so you have disabled monitor in device manager ? Then i guess it just confuses whole system.

As windows enumerator still reports Internal display as available and says it's \Monitor0

25/07/2024 3:28:54 PM: \\?\DISPLAY#AUOE68C#5&312ce82f&4&UID256#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7} DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL
25/07/2024 3:28:54 PM: \\?\DISPLAY#AUOE68C#5&312ce82f&4&UID256#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7} \\.\DISPLAY1\Monitor0

So app acts correctly. If windows says \Monitor0 is Internal screen - it reads available refresh rates and shows UI.

yesrab commented 1 month ago

@yesrab ah, so you have disabled monitor in device manager ? Then i guess it just confuses whole system.

As windows enumerator still reports Internal display as available and says it's \Monitor0

25/07/2024 3:28:54 PM: \\?\DISPLAY#AUOE68C#5&312ce82f&4&UID256#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7} DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL
25/07/2024 3:28:54 PM: \\?\DISPLAY#AUOE68C#5&312ce82f&4&UID256#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7} \\.\DISPLAY1\Monitor0

So app acts correctly. If windows says \Monitor0 is Internal screen - it reads available refresh rates and shows UI.

even disabling the internal monitor in device manager the internal monitor still works and this way i can controll my external monitor's RR using Ghelper 😜

workarrounds asside insted of showing Laptop screen 144hz it should show "monitor name " , "RR" monitor name can come form device manager no?

seerge commented 1 month ago

@yesrab windows API still reports internal screen (with correct name) as available. I can't overcome that.

App is not designed to work when someone intentionally disables devices in device manager. If you would disable GPU it would break even more things.

I assume original issue is fixed, therefore closing it as resolved.

yesrab commented 1 month ago

@yesrab windows API still reports internal screen (with correct name) as available. I can't overcome that.

App is not designed to work when someone intentionally disables devices in device manager. If you would disable GPU it would break even more things.

I assume original issue is fixed, therefore closing it as resolved.

yeah the orignal issue is fixed thanks for doing that i was just taking about the internal display being disabled if someone were to remove the display and use the laptop as is

anyways thanks for fixing this issue ❤️ and hey i might check that theory of mine some day by diconnecting the laptop display

once again thanks :)