I've done it myself. It's not a total solution but works. I'd like to share my experience as following.
Things should be prepared
- PhoenixTool v1.90
- RW v1.50
- A hex editor
- The preinstalled WiFi module's hardware ID. For my X230, it's VEN_10EC&DEV_8176&SUBSYS_819510EC(seen from device manager)
- The new module's hardware ID(if not known, install it and X230 will tell you the ID on its' startup halt screen, just record it). For Intel Centrino 2230, it's 8086/0888/8086/4262(seen from the startup halt screen)
Specially, a Linux environment is recommended to speed up to find out the file which contains white list
Then following steps may be help
1. Download the lastest BIOS from Lenovo, for this case, it's
http://driverdl.lenovo.com.cn/think/down.../5794/BIOS[g2uj15us].exe
2. Execute the download EXE file to extact the BIOS files but not install the new BIOS. By default, the BIOS file will the extracted to
C:\DRIVERS\FLASH\g2uj15us
3. Lauch the PhoenixTool
a) In the 'Original' field, choose the file 'C:\DRIVERS\FLASH\g2uj15us\G2ET97WW\$01D3000.FL2' for it
b) Launch DW and then simple press Ctrl+F2 to save a copy of ACPI table, you can save it under C:\DRIVERS\FLASH\g2uj15us\G2ET97WW as the default file name AcpiTbls.rw
c) Back to PhoenixTool, choose the new saved RW file in field ' RW file'
d) Click the 'Advanced' button in the bottom of PhoenixTool, make sure you've choosed the following 2 options
- Allow user to modify other module
- No SLIC
e) Click 'Go' button in the bottom of PhoenixTool and wait until the popup window 'You can now make manual alternations...' appears.
!!!Important, don't click the 'OK' button now, we need to change the white list before we click the 'OK' button
f) Under the folder C:\DRIVERS\FLASH\g2uj15us\G2ET97WW\DUMP, we have near 2,000 files. The while list file is among them. I don't know the naming rule for these files and just know there will be one or more files should contain the white list. We have got the device ID from device manager as VEN_10EC&DEV_8176&SUBSYS_819510EC which should be translated to 'EC107681EC109581'. Then it will be a huge job to find the hex string among the 2,000 files. Now we can turn to Linux, just copy the files to a Linux system and then save following code as a shell script(x230.sh)
#!/bin/bash
for file in /tmp/DUMP/*.ROM; do
xxd $file |grep -q -i 'ec10 7681 ec10 9581'
echo $? '-' $file
done
Then run the follwing command,
./x230.sh |grep '0 - '
And I got the result
0 - /tmp/DUMP/79E0EDD7-9D1D-4F41-AE1A-F896169E5216_1_1457.ROM
So we find the whitelist file
g) Open the hex editor, find the hex string, replace the new hardware ID and save it
h) Return to PhoenixTool ,click the 'OK' button and wait it to finish. It will generate the new BIOS file '$01D3000_SLIC.FL2'.
4. Save the old BIOS file $01D3000.FL2 then use ''$01D3000_SLIC.FL2' to replace it.
5. Run the BIOS utility C:\DRIVERS\FLASH\g2uj15us\WINUPTP.exe to flash the new modified BIOS
Enjoy it