Flashing a Samsung S5 G900I back to stock
Posted on Tue 19 December 2017 in Tech
I got a second-hand Samsung Galaxy S5 for my mum yesterday (a G900I model, from Telstra), and I spent some time getting it ready.
Firstly, I downloaded the most-recent Telstra firmware image. At time of writing, that's G900IDVU1CQJ2. Telstra appears to be the only carrier still releasing stock firmware for this phone, so I downloaded the Telstra version even though we're connecting to Spark New Zealand. This means the phone will at least be running the most up-to-date baseband and modem firmware.
Note - if you try this, and find that the recent (international) version doesn't work properly with your local carriers, download the older (local) package, and flash the modem.bin and the NON-HLOS.bin packages from the local one instead.
Flashing the new firmware required a little thinking. I'm 99% sure that I did this the hard way, but basically:
- Download the newest version of Heimdall from Github
- Back last year I had a post that mentioned editing CMakeLists.txt - ignore that now.
- Build the software (assuming you extracted the zip instead of using
git clone
), with:cd Heimdall-master mkdir build cd build cmake -DDISABLE_FRONTEND=ON -DCMAKE_BUILD_TYPE=Release .. make
Once I'd built Heimdall, I unzipped the firmware into a convenient place, and I examined the PIT file from the phone:
./heimdall print-pit
This descripts the partition table on the phone. In particular, it tells you which files in your firmware package should be uploaded to which partitions. I ended up with the following Heimdall flash line:
./heimdall flash --APNHLOS NON-HLOS.bin --MODEM modem.bin --SBL1 sbl1.mbn --DBI sdi.mbn --ABOOT aboot.mbn --RPM rpm.mbn --TZ tz.mbn --BOOT boot.img --RECOVERY recovery.img --SYSTEM system.img.ext4 --CACHE cache.img.ext4 --HIDDEN hidden.img.ext4
I know I could have only flashed the modem.bin and NON-HLOS.bin files, but I'm not sure what I would have missed by skipping all the other partitions.
After the phone was flashed up to the current Stock firmware, I made sure it booted correctly, and then went ahead and converted the phone to my beloved LineageOS, happy in the knowledge that all the "other bits" of the firmware were all updated.