gpioutil

List, read from, write to, and configure GPIOs.

Usage

gpioutil <command> [<name>] [<value>]

Commands

list

gpioutil list

List the known GPIOs.

list returns values like this:

[gpio-0] GPIO_HW_ID_3

The value inside the brackets (gpio-0) is a reference to the pin index. The value after the brackets (GPIO_HW_ID_3) is the <name> value to provide to other gpioutil commands. See GPIO names for more details.

Aliases: l

read

gpioutil read <name>

Read the current value of a GPIO that's configured as OUT.

<name> should be one of the values returned from list.

Possible return values are 0 (LOW) or 1 (HIGH).

Aliases: r

in

gpioutil in <name>

Configure a GPIO as IN.

<name> should be one of the values returned from list.

This command doesn't return a value.

Aliases: i

out

gpioutil out <name> <value>

Configure a GPIO as OUT.

<name> should be one of the values returned from list.

<value> is the initial OUT value. Accepted values are 0 (LOW) or 1 (HIGH).

This command doesn't return a value.

Aliases: o

drive

gpioutil drive <name> [<value>]

Get or set the drive strength of a GPIO in microamps.

<name> should be one of the values returned from list.

When <value> is omitted, drive returns the current drive strength of the GPIO in microamps.

When <value> is provided, drive updates the drive strength of the GPIO. <value> should be in microamps.

Aliases: d

interrupt

gpioutil interrupt <name> <value>

Get the GPIO interrupt and wait for it to be triggered once.

<name> should be one of the values returned from list.

<value> is the interrupt mode to use. Accepted values are default, edge-high, edge-low, edge-both, level-low, or level-high.

Aliases: q

function

gpioutil function <name> <value>

Set the function for a pin.

<name> should be one of the values returned from list.

<value> is an function number that is specific to the GPIO controller being used.

Aliases: f

pull

gpioutil pull <name> <value>

Configure the pull-up or pull-down resistor for a pin.

<name> should be one of the values returned from list.

<value> is the resistor pull. Accepted values are down, up, or none.

Aliases: p

help

gpioutil help

Print help text.

Aliases: h

Examples

List all known GPIOs

$ gpioutil list
[gpio-0] GPIO_HW_ID_3
[gpio-1] GPIO_SOC_TH_BOOT_MODE_L
...

Read the current value of a GPIO

$ gpioutil read GPIO_HW_ID_3
GPIO Value: 1

Write a LOW value to a GPIO

$ gpioutil write GPIO_HW_ID_3 0

Configure a GPIO as IN with a pull-down resistor

$ gpioutil in GPIO_HW_ID_3 down

Configure a GPIO as OUT with an initial value of HIGH

$ gpioutil out GPIO_HW_ID_3 1

Get the current drive strength of a GPIO in microamps

$ gpioutil drive GPIO_HW_ID_3
Drive Strength: 500 ua

Set the drive strength of a GPIO to 500 microamps

$ gpioutil drive GPIO_HW_ID_3 500
Set drive strength to 500

Wait for a falling edge on a GPIO

$ gpioutil interrupt GPIO_HW_ID_3 edge-low
Received interrupt at time 12345

Set a pin to function six

$ gpioutil function GPIO_HW_ID_3 6

Notes

Accessing this command

This command is only available on certain diagnostic and testing Fuchsia builds.

This is a device-side command, not a host-side command like fx or ffx. In other words before calling this command you must first access the shell of the Fuchsia device.

To interactively access the Fuchsia device's shell:

ffx component explore <component>

Replace <component> with the name of the component that has access to the command documented on this page.

To call a single command and return the output to the host:

ffx component explore <component> -c "<command>"

Replace <command> with one of the commands documented on this page.

GPIO names

GPIO names are defined in the driver source code and usually match the datasheet's name for the GPIO. See the DECL_GPIO_PIN statements in vim3-gpio.cc for an example.

Source code

Source code for gpioutil: //src/devices/gpio/bin/gpioutil/