[Vibrant General] Whitehawkx:
Modding the services.jar for all i9000 2.2.1 roms

Guess it's time to contribute something to this spot lol. So here it is...

One of the big things or rather most important things to remember is you need to mod the services.jar to fix rebooting when going below -80dBm and should most definitely add in birgertime's fix for the signal bars disappearing. I tend to be a source whore so this is exactly the changes that are needed to get it working.

1. Open the services.jar with WinRAR and extract the classes.dex file.

2. Decompile this in adb with the following command (minus quotes) - "java -jar baksmali.jar -o foldername/ classes.dex

This will extract the contents of the classes.dex file and put it into the folder name you choose to use.

3. Now open that folder and navigate to \com\android\server\status\StatusBarPolicy.smali

4 Open said file with Notepad++ for editing

To fix the rebooting when the phone drops below -80dBm you need to replace the entire first method. So scroll down to about line 227 and replace this

.method static constructor <clinit>()V
.registers 3

.prologue
const/4 v2, 0x5

const/4 v1, 0x4

.line 187
new-array v0, v2, [I

fill-array-data v0, :array_44

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 194
new-array v0, v2, [I

fill-array-data v0, :array_52

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sSignalImages_r:[I

.line 201
const/16 v0, 0x54

new-array v0, v0, [I

fill-array-data v0, :array_60

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sRoamingIndicatorImages_cdma:[I

.line 304
new-array v0, v1, [I

fill-array-data v0, :array_10c

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_g:[I

.line 310
new-array v0, v1, [I

fill-array-data v0, :array_118

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_3g:[I

.line 316
new-array v0, v1, [I

fill-array-data v0, :array_124

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_e:[I

.line 323
new-array v0, v1, [I

fill-array-data v0, :array_130

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_h:[I

.line 332
new-array v0, v1, [I

fill-array-data v0, :array_13c

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_1x:[I

.line 369
new-array v0, v1, [I

fill-array-data v0, :array_148

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sWifiSignalImages:[I

return-void

.line 187
:array_44
.array-data 0x4
0xdat 0x2t 0x8t 0x1t
0xdct 0x2t 0x8t 0x1t
0xdet 0x2t 0x8t 0x1t
0xe0t 0x2t 0x8t 0x1t
0xe2t 0x2t 0x8t 0x1t
.end array-data

.line 194
:array_52
.array-data 0x4
0xc4t 0x2t 0x8t 0x1t
0xc6t 0x2t 0x8t 0x1t
0xc8t 0x2t 0x8t 0x1t
0xcat 0x2t 0x8t 0x1t
0xcct 0x2t 0x8t 0x1t
.end array-data

.line 201
:array_60
.array-data 0x4
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
.end array-data

.line 304
:array_10c
.array-data 0x4
0xa7t 0x2t 0x8t 0x1t
0xact 0x2t 0x8t 0x1t
0xb6t 0x2t 0x8t 0x1t
0xb1t 0x2t 0x8t 0x1t
.end array-data

.line 310
:array_118
.array-data 0x4
0xa5t 0x2t 0x8t 0x1t
0xaat 0x2t 0x8t 0x1t
0xb4t 0x2t 0x8t 0x1t
0xaft 0x2t 0x8t 0x1t
.end array-data

.line 316
:array_124
.array-data 0x4
0xa6t 0x2t 0x8t 0x1t
0xabt 0x2t 0x8t 0x1t
0xb5t 0x2t 0x8t 0x1t
0xb0t 0x2t 0x8t 0x1t
.end array-data

.line 323
:array_130
.array-data 0x4
0xa8t 0x2t 0x8t 0x1t
0xadt 0x2t 0x8t 0x1t
0xb7t 0x2t 0x8t 0x1t
0xb2t 0x2t 0x8t 0x1t
.end array-data

.line 332
:array_13c
.array-data 0x4
0xa4t 0x2t 0x8t 0x1t
0xa9t 0x2t 0x8t 0x1t
0xb3t 0x2t 0x8t 0x1t
0xaet 0x2t 0x8t 0x1t
.end array-data

.line 369
:array_148
.array-data 0x4
0xf9t 0x2t 0x8t 0x1t
0xfat 0x2t 0x8t 0x1t
0xfbt 0x2t 0x8t 0x1t
0xfct 0x2t 0x8t 0x1t
.end array-data
.end method

with this

.method static constructor <clinit>()V
.registers 2

.prologue
const/4 v1, 0x4

.line 189
const/4 v0, 0x6

new-array v0, v0, [I

fill-array-data v0, :array_46

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 196
const/4 v0, 0x5

new-array v0, v0, [I

fill-array-data v0, :array_54

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sSignalImages_r:[I

.line 201
const/16 v0, 0x54

new-array v0, v0, [I

fill-array-data v0, :array_62

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sRoamingIndicatorImages_cdma:[I

.line 304
new-array v0, v1, [I

fill-array-data v0, :array_10e

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_g:[I

.line 310
new-array v0, v1, [I

fill-array-data v0, :array_11a

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_3g:[I

.line 316
new-array v0, v1, [I

fill-array-data v0, :array_126

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_e:[I

.line 323
new-array v0, v1, [I

fill-array-data v0, :array_132

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_h:[I

.line 332
new-array v0, v1, [I

fill-array-data v0, :array_13e

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sDataNetType_1x:[I

.line 369
new-array v0, v1, [I

fill-array-data v0, :array_14a

sput-object v0, Lcom/android/server/status/StatusBarPolicy;->sWifiSignalImages:[I

return-void

.line 187
nop

:array_46
.array-data 0x4
0xdat 0x2t 0x8t 0x1t
0xdct 0x2t 0x8t 0x1t
0xdet 0x2t 0x8t 0x1t
0xe0t 0x2t 0x8t 0x1t
0xe2t 0x2t 0x8t 0x1t
.end array-data

.line 194
:array_54
.array-data 0x4
0xc4t 0x2t 0x8t 0x1t
0xc6t 0x2t 0x8t 0x1t
0xc8t 0x2t 0x8t 0x1t
0xcat 0x2t 0x8t 0x1t
0xcct 0x2t 0x8t 0x1t
.end array-data

.line 201
:array_62
.array-data 0x4
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
0xd5t 0x2t 0x8t 0x1t
.end array-data

.line 304
:array_10e
.array-data 0x4
0xa7t 0x2t 0x8t 0x1t
0xact 0x2t 0x8t 0x1t
0xb6t 0x2t 0x8t 0x1t
0xb1t 0x2t 0x8t 0x1t
.end array-data

.line 310
:array_11a
.array-data 0x4
0xa5t 0x2t 0x8t 0x1t
0xaat 0x2t 0x8t 0x1t
0xb4t 0x2t 0x8t 0x1t
0xaft 0x2t 0x8t 0x1t
.end array-data

.line 316
:array_126
.array-data 0x4
0xa6t 0x2t 0x8t 0x1t
0xabt 0x2t 0x8t 0x1t
0xb5t 0x2t 0x8t 0x1t
0xb0t 0x2t 0x8t 0x1t
.end array-data

.line 323
:array_132
.array-data 0x4
0xa8t 0x2t 0x8t 0x1t
0xadt 0x2t 0x8t 0x1t
0xb7t 0x2t 0x8t 0x1t
0xb2t 0x2t 0x8t 0x1t
.end array-data

.line 332
:array_13e
.array-data 0x4
0xa4t 0x2t 0x8t 0x1t
0xa9t 0x2t 0x8t 0x1t
0xb3t 0x2t 0x8t 0x1t
0xaet 0x2t 0x8t 0x1t
.end array-data

.line 369
:array_14a
.array-data 0x4
0xf9t 0x2t 0x8t 0x1t
0xfat 0x2t 0x8t 0x1t
0xfbt 0x2t 0x8t 0x1t
0xfct 0x2t 0x8t 0x1t
.end array-data
.end method

The part that is getting replaced might looks slightly different on different builds, but the new part will always be the same.

DONE.

Now to fix the signal bars from disappearing. This is also done in the StatusBarPolicy.smali. Birgertime has already covered this in his thread here - http://xdaforums.com/showthread.php?t=981601. You CAN copy his method in this thread verbatim and replace the "UpdateSignalStrength" method and it WILL work. I on the other hand don't like to do a lot of copy and paste. ;) So if you are the same way this will explain exactly what needs to be changed. The original UpdateSignalStrength method looks like this.

.method private final updateSignalStrength()V
.registers 7

.prologue
const/4 v5, 0x0

.line 1278
const/4 v0, -0x1

.line 1282
.local v0, iconLevel:I
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->hasService()Z

move-result v2

if-nez v2, :cond_3d

iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mServiceState:Landroid/telephony/ServiceState;

if-eqz v2, :cond_3d

iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mServiceState:Landroid/telephony/ServiceState;

invoke-virtual {v2}, Landroid/telephony/ServiceState;->isEmergencyOnly()Z

move-result v2

if-nez v2, :cond_3d

.line 1284
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mContext:Landroid/content/Context;

invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "airplane_mode_on"

const/4 v4, 0x0

invoke-static {v2, v3, v4}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v2

const/4 v3, 0x1

if-ne v2, v3, :cond_35

.line 1286
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

const v3, 0x10802e9

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

.line 1290
:goto_2b
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mService:Lcom/android/server/status/StatusBarService;

iget-object v3, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneIcon:Landroid/os/IBinder;

iget-object v4, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

invoke-virtual {v2, v3, v4, v5}, Lcom/android/server/status/StatusBarService;->updateIcon(Landroid/os/IBinder;Lcom/android/server/status/IconData;Lcom/android/server/status/NotificationData;)V

.line 1334
:goto_34
return-void

.line 1288
:cond_35
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

const v3, 0x10802ea

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

goto :goto_2b

.line 1294
:cond_3d
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->isCdma()Z

move-result v2

if-nez v2, :cond_66

.line 1296
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mSignalStrength:Landroid/telephony/SignalStrength;

invoke-virtual {v2}, Landroid/telephony/SignalStrength;->getGsmSignalBar()I

move-result v0

.line 1312
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhone:Landroid/telephony/TelephonyManager;

invoke-virtual {v2}, Landroid/telephony/TelephonyManager;->isNetworkRoaming()Z

move-result v2

if-eqz v2, :cond_63

.line 1313
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages_r:[I

.line 1332
.local v1, iconList:[I
:goto_53
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

aget v3, v1, v0

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

.line 1333
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mService:Lcom/android/server/status/StatusBarService;

iget-object v3, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneIcon:Landroid/os/IBinder;

iget-object v4, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

invoke-virtual {v2, v3, v4, v5}, Lcom/android/server/status/StatusBarService;->updateIcon(Landroid/os/IBinder;Lcom/android/server/status/IconData;Lcom/android/server/status/NotificationData;)V

goto :goto_34

.line 1315
.end local v1 #iconList:[I
:cond_63
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.restart local v1 #iconList:[I
goto :goto_53

.line 1318
.end local v1 #iconList:[I
:cond_66
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 1323
.restart local v1 #iconList:[I
iget v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneState:I

if-nez v2, :cond_77

invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->isEvdo()Z

move-result v2

if-eqz v2, :cond_77

.line 1324
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->getEvdoLevel()I

move-result v0

goto :goto_53

.line 1329
:cond_77
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->getCdmaLevel()I

move-result v0

goto :goto_53
.end method

Birgertime explains in his thread that the issue comes in when the phone thinks you are roaming. So what BT did was throw in a dummie method if you will to bypass the roaming check. This is how the new method will look. The parts in BLUE are new code that will be ADDED. The parts in RED are what needs to be REMOVED.

.method private final updateSignalStrength()V
.registers 7

.prologue
const/4 v5, 0x0

.line 1278
const/4 v0, -0x1

.line 1282
.local v0, iconLevel:I
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->hasService()Z

move-result v2

if-nez v2, :cond_3d

iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mServiceState:Landroid/telephony/ServiceState;

if-eqz v2, :cond_3d

iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mServiceState:Landroid/telephony/ServiceState;

invoke-virtual {v2}, Landroid/telephony/ServiceState;->isEmergencyOnly()Z

move-result v2

if-nez v2, :cond_3d

.line 1284
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mContext:Landroid/content/Context;

invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "airplane_mode_on"

const/4 v4, 0x0

invoke-static {v2, v3, v4}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v2

const/4 v3, 0x1

if-ne v2, v3, :cond_35

.line 1286
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

const v3, 0x10802e9

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

.line 1290
:goto_2b
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mService:Lcom/android/server/status/StatusBarService;

iget-object v3, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneIcon:Landroid/os/IBinder;

iget-object v4, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

invoke-virtual {v2, v3, v4, v5}, Lcom/android/server/status/StatusBarService;->updateIcon(Landroid/os/IBinder;Lcom/android/server/status/IconData;Lcom/android/server/status/NotificationData;)V

.line 1334
:goto_34
return-void

.line 1288
:cond_35
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

const v3, 0x10802ea

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

goto :goto_2b

.line 1294
:cond_3d
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->isCdma()Z

move-result v2

if-nez v2, :cond_66

.line 1296
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mSignalStrength:Landroid/telephony/SignalStrength;

invoke-virtual {v2}, Landroid/telephony/SignalStrength;->getGsmSignalBar()I

move-result v0

[B][COLOR="Blue"].line 1312
#iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhone:Landroid/telephony/TelephonyManager;
#invoke-virtual {v2}, Landroid/telephony/TelephonyManager;->isNetworkRoaming()Z

.line 1367
const/4 v2, 0x5

if-ne v0, v2, :cond_4d

const/4 v0, 0x4

.line 1313
:cond_4d
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages_r:[I[/COLOR][/B]

.line 1332
.local v1, iconList:[I
:goto_53
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

aget v3, v1, v0

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

.line 1333
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mService:Lcom/android/server/status/StatusBarService;

iget-object v3, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneIcon:Landroid/os/IBinder;

iget-object v4, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

invoke-virtual {v2, v3, v4, v5}, Lcom/android/server/status/StatusBarService;->updateIcon(Landroid/os/IBinder;Lcom/android/server/status/IconData;Lcom/android/server/status/NotificationData;)V

goto :goto_34

[B][COLOR="Red"].line 1315
.end local v1 #iconList:[I
:cond_63
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.restart local v1 #iconList:[I
goto :goto_53[/COLOR][/B]

.line 1318
.end local v1 #iconList:[I
:cond_66
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 1323
.restart local v1 #iconList:[I
iget v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneState:I

if-nez v2, :cond_77

invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->isEvdo()Z

move-result v2

if-eqz v2, :cond_77

.line 1324
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->getEvdoLevel()I

move-result v0

goto :goto_53

.line 1329
:cond_77
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->getCdmaLevel()I

move-result v0

goto :goto_53
.end method

The end result for this method will look like this.

.method private final updateSignalStrength()V
.registers 7

.prologue
const/4 v5, 0x0

.line 1278
const/4 v0, -0x1

.line 1282
.local v0, iconLevel:I
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->hasService()Z

move-result v2

if-nez v2, :cond_3d

iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mServiceState:Landroid/telephony/ServiceState;

if-eqz v2, :cond_3d

iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mServiceState:Landroid/telephony/ServiceState;

invoke-virtual {v2}, Landroid/telephony/ServiceState;->isEmergencyOnly()Z

move-result v2

if-nez v2, :cond_3d

.line 1284
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mContext:Landroid/content/Context;

invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v2

const-string v3, "airplane_mode_on"

const/4 v4, 0x0

invoke-static {v2, v3, v4}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v2

const/4 v3, 0x1

if-ne v2, v3, :cond_35

.line 1286
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

const v3, 0x10802e9

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

.line 1290
:goto_2b
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mService:Lcom/android/server/status/StatusBarService;

iget-object v3, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneIcon:Landroid/os/IBinder;

iget-object v4, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

invoke-virtual {v2, v3, v4, v5}, Lcom/android/server/status/StatusBarService;->updateIcon(Landroid/os/IBinder;Lcom/android/server/status/IconData;Lcom/android/server/status/NotificationData;)V

.line 1334
:goto_34
return-void

.line 1288
:cond_35
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

const v3, 0x10802ea

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

goto :goto_2b

.line 1294
:cond_3d
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->isCdma()Z

move-result v2

if-nez v2, :cond_66

.line 1296
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mSignalStrength:Landroid/telephony/SignalStrength;

invoke-virtual {v2}, Landroid/telephony/SignalStrength;->getGsmSignalBar()I

move-result v0

.line 1312
#iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhone:Landroid/telephony/TelephonyManager;
#invoke-virtual {v2}, Landroid/telephony/TelephonyManager;->isNetworkRoaming()Z

.line 1367
const/4 v2, 0x5

if-ne v0, v2, :cond_4d

const/4 v0, 0x4

.line 1313
:cond_4d
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages_r:[I

.line 1332
.local v1, iconList:[I
:goto_53
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

aget v3, v1, v0

iput v3, v2, Lcom/android/server/status/IconData;->iconId:I

.line 1333
iget-object v2, p0, Lcom/android/server/status/StatusBarPolicy;->mService:Lcom/android/server/status/StatusBarService;

iget-object v3, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneIcon:Landroid/os/IBinder;

iget-object v4, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneData:Lcom/android/server/status/IconData;

invoke-virtual {v2, v3, v4, v5}, Lcom/android/server/status/StatusBarService;->updateIcon(Landroid/os/IBinder;Lcom/android/server/status/IconData;Lcom/android/server/status/NotificationData;)V

goto :goto_34

.line 1318
.end local v1 #iconList:[I
:cond_66
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 1323
.restart local v1 #iconList:[I
iget v2, p0, Lcom/android/server/status/StatusBarPolicy;->mPhoneState:I

if-nez v2, :cond_77

invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->isEvdo()Z

move-result v2

if-eqz v2, :cond_77

.line 1324
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->getEvdoLevel()I

move-result v0

goto :goto_53

.line 1329
:cond_77
invoke-direct {p0}, Lcom/android/server/status/StatusBarPolicy;->getCdmaLevel()I

move-result v0

goto :goto_53
.end method

Now you need to compile everything back into a .dex file. So in adb type this (minus quotes) - "java -Xmx512M -jar smali.jar foldername/ -o new-classes.dex. Once it has compiled your new file take that file and put it in the same folder with your ORIGINAL services.jar and rename it to classes.dex. Open the services.jar with winrar and delete the classes.dex file from it. Now click "add" and it will open up a window that should default to the folder you are in. Double click on your new classes.dex file and it will add it in to the services.jar.

DONE.

And there you have it. That is how to completely mod the services.jar for all 2.2.1 roms (to date) to fix the reboot issue and disappearing signal bars. Enjoy your new found knowledge. :)

FYI: It has been confirmed by Jellette as well as myself that this exact method does not work on the UK BOJS5 release. It will boot to roaming. I will look into this when I have time to see why.