Wie man den WLAN Chipsatz in einem Thinkpad x201 austauscht

Mein Thinkpad x201 wird ab Werk mit einem WLAN Chipsatz von Intel ausgeliefert. Der läuft in der Regel mit Linux ohne Probleme, benötigt aber eine unfreie Firmware. Deshalb lässt sich beispielsweise Debian nur mit Netzwerkkabel installieren, um das entsprechende Paket aus non-free zu laden. Komplett Freie Distributionen verweigern den Einsatz des WLAN-Chips strikt.

Eigentlich ist das kein Problem; ein Thinkpad lässt sich leicht öffnen und den Chipsatz auszutauschen ist eine Sache von drei gelösten Schrauben. Lenovo stellt ausführliche Anleitungen und sogar Videos (!) für den kompletten Vorgang bereit (Übersicht, Direkt zum Abschnitt „Wireless LAN“). Entsprechend passende MiniPCI-Karten mit Chipsätzen mit freier Firmware gibt es online bei Elektronikhändlern oder Ebay zu kaufen. Meiner – ein AR9285 von Atheros – ist ein gebrauchter/aufbereiteter und hat gerade einmal ~4€ gekostet.

Das Problem

Das ist wie gesagt alles kein Hexenwerk – eigentlich. Denn Lenovo hat sich da für einzelne Modelle etwas Tolles ausgedacht. Um nämlich die Zertifizierung durch US-Behörden zu bekommen, werden mithilfe einer Whitelist nur bestimmte Chips zugelassen. Alle anderen MiniPCI-Karten quittiert das Notebook mit der Meldung beim Bootvorgang:

1802: Unauthorized network card is plugged in - Power off and remove the miniPCI network card.

Und diese Meldung ist ernst gemeint – es hilft nur noch Ausschalten und Ausbau des Chips!

Lösungsversuche

Zum Glück ist das Problem bekannt und um es zu beheben, gibt es verschiedene bereits gut dokumentierte Wege. Ich habe mir alle zumindest angeschaut, teilweise habe ich sie auch ausprobiert.

  • Lösungsansatz 1: Ich habe als erstes versucht die PCI ID des Chipsatzes mithilfe eines Hacks von Matthew Garret zu verändern. Leider ohne Erfolg. Das C-Schnipsel lief zwar ohne Fehler durch, es veränderte aber auch nichts.
  • Lösungsansatz 2 wäre die Nutzung eines anderen MiniPCI Slots. Das habe ich gar nicht erst versucht, weil das x201 als nicht funktionierend gelistet ist.
  • Lösungsansatz 3, das Überkleben eines Pins, habe ich aus dem selben Grund übersprungen.
  • Lösungsansatz 4, das Flashen eines gepatchten BIOS, ist der einzige funktionierende Weg.
    Im Thinkwiki wird auf ein vorgepatchtes BIOS hingewiesen, das funktionieren soll.
    Meine Probleme dabei waren allerdings:

    • 1) kein Diskettenlaufwerk
    • 2) kein CD-Laufwerk
    • 3) kein Windows (und auch keinerlei Lust eines zu installieren)
    • 4) absolut null Erfahrung mit BIOS Flashing
    • 4b) und somit Angst um das geliebte Notebook.

    Die funktionierende Lösung

    Nachdem ich wegen 1) und 2) keine fertigen Flashing-Tools nutzen konnte und dank 3) einige Stunden mit der Krücke WINE (und anderen Tools wie „geteltorito.pl“) verplempert hatte, bin ich wie folgt vorgegangen:

    1. DOS Flasher für Phoenix BIOS besorgen
    Bei WimsBIOS gibt es die aktuellste Version v1.7.0.21 von phlash16 zum Download.

    2. Gepatchtes BIOS besorgen
    Die Zip-Datei aus dem Forenbeitrag gibt es auf sendspace.com zum Download. Als Alternative habe ich sie auch hier hinterlegt.

    3. FreeDOS besorgen
    Das Diskimage von der offiziellen Seite ist zu klein, ich wollte ja den Flasher direkt mit drauf laden. Entweder du fummelst da selbst rum und vergrößerst das Image von Hand – oder du nimmst direkt das fertige Image von Christian Taube. Ich habe Letzteres gemacht.
    Hinweis: die Images von Christian sind leider weg, aber im ArchWiki findet sich ein Verweis auf einen Mirror.

    4. USB-Stick vorbereiten

    • Die bzip-Datei entpacken:
      ~# bunzip2 FreeDOS-1.1-memstick-2-256M.img.bz2
    • Das Image auf einen USB-Stick laden:
      ~# dd if=FreeDOS-1.1-memstick-2-256MB.img of=/dev/sdX bs=512k
      Natürlich mit Rootrechten und das X durch den entsprechenden Devicebuchstaben ersetzen.
    • Die vorhin heruntergeladenen Dateien entpacken:
      ~# unzip phlash16-1.7.0.21.zip
      ~# unzip ThinkPad\ X201_6quj10us_no_whitelist.zip

      Die Ordner 32bit und 64bit kannst du ignorieren, dort liegen nur die Flashtools für Windows.
    • Den fertigen Stick mounten, die entpackten PHLASH16.EXE und $01C2100_mod.ROM direkt in’s Hauptverzeichnis darauf kopieren, Stick wieder unmounten.

    5. BIOS flashen
    Jetzt startest du das Notebook neu und bootest vom USB-Stick. Als erstes begrüßt dich syslinux, du bestätigst mit Enter dass du FreeDOS booten möchtest. Im nun folgenden Bootloader wählst du 4 - Load FreeDOS without drivers und erhältst kurz darauf den altbekannten DOS Prompt: c:\.
    Mit phlash16 $01C2100_mod.ROM kannst du jetzt den Flashvorgang starten. Dieser dauert etwas, sollte aber ohne weitere Fragen/Probleme durchlaufen.

    Fertig! Boote jetzt einfach mal Trisquel GNU/Linux um zu überprüfen, ob es funktioniert hat. Bei mir läuft der Chipsatz jetzt seit knapp einem Monat ohne Probleme und (gefühlt) sogar stabiler als der originale Intel-Chip. 😉