I always hate those PC manufacturers who put so called hardware whitelist in the BIOS, I understand they did this for the benefits of the company by blocking “unauthorized” devices. However, as customer, I believed that at least I have the rights to study and control my own machine, just like the jailbreak on the Apple devices.
Lenovo Y450 is a classic model for Ideapad series and it was popular 4 years ago. And due to a very similar hardware specification from MacBookPro on that day, it is not so difficult to install OS X on it and made almost all devices work perfectly. I believe this is one of the reason why some people are still using it today. The fact is, as for a nearly 5 years old laptop, in order to meetup the performance needed for daily use, a hardware upgrading would be necessary. Here is a typical upgrade solution which many people actually tried and worked well:
CPU: Up to Intel Core 2 Duo T9900
MEM: Up to 2 * 4GB DDR3-1066
HDD -> SSD
WLAN card: Intel 5100/BCM94312 (not well supported in OS X) -> something else
For people want to run OS X on the Y450, the replacement of the wireless card may become the most tricky one. A whitelist in BIOS shall prevent you from using any other cards except those on the list. Three years ago, when I tried to use an AR9280, which was natively supported by OS X, on my Y450, I got a ERROR in the POST and I was not able to boot any OS on any bootable media. Luckily, there was already a WLAN whitelist check removal BIOS file spreading on the Internet, I just grabbed and flashed that to make my life easy and happy.
However, the real problem came just days ago when I purchased a BCM94360CD module, which actually a working part of the iMac 2013. The basic idea is, I want to use this card to enable “Handoff” on OS X 10.10, and my BIOS was already removed the WLAN whitelist check, so there shouldn’t be any problems. What shocked me was when I finished installed this card and powered up my laptop, I met a ERROR message again during the POST with a slight difference said “Not supported wireless WAN”. That was really an “unhandled exception” to me because I didn’t understand why this card was treated as a WWAN card and if there was another checking mechanism to detect “unauthorized” WWAN card.
Actually this kind of challenge indeed motivated me to study deep into it and I finally found the way to solve this issue. So, thank you, Lenovo.
Here is a basic walkthrough on how I found and removed the WWAN whitelist check in the BIOS.
-> Extract BIOS and locate the whitelist
First, the BIOS file should be extracted from the WPH file. To simplify the step, I used Andy’s PhoenixTool to extract the BIOS.
After the BIOS is extracted, a hex editor would be required for searching the hex string in all the BIOS modules. The string for search can be any PID/VID pair of the “authorized” WWAN card in the whitelist.
By unpacking the driver installation package provided in the official Y450 support site. I found the following PID/VID pair:
DB0B/0019 -> Lenovo
D112/0310 -> Huawei
D112/0110 -> Huawei
D219/EDFF -> ZTE
I found the match in the “MOD_5100.ROM”, that’s exactly the module where the WWAN whitelist located.
-> Understand the logic and disable the check
After disassembling this specific module, the whitelist was clearly revealed on offset 349A:
To disable the whitelist check, just change 0x34D2 to “mov ax, 1”, as showed above.
Finally, just pack the BIOS file back and flash it. The WWAN whitelist check is disabled and it can accept ANY WLAN/WWAN card now. For some reason, the BCM94360 card would be recognized as WLAN+WWAN card. Thus, only using a WLAN whitelist removed BIOS would not work. Actually, the WLAN whitelist check mechanism, which is located in the “MISER00.ROM”, is actually very similar to the WWAN check and can be disabled by studying the ASM code.
There are many PC, especially laptops, do have the device whitelist in the BIOS, but not every model can be modified in this way. If you want to modify your BIOS, please do it with caution, incorrect modification may make your PC unbootable.
I would be grateful if you truly finished reading this. And I wish you good luck from the bottom of my heart. ^_^