The Pico SoM is a 36x40mm, high performance platform that is highly optimized for Internet of Things applications. It is pin-compatible with the Intel® Edison for sensors and low-speed I/O, but also adds additional expansion possibilities for multimedia and connectivity, giving you cutting edge technology that can easily be expanded and implemented for IoT designs.
Flashing the image
Before you begin flashing, you will need the following items in addition to your Pico board:
- USB-C cable
- 5V DC power adapter
To flash Android Things onto your Pico, download the latest preview image, unzip it on your host computer, and follow these steps:
Update the Android SDK Platform Tools to version 25.0.3 or later from the SDK Manager.
- Verify that the
fastbootbinary is installed in the
platform-tools/directory of your Android SDK.
- After you have the fastboot tool, add it to your
- Verify that the
Connect the board to your host computer:
- Connect a USB-C cable to the USB OTG connector.
- Connect a 5V power adapter to the power input connector.
Open a command line terminal and verify that the device has booted into fastboot mode by executing the following:
$ fastboot devices 1b2f21d4e1fe0129 fastboot
Ensure that the bootloader is unlocked.
$ fastboot oem unlock
Navigate to the unzipped image directory.
Execute the following
fastbootcommands to install the operating system image:
$ fastboot \ flash bootloader u-boot.imx \ reboot bootloader $ fastboot \ flash gpt partition-table.img \ reboot bootloader $ fastboot \ flash boot_a boot.img \ flash boot_b boot.img \ flash system_a system.img \ flash system_b system.img \ flash userdata userdata.img \ set_active _a $ fastboot \ flash gapps_a gapps.img \ flash gapps_b gapps.img $ fastboot \ flash oem_a oem.img \ flash oem_b oem.img
Reboot the device into Android Things:
$ fastboot reboot
To verify that Android is running on the device, execute the following:
$ adb devices List of devices attached 4560736843791520041 device
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.
Before connecting your board to a Wi-Fi network, attach an external IPEX or u.FL Wi-Fi antenna to your board as shown:
To connect your board to Wi-Fi using
Send an intent to the Wi-Fi service that includes the SSID and passcode of your local network:
$ adb shell am startservice \ -n com.google.wifisetup/.WifiSetupService \ -a WifiSetupService.Connect \ -e ssid <Network_SSID> \ -e passphrase <Network_Passcode>
Verify that the connection was successful through
$ adb logcat -d | grep Wifi ... V WifiWatcher: Network state changed to CONNECTED V WifiWatcher: SSID changed: ... I WifiConfigurator: Successfully connected to ...
Test that you can access a remote IP address:
$ adb shell ping 188.8.131.52 PING 184.108.40.206 (220.127.116.11) 56(84) bytes of data. 64 bytes from 18.104.22.168: icmp_seq=1 ttl=57 time=6.67 ms 64 bytes from 22.214.171.124: icmp_seq=2 ttl=57 time=55.5 ms 64 bytes from 126.96.36.199: icmp_seq=3 ttl=57 time=23.0 ms 64 bytes from 188.8.131.52: icmp_seq=4 ttl=57 time=245 ms
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 debug interface 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