{{indexmenu_n>1}} ====== GPIO Header ====== ====== GPIO Usage Examples ====== Before using a GPIO, ensure it is not configured for another function (e.g., I2C, SPI). If it is, you can reconfigure it as a standard GPIO by applying a [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]]. Once you have identified the correct GPIO number (e.g., 465), follow these steps to control it via the sysfs interface. ===== Export GPIO ===== Make the GPIO accessible to user space: ```shell $ echo 465 | sudo tee /sys/class/gpio/export ``` ===== Set GPIO Direction ===== Configure the GPIO as either an input or an output: ```shell # Set GPIO output $ echo out | sudo tee /sys/class/gpio/gpio465/direction # Set GPIO input $ echo in | sudo tee /sys/class/gpio/gpio465/direction ``` ===== Set GPIO value ===== If configured as an output, you can set its logic level: ```shell # Set GPIO output high $ echo 1 | sudo tee /sys/class/gpio/gpio465/value # Set GPIO output low $ echo 0 | sudo tee /sys/class/gpio/gpio465/value ``` ===== Read GPIO Input value ===== If configured as an input, read its current logic level: ```shell $ cat /sys/class/gpio/gpio465/value ``` The command returns 0 (low) or 1 (high). ===== Unexport GPIO ===== When finished, release the GPIO: ```shell $ echo 465 | sudo tee /sys/class/gpio/unexport ``` ===== Troubleshooting ===== If you encounter an error similar to the following when exporting, the GPIO pin is likely reserved for another function (e.g., by the device tree): ```shell echo 465 | sudo tee /sys/class/gpio/export tee: /sys/class/gpio/export: Invalid argument ``` **Solution**: Modify the [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]] configuration to free the pin and define it as a standard GPIO.