This is an old revision of the document!
Next parts suitable for vendor kernel only. GPIO numbers will be different for mainline linux kernel
This guide will introduce the 40-Pin GPIO Header of Khadas SBC. You can find the GPIO number of the available GPIOs on the 40-Pin Header and will show you the way to use it.
First of all, you need to get the correct GPIO numbers of the GPIOs you want to use. You can get them from the table below.
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 | |
502 | PIN.AO1 | 18 | 38 | PWR_EN | |
503 | PIN.AO2 | 19 | 39 | PWM_F | |
3.3V | 20 | 40 | GND |
GPIO | Name | Physical | Physical | Name | GPIO |
---|---|---|---|---|---|
5V | 1 | 21 | GND | ||
5v | 2 | 22 | PIN.DV25 | 474 | |
USB_DM | 3 | 23 | PIN.DV24 | 473 | |
USB_DP | 4 | 24 | GND | ||
GND | 5 | 25 | PIN.DV27 | 476 | |
470 | PIN.DV21 | 6 | 26 | PIN.DV26 | 475 |
471 | PIN.DV22 | 7 | 27 | 3.3V | |
472 | PIN.DV23 | 8 | 28 | GND | |
GND | 9 | 29 | PIN.H7 | 423 | |
ADC0 | 10 | 30 | PIN.H6 | 422 | |
1.8V | 11 | 31 | PIN.H9 | 425 | |
ADC1 | 12 | 32 | PIN.H8 | 424 | |
420 | PIN.H4 | 13 | 33 | PIN.AO6 | 507 |
GND | 14 | 34 | GND | ||
506 | PIN.AO5 | 15 | 35 | PIN.DV28 | 478 |
505 | PIN.AO4 | 16 | 36 | RTC_CLK | |
GND | 17 | 37 | PIN.H5 | 421 | |
502 | PIN.AO1 | 18 | 38 | EXP_INT | |
501 | PIN.AO0 | 19 | 39 | PIN.DV13 | 462 |
3.3v | 20 | 40 | GND |
GPIO | Name | Physical | Physical | Name | GPIO |
---|---|---|---|---|---|
5V | 1 | 21 | GND | ||
5V | 2 | 22 | PIN.A15 | 475 | |
USB_DM | 3 | 23 | PIN.A14 | 474 | |
USB_DP | 4 | 24 | GND | ||
GND | 5 | 25 | PIN.AO2 | 498 | |
MCU3V3 | 6 | 26 | PIN.AO3 | 499 | |
MCUNRST | 7 | 27 | 3V3 | ||
MCUSWIM | 8 | 28 | GND | ||
GND | 9 | 29 | PIN.A1 | 461 | |
ADC0 | 10 | 30 | PIN.A0 | 460 | |
1V8 | 11 | 31 | PIN.A3 | 463 | |
ADC1 | 12 | 32 | PIN.A2 | 462 | |
506 | PIN.AO10 | 13 | 33 | PIN.A4 | 464 |
GND3 | 14 | 34 | GND | ||
433 | PIN.H6 | 15 | 35 | PWM-F | 432 |
434 | PIN.H7 | 16 | 36 | RTC | |
GND | 17 | 37 | PIN.H4 | 431 | |
497 | PIN.AO1 | 18 | 38 | MCU-FA1 | |
496 | PIN.AO0 | 19 | 39 | PIN.Z15 | 426 |
3V3 | 20 | 40 | GND |
GPIO | Name | Pin | Pin | 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 | |
413 | PIN.D1 | 18 | 38 | PWR_EN1 | |
414 | PIN.D2 | 19 | 39 | PIN.D15 | 417 |
3V3 | 20 | 40 | GND |
GPIO | Name | Physical | Physical | Name | GPIO |
---|---|---|---|---|---|
5V | 1 | 21 | GND(0V) | ||
5V | 2 | 22 | SPI3_RXD/I2C0_SCK/GPIO1_C0 | 48 | |
HOST1_DM | 3 | 23 | SPI3_TXD/I2C0_SDA/GPIO1_B7 | 47 | |
HOST1_DP | 4 | 24 | GND(0V) | ||
GND(0V) | 5 | 25 | I2C2_SCL/GPIO2_A1 | 65 | |
MCU_TX | 6 | 26 | I2C2_SDA/GPIO2_A0 | 64 | |
MCU_NRST | 7 | 27 | 3.3V | ||
MCU_SWIM | 8 | 28 | GND(0V) | ||
GND(0V) | 9 | 29 | I2S0_SCLK/GPIO3_D0 | 120 | |
ADC_IN2 | 10 | 30 | I2S_CLK/GPIO4_A0 | 128 | |
1.8V | 11 | 31 | I2S0_SDO0/GPIO3_D7 | 127 | |
ADC_IN3 | 12 | 32 | 2S0_LRCK_TX/GPIO3_D2 | 122 | |
112 | SPDIF/GPIO3_C0 | 13 | 33 | I2S0_SDI0/GPIO3_D3 | 123 |
GND(0V | 14 | 34 | GND(0V) | ||
50 | SPI3_CS/GPIO1_C2 | 15 | 35 | I2S0_SDI3SDO1/GPIO3_D6 | 126 |
49 | SPI3_CLK/GPIO1_C1 | 16 | 36 | 2S0_SDI2SDO2/GPIO3_D5 | 125 |
GND(0V) | 17 | 37 | I2S0_SDI1SDO3/GPIO3_D4 | 124 | |
UART_RX | 18 | 38 | I2S0_LRCK_RX/GPIO3_D1 | 121 | |
UART_TX | 19 | 39 | MCU_PA1 | ||
3.3V | 20 | 40 | GND(0V) |
Please make sure that the GPIOs you want to use are not configured as other functions, if they are configured as other function, you can follow Device Tree Overlay to configure them as GPIOs.
When you get the GPIO number, you can follow the steps below to control it. Here will take GPIO number 465
as an example.
Export GPIO:
$ echo 465 | sudo tee /sys/class/gpio/export
Set GPIO direction:
You can set the direction input or output.
$ echo out | sudo tee /sys/class/gpio/gpio465/direction # Set GPIO output $ echo in | sudo tee /sys/class/gpio/gpio465/direction # Set GPIO input
Set or get GPIO value:
$ echo 1 | sudo tee /sys/class/gpio/gpio465/value # Set GPIO output high $ echo 0 | sudo tee /sys/class/gpio/gpio465/value # Set GPIO output low $ cat /sys/class/gpio/gpio465/value # Get GPIO input value
Unexport GPIO:
$ echo 465 | sudo tee /sys/class/gpio/unexport
If you got the similar error below, it means that the PIN you try to export is used for other function, you need to edit the Device Tree Overlay configuration file to set the PIN as normal GPIO.
khadas@Khadas:~$ echo 465 | sudo tee /sys/class/gpio/export
tee: /sys/class/gpio/export: Invalid argument