This is an old revision of the document!
| GPIO | Name | Physical | Physical | Name | GPIO |
|---|---|---|---|---|---|
| 5V | 1 | 21 | GND | ||
| 5V | 2 | 22 | PIN.Y17 | 501 | |
| HUB_D4N | 3 | 23 | PIN.Y18 | 502 | |
| HUB_D4P | 4 | 24 | GND | ||
| GND | 5 | 25 | PIN.T20 | 466 | |
| VCCMCU | 6 | 26 | PIN.T21 | 467 | |
| MCUBOOT0 | 7 | 27 | 3V3 | ||
| MCUSWDIO | 8 | 28 | GND | ||
| GND | 9 | 29 | PIN.T1 | 447 | |
| ADC_CH6 | 10 | 30 | PIN.T0 | 446 | |
| VDD1V8 | 11 | 31 | PIN.T3 | 449 | |
| ADC_CH3 | 12 | 32 | PIN.T2 | 448 | |
| 420 | SPDIFOUT | 13 | 33 | PIN.T4 | 450 |
| GND | 14 | 34 | GND | ||
| 491 | PIN.Y7 | 15 | 35 | PIN.Y8 | 482 |
| 490 | PIN.Y6 | 16 | 36 | PIN.T18 | 464 |
| GND | 17 | 37 | PIN.T19 | 465 | |
| PIN.D1 | 18 | 38 | PWR_EN1 | ||
| PIN.D2 | 19 | 39 | PIN.D15 | 417 | |
| 3V3 | 20 | 40 | GND |
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 Device Tree Overlay.
Once you have identified the correct GPIO number (e.g., 465), follow these steps to control it via the sysfs interface.
Make the GPIO accessible to user space:
$ echo 465 | sudo tee /sys/class/gpio/export
Configure the GPIO as either an input or an output:
# Set GPIO output $ echo out | sudo tee /sys/class/gpio/gpio465/direction # Set GPIO input $ echo in | sudo tee /sys/class/gpio/gpio465/direction
If configured as an output, you can set its logic level:
# 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
If configured as an input, read its current logic level:
$ cat /sys/class/gpio/gpio465/value
The command returns 0 (low) or 1 (high).
When finished, release the GPIO:
$ echo 465 | sudo tee /sys/class/gpio/unexport
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):
echo 465 | sudo tee /sys/class/gpio/export tee: /sys/class/gpio/export: Invalid argument
Solution: Modify the Device Tree Overlay configuration to free the pin and define it as a standard GPIO.