Android Hardware Reverse Engineering

Troubleshooting Failed Fault Injections: Debugging PMIC Register Writes on Android Devices

Google AdSense Native Placement - Horizontal Top-Post banner

Introduction: The Frustration of Failed Fault Injections

Fault injection is a powerful technique in security research, used to uncover vulnerabilities by intentionally causing hardware or software malfunctions. When targeting Android devices, power management integrated circuits (PMICs) are often a primary target for power-related fault injection. By manipulating PMIC registers, researchers can induce voltage sags, power glitches, or unexpected power state transitions, potentially leading to critical bypasses or data corruption. However, the path to successful fault injection is often paved with failed attempts. This guide delves into systematic debugging methodologies for troubleshooting PMIC register writes that don’t seem to yield the expected fault.

Understanding PMICs and Power Fault Injection Mechanics

A PMIC is the heart of a device’s power management system, responsible for regulating voltages, managing power states, charging batteries, and handling power sequences. It’s essentially a sophisticated microcontroller with numerous registers controlling its various functions. When we talk about power fault injection, we’re often aiming to momentarily disrupt the voltage supply to a critical component (like the CPU or memory) by commanding the PMIC to temporarily alter an output voltage rail.

The process typically involves:

  1. Identifying the target voltage rail and the corresponding PMIC register.
  2. Calculating the desired voltage perturbation (e.g., a momentary drop from 1.2V to 0.8V).
  3. Crafting a precise write operation to the PMIC register via an interface like I2C or SPI.
  4. Timing this write to coincide with a vulnerable operation on the target component.

When this process fails, it can be due to a myriad of reasons, ranging from incorrect register addresses to timing mishaps or hardware protections.

Common Pitfalls in PMIC Register Manipulation

1. Incorrect Addressing or Register Values

The most basic issue: writing to the wrong register or using an invalid value. PMICs are complex, with hundreds of registers, and a single bit can change behavior significantly.

2. Timing Mismatches

Power fault injection is often a race condition. If your write occurs too early, too late, or lasts too long/short, the target component might not be in a vulnerable state, or it might recover gracefully.

3. Read/Write Protections and Volatility

Some PMIC registers are write-protected, either by hardware fuses, kernel-level drivers, or only allow writes under specific operating conditions. Others might be volatile, resetting to default values quickly or after a specific event.

4. Kernel/Hardware Resets and Watchdogs

Modern Android devices employ sophisticated power monitoring. An unexpected voltage drop or power state change can trigger a kernel panic, a hardware watchdog reset, or even an immediate shutdown by the PMIC itself to protect components.

5. Improper Hardware Setup or Interface Issues

Faulty connections, incorrect I2C/SPI bus speeds, or noise on the communication lines can lead to corrupted writes or no write at all.

Debugging Methodology: A Step-by-Step Guide

Step 1: Identify the PMIC and its Interface

Before you can write to a PMIC, you need to know which one you’re dealing with and how it communicates (I2C, SPI, PMIC-specific bus). This often requires:

  • Physical Inspection: Look for markings on the chip itself. Common manufacturers include Qualcomm (PMI, PMX series), MediaTek, Dialog Semiconductor, NXP.
  • Schematics/Board Views: If available, these are the holy grail.
  • Android Kernel Source / Device Tree: Search the device’s kernel source for PMIC drivers and device tree nodes.

Example for identifying PMIC in device tree:

adb shell

Android Mobile Specs & Compare Directory

Are you researching mobile hardware properties, processor SoCs, GPU chipsets, or RAM configurations? Access our complete specs catalog to compare up to 5 devices side-by-side!

Compare Devices Specs →
Google AdSense Inline Placement - Content Footer banner