Insyde H2O UEFI · Dual SPI Flash
# Lenovo IdeaPad P400 Touch
Firmware modificado mediante ingeniería inversa. Parcheo binario directo en chips SPI U5/U6 para remover restricciones OEM, optimizar power delivery y maximizar rendimiento iGPU.
# Hardware
- CPU
- Intel Core i7-3632QM (Ivy Bridge, 35W TDP)
- GPU
- Intel HD 4000 (GT2, max 1150 MHz)
- RAM
- 12GB DDR3 Dual Channel
- Firmware
- Insyde H2O UEFI
- SPI Flash
- 2 chips separados (U5 + U6), ambos SOIC-8
# Estructura del firmware
U5 — Chip Principal
4MB (0x400000) · Insyde Freeform + Custom DXE
Filesystem GUID
7A9354D9-0468-444A-81CE-0BF617D890DFFreeform files FFSv2 (0 diffs vs original)
9415B75C-E1B8-4E2A-988D-DD399B9A985EC3C89EA3-58A6-43ED-B685-0ED535B2E36F4CD76A24-C25B-4E60-9B4F-25E96B9EBFF6U6 — NVRAM Store
2MB (0x200000) · NVRAM + Microcodes + VSS Variables
Variable clave @ 0x111AAD
Setup / A04A27F4-DF00-4D42-B552-39511302113D (size: 0x3CC bytes)# Modificaciones U5
(Non-empty Padding @ 0x193000)| # | Variable | Original | Custom | Qué hace | |
|---|---|---|---|---|---|
| 1 | PCI Whitelist WLAN | 0x1E | → | 0x00 | Elimina Error 1802. Bypass verificación Vendor/Device ID WiFi. |
| 2 | PCI Whitelist WWAN | 0x01 | → | 0x00 | Desbloqueo slot M.2 para módems 3G/4G LTE no aprobados. |
| 3 | BIOS Password Reset | Disabled | → | Enabled | Expone opción oculta para limpiar supervisor password desde setup. |
# Modificaciones U6
(NVRAM Setup Variables)
Todas las variables están en
VarStore: Setup
(GUID:
A04A27F4-DF00-4D42-B552-39511302113D).
Offsets identificados vía IFRExtract del módulo SetupUtility.
Nota: existe también una variable Custom
duplicada @ 0x1116F/0x11167F con mismo GUID, pero documentamos Setup @ 0x111AAD.
| # | Variable | Original | Custom | Descripción técnica | |
|---|---|---|---|---|---|
| 4 | DVMT Pre-Allocated | 64MB | → | 512MB | VRAM estático reservado para iGPU. Elimina stutters en compositores. |
| 5 | Graphics Aperture Size | 256MB | → | 512MB | Ventana PCI-Express (GART) para texturas grandes. Reduce fragmentación. |
| 6 | RC6 Render Standby | ON | → | OFF | Desactiva power-gating de GPU. Elimina micro-stutters idle→activo. |
| 7 | Deep RC6 | ON | → | OFF | Estado de bajo consumo agresivo. Mayor latencia al despertar. |
| 8 | Gfx Low Power Mode | ON | → | OFF | Limita frecuencia GPU. Desactivado permite RP0 máximo (1150 MHz). |
| 9 | Turbo PWR MSR Lock | Locked | → | Unlocked | Desbloquea MSR 0x610. Permite ajustar TDP en caliente desde OS. |
| 10 | PL1 Long Duration | 35W | → | 45W | Power budget sostenido. Previene throttling en cargas continuas. |
| 11 | PL2 Short Duration | 44W | → | 60W | Power budget ráfaga (28s). Boost inmediato al iniciar apps. |
| 12 | GPU Current Limit | Auto | → | 5A | Límite de corriente a iGPU. 5A mantiene 1150 MHz estable. |
| 13 | Boot Display (Híbrido) | LFP | → | CRT+LFP | Visualizar POST/BIOS en monitor externo (VGA) y pantalla interna. (Offset 0x198: 0x10 → 0x02). |
# Resumen
| # | Variable | Original | Custom | Chip |
|---|---|---|---|---|
| 1 | Whitelist WLAN | 0x1E | 0x00 | U5 |
| 2 | Whitelist WWAN | 0x01 | 0x00 | U5 |
| 3 | Password Reset | Disabled | Enabled | U5 |
| 4 | DVMT Pre-Allocated | 64MB | 512MB | U6 |
| 5 | Aperture Size | 256MB | 512MB | U6 |
| 6 | RC6 Render Standby | ON | OFF | U6 |
| 7 | Deep RC6 | ON | OFF | U6 |
| 8 | Gfx Low Power | ON | OFF | U6 |
| 9 | Turbo PWR MSR Lock | Locked | Unlocked | U6 |
| 10 | PL1 | 35W | 45W | U6 |
| 11 | PL2 | 44W | 60W | U6 |
| 12 | GPU Current Limit | Auto | 5A | U6 |
| 13 | Boot Display Device | LFP | CRT+LFP | U6 |
Total: 10 bytes modificados en NVRAM (U6) + 3 parches en módulo DXE (U5)
# Verificación post-flash
# Firmware binaries
# Herramientas
UEFITool — análisis y extracción de módulos del firmware · UEFIPatch — aplicación de parches a módulos DXE · IFRExtract — extracción de formularios IFR del SetupUtility · CH341A + clip SOIC-8 — programador SPI · Hex editor — edición binaria directa del VSS store