I've read through this very useful thread and others on the internet and I believe I know the cause and the cure of this problem, at least with respect to the MacBook Pro 16". I went from 4h 15m of battery life to 6h 50m of battery life in MacOS and from 3h 16m to 4h 40m of battery life in Bootcamp. I am running another test right now and I expect over 9 hours after full optimization in MacOS. I don't expect to ever get more than 5 hours battery in Bootcamp.
My 2019 MBP is i9, 64GB memory, 2TB HD and 8GB video memory.
The root cause, in my judgement based on all my reading and my testing, is that Apple is not calibrating the batteries. Apple expects the batteries to calibrate over time through a combination of hardware (SMC), software (MacOS) and typical usage. Apple did this to save money since battery calibration is a process that takes at least 10-12 hours. I will not criticize Apple for this as the cost for the base model is a reasonable and typical usage will realize the full battery potential over time.
The problem is threefold:
1. The battery on the MBP 16" is larger than other Apple laptops, as such it is outside the normal range of where the entire battery management system was designed.
2. The default setting of the battery management is to "conserve" the battery. As a result, the battery rarely tests it's limits so calibration is either poorly done or takes a long time. This also makes the third problem worse.
3. Because the MBP 16" is a "power house" laptop usage is not typical for many users. I use my MBP 16" almost exclusively as a desktop and frequently in BootCamp as a result, my battery never calibrated in eight months of usage!
Battery Calibration:
- You need to do the calibration in MacOS
- You need to turn OFF the Battery Management in Preferences to allow the battery to fully charge. It will automatically turn back on the following day (Big Sur)
- Charge to 100% and continue to charge for at least 2 additional hours.
- Discharge the battery completely until the laptop turns off by itself. I use VLC playing a video in a loop.
- Leave the laptop for 5 additional hours. This allows for the calibration process to complete.
The battery is now calibrated. In my case, a second calibration gave an additional 20 minutes of calibrated battery life.
BootCamp and Windows.
The two biggest problems in Windows on the MBP 16" are entirely due to Apple:
1. The Intel integrated GPU is turned off by the firmware and Windows cannot switch between the AMD and Intel GPU's. In any case, Apple and AMD do not supply Windows drivers to allow such switching. Windows is capable of and does such switching with other laptops (such as the Surface). This is well known and long standing complaint by Bootcamp users.
2. By default, the keyboard light is always ON in Bootcamp. Go to the BootCamp control panel and set it to turn off after a few seconds. The MacOS default is 1 minute so one has to question why Apple leaves it on by default in Windows.
Since it is impossible to switch to the integrated graphics BootCamp will have poor battery life compared to MacOS until the firmware allows Windows to see the hardware and Apple/AMD supply a driver. Nevertheless there are six things you can do to stretch out the battery life in bootcamp:
1. Use a program called Custom Resolution Utility, by ToastyX to create a "custom" refresh rate of 48Hz. This post at Bootcampdrivers.com gives the details.
Macbook Pro 16-inch - Reduce Throttle with 48hz Gaming | BootCampDrivers.com forum (freeforums.net)
The screen supports 48Hz refresh rate so this isn't going to break anything, but the Apple/AMD drivers only show 60Hz by default so you have to add the additional mode. The numbers you use are important, so check out the link. Changing the refresh rate can add more than 30 minutes battery life (about 25%).
You can also get more battery life in MacOS by changing the refresh rate. Obviously, changing the refresh rate to 48Hz may not be an option depending on what you do with your laptop. You change the refresh rate in MacOS by holding OPTION while clicking on SCALE in the display section of Preferences.
2. Use the AMD video drivers from Bootcampdrivers.com. These drivers seem to be more power efficient than the Apple/AMD supplied drivers. The biggest problems for gamers isn't the power of the GPU, it is thermal throttling with the MBP cooling. As a result gamers are usually trying to reduce power usage and keep performance even.
3. Turn on Battery Saver Mode all the time when on battery then Windows will limit background processes. Windows is designed for the corporate market which means desktops and easy to allow background network services. Many software vendors take advantage of this to install programs which always run in the background. Turning on Battery Saver mode, for example, will stop OneDrive from updating.
4. Go to the Power Plan settings and set the Maximum CPU to 99% when on battery. This will, in effect, turn off Turbo boost. The six core i7 and eight core i9 have plenty of processing power and only need to be boosted when under a heavy work load. Many gamers turn off the turbo boost all the time as it prevents thermal throttling and allows for better game performance. Usually there is no need to set a lower limit as windows will automatically slow down the CPU under light load.
5. Turn off Bluetooth and Wifi. They don't use that much power but if you don't need them, turn them off.
6. In the Power plan set the critical battery level to 1% (default is 5%). At this point Windows will shutdown and put itself in Sleep or Hibernate mode. I have used 1% on my MBP 16" and Windows recovers just fine. This only buys about 10 extra minutes at a slightly greater risk of losing some data.
Other Notes:
The keyboard lights us more power than you think.
The screen uses a great deal of power turn it down.
Changing the refresh rate makes a big difference. If you can live with 48Hz use it.
Additional memory doesn't use that much power. It will reduce battery life, but not dramatically.
It is possible to "spoof" the boot process and allows the IGPU to be seen by Windows, but this doesn't help because there are no drivers to take advantage of it.
I have a 2015 MBP 13" (no GPU) which gets 6.5hours of battery life in Bootcamp. Windows is not the problem. The GPU is the problem.
My 2019 MBP is i9, 64GB memory, 2TB HD and 8GB video memory.
The root cause, in my judgement based on all my reading and my testing, is that Apple is not calibrating the batteries. Apple expects the batteries to calibrate over time through a combination of hardware (SMC), software (MacOS) and typical usage. Apple did this to save money since battery calibration is a process that takes at least 10-12 hours. I will not criticize Apple for this as the cost for the base model is a reasonable and typical usage will realize the full battery potential over time.
The problem is threefold:
1. The battery on the MBP 16" is larger than other Apple laptops, as such it is outside the normal range of where the entire battery management system was designed.
2. The default setting of the battery management is to "conserve" the battery. As a result, the battery rarely tests it's limits so calibration is either poorly done or takes a long time. This also makes the third problem worse.
3. Because the MBP 16" is a "power house" laptop usage is not typical for many users. I use my MBP 16" almost exclusively as a desktop and frequently in BootCamp as a result, my battery never calibrated in eight months of usage!
Battery Calibration:
- You need to do the calibration in MacOS
- You need to turn OFF the Battery Management in Preferences to allow the battery to fully charge. It will automatically turn back on the following day (Big Sur)
- Charge to 100% and continue to charge for at least 2 additional hours.
- Discharge the battery completely until the laptop turns off by itself. I use VLC playing a video in a loop.
- Leave the laptop for 5 additional hours. This allows for the calibration process to complete.
The battery is now calibrated. In my case, a second calibration gave an additional 20 minutes of calibrated battery life.
BootCamp and Windows.
The two biggest problems in Windows on the MBP 16" are entirely due to Apple:
1. The Intel integrated GPU is turned off by the firmware and Windows cannot switch between the AMD and Intel GPU's. In any case, Apple and AMD do not supply Windows drivers to allow such switching. Windows is capable of and does such switching with other laptops (such as the Surface). This is well known and long standing complaint by Bootcamp users.
2. By default, the keyboard light is always ON in Bootcamp. Go to the BootCamp control panel and set it to turn off after a few seconds. The MacOS default is 1 minute so one has to question why Apple leaves it on by default in Windows.
Since it is impossible to switch to the integrated graphics BootCamp will have poor battery life compared to MacOS until the firmware allows Windows to see the hardware and Apple/AMD supply a driver. Nevertheless there are six things you can do to stretch out the battery life in bootcamp:
1. Use a program called Custom Resolution Utility, by ToastyX to create a "custom" refresh rate of 48Hz. This post at Bootcampdrivers.com gives the details.
Macbook Pro 16-inch - Reduce Throttle with 48hz Gaming | BootCampDrivers.com forum (freeforums.net)
The screen supports 48Hz refresh rate so this isn't going to break anything, but the Apple/AMD drivers only show 60Hz by default so you have to add the additional mode. The numbers you use are important, so check out the link. Changing the refresh rate can add more than 30 minutes battery life (about 25%).
You can also get more battery life in MacOS by changing the refresh rate. Obviously, changing the refresh rate to 48Hz may not be an option depending on what you do with your laptop. You change the refresh rate in MacOS by holding OPTION while clicking on SCALE in the display section of Preferences.
2. Use the AMD video drivers from Bootcampdrivers.com. These drivers seem to be more power efficient than the Apple/AMD supplied drivers. The biggest problems for gamers isn't the power of the GPU, it is thermal throttling with the MBP cooling. As a result gamers are usually trying to reduce power usage and keep performance even.
3. Turn on Battery Saver Mode all the time when on battery then Windows will limit background processes. Windows is designed for the corporate market which means desktops and easy to allow background network services. Many software vendors take advantage of this to install programs which always run in the background. Turning on Battery Saver mode, for example, will stop OneDrive from updating.
4. Go to the Power Plan settings and set the Maximum CPU to 99% when on battery. This will, in effect, turn off Turbo boost. The six core i7 and eight core i9 have plenty of processing power and only need to be boosted when under a heavy work load. Many gamers turn off the turbo boost all the time as it prevents thermal throttling and allows for better game performance. Usually there is no need to set a lower limit as windows will automatically slow down the CPU under light load.
5. Turn off Bluetooth and Wifi. They don't use that much power but if you don't need them, turn them off.
6. In the Power plan set the critical battery level to 1% (default is 5%). At this point Windows will shutdown and put itself in Sleep or Hibernate mode. I have used 1% on my MBP 16" and Windows recovers just fine. This only buys about 10 extra minutes at a slightly greater risk of losing some data.
Other Notes:
The keyboard lights us more power than you think.
The screen uses a great deal of power turn it down.
Changing the refresh rate makes a big difference. If you can live with 48Hz use it.
Additional memory doesn't use that much power. It will reduce battery life, but not dramatically.
It is possible to "spoof" the boot process and allows the IGPU to be seen by Windows, but this doesn't help because there are no drivers to take advantage of it.
I have a 2015 MBP 13" (no GPU) which gets 6.5hours of battery life in Bootcamp. Windows is not the problem. The GPU is the problem.