The following modes in each table are mutually exclusive on the Raspberry Pi 3.
UART modes
The Raspberry Pi has a single full-speed UART (UART0) and a mini UART (MINIUART); see the official docs for information on their differences. These UARTs are multiplexed between various board functions and cannot be used simultaneously. The following modes are supported:
| Mode | Activated By | Bluetooth | Pin Functions |
|---|---|---|---|
| Debug console | Default mode; no PIO connections | Enabled | Pins BCM14/BCM15 expose RX/TX of the serial debug console |
| UART0 | UART0 opened by PIO | Disabled | Pins BCM14/BCM15 expose RX/TX of UART0 |
| MINIUART | MINIUART opened by PIO | Enabled | Pins BCM14/BCM15 expose RX/TX of MINIUART |
| BCM14 or BCM15 | Pin opened by PIO | Enabled | Named pin (BCM14 or BCM15) is GPIO, other pin is idle |
An IOException error is thrown if you try to open an active pin (from above)
using a different UART mode.
Audio modes
The Raspberry Pi shares hardware resources between Peripheral I/O and the audio subsystem (I2S and analog). Analog audio is transmitted through the 3.5mm audio jack. The following modes are supported:
| Mode | Activated By | Audio Routes | Pin Functions |
|---|---|---|---|
| Audio | Default mode; no PIO connections | I2S + Analog | N/A |
| PWM | PWM0 opened by PIO | Disabled | Pin BCM18 enabled as PWM |
| GPIO | Pin1 opened by PIO | Analog only | Named pin is GPIO |
1 Includes pins BCM18, BCM19, BCM20, and BCM21
When you are creating a hardware configuration in the Android Things Console, BCM18 and BCM19 pullup and pulldown resistors don't apply until the GPIO is actually opened in order to avoid interfering with the I2S bus on the same pins.


