Warning

This documentation is actively being updated as the project evolves and may not be complete in all areas.

gpiod driver

jumpstarter-driver-gpiod provides functionality for interacting with gpiod GPIO pins for digital input/output operations.

This requires the /dev/gpiochip[0..N] device available on the system, and you can use the gpioinfo gpiod tool to list the available GPIO lines.

Installation

$ pip3 install --extra-index-url https://pkg.jumpstarter.dev/simple jumpstarter-driver-gpiod

Configuration

The gpiod driver provides three main driver types:

DigitalOutput Configuration

Example configuration for digital output:

export:
  led_output:
    type: jumpstarter_driver_gpiod.driver.DigitalOutput
    config:
      device: "/dev/gpiochip0"
      line: 18
      drive: "push_pull"
      active_low: false
      bias: "pull_up"
      initial_value: "inactive"

DigitalInput Configuration

Example configuration for digital input:

export:
  button_input:
    type: jumpstarter_driver_gpiod.driver.DigitalInput
    config:
      line: 17
      active_low: false
      bias: "pull_up"

PowerSwitch Configuration

Example configuration for power switching:

export:
  power_switch:
    type: jumpstarter_driver_gpiod.driver.PowerSwitch
    config:
      line: 18
      mode: "push_pull"
      active_low: false
      bias: "pull_up"
      initial_value: "inactive"

Config parameters

Parameter

Description

Type

Required

Default

Driver Types

device

The GPIO device to use (can be integer or string like “/dev/gpiochip0”)

str

no

“/dev/gpiochip0”

All

line

The GPIO line number to use

int

yes

All

drive

The drive mode for the GPIO line. Options: “push_pull”, “open_drain”, “open_source”

str

no

null

DigitalOutput, PowerSwitch

active_low

Whether the pin is active low (True) or active high (False)

bool

no

False

All

bias

The bias configuration for the GPIO line. Options: “as_is”, “pull_up”, “pull_down”, “disabled”

str

no

null

All

initial_value

The initial value for output pins. Options: “active”, “inactive”, “on”, “off”, True, False

str/bool

no

“inactive”

DigitalOutput, PowerSwitch

mode

The mode for PowerSwitch (same as drive parameter)

str

no

“push_pull”

PowerSwitch

API Reference

DigitalOutputClient

class jumpstarter_driver_gpiod.client.DigitalOutputClient

A client for handling digital output operations on GPIO pins.

off()

Turn gpio off.

on()

Turn gpio on.

read()

Read gpio state.

DigitalInputClient

class jumpstarter_driver_gpiod.client.DigitalInputClient

A client for handling digital input operations on GPIO pins.

Examples

Digital Output Examples

Basic LED control:

# Turn LED on
led_output.on()

# Turn LED off
led_output.off()

# Read current state
state = led_output.read()
print(f"LED state: {state}")

Digital Input Examples

Button input with edge detection:

# Read current input state
state = button_input.read()
print(f"Button state: {state}")

# Wait for button press (active state)
button_input.wait_for_active(timeout=10.0)

# Wait for button release (inactive state)
button_input.wait_for_inactive(timeout=10.0)

# Wait for rising edge (button press)
button_input.wait_for_edge("rising", timeout=10.0)

# Wait for falling edge (button release)
button_input.wait_for_edge("falling", timeout=10.0)

Power Switch Examples

Power control for devices:

# Turn power on
power_switch.on()

# Turn power off
power_switch.off()

# Read current power state
state = power_switch.read()
print(f"Power state: {state}")

Pin Configuration Details

Drive Modes

  • push_pull: Standard push-pull output (default)

  • open_drain: Open-drain output (useful for I2C, etc.)

  • open_source: Open-source output

Bias Configuration

  • as_is: No bias (default)

  • pull_up: Internal pull-up resistor

  • pull_down: Internal pull-down resistor

  • disabled: Disable bias

Active Low vs Active High

  • active_low: false (default): Pin is active when HIGH

  • active_low: true: Pin is active when LOW

Initial Values

For output pins, you can set the initial state:

  • “inactive” or “off” or False: Start with pin LOW

  • “active” or “on” or True: Start with pin HIGH

Hardware Requirements

  • gpiod with GPIO access

  • Python gpiod library installed

  • Appropriate permissions to access /dev/gpiochip0

Error Handling

The driver includes comprehensive error handling for:

  • Invalid pin numbers

  • Invalid drive/bias configurations

  • Hardware access errors

  • Timeout conditions for input operations