IBM ThinkPad, niefirmowa karta miniPCI i "Error 1802"


    Część sprzedawanych obecnie notebooków ThinkPad firmy IBM, nie wyposażonych w bezprzewodowe karty sieciowe WiFi (standard 802.11 a/b/g) określana jest przez producenta jako "wireless upgradeable". Oznacza to, że pomimo braku zainstalowanej fabrycznie karty WiFi posiadają one zamontowany w obudowie monitora LCD zespół anten. Ich rozbudowa do standardu WiFi wymaga więc tylko umieszczenia w znajdującym się od spodu komputera slocie odpowiedniej karty WiFi wykonanej w standardzie miniPCI.
    W chwili obecnej na rynku dostępnych jest wiele modeli takich kart, jednakże próby użycia kart nie będących wyrobami marki IBM kończą się zablokowaniem komputera podczas jego uruchamiania i wyświetleniem dziwnie brzmiącego komunikatu:
ERROR 1802: Unauthorized network card is plugged in. Power off and remove the miniPCI network card.

    Jakie są tego powody? Można tylko zgadywać. IBM twierdzi, że jest to wymóg prawny, stawiany m.in. przez FCC (tylko co ma FCC do rynku europejskiego?). Niepodważalnym faktem pozostaje jednak, że IBM nie jest w swym postępowaniu wyjątkiem i blokada taka istnieje także w komputerach innych producentów (np. HP/Compaq).
Co ciekawe oczywiście IBM sam nie produkuje żadnych kart WiFi, firmuje
tylko swoją marką wyroby innych producentów i sprzedaje je później za odpowiednio wyższą cenę.
Przykładem takiej karty może być Intel Wireless/Pro 2200BG, obsługująca zarówno standard 802.11b (11Mbit/s) jak i 802.11g (54Mbit/s). Jak się należałoby spodziewać karta ta, sprzedawana jako wyrób OEM (i dostępna tanio na różnych serwisach aukcyjnych w cenie rzędu 100-200zł) nie chce wspólpracować z ThinkaPadami, natomiast ta sama karta sprzedawana przez IBM-a współpracuje z ThinkPadami bezproblemowo.
Dlaczego tak jest?
Otóż w BIOS-ie ThinkPadów zaszyta jest specjalna lista określająca z którymi kartami miniPCI komputer może współpracować, a z którymi nie. I na liście tej znajdują się tylko i wyłącznie karty rozprowadzane i firmowane przez koncern IBM.
Tutaj pojawia się pytanie skąd komputer wie jaką kartę ma włożoną?
Otóż każda karta zgodna ze standardem PCI posiada w swojej pamięci konfiguracyjnej specjalny identyfikator określający zarówno producenta, jak i model karty.
Przykładowo identyfikatorem karty Intel 2200BG OEM przeznaczonej na rynek europejski jest ciąg:

VEN_8086&DEV_4220&SUBSYS_27028086
Ciąg "VEN_8086" oznacza producenta, firmę Intel. "DEV_4220" oznacza model karty (2200BG), zaś ciąg "2702" oznacza wykonanie OEM przeznaczone na rynek europejski ("2701" oznaczałoby wersję OEM przeznaczoną na rynek amerykański). Ta sama karta, firmowana przez IBM przedstawia się natomiast jako "2712" (wersja europejska) lub "2711" (wersja amerykańska) .
Pełny ciąg identyfikujący kartę Intel 2200BG, przeznaczoną na rynek europejski i firmowaną przez IBM-a wygląda zatem następująco:

VEN_8086&DEV_4220&SUBSYS_27128086

Czy można jakoś ominąć to zabezpieczenie? Oczywiście :-)

Uwaga!
Wszelkie informacje przedstawione poniżej są informacjami udostępnionymi w celach edukacyjnych. Korzystając z nich czynisz to tylko i wyłącznie na własne ryzyko i własną odpowiedzialność, gdyż mogą one doprowadzić do uszkodzenia komputera oraz utraty gwarancji.
Nie jest możliwe zapewnienie, że przedstawione poniżej rozwiązania będą działać one na wszystkich komputerach rodziny ThinkPad, aczkolwiek na moim IBM ThinkPad R40 oraz kilku innych modelach ThinkPadów osób piszących na forum AnandTech metoda numer 3 okazała się być skuteczną.


1. Pierwszym z możliwych rozwiązań jest przeprogramowanie pamięci karty tak, aby udawała ona kartę firmowaną przez odpowiedni koncern. Cała procedura i używane w tym celu oprogramowanie zależą tutaj od modelu karty i jedyny znany mi obecnie opis dotyczy kart Intel PRO/Wireless 2200BG (802.11 b/g) oraz Intel PRO/Wireless 2915ABG (802.11 a/b/g). Można go znaleźć na forum Anandtech (komputery IBM/HP/Compaq) oraz na stronie http://stachon.webpark.cz/ipw-eeprom.html (komputery HP/Compaq). Niestety w przypadku komputerów IBM dioda sygnalizująca działanie karty w dalszym ciągu nie będzie działać.

2. Drugie z  rozwiązań polega na zmodyfikowaniu listy dozwolonych kart zawartej w BIOS-ie. Niestety jest to rozwiązanie raczej dość skomplikowane, pracochłonne i  ryzykowne, wymagające w dodatku przeprowadzania go każdorazowo przy uaktualnianiu BIOS-a komputera.
Dla chcących poeksperymentować polecam nastepujący adres: http://www.paul.sladen.org/thinkpad-r31/wifi-card-pci-ids.html


3. Trzecim rozwiązaniem, najprostrzym i najmniej ryzykownym, jest zmiana tylko jednego bitu w pamięci konfiguracyjnej CMOS, tak aby wyłączyć korzystanie z zawartej w BIOS-ie listy. Do wykonania tego niezbędny jest mały programik, który można pobrać tutaj.
Uwaga: Program ten działa tylko z poziomu czystego DOS-a, nie działa uruchomiony pod systemem Windows. Konieczne jest więc wystartowanie komputera z bootowalnej dyskietki lub płyty CD z systemem DOS.

Używanie tańszych, niefirmowanych przez IBM-a kart powoduje również inne skutki uboczne:
  1. Nie będzie działać umieszczona pod wyświetlaczem komputera dioda LED sygnalizująca działanie karty radiowej. W chwili obecnej rozwiązanie tego problemu nie jest znane.
  2. Oryginalne oprogramowanie IBM Access Connection "nie zauważa" faktu istnienia kart WiFi niefirmowanych przez IBM. Rozwiązanie tego problemu jest stosunkowo proste, wymaga tylko wprowadzenia niewielkich poprawek na zawarte w dwóch plikach (Qcon.dll oraz TpFnF5C.exe) listy dozwolonego sprzętu.  (UWAGA! Poprawki te były skuteczne w przypadku wersji oprogramowania AccessConnection <= 3.81. Dla wersji późniejszych z powodu przeprogramowania pamięci EEPROM mojej  karty i2200BG prób już nie przeprowadzałem)
    Do wprowadzania modyfikacji można użyc np. darmowego edytora Hview2000.
    Oczywiście pamiętajmy o wykonaniu na wszelki wypadek kopii bezpieczeństwa modyfikowanych plików.
    Modyfikacja plików polega wprowadzeniu do nich ciągu identyfikującego naszą kartę. Najprościej można to wykonać poprzez wyszukanie najpierw ciągu znaków identyfikujących posiadaną przez nas model karty, ale firmowany przez IBM-a. Nastepnie wystarczy zmienić go na ciąg identyfikujący naszą kartę.
    Jak znaleźć jaki identyfikator ma nasza karta?
    Informację te można znaleźć w rejestrze systemowym Windows (klucze HKLM->System->CurrentControlSet->Enum->PCI albo HKCC->System->CurrentControlSet->Enum->PCI) lub też wykorzystując np. darmowy program diagnostyczny Everest.
    Przykładowo posiadamy kartę Intel 2200BG OEM, która identyfikowana jest podawanym już wcześniej na tej stronie ciągiem VEN_8086&DEV_4220&SUBSYS_27028086, podczas gdy wersja firmowana przez IBM identyfikowana jest jako   VEN_8086&DEV_4220&SUBSYS_27128086 (ciąg ten najszybciej znajdziemy przeglądając w dowolnym edytorze tekstowym plik .inf sterowników naszej karty)
    Jak widać jedyną różnicą między oboma ciagami jest "2702" oraz "2712". Dlatego też znajdujemy w pliku wszystkie wystąpienia (w Qcon.dll są dwa!) identyfikatora naszej karty firmowanej przez IBM (czyli 27128086) i zmieniamy go na identyfikator naszej karty (27028086). Ponieważ modyfikowane pliki mogą być zabezpieczone przed zmianami obliczaniem ich sumy kontrolnej, więc na wszelki wypadek modyfikujemy też identyfikatory jakiejś innej karty tak, aby suma wszystkich wprowadzonych przez nas zmian wyniosła zero. Przykładowo zmieniliśmy w dwóch miejscach w pliku Qcon.dll ciąg "2712" na "2702" (odjęliśmy jeden), więc w sąsiednich identyfikatorach ciąg "27118086" zamieniamy na "27118186" (dodajemy to, co wcześniej odjęliśmy). Nastepnie zapisujemy zmieniony plik i restartujemy system.
    Po wprowadzeniu zmian w pliku
    Qcon.dll nasza karta powinna być już widziana przez oprogramowanie IBM Acces Connection, po wprowadzeniu modyfikacji w TpFnF5C.exe powinno być także możliwe włączanie/wyłaczanie karty kombinacją klawiszy Fn + F5.


       Kontakt: mbaszyns malpa wp dot pl

Literatura:
  1. IBM non-authorised Mini-PCI wireless card, Sir?
  2. Linux-Kernel Archive: Solution to the "1802: Unauthorized network card" problem in recent thinkpad systems
  3. Strona Matthew Garretts-a
  4. Dyskusja na forum AnandTech
  5. Strona Congenio GmbH: Thinkpad Mini-PCI WLAN-Karten
  6. Changing subsystem ID for ipw2200/2915 cards
  7. f51 Bios with non HP 2200bg, Thanks Druid_cz

Data ostatniej aktualizacji 28.02.2006




Valid HTML 4.01!