rpi4-expert

Answers Raspberry Pi 4 and BCM2711 hardware questions with clean-room facts from datasheets and source trees.

2|Updated May 13, 2026
One-click install
npx skills add https://github.com/curtisgalloway/public-skills --skill rpi4-expert-curtisgalloway
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: rpi4-expert
Source: https://github.com/curtisgalloway/public-skills/tree/main/plugins/driver-porting/skills/rpi4-expert
Command: npx skills add https://github.com/curtisgalloway/public-skills --skill rpi4-expert-curtisgalloway

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Bringing up an OS or writing drivers for the Raspberry Pi 4 requires accurate knowledge of BCM2711 addresses, boot flow, interrupts, and peripheral quirks, but that information is scattered across datasheets, device trees, and GPL kernel source that cannot be copied into differently-licensed code. ## Core Features & Use Cases - Board-specific hardware map: Provides MMIO addresses, IRQ numbers, clock/power ownership, GPIO pull-register details, and boot-chain behavior for the BCM2711 (Pi 4B, Pi 400, CM4). - Clean-room subagent delegation: Runs as an isolated expert agent that reads GPL sources in a private cache and returns only hardware facts and mechanism descriptions, never source code. - Curated source cache: Clones and reuses the Raspberry Pi kernel tree, TF-A, firmware, and public datasheets under ~/src/rpi4-resources for grounded answers. - Use Case: While porting an OS to the Pi 4, ask where the debug UART lives and why the console is silent; the expert returns the PL011 address 0xFE20_1000, the mini-UART trap, and the disable-bt overlay fix without exposing any kernel code. ## Quick Start Ask the agent to spawn the rpi4-expert subagent and answer where the PL011 debug UART and GIC-400 registers are mapped on the BCM2711.

Frequently Asked Questions about rpi4-expert

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find Raspberry Pi 4 peripheral MMIO addresses?▼

BCM2711 peripherals documented at legacy bus addresses 0x7Ennnnnn appear to the ARM at 0xFEnnnnnn in default low-peripheral mode. For example, the PL011 UART0 is at 0xFE20_1000 and the GPIO block at 0xFE20_0000.

Why is the Raspberry Pi 4 serial console not working on GPIO 14 and 15?▼

On a stock Pi 4B the header UART is the mini UART, not the PL011, and its baud rate tracks the VPU core clock. UART0 is muxed to Bluetooth on GPIO 32/33; use dtoverlay=disable-bt and enable_uart=1 to get a stable PL011 console on the header.

Does the Raspberry Pi 4 support PSCI for SMP bring-up?▼

Only with Trusted Firmware-A. The stock armstub uses a spin-table with release addresses at 0xD8-0xF0 and disables SMC, so PSCI requires shipping TF-A BL31 built with PLAT=rpi4 as the armstub.

Can the main coding agent read the rpi4-resources cache directly?▼

No. The cache contains GPL kernel source and is reserved for the rpi4-expert subagent only. The main agent asks questions and receives clean-room hardware facts, preserving the license boundary for differently-licensed target code.

What changed in GPIO pull-up configuration on BCM2711?▼

BCM2711 replaced the BCM2835 GPPUD/GPPUDCLK sequence with GPIO_PUP_PDN_CNTRL_REG0-3 at offsets 0xE4-0xF0, using 2 bits per GPIO (01 up, 10 down). Old GPPUD code silently no-ops on Pi 4 silicon.