Common ‐ Fancontrol ‐ NewWorld PowerBooks & iBooks - kth5/archpower GitHub Wiki
Overview
PowerBooks (NewWorld) and iBooks have an interesting design quirk: they assume the operating system will actively manage their cooling fans. While OSX handles this automatically, Linux distributions typically don't enable this functionality by default, which can lead to dangerous overheating if left unconfigured.
This tutorial will guide you through setting up proper fan management on these systems to prevent thermal damage.
The Problem
Without proper fan management:
- Fans may run at minimal speeds regardless of temperature
- CPU and system components can overheat
- The system may throttle performance or shut down unexpectedly
- Long-term hardware damage is possible
therm_adt746x
Driver
Solution: Enable the Step 1: Load the Fan Driver at Boot
The therm_adt746x
kernel module provides thermal management for these systems. To ensure it loads as early as possible during boot:
-
Edit the initramfs configuration:
sudo nano /etc/mkinitcpio.conf
-
Find the
MODULES
line and addtherm_adt746x
:MODULES=(therm_adt746x)
-
Regenerate the initramfs:
sudo mkinitcpio -p <your kernel>
-
Reboot your system
Step 2: Verify the Driver is Working
After rebooting, check that the module is loaded:
lsmod | grep therm_adt746x
You should also notice that the fans are now responding to system temperature changes.
Optional: Advanced Fan Curve Tuning
The therm_adt746x
driver comes with conservative but sensible default temperature targets. While you can't directly modify these targets without recompiling the kernel module, you can adjust them using the limit_adjust
parameter.
limit_adjust
Understanding The limit_adjust
parameter offsets all temperature thresholds by the specified number of degrees (positive or negative).
- Negative values (e.g.,
-10
) make the fans more aggressive (start cooling earlier) - Positive values (e.g.,
+5
) make the fans less aggressive (allow higher temperatures)
Applying the Adjustment
-
Edit your GRUB configuration:
sudo nano /etc/default/grub
-
Add the
limit_adjust
parameter to theGRUB_CMDLINE_LINUX
line:GRUB_CMDLINE_LINUX="therm_adt746x.limit_adjust=-10"
-
Update GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg
-
Reboot to apply the changes
Example Configurations
- More aggressive cooling:
therm_adt746x.limit_adjust=-10
- Less aggressive cooling:
therm_adt746x.limit_adjust=5
- Default behavior: No parameter needed
Important Warnings
⚠ Critical Safety Notes:
-
Don't set limits too low: If you adjust the
limit_adjust
parameter too far in the negative direction, the system may think it's constantly overheating and perform emergency shutdowns. -
Monitor temperatures: After making adjustments, monitor your system temperatures to ensure they remain within safe ranges.
-
Start conservative: Begin with small adjustments (±5 degrees) and test thoroughly before making larger changes.
-
Hardware limitations: The cooling system has physical limitations. If the system shuts down due to overheating even with aggressive fan curves, you may need to fix your cooling system (see section System Still Overheating) and/or reduce system load.
Troubleshooting
System Still Overheating
- Decrease the
limit_adjust
value - Check for dust buildup in cooling components
- Verify thermal paste application on CPU/GPU
- Consider additional cooling solutions