Aktualizacja BIOS w ThinkPadzie T400 wydaje się prostą operacją, dopóki laptop ma sprawną baterię. Problem zaczyna się wtedy, gdy akumulator jest całkowicie zużyty i nie przyjmuje już ładowania. Oficjalne narzędzie Lenovo odmawia w takiej sytuacji rozpoczęcia aktualizacji, nawet jeśli komputer jest podłączony do stabilnego zasilacza. W moim przypadku sprawę dodatkowo komplikował bardzo stary BIOS oraz Embedded Controller w wersji 1.01.
Ostatecznie udało się zaktualizować ThinkPada T400 do BIOS-u 3.24 oraz EC 1.06 bez kupowania sprawnej baterii tylko na potrzeby flashowania. Droga do tego celu była jednak znacznie bardziej interesująca, niż początkowo zakładałem.
Opisywany egzemplarz to ThinkPad T400 z procesorem Intel Core 2 Duo P8400. Laptop trafił do mnie w wyjątkowo dobrym stanie, ale jego bateria była całkowicie martwa. Ponieważ planuję dalszą modernizację sprzętu, a docelowo także instalację coreboota, chciałem najpierw doprowadzić fabryczny firmware Lenovo do ostatnich dostępnych wersji. Dzięki temu mam pewny punkt wyjścia i aktualny firmware Embedded Controllera przed rozpoczęciem bardziej zaawansowanych modyfikacji.
ThinkPad T400 – stary BIOS 2.12 i Embedded Controller 1.01
Po wejściu do BIOS Setup okazało się, że komputer ma naprawdę starą wersję oprogramowania:
BIOS Version: 2.12 (7UET64WW)
BIOS Date: 2009-03-13
Embedded Controller Version: 1.01
CPU: Intel Core 2 Duo P8400 2.26 GHz
Identyfikator 7U jest tutaj istotny. Lenovo przygotowało dla T400 i R400 dwie linie BIOS-u. Dla platformy 7Uxxxxxx finalnym oficjalnym wydaniem jest BIOS 3.24 / 7UET94WW, współpracujący z Embedded Controller Program 1.06.
Oficjalny pakiet Lenovo został przygotowany w taki sposób, aby przeprowadzać aktualizację przy podłączonym zasilaczu i odpowiednio naładowanej baterii. Jest to zabezpieczenie na wypadek utraty zasilania podczas zapisu firmware.
I właśnie bateria okazała się największym problemem.
Akumulator w moim T400 był wykrywany przez komputer, ale nie ładował się. Klasyczna procedura aktualizacji kończyła się więc komunikatem dotyczącym zbyt niskiego poziomu baterii. Z technicznego punktu widzenia komputer był stabilnie zasilany z zasilacza, jednak narzędzie Lenovo nie pozwalało przejść dalej.
Aktualizacja BIOS T400 przy martwej baterii
- Pomyślna aktualizacja BIOS-u ThinkPada T400 do wersji 3.24 za pomocą Phoenix WinPhlash64
Pierwszym celem było podniesienie głównego BIOS-u z wersji 2.12 do 3.24. Oficjalny pakiet dla Windows zawiera dwa zestawy firmware przeznaczone dla linii 7U oraz 7V.
W przypadku mojego T400 interesował mnie katalog:
7UET94WW
Znajdują się w nim między innymi dwa duże pliki:
$01B8200.FL1
$01B8200.FL2
Standardowy aktualizator Lenovo pod Windows nie chciał jednak rozpocząć procedury z powodu martwej baterii. Rozwiązaniem okazał się program Phoenix WinPhlash64, czyli narzędzie wykorzystywane przez Lenovo w części starszych pakietów BIOS.
Plik $01B8200.FL1 został przygotowany jako:
bios.rom
natomiast $01B8200.FL2 jako:
platform.rom
Po wskazaniu bios.rom w WinPhlash64 udało się przeprowadzić aktualizację głównego BIOS-u mimo niesprawnego akumulatora.
Po restarcie BIOS Setup pokazał:
BIOS Version: 3.24 (7UET94WW)
BIOS Date: 2012-10-17
Embedded Controller Version: 1.01
Pierwszy etap zakończył się więc powodzeniem. BIOS został zaktualizowany z wersji 2.12 do finalnego wydania 3.24, ale Embedded Controller nadal pozostawał na starej wersji 1.01.
BIOS i Embedded Controller w ThinkPadzie to nie to samo
To ważny element całej historii. Aktualizacja głównego BIOS-u nie musi oznaczać automatycznej aktualizacji firmware Embedded Controllera, szczególnie jeśli omijamy standardowy mechanizm producenta.
Embedded Controller, czyli EC, jest osobnym kontrolerem odpowiedzialnym za część funkcji sprzętowych laptopa. W starszych ThinkPadach uczestniczy między innymi w obsłudze:
- zasilania i baterii,
- klawiatury oraz części przycisków funkcyjnych,
- wentylatora i kontroli termicznej,
- stanów uśpienia i wybudzania,
- niektórych elementów komunikacji pomiędzy sprzętem a firmware.
Właśnie dlatego przed instalacją coreboota zależało mi na doprowadzeniu również EC do ostatniej wersji 1.06. Nie chciałem zostawiać laptopa z finalnym BIOS-em, ale firmware kontrolera pochodzącym jeszcze z początku okresu produkcji T400.
Bootowalny BIOS Lenovo i Ventoy
Lenovo udostępniło również bootowalny obraz aktualizacyjny dla T400 i R400. Jest to niewielkie środowisko DOS zawierające właściwe narzędzia flashujące oraz obrazy firmware.
Obraz udało się uruchomić z użyciem Ventoya. Sam start nie rozwiązywał jednak problemu, ponieważ oficjalna procedura nadal wykonywała kontrolę stanu baterii.
Po wyciągnięciu zawartości obrazu można znaleźć katalog FLASH, a w nim między innymi:
FLASH2.EXE
UPDTFLSH.EXE
PHLASH16.EXE
FI.EXE
FP.EXE
Znajdują się tam również katalogi:
7UET94WW
7VET95WW
W katalogu 7UET94WW, odpowiadającym mojemu T400, znajdowały się:
$01B8200.FL1
$01B8200.FL2
06FD.HSH
1067A.HSH
10674.HSH
10676.HSH
Miałem więc kompletne, oryginalne środowisko aktualizacyjne Lenovo. Problemem pozostawało tylko zabezpieczenie wymagające naładowanej baterii.
FLASH2 /U i błąd Battery charge is low
Jednym ze znanych przełączników starego programu FLASH2 jest parametr /U. Pozwala on wymusić uruchomienie procedury aktualizacyjnej również w sytuacji, gdy system uznaje, że aktualizacja normalnie nie jest konieczna.
W przypadku mojego ThinkPada T400 nie omijał jednak kontroli baterii.
Po wpisaniu:
FLASH2 /U
program odpowiadał:
Checking for files and environment ...
Check failed. Return code = 14
!!! Battery charge is low !!!
Ten sam komunikat pojawiał się zarówno przy zwykłym FLASH2, jak i po zastosowaniu /U.
To istotna informacja, ponieważ w starszych poradnikach dotyczących ThinkPadów można znaleźć sugestie, że samo użycie /U pozwala ominąć zabezpieczenie związane z baterią. W przypadku T400 i użytej przeze mnie finalnej wersji narzędzia tak się nie stało.
Jak ominąłem kontrolę baterii w UPDTFLSH
Kolejnym krokiem była analiza programu UPDTFLSH.EXE znajdującego się w oficjalnym obrazie Lenovo.
W binarce można znaleźć odwołania do kontroli:
/AC
/BATT
Aktualizator sprawdza więc osobno obecność zasilacza oraz stan baterii. To pozwoliło na wykonanie bardzo niewielkiej modyfikacji programu.
W kopii UPDTFLSH.EXE ciąg:
/BATT
został zastąpiony przez:
/AC
z zachowaniem długości struktury pliku.
W praktyce program zamiast wykonywać kontrolę stanu baterii ponownie sprawdza obecność zasilania sieciowego. Sam kod odpowiedzialny za właściwy proces aktualizacji firmware pozostał niezmieniony.
Trzeba podkreślić, że nie jest to oficjalnie wspierana przez Lenovo metoda aktualizacji. Wymóg naładowanej baterii jest zabezpieczeniem przed utratą zasilania podczas programowania układów. Flashowanie bez działającego akumulatora oznacza, że przypadkowe wyrwanie przewodu zasilacza może skończyć się uszkodzeniem firmware.
Ręczna aktualizacja Embedded Controllera
- updtflsh.exe
Zmodyfikowany UPDTFLSH.EXE został umieszczony w bootowalnym środowisku DOS razem z oryginalnymi plikami firmware Lenovo.
Pliki z katalogu:
7UET94WW
skopiowałem bezpośrednio do:
C:\FLASH
W katalogu znajdowały się więc między innymi:
$01B8200.FL1
$01B8200.FL2
06FD.HSH
1067A.HSH
10674.HSH
10676.HSH
Następnie ręcznie uruchomiłem:
UPDTFLSH
Tym razem kontrola baterii nie zatrzymała procesu.
Na ekranie pojawił się komunikat:
Now updating...
It may take about 1 minute.
Do not turn off the computer during the update.
Do not remove the CD during the update.
Procedura przebiegła do końca. Program informował również, że aktualizacja firmware może być kontynuowana przez BIOS podczas następnego uruchomienia komputera.
Na samym końcu T400 wydał jeden długi sygnał dźwiękowy.
Początkowo wyglądało jednak na to, że cała operacja nie przyniosła oczekiwanego rezultatu.
Embedded Controller nadal pokazywał wersję 1.01
Po ponownym uruchomieniu komputera wszedłem do BIOS Setup.
BIOS główny nadal był poprawnie zaktualizowany:
BIOS Version: 3.24 (7UET94WW)
ale EC wciąż zgłaszał:
Embedded Controller Version: 1.01
Wyglądało więc na to, że aktualizacja Embedded Controllera się nie udała, mimo że updater nie zgłosił błędu.
Na tym etapie łatwo byłoby ponownie przeprowadzić cały flash albo zacząć eksperymentować z kolejnymi narzędziami. Jak się jednak okazało, nie było to potrzebne.
Pełne odłączenie baterii ujawniło EC 1.06
Laptop został całkowicie wyłączony. Odłączyłem zasilacz oraz główną baterię, pozostawiając komputer przez chwilę całkowicie pozbawiony zasilania.
Po ponownym podłączeniu zasilacza uruchomiłem T400 i wszedłem do BIOS Setup.
Tym razem zobaczyłem:
BIOS Version: 3.24 (7UET94WW)
BIOS Date: 2012-10-17
Embedded Controller Version: 1.06
Aktualizacja Embedded Controllera jednak została wykonana prawidłowo.
Najwyraźniej zwykły restart nie powodował pełnego zresetowania kontrolera. Dopiero fizyczne odłączenie zasilania i baterii spowodowało ponowne uruchomienie EC z nowym firmware.
To chyba najważniejsza praktyczna informacja z całego procesu. Jeśli po aktualizacji Embedded Controllera w ThinkPadzie T400 BIOS nadal pokazuje starą wersję, nie należy od razu ponownie wykonywać flashowania.
Najpierw warto całkowicie wyłączyć laptop, odłączyć zasilacz, wyjąć główną baterię, odczekać chwilę, a następnie ponownie podłączyć zasilanie i uruchomić komputer.
W moim przypadku dopiero po wykonaniu tych czynności BIOS zaczął raportować EC 1.06.
Finalny BIOS i EC w ThinkPadzie T400
Ostatecznie ThinkPad T400 został zaktualizowany z konfiguracji:
BIOS 2.12 / 7UET64WW
EC 1.01
do:
BIOS 3.24 / 7UET94WW
EC 1.06
To ostatnie oficjalne wersje firmware przeznaczone dla tej linii T400.
- ThinkPad T400 po aktualizacji – BIOS 3.24 (7UET94WW) i Embedded Controller 1.06
Cała operacja okazała się znacznie bardziej skomplikowana niż typowe uruchomienie programu aktualizacyjnego pod Windowsem. Główną przyczyną była całkowicie zużyta bateria, której nie dało się naładować do poziomu wymaganego przez narzędzia Lenovo.
Jednocześnie cała historia dobrze pokazuje konstrukcję firmware starszych ThinkPadów. BIOS i Embedded Controller są osobnymi elementami, a ręczna aktualizacja jednego z nich nie musi automatycznie oznaczać aktualizacji drugiego.
Czy warto aktualizować BIOS i EC przed instalacją coreboota?
W przypadku zwykłego, sprawnego T400 nie ma potrzeby aktualizowania firmware wyłącznie dla samej zmiany numeru wersji. Jeżeli komputer działa poprawnie i nie planujemy żadnych eksperymentów, pozostawienie starszego firmware może być rozsądnym rozwiązaniem.
Sytuacja wygląda inaczej, jeśli laptop ma być bazą do dalszych modyfikacji.
W moim przypadku T400 będzie dalej modernizowany. Plan obejmuje między innymi 8 GB pamięci DDR3, SSD, mocniejsze chłodzenie 45N6144, szybszy procesor Core 2 Duo, prawdopodobnie dalsze eksperymenty z procesorami, instalację coreboota oraz Debiana z XFCE jako docelowy system.
Przed wymianą fabrycznego firmware chciałem więc doprowadzić komputer do stanu, który można uznać za finalny dla oryginalnego oprogramowania Lenovo. Dopiero wtedy ma sens wykonanie pełnej kopii ROM-u i rozpoczęcie zabawy z corebootem.
Cała operacja zaczęła się od pozornie prostego pomysłu: zaktualizować BIOS w kilkunastoletnim ThinkPadzie. Skończyła się analizą narzędzi Phoenix, modyfikacją kontroli baterii, bootowaniem DOS-a przez Ventoy i ręczną aktualizacją Embedded Controllera. Finalnie jednak T400 działa już na BIOS-ie 3.24 i EC 1.06, więc pierwszy etap jego modernizacji można uznać za zakończony.




0 komentarzy