[LG V20 Questions & Answers] Descent2:
I am writing this out to organize my own thought and to receive a correction, because I am kind of just now learning about this. Feel free to tell me where I am wrong.

My second question is to clarify firmware vs. software.

If you look in the "About" section of settings, you will see that the firmware version [..like H91810p] is actually listed as a "Software Version". So, this is one source of confusion.

My understanding currently is that the OEM calls it "Software" because they do not want the consumers to know too much about how things work, i.e. they create this confusion on purpose.

What is "Firmware" ?

Currently, I hold that it is the code that runs the metal. To say it in a way that is easier to understand, there is a phone (bare metal), it is is run by drivers and binary blobs, which is a code, thus a software, but for the purpose of confusion it is called a firmware because it comes from the OEM (thus, from "a firm"). The phone can run with just that, even though it will not be useful to most people it that way, but never the less, it would be a fully functional device (from a robot point of view). Functional, in a sense that it has a hardware charger component, and there is also would be a code that runs a charger (firmware). It has a radio and there is also a code that runs the radio (again, firmware). Just like a computer that came without the OS, already has the BIOS, which is the firmware by our convention, and it also has a lot of code in many chips throughout (Video card chips, Bridges, Audio circuits and so on). All that code is Firmware.

There will also be the drivers for the OS, which I think would also be the firmware (drivers), but they come with the software because they were written as an interface between a given hardware and a given OS. I do not know if this is exactly the same with phones or not.

What is missing so far is the software, or what we, in these forums call the software. Again, this is some code, but this time it comes from Google who pays the Open Handset Alliance to write it. This time, however, we are talking about the code that runs the OS (Android). This code makes the phone which was already a completely finctioning device (for robots and reversers maybe), useful to the regular consumers as it creates all the windows, dialog boxes, buttons, colors and sounds that makes a regular user able to actually operate the device.

Technically, I think the OS could come as Windows if it was requested to the same device that was running Android OS before, there is no hard rule that would make it impossible. Why I am mentioning this? Because I think it helps to mentally separate the role of firmware from the role of software.

The firmware is stored is a separate partition (in case of modem / baseband / radio code) because:

- it frequently is the case that this firmware operates literally it's own CPU, and

- because it keeps things cleaner - you can re-flash modem partition only (same reasons as for /data), leaving everything else intact, or vice versa, you could leave the firmware partition intact while wiping / re-writing (flashing) others.

What I don't know is where is the firmware that is related to the ARB version stored? Is it only the modem? What other partitions are the firmware?

If this is known, can't we flash only the software and downgrade the OS, while leaving all the firmware (firmware partitions?) intact?

Also about what exactly constitutes a ROM, specifically, what partitions must it include and why, and what partitions can it include that are optional and could be replaced, omitted? At this time I think that the ROM must include a /system as a minimum, it might include boot.img (kernel and ramdisk) and if it does then it is NOT optional because this is where the OS "drivers" are for the given phone (these would be the ones that are compatible with both the given FW version of the device and on the other side, the modded OS that is the reason for this ROM). What other partitions might come with the ROM and are they optional?