[Fire Android Development] hwmod:
In short ACM is an improved version of the simpler RX/TX serial interface, using 4 wires (RX, TX, DTR, RTS) instead of only two wires (RX, TX).

Under Linux the ACM interfaces are bound to the /dev/ttyACMx device nodes while standard UART are bound to /dev/ttyUSBx device nodes.

The is is done to implement more complex protocols on top of a simpler serial protocol, for example to use SPI or SMBus protocols using the same 4 wires.

In the case of SPI (Serial Peripheral Interface) the 4 wires are labelled (MOSI, MISO, CLK, CS) and is often used to write to eMMC, eMCP or NAND flash memory.

The raw protocol conversion is handled using specific microchips called protocol converters, often paired with small but powerful & programmable MCU and RAM.

Her are some link to SPI resources that can help grasp what's happening on the USB interface we connect to the tablet:

* SPI - Serial Peripheral Interface

* SPI Interfacing using Serial Port or USB

* USB to SPI converter

For example it is the case of the FTDI FT232 serial chips family, sometime these microchip are packaged with 2 (FT2232H) or 4 (FT4232H) high speed UART.

They are coupled to a MCU and related memory to make them capable of performing several protocol conversions by using the same hardware with different firmware.

One of the common usage of the SPI protocol is to aid in programming flash memory through the USB interface both in phones and in tablet, so it could be for our Fire 7.

To recognize the used protocols, and decode them, developers use oscilloscopes and logic analyzers, some rather expensive instruments ranging from 200$ to 20.000$.

The electronic side of this start to look muddy since the manufacturers implements whatever trick to hide and protect intellectual properties and copyrighted software

installed and operating on their devices, basically each peripheral in the system (cpu, rtc, sensors, touch screen, flash memory, µSD cards, Bluetooth, WiFi, power)

is independently handled by its own firmware and communicates with the other peripherals through these protocols (SPI, SMBus, I2C, SWD, SSI, HDLC, CAN etc).

As an example you can read through the capabilities of the following two hardware to see the level of complexity, each hardware handling over 20 different protocols:

* the Saleae 8 channels or 16 channels Logic Analyzer

* the XdiMax SUB-20 Multi Interface to USB adapter

The above are like Swiss-knife for electronic and reverse engineering, I wish I could have the time and those tools as my weapons to hack our tables and phones,

however doing R.E. by software only, like we are doing it currently, is more accessible and the costs are highly reduced, also it may take longer without initial clues.

A few things we can safely assume about the Fire tablets is that the I2C protocol (2 wire) is used extensively between the peripheral components, the SMBus is also used

and SPI has the highest chances to be the protocol used to write the eMMC flash memory. All these operations are orchestrated by the MT6323LGA microchip which also

contains the Real Time Clock (RTC), which have a very important role in the boot mode and the Power Management (PMIC) functionalities of the tablet power supply.

.:HWMOD:.