[Windows RT General] hectorantonio:
[Edited 07/01/2021]

The issue is inconsisten, and so the solution as I've been unable to repeat -consistently- the failure of the RT.

It's been described as "brightness control breaks if you do not se it manually right after boot, before suspension/sleep", but this is not accurate, as I've been able to use it normally even without tweaks or manually changing after boot. And sometimes the same (repeated and confirmed) steps produce the issue. So, it's not clear, not consistent, not repeateable 100% each time.

The brightness issue IS NOT SPECIFIC OF Windows 10 on ARM32 (Surface RT), as it's been present since Windows 8.1 on diff computer brands. While it affects desktop computers as well, it seems to hit harder on laptops, specially if the "sleep when you close the lid" is activated.

After reading quite a bit, many users report solving this issue on their computers (non Surface RT) removing the sleep when you close the lid, removing the stock display drivers and updating them, remove dimming the display to save power, and removing the automatic brightness adjustment. However none of this seems to work on the Surface.

I created some scripts / instructions for powershell (below) to change the brightness at startup, but it doesn't work 100% as expected, not all the times. So there is a difference between changing the brightness manually, VS doing the same with a script.

I managed to clear this issue after restarting the display driver manually, it works. It's a simple "disable / enable" display (NVIDIA Tegra 3), and you will hear the beep of detected hardware, that's it. Also created some script/instructions to do this and it works, but it shuts down the audio. I removed the -like on the device get to avoid affecting similarly named devices, but it's not that... as I also used -eq (equal), getting the device that exactly matches the name given, and it also shuts down the audio. It shouldn't but it does.

That's all I know for now, it's some strange issue.

************************************

[solution found, the first post keeps the first attempt. If the following doesn't work for you, then try the new one at the end.]

I managed to upgrade my Surface RT 1 to Windows 10 and yes, things work better this way, BUT the brightness control has some issues.

Problem:

The tablet starts from off state with brightness at 100% regardless of the last state.

While this has happened on most cases, I noticed sometimes it starts at 0% without user intervention.

Yes you can perform brightness adjustments BUT, if you don't do so, it breaks when the devices goes to sleep and you won't be able to change the brightness until restart.

Your experience might be different, I asked here and there, and it seems some users had a diff experience, but they seem to be just rare exceptions.

Runaround: right after first boot from off state, perform whatever adjustment and you will keep the freedom of changing the brightness at any time even after sleep. This is what I was told and tested myself, it works, but I'm not fully sure about this as I would need more time to test my tablet.

My fix:

Create a powershell script with this code inside:

$tempov = Get-Ciminstance -Namespace root/WMI -ClassName WmiMonitorBrightness;
$original = $tempov.CurrentBrightness *1
$valt=11

if($original -gt 30){
$blink=$original-$valt
}else{
$blink=$original+$valt
}

(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$blink)
(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,$original)

You will have to enable running powershell scripts, in my case I opened a window, tried and was asked to enable it or not, I said yes, that's it. And you can run this script at any time. But the idea is adding it to the Task Scheduler and set it to run right after booting, this mean "at startup".

Originally I made the script set the brightness to 30% this way:

(Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,30)

But if the tablet wakes up at 100% or 0%, it won't be pretty. So I changed it to the code posted at the beginning of the thread. What it does is...

It gets the current brightness value

Then perform a simple calculation to know if it can add or substract

Then applies the new value (thus a change in brightness)

And then goes back to the original value applying the original percentage

This provides a more pleasant visual experience, a slight blink, almost unnoticeable.

Why those values on the code? long story, I don't think you want to know the details, what? ok, 10 doesn't always work, 1, 2, 3, 4, 5, etc don't work, on some ranges changes of 1, 2 values don't work (I don't know why), and the most safe way is to do so using 10 as the base units for change in brightness (don't ask me why, I tested over and over), so 11 is the safest value. I could explain more about my tests but I don't want too, it's too long and boring and wouldn't make a difference, the code above works, if you want something different then you are free to play with the code yourself.

IMPORTANT: to avoid seeing a window opening while running the script, set the task scheduler to "Run wether user is logged on or not". This would require your password, if you don't have one on your account then I don't know what to do, I tried but the thing insisted so there you go.

I'm not an expert on Task Scheduler so please don't ask, research yourself, don't want to be rude, I just don't know enough details to guide you, what I posted here WORKS.

Already tested (and will continue testing) and it works, the tablet does a light and almost unnoticeable fade-blink and the brightness control is preserved after sleep.

IF... you manage to add this feature to your Surface RT without errors, then report how the code helps or not your brightness control. My case = perfect. Will continue testing.

I think this is THE BEST method because even if you modify the brightness yourself, the code will be executed and it would be just slightly noticeable, so it's the best option regardless of the current brightness value.