I originally wrote the following post in July 2012 to document how to fully flash a Nexus S 4G from Sprint to Verizon Wireless, but never got to publishing it. I have long since switched away from Verizon Wireless and no longer own any of the phones mentioned, and decided to publish it for what it’s worth.
If you’re interested in the high-level view of how CDMA phones are programmed, check out my previous article Carrier Programming on CDMA Android Phones.
This is a guide for flashing a Sprint Samsung Nexus S 4G to a standard Verizon monthly plan, and voice, texting and 3G data will all be fully functional. This method will likely also work on many other phones, especially Samsung ones, and should theoretically work just file on any ROM as well.
Note that this procedure entails ESN cloning, which may be illegal in your region. Please make sure you have an understanding of all applicable laws before proceeding. The author of this guide cannot be held responsible for any legal infractions that may ensue. Finally, you are solely responsible for any consequences of your actions as a result of following this guide. While I believe it to be quite safe, I cannot guarantee you that this process will not brick your devices or start a zombie apocalypse.
Requirements and Setup
We will need the following before starting:
A currently active Verizon Wireless Android phone and plan. Please beware that not all phones will work; many phones do not allow us to extract all the information we need for this process. For instance, my Motorola Droid 3 did not work, and I had to purchase and activate an HTC Incredible for this. This phone will be our donor phone.
A rooted Samsung Nexus 4G.
A computer running a recent version of Windows, with at least 2 USB ports.
2 MicroUSB cables.
In addition, we need the following software:
USB diagnostic drivers for your donor phone. These vary by manufacturer and their configuration may be quite complex; search online for how to set up yours. For HTC phones, download and install HTC Sync from HTC’s website (archived here).
USB diagnostic drivers for the Nexus S 4G. The easiest way is to download and install PdaNet (archived here). We don’t actually need the functionality of PdaNet, but it happens to bundle the drivers we need. Select Samsung when prompted for the manufacturer of our phone.
QPST and QXDM (archived here). These are internal Qualcomm tools; we will use them to clone the MEID of the donor phone.
DFS (archived here). This is a third-party tool for working with CDMA phones. The demo version will suffice.
Step 1: Preparation
First, make sure the donor phone is fully activated and that calls, text and data are all fully functional.
Now, find the HEX MEID of the donor phone. On the HTC Incredible, this can be
found under Settings → About Phone → Phone Identity. On most Android phones,
this is under Settings → About Phone → Status. It is also usually printed on a
label underneath the phone battery. This should be 14 digits and usually begins
Now put the donor phone in airplane mode.
We will next connect both phones to the computer in diagnostic mode.
On the Nexus S 4G, dial
*#*#8778#*#*, then select MODEM under USB. Connect the Nexus S 4G to the computer. If drivers were installed correctly, you should now see a SAMSUNG Mobile Modem Diagnostic Serial Port (WDM) under Ports (COM & LPT) in Windows’s Device Manager. Note down the port number of the Nexus S 4G; we will assume COM4 for convenience.
On the HTC Incredible, dial
##3424#, hit Call, connect it to the computer, then follow the instructions in this thread with Device Manager. If everything goes well you should now see a HTC Diagnostic Interface under Ports (COM & LPT) in Device Manager. Note down the port number of the HTC Incredible; we will assume COM11 for convenience.
After confirming that both phones show up under Ports (COM & LPT), run QPST Configuration and hit Add New Port…. You should see both phones on the left. Select one and hit OK. Then repeat for the other phone.
Step 2: Cloning
We will now clone the MEID of the donor phone onto the target phone. Open QXDM Professional. Select Options → Communications…. For Target Port, select the port corresponding to the Nexus S 4G, say COM4, and hit OK. Then in the text box labeled Command, type the following:
Hit Enter. You should see
Password Result = Correct at the bottom of the
Command Output window.
Now in the Command text box, type the following, replacing
<MEID> by the hex
MEID of the donor phone:
RequestNVItemWrite meid 0x<MEID>
Hit Enter. You should see it repeat back the MEID to you. Type
RequestNVItemRead meid followed by Enter to make sure the write happened.
Close QXDM Professional and reboot the Nexus S 4G. Rebooting the target phone after writing a new MEID is essential! If prompted, do NOT go through the activation process on the Nexus S 4G. Just select Skip when possible.
Step 3: Reset SPC
In order to program the Nexus S 4G, we need to obtain or reset the SPC code (also known as the MSL) of the phones. If you already know the SPC code for your phones and would rather not reset the SPC code, you can skip this step.
Open QXDM Professional again. Go through Options → Communications and make sure the Target Port is still COM4. Hit OK. In the command text box, type the following two lines, each followed by an Enter:
Password 01F2030F5F678FF9 RequestNVItemWrite sec_code 000000
If this is successful, the SPC on the Nexus S 4G will have been reset to
000000. Repeat for the donor phone (in our example, on COM11).
Close QXDM Professional after done. All QPST / QXDM programs must be closed before proceeding, or DFS will complain.
Step 4: Programming CDMA Chipset
Launch DFS. Click Ports on the top left. In the dialog box, double-click on
each port representing our phones, in our case, COM4 and COM11, and close the
dialog box. Now make sure the SPC text box above reads
000000 (or if you chose
not to reset the SPC, whatever your SPC is). Type
01F2030F5F678FF9 into the
Pwd text box.
Step 4.a: Basic CDMA settings
Let’s now copy basic CDMA settings from the donor phone to the target phone. In the drop-down menu next to Ports, select the donor phone (COM11). Switch to the Programming tab and the NAM tab under it. Click the SPC and Pwd buttons to send the SPC and NV password to the phone to unlock it. Then hit Read beneath Network identification. The text fields below should be populated by information from the donor phone. Now select COM4 in the drop-down menu next to Ports, click SPC and Pwd, then click Write beneath Network identification.
Step 4.b: PRL
Now, let’s copy over the PRL (or Preferred Roaming List - essentially a database of tower locations). Again, select COM11 under Ports and click Read under PRL towards the right. Then select COM4 under Ports and click Write under PRL.
Step 4.c: 2G Data settings
Now go to the next tab, Data. Select COM11 and hit Read. Switch to COM4 and hit Write. If you observe errors in the log window in the bottom, and / or no information shows up in the Pwd boxes under PPP and HDR AN Long, your donor phone doesn’t support the extraction of some data passwords, and you will have to try a different donor phone.
Step 4.c: 3G Data settings
We do the same with Mobile IP. Select COM11 and hit Read. Switch to COM4 and hit Write. Then hit Write current profile settings. Again, if you encounter errors, or no information shows up under AAA Shared secret and HA Shared Secret, you will have to try a different donor phone.
Finally, we need to copy over a file containing a secret key used to establish a
3G connection. Go to the EFS tab towards the top. Select COM11 and hit Read
EFS. Click the "+" sign of the root folder on the left and then the "+"
sign next to the
DMU folder and you should see a file called
Right-click on this file and hit Save…. Save this file somewhere on your
hard drive. Now switch to COM4 and hit Read EFS again. Select the root folder
on the left, type
/DMU under Path (57 max) on the right and hit Add Item
to create a folder named
DMU on the Nexus S 4G. Then select
DMU on the left,
click on the check box named I want to add file from PC, and select the
10.key file we just saved. Then hit Add Item to upload the
10.key file to
The programming is now done. Close DFS, select OK and OK again when prompted whether to send a mode reset to the phone. The Nexus S 4G will now reboot.
Step 5: Programming Android
We will now modify some Android system files to Verizon settings. This step will need to be repeated whenever you flash a new ROM on the Nexus S 4G in the future.
1-click programming app
I have built a 1-click Android application that automates this step; you can find it here. It requires root as it will need to modify system files. Install the application and click the button in the middle. When the process finishes, you will be prompted to reboot. Simply reboot your phone and you’re all set; you may uninstall the app, or you could keep it around for when you update to a new ROM.
If the 1-click app does not work for you, or if you want more control over what it does, follow the steps below. You do not need to do any of the following if you already used the app above.
Step 5.a: Fix voice calling
This is required to enable calls on Verizon.
On the Nexus S 4G, connect to WiFi and install ES File Explorer from the Play
Store. Then go to Menu → Settings and check Up to Root, Root Explorer, and
Mount File System. Allow it to use superuser privileges if asked. Then
/system and open
build.prop with ES Note Editor. Find the
following two lines:
Change them to read:
Then add a line below (or anywhere in the file) that says:
Hit Menu → Save and then Back to exit.
Step 5.b: Fix roaming
This step tells Android to treat the Verizon network as the home network. It sets the roaming status to "Not roaming", removes the triangular roaming indicator in the status bar and changes the displayed name of the current network to "Verizon Wireless".
Now navigate to
/system/framework and copy
framework-res.apk onto your
computer - you can use adb or email it to yourself or whatever (you have to copy
it to the internal SD card before you can email it though). Once on the
computer, rename it
framework-res.zip (yes, an APK is just a zip archive) and
use your favorite program to replace the file
res/xml/eri.xml inside it with
the one at this link. Now rename
it back to
framework-res.apk, copy it back
onto the Nexus S 4G (using adb or whatever) and use ES File Explorer to
overwrite the existing
/system/framework/framework-res.apk with it.
Step 5.c: Add Verizon APNs
This last step sets up Verizon APNs that enable web and MMS. Use ES File
Explorer or any other tool to replace
/system/etc/apns-conf.xml with the one
at this link.
Step 6: Reboot & PROFIT
The Nexus S 4G should now be a fully functional Verizon Wireless phone. If you are curious about what each of the steps means, you’re welcome to check out my previous article Carrier Programming on CDMA Android Phones for a high-level view of how CDMA phones are programmed.
While your mileage may vary, I hope the above information have been of help. Since I no longer use Verizon Wireless and no longer own any of the phones mentioned above, please take all this information with a grain of salt.
Good luck, and happy hacking!