Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.

GPIOCTL(8)                  System Manager's Manual                 GPIOCTL(8)

     gpioctl - control GPIO devices

     gpioctl [-qs] device
     gpioctl [-q] device attach device offset mask [flag]
     gpioctl [-qs] device pin [0 | 1 | 2]
     gpioctl [-qs] device pin [on | off | toggle]
     gpioctl [-q] device pin set [flags] [name]
     gpioctl [-q] device pin unset
     gpioctl [-q] device list

     The gpioctl program allows manipulation of GPIO (General Purpose
     Input/Output) device pins.  Such devices can be either part of the
     chipset or embedded CPU, or a separate chip.  The usual way of using GPIO
     is to connect some simple devices such as LEDs and 1-wire thermal sensors
     to its pins.

     Each GPIO device has an associated device file in the /dev directory.
     device can be specified with or without the /dev prefix.  For example,
     /dev/gpio0 or gpio0.

     GPIO pins can be either "read" or "written" with the values of logical 0
     or 1.  If only a pin number is specified on the command line, the pin
     state will be read from the GPIO controller and displayed.  To write to a
     pin, a value must be specified after the pin number.  Values can be
     either 0 or 1.  A value of 2 "toggles" the pin, i.e. changes its state to
     the opposite.  Instead of the numerical values, the word on, off, or
     toggle can be used.

     Only pins that have been configured at securelevel 0, typically during
     system startup, are accessible once the securelevel has been raised.
     Pins can be given symbolic names for easier use.  Besides using
     individual pins, device drivers that use GPIO pins can be attached to a
     gpio(4) device using the gpioctl command.  Such drivers can be detached
     at runtime using the drvctl(8) command.

     The following configuration flags are supported by the GPIO framework:

           in      input direction
           out     output direction
           inout   bi-directional
           od      open-drain output
           pp      push-pull output
           tri     tri-state (output disabled)
           pu      internal pull-up enabled
           pd      internal pull-down enabled
           iin     invert input
           iout    invert output
                   pulsate output at a hardware-defined frequency and duty
           alt0 - alt7
                   select alternate pin function 0 to 7

     Note that not all the flags may be supported by the particular GPIO

     When executed with only the gpio(4) device name as argument, gpioctl
     reads information about the GPIO device and displays it.  At securelevel
     0 the number of physically available pins is displayed, at higher
     securelevels the number of configured (set) pins is displayed.

     The options are as follows:

     -q      Operate quietly i.e. nothing is printed to stdout.

     -s      Only output a single number on stdout, representing either the
             state of the pin or the number of available pins if no pin number
             was passed as argument.  This option is useful e.g. when gpioctl
             is used in shell scripts to query the state of a pin.

     /dev/gpiou  GPIO device unit u file.

     Configure pin 20 to have push-pull output:

           # gpioctl gpio0 20 set out pp

     Write logical 1 to pin 20:

           # gpioctl gpio0 20 1

     Attach a onewire(4) bus on a gpioow(4) device on pin 4:

           # gpioctl gpio0 attach gpioow 4 0x01

     Detach the gpioow0 device:

           # drvctl -d gpioow0

     Configure pin 5 as output and name it error_led:

           # gpioctl gpio0 5 set out error_led

     Toggle the error_led:

           # gpioctl gpio0 error_led 2

     Enumerate all pins and display their symbolic names:

           # gpioctl gpio0 list

     gpio(4), drvctl(8)

     The gpioctl command first appeared in OpenBSD 3.6 and NetBSD 4.0.

     The gpioctl program was written by Alexander Yurchenko
     <grange@openbsd.org>.  Device attachment was added by Marc Balmer

NetBSD 9.99                    October 20, 2019                    NetBSD 9.99