引言
這樣的BIOS論壇上就有得下載,為什么要自己搞那么高風(fēng)險(xiǎn)的事情呢?只要是出于兩方面的考慮:一方面,某些機(jī)型的MOD BIOS論壇上沒得下載,就好像我的R61i 8943機(jī)型;另一方面,論壇上下載的MOD BIOS很難全面跟得上官方更新速度。從年初開始我一直在關(guān)注R61i 8943A18 15寸普屏機(jī)型解除1802、1804和“白清單”限制的BIOS,并通過多種方式聯(lián)系國內(nèi)、外的高手,但到前兩天為止都還沒有此機(jī)型的MOD BIOS放出來。
參考forum.thinkpads.com論壇里Zender網(wǎng)友發(fā)表的修改BIOS資料后,決定自己動(dòng)手。經(jīng)過這兩天日日夜夜的折騰,于今天上午終于完成了對(duì)R61i 8943機(jī)型BIOS的修改,并在我的機(jī)子上測(cè)試通過。給機(jī)子升級(jí)的聯(lián)想拆機(jī)Intel WiFi Link 5100 AGN無線網(wǎng)卡工作完美,無須絕緣第20腳,開機(jī)無1802報(bào)錯(cuò),硬件無線開關(guān)和Fn F5組合鍵,無線指示燈全部工作正常。
可行性研究
ThinkPad筆記本電腦自從T43起更改了BIOS對(duì)無線網(wǎng)卡檢測(cè)機(jī)制,再也不能像之前的機(jī)型那簡單“跳過”處理來解決非認(rèn)證網(wǎng)卡使用的問題。經(jīng)Zender網(wǎng)友的研究發(fā)現(xiàn):新機(jī)型,例如我的R61i,BIOS里面對(duì)無線網(wǎng)卡檢測(cè)代碼存放在BIOSCODE區(qū)域的B.05模塊里面。B.05模塊的無線網(wǎng)卡相關(guān)內(nèi)容包括兩方面主要內(nèi)容:1、認(rèn)證的無線網(wǎng)卡數(shù)據(jù),即我們所說的“白清單”或者“whitelist”;2、無線網(wǎng)卡檢測(cè)過程及檢測(cè)結(jié)果數(shù)據(jù)的傳送。由此可以看出實(shí)現(xiàn)對(duì)非認(rèn)證無線網(wǎng)卡的使用可以從三方面入一手:
1、把非認(rèn)證的無線網(wǎng)卡數(shù)據(jù)加入到B.05模塊中,但此方法不太實(shí)際,非認(rèn)證的無線網(wǎng)卡實(shí)在太多了,對(duì)用戶來說用哪張無線網(wǎng)卡就加那張卡的數(shù)據(jù)入去也不容易操作;
2、修改B.05模塊中對(duì)無線網(wǎng)卡檢測(cè)過程,這個(gè)方法看上去不錯(cuò),但實(shí)際操作起來也有非常大的困難,主要因?yàn)椴煌藱z測(cè)過程不同,而且要修改多處,例如R61i 8943就要修改50多處;
3、更改無線網(wǎng)卡檢測(cè)結(jié)果,在B.05模塊對(duì)無線網(wǎng)卡檢測(cè)后,無論其檢測(cè)結(jié)果如何都把其檢測(cè)的結(jié)果更改為“是”。所以第三個(gè)方法最好,只要更改一處理論上就可以實(shí)現(xiàn)對(duì)所有非認(rèn)證的無線網(wǎng)卡的正常使用。
B.05模塊對(duì)無線網(wǎng)卡的檢測(cè)首先檢測(cè)miniPCI-E插槽有沒有無線網(wǎng)卡,如果檢測(cè)到有無線網(wǎng)卡就讀取無線網(wǎng)卡的硬件數(shù)據(jù)。然后拿這個(gè)讀取得來的數(shù)據(jù)在“白清單”查找,查找的結(jié)果存放某個(gè)狀態(tài)寄存器里面。此狀態(tài)寄存器被清除(即清0),表示miniPCI-E插槽上沒有無線網(wǎng)卡或者無線網(wǎng)卡是通過認(rèn)證的;此狀態(tài)寄存器被設(shè)置(即置1),表示此無線網(wǎng)卡非認(rèn)證的,同時(shí)給無線網(wǎng)卡第20腳發(fā)送一個(gè)無線傳輸關(guān)閉的信號(hào)(“radio disable”)。只要在B.05模塊對(duì)無線網(wǎng)卡的檢測(cè)后,人為再將這個(gè)狀態(tài)寄存器清0一次即可。
實(shí)現(xiàn)過程設(shè)計(jì)
在總結(jié)forum.thinkpads.com論壇Zender和本論壇cayman網(wǎng)友的經(jīng)驗(yàn),并作了一些簡化后得出如下實(shí)現(xiàn)過程:
1、獲得ThinkPad BIOS的鏡像文件。利用官方網(wǎng)站的BIOS升級(jí)文件包中WinPhlash.exe程序通過對(duì)BIOS進(jìn)行備份便可以獲得BIOS鏡像文件。
2、從BIOS鏡像文件中提取BIOSCODE區(qū)域的B.05模塊。運(yùn)行phnxdeco.exe后,生成的phoenix_.B5便是BIOSCODE區(qū)域的B.05模塊。
3、通過修改phoenix_.B5文件實(shí)現(xiàn)在B.05模塊對(duì)無線網(wǎng)卡的檢測(cè)后將狀態(tài)寄存器清0。此過程由phnxpatch.exe完成。
4、把修改后的phoenix_.B5壓縮文件成B.05模塊。prepare.exe實(shí)現(xiàn)對(duì)phoenix_.B5壓縮。
5、把修改后的B.05模塊放回BIOS鏡像文件中的BIOSCODE區(qū)域。此過程由phnxmod.exe完成。
6、更新修改后的BIOS鏡像文件校驗(yàn)碼。此過程由phnxcksm.exe完成。
7、把修改后的BIOS鏡像文件刷回ThinkPad中。再次利用WinPhlash.exe刷新BIOS。
詳細(xì)實(shí)現(xiàn)過程
先到ThinkPad官方網(wǎng)站上下載對(duì)應(yīng)最新的BIOS硬盤版升級(jí)程序,按官方說明更新BIOS。下載本貼的附件,解壓后會(huì)成生一個(gè)名為bios_mod的文件夾,里面包含修改所需的程序。此過程都在此文件夾里面完成。然后開始修改BIOS。
1、獲得ThinkPad BIOS鏡像文件。
首先找到官方的BIOS升級(jí)程序所在的文件夾,一般在C:/DRIVERS/FLASH里面。然后運(yùn)行WinPhlash.exe程序,并設(shè)置為只備份BIOS的操作模式,填入BIOS備份文件名:bios.bak,點(diǎn)擊“Browes”按鈕找到程序所在的文件夾里面擴(kuò)展名FL1的BIOS文件,然后點(diǎn)擊右下角的“Backup BIOS”按鈕進(jìn)行備份BIOS。程序運(yùn)行完成后,便會(huì)在程序所在文件夾里生成一個(gè)名為bios.bak的BIOS鏡像文件。把這個(gè)bios.bak文件復(fù)制到bios_mod的文件夾里面。
2、從BIOS鏡像文件中提取BIOSCODE區(qū)域的B.05模塊。
打開命令行窗口,并進(jìn)入到名為bios_mod的文件夾中。
輸入命令:phnxdeco bios.bak -x
回車運(yùn)行。運(yùn)行完畢后會(huì)在bios_mod文件夾中生成幾十個(gè)文件。在生成的文件中找到名為:phoenix_.B5的文件,并復(fù)制到此目錄下名為:models的文件夾里面。然后把那些生成的多余的文件刪除,以防出錯(cuò)。
3、修改phoenix_.B5文件
在命令行窗口里面輸入命令:phnxpatch patches models
回車運(yùn)行。程序運(yùn)行完畢后會(huì)在models文件夾中生成名為:phoenix_.B5.patched文件。
此過程不能在Windows Vista下操作。
4、把修改后的phoenix_.B5文件壓縮成B.05模塊
把models文件夾中:
phoenix_.B5文件重命名為:old.b5
phoenix_.B5.patched文件重命名為:new.b5
把models文件夾中old.B5和new.B5兩文件復(fù)制到bios_mod文件夾中。
在命令行窗口里面輸入命令:prepare old.txt
回車運(yùn)行。
在命令行窗口里面輸入命令:prepare new.txt
回車運(yùn)行。
兩次命令運(yùn)行完畢后生成4個(gè)文件:OLD.LOG、OLD.MOD、NEW.LOG、NEW.MOD,其中OLD.MOD和NEW.MOD將在后面的操作過程中會(huì)用到。
查看OLD.MOD和NEW.MOD兩文件的大小是否一樣,如果大小不一樣就要用HEX工具把NEW.MOD文件的最后增減“00”,直到與OLD.MOD一樣大小為止,否則將無法進(jìn)行下一步的工作。我的例子中,NEW.MOD文件比OLD.MOD小了7個(gè)字節(jié),所以要在其最后增加7個(gè)“00”使兩文件大小一樣。
5、把修改后名為NEW.MOD文件放回到BIOS鏡像文件:bios.bak中
在命令行窗口里面輸入命令:phnxmod bios.bak OLD.MOD NEW.MOD
回車運(yùn)行。
6、更新修改后的BIOS鏡像文件校驗(yàn)碼 在命令行窗口里面輸入命令:phnxcksm bios.bak
回車運(yùn)行。運(yùn)行完畢后,把bios.bak文件重命名為:bios.rom
7、把修改后的BIOS鏡像文件bios.rom刷回ThinkPad BIOS中
把bios_mod文件夾中名為:bios.rom的修改后的BIOS鏡像文件復(fù)制到官方BIOS升級(jí)程序所在的文件夾,一般在C:/DRIVERS/FLASH里面。然后在此文件中運(yùn)行WinPhlash.exe程序把修改后的BIOS鏡像文件bios.rom刷回ThinkPad。
測(cè)試結(jié)果
修改BIOS后的R61i用聯(lián)想拆機(jī)的Intel WiFi Link 5100 AGN無線網(wǎng)卡工作完美,無須絕緣第20腳,開機(jī)無1802報(bào)錯(cuò),硬件無線開關(guān)和Fn F5組合鍵工作正常,無線指示燈工作正常。
總結(jié)
單從結(jié)果上看似乎已經(jīng)是很久很之前的事情了,別人早就做過。可是很多事情別人都做的,看似很容易,如果沒有親身實(shí)驗(yàn),始終是沒辦體驗(yàn)到那過程的艱辛和樂趣。經(jīng)過此次動(dòng)手不但學(xué)會(huì)了如何修改ThinkPad的BIOS來解除1802、1804和“白清單”限制,同時(shí)在前人的基礎(chǔ)上對(duì)操作過程作了優(yōu)化,減少了修改過程中兩個(gè)步驟:解壓縮擴(kuò)展名為FL1的官方BIOS文件和壓縮修改后BIOS鏡像文件成為FL1文件,并使操作過程更簡單一些,全新過程直接在windows XP下實(shí)現(xiàn)。
注:
1、附件中部分文件和程序由forum.thinkpads.com論壇里Zender網(wǎng)友提供,版權(quán)為Zender網(wǎng)友所有。
2、未經(jīng)本人同意不得轉(zhuǎn)載。
補(bǔ)充:
1、phnxdeco.exe程序無法支持大于2M的BIOS鏡像文件,附件的phnxsplit.exe程序則可以,使用方法差不多。例如:X200的BIOS鏡像文件為8M,則要用phnxsplit.exe來提取BIOS模塊,并生成文件。
2、不同機(jī)型BIOSCODE中對(duì)無線網(wǎng)卡檢測(cè)及“白清單”代碼存放的模塊不同。但一定在由phnxsplit.exe程序生成以名為:BIOSCODExx.ROM的文件中,或者由phnxdeco.exe生成以名為:phoenix_.Bx文件中。
只要把這些文件,全部復(fù)制入models文件夾中即可。當(dāng)運(yùn)行phnxpatch程序后,models文件夾中生成以patched為擴(kuò)展名為破解后的文件。
例如X200的最新的3.03BIOS鏡像為8M,只能用phnxsplit.exe來提取BIOS模塊。運(yùn)行phnxpatch后在models文件夾中生成了BIOSCODE06.rom.patched,表明X200的最新的3.03BIOS的BIOSCODE中對(duì)無線網(wǎng)卡檢測(cè)及“白清單”代碼存放的模塊為BIOSCODE06。此時(shí)只要對(duì)BIOSCODE06處理即可,其它可以不理。
3、再把文件BIOSCODE06.rom重命名為:old.b5
件BIOSCODE06.rom.patched重命名為:new.b5
然后繼續(xù)其它步驟即可。
新聞熱點(diǎn)
疑難解答
圖片精選