This it the explanation telling me not to install a custom ROM without checking the device's compatibility. "Now, be careful as each custom ROM comes with a version that is suitable only with one device; you can’t install the same variant of firmware on all the Android devices as the same is not compatible."

But, I'm using a HP Slate 7, there isn't an official thread for this device on XDA Developers, and the furthest I can go is to root my tablet. Other than that, there are no custom ROMs specifically for this device.

My question is, why can't I install a custom ROM if I follow all the correct processes for flashing a custom ROM, even if my device is unsupported? Is it purely because of the bootloader? Or the kernel? I'm fairly new to Android, but I've been reading up on new terms, so can I have some guidance?


3 Answers 3


No long explanation needed, the reason is quite simple: Different devices come with different hardware components, such as the camera or sound "chips". Those require special drivers, which are in most cases proprietary and not part of AOSP (which is the "Android base code").

This means, each ROM must include device specific code, and thus is specific to the device it is created for.


In order to understand why specificity is important we must understand the structure of a device, both software structure and hardware structure. Different devices have different structure. Two devices having different models don't have similar hardware and even the slightest of difference in hardware is enough for the software to cause compatibility issues. An operating system (or a kernel) has code specifically written for particular hardware, and it shall never work on another hardware.

Now, from a software point-of-view, a device has a kernel and some middleware which provides an interface between hardware and software. You may have noticed different partitions of your device, like recovery, and firmware. These partitions vary with devices as well. If you flash incompatible software, you will most likely end up with a bricked device.

That's why it is advised to use ROM from a nearly-identical device (hardware) when porting ROMs.


As far as my understanding goes when you say you are flashing a new custom ROM onto your device you are essentially changing your android version flavor(whatever goes into your /system partition) and most importantly the kernel(/boot contains kernel and bootloader). More on Android Partitions.

Now when you flash a ROM onto your device you generally use a application installed on your machine. Then you enable USB debugging on your device, connect it to your machine and run your application to flash the ROM. First thing here is that the application must recognize the existing ROM/Kernel so that it can replace it with corresponding custom ROM(Eg CyanogenMod). So your device must be in the list of devices supported by the flashing application. If you have a STOCK ROM than generally all application recognize it and should not be a problem. But if you already have a custom ROM and trying to flash another then it might be a problem.You may wan to read How to Pick the Right ROM for Your Device?

Is it purely because of the bootloader?

As far as CyanogenMod Installer in concerned it does not care if your bootloader is locked or not. It will unlock it for you. Other may require rooted device(How to root your Android device? ).

Or the kernel?

This should not be a problem either because finally it is a Linux kernel on which the android runs(As long as versions are same).

So what is the problem then?

This is my personal understanding. Please correct me if I have mistaken. Kernel is that piece of code that interacts use programs with the device hardware. Now it is very much possible that you have an old device(outdated hardware). Now if you say I am flashing the new ROM that has come to market... it will have a kernel that may require upgraded hardware(Not all things are backward compatible). So even if you flash it on your device some functionality wont wonk. Worst case your phone may get bricked. Hence it is essential to do some research about the ROM you are flashing whether it is compatible with your device.

  • /boot contains kernel and bootloader”: I don't know of any device where bootloader is on boot partition. “because finally it is a Linux kernel on which the android runs(As long as versions are same)”: kernels are very device specific. Commented Oct 14, 2019 at 14:00

You must log in to answer this question.