The ROM you wish to apply the fix to must be deodexed so that framework.jar can be modified.
1) Add the line "rssi_offset=-20" to /system/etc/calibration.
2) Extract framework.jar and pull out classes.dex.
3) Download baksmali and smali and put them in the same folder as classes.dex.
4) Open a command prompt, cd to the folder, and run the following command to decompile classes.dex:
java -jar baksmali-1.3.0.jar -o classout/ classes.dex
The decompiled code will be in a new folder named classout.
5) Open /classout/android/net/wifi/WifiManager.smali with a text editor. I use Notepad++. There are 7 RSSI values in this file that need to be edited. Two are defines in the beginning of the file (MIN_RSSI and MAX_RSSI) and five more are in the calculateSignalLevel method. They need to be adjusted by the same amount you set in the calibration file. Note that the values in this file are in HEX. Convert them to decimal, subtract 20 (or whatever value you set in the calibration file), and then convert the result back to HEX.
6) Delete the original classes.dex file and recompile using the following command:
java -Xmx512M -jar smali-1.3.0.jar classout/ -o classes.dex
7) Use something like 7-zip file manager to drop your new classes.dex into framework.jar.
1) Add the line "rssi_offset=-20" to /system/etc/calibration.
2) Extract framework.jar and pull out classes.dex.
3) Download baksmali and smali and put them in the same folder as classes.dex.
4) Open a command prompt, cd to the folder, and run the following command to decompile classes.dex:
java -jar baksmali-1.3.0.jar -o classout/ classes.dex
The decompiled code will be in a new folder named classout.
5) Open /classout/android/net/wifi/WifiManager.smali with a text editor. I use Notepad++. There are 7 RSSI values in this file that need to be edited. Two are defines in the beginning of the file (MIN_RSSI and MAX_RSSI) and five more are in the calculateSignalLevel method. They need to be adjusted by the same amount you set in the calibration file. Note that the values in this file are in HEX. Convert them to decimal, subtract 20 (or whatever value you set in the calibration file), and then convert the result back to HEX.
6) Delete the original classes.dex file and recompile using the following command:
java -Xmx512M -jar smali-1.3.0.jar classout/ -o classes.dex
7) Use something like 7-zip file manager to drop your new classes.dex into framework.jar.