Raspberry Pi 3

Raspberry Pi 3 Model B is the latest iteration of the world's most popular single board computer. It provides a quad-core 64-bit ARM Cortex-A53 CPU running at 1.2GHz, four USB 2.0 ports, wired and wireless networking, HDMI and composite video output, and a 40-pin GPIO connector for physical interfacing projects.


See the I/O pinouts for more details on the Peripheral I/O signals on this board.

Flashing the image

Before you begin flashing, you will need the following items in addition to your Raspberry Pi:

  • Micro-USB cable
  • Ethernet cable
  • MicroSD card reader
  • 8 GB or larger microSD card

Optional items:

  • HDMI cable
  • HDMI-enabled display

Step 1: Flash Android Things


Follow these steps to flash the Android Things image onto the microSD card:

  1. Download the Android Things Setup Utility from the Android Things Console. You will need to sign in to your Google account and accept the licensing agreement and terms of service.

  2. Unzip the downloaded archive.

  3. Start the setup utility.

    • On Windows, right-click on the executable file and select Run as administrator.
    • On Mac or Linux, start the utility from the terminal. For example:

      $ sudo ~/Downloads/android-things-setup-utility/android-things-setup-utility-linux
  4. Select the option to install Android Things and optionally set up Wi-Fi.

    1. Select Raspberry Pi 3 as the hardware board.
    2. Choose either a generic image or your own custom image of Android Things for flashing the board.

    3. Follow the rest of the utility prompts to write the image. When the utility has finished writing the image, eject the external drive and remove the microSD card.

  5. Insert the microSD card into the microSD slot on the underside of the Raspberry Pi.

If you don't want to use the setup utility, you can:

Step 2: Connect the hardware

Make the following connections to your board:


  1. Connect a USB cable to J1 for power.
  2. Connect an Ethernet cable to your local network.

    • Connect the Ethernet cable to your development computer and assign the Raspberry Pi an IP address using DHCP.
    • Connect a serial cable from the Raspberry Pi to your development computer. Use a serial console to connect to Wi-Fi.
  3. (Optional) Connect an HDMI cable to an external display.

  4. Verify that Android is running on the device. To do this, you need to find the IP address of the device:

    • If you connected a display, the Android Things Launcher will use it to show information about the board, including the IP address.
    • If you assigned an IP address to the device using DHCP, find this address in the network settings of your router or development computer.
  5. Connect to the IP address using the adb tool:

    $ adb connect <ip-address>
    connected to <ip-address>:5555

Connect Wi-Fi

After flashing your board, it is strongly recommended to connect it to the internet. This allows your device to deliver crash reports and receive updates.

To connect to Wi-Fi, do one of the following:

Serial debug console

The serial console is a helpful tool for debugging your board and reviewing system log information. The console is the default output location for kernel log messages (i.e. dmesg), and it also provides access to a full shell prompt that you can use to access commands such as logcat. This is helpful if you are unable to access ADB on your board through other means and have not yet enabled a network connection.

To access the serial console, connect a USB to TTL Serial Cable to the device UART pins as shown below.


Open a connection to the USB serial device on your development computer using a terminal program, such as PuTTY (Windows), Serial (Mac OS), or Minicom (Linux). The serial port parameters for the console are as follows:

  • Baud Rate: 115200
  • Data Bits: 8
  • Parity: None
  • Stop Bits: 1

I/O Pinouts

This section describes the Peripheral I/O interfaces available to your apps running on the Raspberry Pi 3.

The Raspberry Pi has pins that are multiplexed between various board functions. Some board functions cannot be used simultaneously (for example, enabling Bluetooth and using the UART0 port for peripheral I/O). For more information, see the pin function modes.

The following pinout diagram illustrates the locations of the available ports exposed by the breakout connectors of this board:

GPIO Signal Alternate Functions

Pin Function Modes

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.