[Vibrant Android Development] Romanbb:
Decided I'd dive into this and miraculously got it working!

The problem is in the method updateSignalStrength()

I was using original Vibrant, Vibrant 4G, & JS5 files to compare and found the fix. From what I can tell it seems to happen when the phone tries to check if it's roaming, it seems to mess up... right around line 5333

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

is where it starts messing up.

Here's the diff comparison picture between new code and old

(upon further inspection I'm not sure if the one on the right is the original or an earlier modified version of the file... I included the whole method so you guys can diff it if you want)

I could have probably cleaned up the code more but it works so I didn't want to mess it up further lol.

Anyhow here's the code for the new method

.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 1397
:cond_4d
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 1415
.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 1416
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 1401
.end local v1 #iconList:[I
:cond_66
sget-object v1, Lcom/android/server/status/StatusBarPolicy;->sSignalImages:[I

.line 1406
.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

I've attached the smali file & the services.jar for anyone interested.

Real credit goes to Eugene for fixing the reboot bug~

Hope this helps someone!