# 📋 Pro Controller Latency Explainer

# Why the Nintendo Switch Pro Controller Has Extra USB Latency

The Nintendo Switch Pro Controller often shows **more latency over USB than over Bluetooth**, and the delay can be **variable by up to a frame** in 60 FPS titles. This behavior is caused by the controller’s **internal architecture**, not the USB cable or the Switch console.


---

## Dual-MCU Design

Inside the Pro Controller, Nintendo uses **two microcontrollers**:


1. **Broadcom MCU**
   * Reads all buttons and stick inputs
   * Manages Bluetooth communication
   * Is firmware-compatible with Joy-Con controllers
2. **STM32 MCU**
   * Provides USB connectivity
   * Communicates with the Broadcom MCU via **UART**
   * Converts internal UART input data into **USB HID packets**

This design allows Nintendo to reuse **Joy-Con firmware logic** in a Pro Controller form factor without rewriting core input and state handling.


---

## Why USB Is Slower

In USB mode, data travels through this internal path:

`Input → Broadcom MCU → UART → STM32 → USB → Switch `

In Bluetooth mode, the STM32 is bypassed:

`Input → Broadcom MCU → Bluetooth → Switch `

Because **two MCUs must coordinate asynchronously**, USB mode introduces:

* UART polling delay
* STM32 buffering / packet scheduling
* USB HID framing
* Switch USB polling alignment

These timing layers create **inconsistent latency**, which is why USB mode can feel slightly slower or less predictable than Bluetooth.

Bluetooth is the **native controller signaling path**, and Nintendo optimized the Broadcom MCU and Switch OS around it. USB was implemented as a **translation layer**, not a low-latency transport.


---

## Feature Clue: Amiibo

Because certain subsystems (e.g., NFC / Amiibo) live directly on the Broadcom MCU and are never exposed through the STM32, **Amiibo does not work over USB**, further confirming that USB mode is a limited bridge, not a native protocol.


---

# Comparison: RP2040-Based Controllers (GC Ultimate / ProGCC)

Other modern Switch-compatible controllers such as **GC Ultimate and ProGCC** do *not* exhibit the same USB latency behavior.

Why?

* These devices use a **single RP2040 MCU**
* The RP2040:
  * Reads inputs directly
  * Generates USB HID packets directly
  * Does **not use UART translation or a bridging microcontroller**

This creates a **direct input → USB HID path**, eliminating the variable internal delay seen in the Pro Controller.

`Input → RP2040 → USB → Switch `

As a result, USB mode on RP2040-based controllers is **far more consistent and often lower latency** than wired mode on the official Pro Controller.


---

# Bottom Line

* The Switch Pro Controller’s extra USB delay is caused by its **internal UART-to-USB bridging architecture**, not the console or cable.
* Bluetooth mode is typically **lower latency and more consistent** on the official Pro Controller.
* Controllers that use a **single MCU with native USB (e.g., RP2040)** avoid this problem entirely.