January 19, 2020

Fixing the Second Fan Error of an old Thinkpad X61 with a Attiny Microcontroller

In the home network I am using my trusty old X61 to serve this webblog and to run some scheduled python scripts. This machine was my daily driver for quite some years from around 2010. This machine only consumes about 10 Watts in idle and thus is suitable for a low powered home server.

Unfortunatly the laptop has an annoying error when booting up – it beeps twice, gives a fan error and expects the user to hit the esc key to continue booting. This error is caused by a second fan that is located in the palmrest of the device. It is designed to cool the palmrest where a modem, wlan and wwan card are located. In the stripped down machine that I will be using as a home server, these components have been removed, thus the fan is not needed, nor does the error give me any concern. But the manual trigger of the esc during bootup is annoying for a server that is hidden away with the display-lid closed.

There is a post discussing this issue on the Thinkpad-Forum: https://thinkpad-forum.de/threads/182970-X61-und-der-2-Fan-weg-damit-ohne-Fehlermeldung

As suggested in the post, I tried to emulate the fan with a Attiny microcontroller that just outputs a 500Hz square wave.

The program on the Attiny is as simple as it gets ;) but it does the job:

void setup() {
  pinMode(0, OUTPUT);
}

void loop() {
  digitalWrite(0, HIGH);
  delay(1);                       // wait for a microsecond in high
  digitalWrite(0, LOW);
  delay(1);                       // wait for a microsecond in low
}

I followed this simple tutorial to use an Arduino Uno as an ISP: https://create.arduino.cc/projecthub/arjun/programming-attiny85-with-arduino-uno-afb829

With the fan mock installed the machine boot up without the error, beep or the need for a button-press.