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

Solution: Enable the therm_adt746x Driver

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:

  1. Edit the initramfs configuration:

    sudo nano /etc/mkinitcpio.conf
    
  2. Find the MODULES line and add therm_adt746x:

    MODULES=(therm_adt746x)
    
  3. Regenerate the initramfs:

    sudo mkinitcpio -p <your kernel>
    
  4. 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.

Understanding limit_adjust

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

  1. Edit your GRUB configuration:

    sudo nano /etc/default/grub
    
  2. Add the limit_adjust parameter to the GRUB_CMDLINE_LINUX line:

    GRUB_CMDLINE_LINUX="therm_adt746x.limit_adjust=-10"
    
  3. Update GRUB:

    sudo grub-mkconfig -o /boot/grub/grub.cfg
    
  4. 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:

  1. 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.

  2. Monitor temperatures: After making adjustments, monitor your system temperatures to ensure they remain within safe ranges.

  3. Start conservative: Begin with small adjustments (±5 degrees) and test thoroughly before making larger changes.

  4. 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