This is an old revision of the document!
| GPIO | Name | Physical | Physical | Name | GPIO |
|---|---|---|---|---|---|
| 5V | 1 | 21 | GND | ||
| 5V | 2 | 22 | PIN.DV25 | 474 | |
| HUB_DM1 | 3 | 23 | PIN.DV24 | 473 | |
| HUB_DP1 | 4 | 24 | GND | ||
| GND | 5 | 25 | PIN.DV27 | 476 | |
| 5V | 6 | 26 | PIN.DV26 | 475 | |
| HUB_DM2 | 7 | 27 | 3.3V | ||
| HUB_DP2 | 8 | 28 | GND | ||
| GND | 9 | 29 | PIN.H7 | 423 | |
| ADC.CH0 | 10 | 30 | PIN.H6 | 422 | |
| GND | 11 | 31 | PIN.H9 | 425 | |
| ADC.CH2 | 12 | 32 | PIN.H8 | 424 | |
| 420 | PIN.H4 | 13 | 33 | PIN.AO6 | 507 |
| GND | 14 | 34 | GND | ||
| 506 | PIN.AO5 | 15 | 35 | PIN.AO3 | 504 |
| 505 | PIN.AO4 | 16 | 36 | RTC_CLK | |
| GND | 17 | 37 | PIN.H5 | 421 | |
| PIN.AO1 | 18 | 38 | PWR_EN | ||
| PIN.AO2 | 19 | 39 | PWM_F | ||
| 3.3V | 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.