---
name: "gpioctl"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd", "openbsd"]
url: "https://new.carta.tech/gpioctl"
---

# gpioctl(8)

GPIO control utility

## NAME

**gpioctl** – GPIO control utility

## SYNOPSIS

**gpioctl** \[**-f** *ctldev*\] **-l** \[**-v**\]

**gpioctl** \[**-f** *ctldev*\] \[**-pN**\] **-t** *pin*

**gpioctl** \[**-f** *ctldev*\] \[**-pN**\] **-c** *pin* *flag* \[flag ...\]

**gpioctl** \[**-f** *ctldev*\] \[**-pN**\] **-n** *pin* *pin-name*

**gpioctl** \[**-f** *ctldev*\] \[**-pN**\] *pin* *\[0\|1\]*

## DESCRIPTION

The **gpioctl** utility could be used to manage GPIO pins from userland and list available pins.

The *pin* argument can either be a *pin-number* or a *pin-name*. If it is a number and a pin has this number as its name and you did not use **-N** or **-p** , then **gpioctl** exits.

The options are as follows:

- **-c** *pin* *flag* \[flag ...\]

  Configure pin by setting provided flags. The following flags are currently defined:

  - **IN**

    Input pin

  - **OUT**

    Output pin

  - **OD**

    Open drain pin

  - **PP**

    Push pull pin

  - **TS**

    Tristate pin

  - **PU**

    Pull-up pin

  - **PD**

    Pull-down pin

  - **II**

    Inverted input pin

  - **IO**

    Inverted output pin

- **-f** *ctldev*

  GPIO controller device to use If not specified, defaults to */dev/gpioc0*

- **-l**

  list available pins

- **-n** *pin* *pin-name*

  set the name used to describe the pin

- **-t** *pin*

  toggle value of provided pin

- **-v**

  be verbose: for each listed pin print current configuration

- **-p**

  Force *pin* to be interpreted as a pin number

- **-N**

  Force *pin* to be interpreted as a pin name

## EXAMPLES

- List pins available on GPIO controller defined by device /dev/gpioc0

  gpioctl -f /dev/gpioc0 -l

- Set the value of pin 12 to 1

  gpioctl -f /dev/gpioc0 12 1

- Configure pin 12 to be input pin

  gpioctl -f /dev/gpioc0 -c 12 IN

- Set the name of pin 12 to test

  gpioctl -f /dev/gpioc0 -n 12 test

- Toggle the value the pin named test

  gpioctl -f /dev/gpioc0 -t test

- Toggle the value of pin number 12 even if another pin has the name 12

  gpioctl -f /dev/gpioc0 -pt 12

## SEE ALSO

[gpio(4)](/gpio/4.md), [gpioiic(4)](/gpioiic/4.md), [gpioled(4)](/gpioled/4.md)

## HISTORY

The **gpioctl** utility appeared in FreeBSD 9.0.

## AUTHORS

The **gpioctl** utility and this manual page were written by Oleksandr Tymoshenko ⟨*gonzo@FreeBSD.org*⟩.
