Porting qualcomm firmware. Porting Android firmware. How the firmware is ported

Porting firmware is of interest to many advanced users who want to adapt their device to another environment while maintaining its useful properties. Usually the main goal of this process is to make the firmware on your gadget “more interesting” and. Let's look at how all this happens on Android technology with the ARM platform.

Each user would like to add something original to their gadget

What is needed to port firmware?

To carry out this process, the following components are required:

  • Notepad application or another text editor (however, this program is considered the most convenient and thoughtful among the others).
  • WinRar archiver.
  • The computer through which the entire process is carried out.
  • Two ROMs - one is a source for transferring firmware data, on the other we will collect them for software.

How is the firmware ported?

First of all, we create a backup folder on the computer, copying the following files with the .apk extension from the system/app directory to the PC:

  • vpnservices.
  • Camera.
  • Bluetooth.

Then, on the device where we will collect the firmware (its other name is BROM), we delete these files, and instead of them, which is also called PROM, the following directories:

  • /data.
  • /system/app.
  • /system/framework.
  • /system/fonts.
  • /system/media.

We also copy the libandroid_runtime.so library to the base ROM into the /system/lib folder. Now we are moving the previously deleted files from the first step back into BROM.

Subsequently, we make a copy of such libraries from the base ROM to PROM, such as:

  • system/lib.
  • /system/etc/init.d.
  • /system/etc/permissions.

Please note that copying is performed to replace data existing on other equipment, and not as a supplement to it. Now we delete these three directories on BROM and copy everything from PROM in their place.

Let's move on to working with the Notepad editor and perform the following steps:

  • Open the build.prop file on each ROM and place both windows opposite each other.
  • We check that the ro.build.description= entry matches on both devices, otherwise the firmware will not be completed. If necessary, so that the entries in PROM and BROM are identical.
  • We follow the path /META-INF/com/google/android and now open the files called updater-script for verification. If they are not identical, then they must be adjusted so that the BROM matches the value specified in the ported ROM.

Note. You can edit or add parameters such as kernel or permissions, asserts, ui_prints, run_programs, but never change the symlinks value.

The last thing you need to do is check the Format values ​​parameter in the updater script on the base ROM (the specified data must be suitable for ). If two kernels have different manufacturers, be sure to unpack the kernel and copy the BOOTCLASSPATH data from the ported ROM to BROM at init.rc.

After all the steps completed, the firmware will be in the base ROM, and you can supplement it at your discretion. As you can see, the whole process takes little time and does not require special knowledge. Therefore, you can easily cope with porting the firmware yourself.

The topic of how to port Android firmware is quite hackneyed, but does not lose its relevance. On the contrary, more and more people are becoming interested in it. In this article we will only look at porting devices with the same kernels. If you want super-interesting firmware, then it’s time to start understanding the “kitchen” of this process.

Step-by-step instruction

What you will need:

  • computer with any OS;
  • WinRAR or similar archiver;
  • Notepad++;
  • two ROMs: a portable one (hereinafter referred to as PROM – from which we will take the “tchotchkes”) and a basic one (hereinafter referred to as BROM – on which we will collect).

*BROM – as a rule, native firmware.

**Since we will be looking at an ARM device here, you first need to know what kind of processor you have.

Act one

Create a backup from the system/app directory to any folder on your desktop. By copying the files, you will understand what’s going on, because if you started porting, it means you’ve probably flashed your MID more than once.

Act two

Remove the directories shown in the picture from BROM and, accordingly, insert folders from PROM instead.

Act three

Now we throw the files from the first step back into BROM.

Act four

We go to the system/lib BROM folder and copy and replace all the libraries into the corresponding PROM storage (don’t be surprised, it’s easier this way). We do the same along the paths /system/etc/init.d and /system/etc/permissions. The three above directories can now be destroyed (in BROM), and everything from PROM can be copied in their place.

Important: open the build.prop files in both ROMs via Notepad++. This advanced notepad shows tabs well. The latter must be opposite each other, and the entry ro.build.description= must absolutely match, otherwise you will not be able to flash the device at all. If the entry is not like that, edit it. Do the same with updater-script, located on the META-INFcomgoogleandroid path. Naturally, the entry must be identical to the PROM entry.

Very important: you cannot change symlinks at all. You can change or fix or add ui_prints, run_programs, asserts and of course the kernel.

The most important: in Updater-script BROM Format values ​​should be for your device. Sometimes you need to fix the BOOTCLASSPATH in init.rc or just copy it from RBOOT. Then, of course, repack the kernel.

Well, that's it! Porting ARM-based Android firmware is done like this. Good luck!

This article, which is devoted to porting firmware to officially unsupported Android devices, will be useful to those who want to update the software of their “robot”, but for whom the “standard” set of official and custom firmware is not enough. Let us immediately note that in the process of creating such ports, certain errors or minor bugs may arise, however, the guide will only touch on general issues, without delving into fixing glitches.

To port, you will need programs such as Notepad++ (or any other high-quality text editor), WinRar (or another archiver program), a personal computer (with a Windows or other operating system), as well as at least a basic level of knowledge in the structure of the Android operating system and common sense (for example, there is no point in porting HDPI-ROM directly to MDPI and so on).

You will also need two ROMs - a portable one and CM7/GB/Stock as a base for the created port. You must also be aware of which revision of the ARM platform your device is based on (ARMv5, ARMv6 or ARMv7), since the ROM base and ROM port must be for the same type of processor.

In fact, the work is carried out with three main folders - a portable ROM, from which we extract everything we need; the base ROM - that is, where the porting is carried out, and where we assemble a new version of the ROM; backups created along the way.

First, let's create a backup copy from the base ROM folder, namely the files that are located in the directory /system/app:

stk.apk
vpnservices.apk
camera.apk
bluetooth.apk

Backup can be placed anywhere you like, even on your desktop.

We remove the following folders from the base ROM and replace them with the ported one:

/data
/system/app
/system/framework
/system/fonts
/system/media

Don't forget to copy from the ported ROM to the base library libandroid_runtime.so to a folder /system/lib, since without it the new ROM will most likely not start at all. However, if, subject to replacement, the device goes into a cyclic reboot, that is, it reboots non-stop and to no avail, it’s worth trying to use libandroid_runtime.so from the base ROM.

We copy the files that we backed up to the base ROM. Next, copy all the libraries and folders located in system/lib base ROM, to the corresponding directory of the ported one. We replace all files if the names match. Delete a directory in the database lib completely, move the same folder from the ported one to the base ROM.

Go to the folder /system/etc base ROM, open the folder init.d. We copy all its contents into the same ( /system/etc/init.d) directory of the ported ROM. Then we delete the folder in the “base”. Copy init.d to "base" from "port", to /system/etc.

Open the directory again /system/etc base ROM, where we open the folder permissions. Copy all its contents to the same folder ( /system/etc/permissions) ported ROM. Again, delete the folder permissions in the “base”, after which we copy from the ported ROM permissions V /system/etc base ROM. Such simple actions can fix problems with permission and gapps before they actually appear.

Open the file using a text editor (we recommend using Notepad++) build.prop portable ROM and "base". Place two Notepad++ windows next to each other and edit build.prop ported ROM in accordance with the base one, so that they match. It is very important that the parameters:

ro.build.description=
ro.build.fingerprint=

IN build.prop of the ported ROM were the same as in the base one, otherwise the created firmware will not work at all. Save build.prop and close Notepad++, then copy Build.prop from ported ROM to base ROM.

Now you need to edit updater-script. Go to the folder META-INFcomgoogleandroid base ROM and open this file using Notepad++. We also open updater-script and a portable ROM. Place two Notepad++ windows side by side and change updater-script"base" for similarity with updater-script"port". It is strongly not recommended to change symlinks. You just need to fix or add stuff permissions, asserts, ui_prints, run_programs and the installed firmware kernel. IN updater-script We carefully check the “bases” so that Formatvalues were installed for the desired mobile device model. We double-check whether the correct kernel has been selected. If the device is not from the same manufacturer from which the kernel was taken, then you must unpack it and then fix it BOOTCLASSPATH V init.rc. BOOTCLASSPATH copy from the “port” to the base ROM, after which we pack the kernel again.

That's basically it. The final firmware is in the base ROM folder. You can also add different applications, patches, scripts, and so on to it according to your taste.

Qualcomm Smartphone Software Update Tool- flashing tool for Android devices (smartphones and tablets) that have a Qualcomm processor under the hood. Multi-port, by the way, supports up to 16 devices running simultaneous firmware. Thus, you can reflash up to sixteen, for example, smartphones at once! And the process of flashing each of them takes about four minutes. The instructions with all the details are posted in the archive, or you can read a little further below. Also in the archive you will find the necessary drivers for Quilcom.


  • Genre: Flashing
  • Platform: Windows


  • firmware_file_name.bin (maybe .7z) - archive with firmware

  • Qualcomm Smartphone Software Update Tool - flasher

  • Uniscope_Qualcomm driver_V1.0.1.zip - Qualcomm drivers (when installing on 64-bit OS, be sure to disable driver digital signature verification)

  • Flashing_Procedure_Instructions for firmware.pdf - instructions for flashing (all logins and passwords for the flasher are in these instructions)


Turn off the phone, if you had it on before, and hold the Volume+ and Volume- buttons and hold the power button until the phone turns on. We connect the phone to the PC with a cable and open the device manager.


If you did it correctly, in the device manager you will see the device QHSUSB__BULK with the following VID and PID: USB\VID_05C6&PID_9008&REV_0000


Right-click on it and select "Update drivers...", then select the search for drivers on this computer and specify the Uniscope_Qualcomm driver_V1.0.1 folder, which we got when unpacking the archive, as the path to the drivers:



Launch Qualcomm Smartphone Multi-Port Software Upgrade Tool. In the dialog that appears, click on the exclamation mark so that your username Operator changes to Administrator and enter the password ustest, then click Ok.


In the program window, click the Load Soft Folder button and select the folder with the firmware MMX_Q415_SW_V2.8_HW_V0.2__V25112015B1661_LCS4.bin from the archive we unpacked. Next, in any of the windows, select the COM port on which we have the phone in Download Mode (in my case it is COM3) and press the Start button. This is what the Qualcomm Smartphone Multi-Port Software Upgrade Tool window looks like before clicking the Start button:


The firmware process has started


A successful sign of its completion is the appearance of the inscription Download finish! in the status window:


The phone should reboot automatically after the firmware is completed, but this is not the case