From what I have learned:
If you have a Factory MD7 phone = you have ICS bootloaders
If you have a Factory MG2 phone = you have JB Bootloaders
That is why I asked what version of the Virgin Mobile phones you have - 1st generation (MD7) or 2nd generation (MG2). No sense in taking a risk of installing Sprint MD4 bootloaders on a phone that came with Virgin Mobile MG2 JB bootloaders.
Baseband = modem
MD4 = Sprints last? Factory ROM
MD7 = Virgin Mobiles 1st Generation Factory ROM
MG2 = Virgin Mobiles 2nd Generation Factory ROM
Bootloaders = IMO Dangerous to flash. Messup = Hard Brick
That tutorial flashes the Sprint MD4 bootloaders (replacing the modem basband with vmu MD7) in order to flash sprint ROMs. This due to most ROMs have an "assert" lines verifying its a sprint phone with correct bootloaders.
Its easily bypassed. I do it because of my stock JB Virgin Bobile MG2 bootloaders. I would rather manually edit a few lines to add my bootloaders rather than flash the Sprint ones.
This is a standard CM10 assert line. This is one of the reason you flash the Sprint MD4 bootloaders - to pass assert checks
Code:
assert(getprop("ro.product.device") == "d2spr" || getprop("ro.build.product") == "d2spr" ||
getprop("ro.product.device") == "d2spi" || getprop("ro.build.product") == "d2spi");
assert(getprop("ro.bootloader") == "L710VPBLJ7" ||
getprop("ro.bootloader") == "L710VPBMA6" ||
getprop("ro.bootloader") == "L710VPBMB1" ||
getprop("ro.bootloader") == "L710VPBMD4" ||
getprop("ro.bootloader") == "L710VPAMD7");
Since I have a 2nd generation MG2 (JB) Phone I dont flash the Sprint JB bootloaders. I manually change the assert lines to this to work with my phone:
Code:
assert(getprop("ro.product.device") == "d2spr" || getprop("ro.build.product") == "d2spr" ||
getprop("ro.product.device") == [SIZE="4"][B]"d2vmu"[/B][/SIZE] || getprop("ro.build.product") == [SIZE="4"][B]"d2vmu"[/B][/SIZE]);
assert(getprop("ro.bootloader") == "L710VPBLJ7" ||
getprop("ro.bootloader") == "L710VPBMA6" ||
getprop("ro.bootloader") == "L710VPBMB1" ||
getprop("ro.bootloader") == "L710VPBMD4" ||
getprop("ro.bootloader") == [SIZE="4"][B]"L710VPAMG2"[/B][/SIZE] ||
getprop("ro.bootloader") == "L710VPAMD7");
That said I dont think anyone with MG2 phones has been able to flash a ROM over Android 4.2.1 and have it work.
IMO - The reason LTE works with Sprint - because its Sprints lines. We are on Virgin Mobile piggy backed on Sprint - the red headed step child.
Looking at the build.prop and system/app apks our phone uses some some of system called "Chameleon"
Example:
Sprint ROMs build.prop has this:
Code:
ro.cdma.home.operator.numeric=310120
ro.cdma.home.operator.alpha=Sprint
Now If I were to edit this with the Virgin settings it changes to this:
Code:
ro.cdma.home.operator.numeric=311490
ro.cdma.home.operator.alpha=Virgin Mobile US
BUT
If you look at a stock factory ROM its settings are:
Code:
# Chameleon Default Operator (VMU with Chameloen)
ro.cdma.default_numeric=310000
ro.cdma.default_alpha=Samsung
Its a bit odd - I havent figured it out yet.