Raspberry Pi 3 function mode matrix

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.