r/linux_on_mac 13h ago

Disable Thunderbolt, Decrease Power Consumption 1.5W, Increase Battery Life by Up To 25%, on Intel MacBook Air (2013-2017)

Post image

This information is not new on this subreddit, but it is often buried inside a lot of other cruft, which made me overlook this for a long time. I think it's useful enough to deserve its own posting.

Tl;dr: On the Intel MacBook Air 11"/13" (2013-2017), and potentially other MacBook Airs and Pros from this era, disabling the thunderbolt ports can save 1.5W of power consumption, potentially increasing battery life up to 25% under idle conditions. (Others reported up to 2W of savings, I did not observe that.)

The screenshot above shows a projected battery life of 10h45m for my MacBook Air 11" (2015). That is unrealistic of course, because it assumes that the laptop is completely on idle. In real life, with some moderate Firefox browsing, I'm seeing 5-6h of battery life, which is noticeably better than the 4-5h that I was seeing before.

The instructions below are for Linux Mint 22.x which uses GRUB as the boot loader.

Kernel Parameters

First, edit `/etc/default/grub`, and add the following option to any other parameters which are in this variable:

GRUB_CMDLINE_LINUX_DEFAULT="... acpi_osi=!Darwin"

Second, regenerate GRUB:

$ sudo update-grub

Third, reboot the machine. The default kernel selected on the GRUB menu will be configured with the `GRUB_CMDLINE_LINUX_DEFAULT` variable, and thunderbolt will be disabled. (If you select any other kernel version from the Advanced menu, it will get the `GRUB_CMDLINE_LINUX` parameter, which will not contain this flag, and thunderbolt will be enabled. See how to use this to your advantage below).

Results

The power consumption of the MacBook fluctuates up and down every few seconds. I looked for the minimum power consumption over a few minutes, with the display set to about 1/3 brightness.

On my MBA 11 (2013) 4GB/128GB, I saw:

  • Thunderbolt disabled: 4.2W
  • Thunderbolt enabled: 5.6W

On my MBA 11 (2015) 8GB/256GB, I saw:

  • Thunderbolt disabled: 4.5W
  • Thunderbolt enabled: 6.0W

(The 2015 model seems to use slightly more power than the 2013 model, probably because of the larger RAM and larger SSD.)

This ArchLinux wiki page (https://wiki.archlinux.org/title/Mac/Troubleshooting#Disabling_Thunderbolt), says that they observed a 2W reduction. I never saw that on my MBA 11".

Reenabling Thunderbolt

[Update: This section may not be necessary, because even though the Arch Linux wiki page says that this kernel flag disables thunderbolt, my external monitor works just fine through the thunderbolt adapter.]

Occasionally, I use an external monitor with my MBA 11", which requires the thunderbolt to be active. I could go back into `/etc/default/grub`, remove the `acpi_osi=!Darwin` flag, run `update-grub`, and reboot.

But that's a lot of work. There are 2 easier workarounds:

Option 1: Install both the 7.0 kernel and the 6.8 kernel. Both are LTS kernels supported until 2029. Select the "Advanced" option in the GRUB menu, then boot into the 6.8 kernel. Since this kernel is not the default, it will boot with the `GRUB_CMDLINE_LINUX` flag, and thunderbolt will be enabled.

Option 2: At the GRUB menu, type `e`' to get the edit screen where you can manually remove the `acpi_osi=!Darwin` flag. Then hit F10 or Ctrl-X to continue the boot process, and the 7.0 kernel will boot with thunderbolt enabled. Unfortunately, my memory is not as good as it was when I was younger, and I will forget about this technique in a few months, so I will probably end up using Option 1.

If anyone knows an easier way to enable/disable thunderbolt at runtime, without rebooting, that would be really useful. Please post info.

For me, no other power saving technique (e.g. TLP, CPU governor selection, CPU PowerSaver option, replacing the Broadcom WiFi card with an Intel AX210 card) made as much difference in power consumption and battery life as disabling the thunderbolt ports.

17 Upvotes

11 comments sorted by

5

u/MountainBrilliant643 13h ago

That's pretty compelling, but I really like my Thunderbolt-to-Ethernet adapter.

3

u/bxparks 13h ago

USB-to-ethernet? It's probably slower, I get about 200 Mbps on mine.

2

u/Agitated-Panda9221 12h ago

Test it with the setting cause my thunderbolt to monitor seems to work. Doesn't hurt to try.

2

u/Agitated-Panda9221 12h ago

I use the acpi_osi=!Darwin and get the power savings but interestingly enough my thunderbolt still works since I use my external monitor.

Things to consider:

When you add this acpi_osi parameter, it'll screw up the battery measurements and you also won't be able to see you cycle count any more.

And if you were using applesmc-next to set the power limiter, it'll also can't be adjusted until you remove the acpi_osi parameter.

1

u/bxparks 10h ago

Hey, you are right! The thunderbolt port seems to be active and my external monitor works.

But the acpi_osi=!Darwin flag must do *something*, because my power consumption is definitely lower with that flag compared to without.

2

u/Agitated-Panda9221 8h ago

Agreed. You can solve the mystery and post it here. ; )

1

u/Netzunikat 9h ago

Its not thunderbolt that is working. It's USB. Thunderbolt is the provider for USB.

2

u/Agitated-Panda9221 8h ago

well, in that case i don't use thunderbolt which is fine with me.

2

u/simonmales 11h ago

Thanks for the tip, I did it this way.

sudo echo "blacklist thunderbolt" > /etc/modprobe.d/blacklist-thunderbolt.conf sudo update-initramfs -u sudo shutdown -r now

Keep an eye on powertop if you want to see a before and after.

3

u/Netzunikat 9h ago

Dont use !Darwin. That is ACPI !OSDW path. There are plenty of good Mac quirks in the Linux kernel that you will override this way. Use pcie_ports=compat to deactivate thunderbolt if you want. The reason why it saves power is that RTD3 is not supported for Alpine/Titan Ridge in thunderbolt.c.

2

u/diknik18 8h ago

Hi, i'm waiting for the Intel card, the adapter & new battery for my MBA 11 2015. The plan is to install Fedora 44 on its own (no dual-booting). Anyone have done this 'disable Thunderbolt' method on Fedora 44? May i know how you do it and maybe summarize the result?