Elevate your permissions to root user to allow IO access

sudo -i
Setup to control pin as output

Substitute 23 in the following commands for your GPIO number (GPIO, not pin number)

echo "23" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio23/direction
Control Output State

echo "1" > /sys/class/gpio/gpio23/value
echo "0" > /sys/class/gpio/gpio23/value
Setup to read pin as an input

Substitute 23 in the following commands for your GPIO number (GPIO, not pin number)

echo "23" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio23/direction
Read its state

cat /sys/class/gpio/gpio23/value

To Release A Pin Afterwards

echo "23" > /sys/class/gpio/unexport


We benefit hugely from resources on the web so we decided we should try and give back some of our knowledge and resources to the community by opening up many of our company’s internal notes and libraries through mini sites like this. We hope you find the site helpful.
Please feel free to comment if you can add help to this page or point out issues and solutions you have found, but please note that we do not provide support on this site. If you need help with a problem please use one of the many online forums.


  1. ccppizz

    3 years ago

    There is no need to fiddle with with /sys folder and root. You can use the `gpio` command-line utility that is available for pi-b3/pi-b3+ and newer. If you don’t have it then install the wiringPi package from apt or build from the github repo.

    Equivalent code to the commands in the article (run as normal user, no need for sudo as the gpio binary has the sticky bit set)

    gpio -g mode 23 out

    # turn ON
    gpio -g write 23 1

    # turn OFF
    gpio -g write 23 0

    1. kyros

      3 years ago

      Conveniently, this taught me how to access the lower level devices though, which is long term going to be more useful than what I was looking for here. So win win. Yours is nice though, it is what I was looking for when I found this page.

  2. Marcsello

    9 years ago

    For some reason if works reversed for me :P
    the output is HIGH when I echo 0 and vica versa :S

    1. ccppizz

      3 years ago

      @Marcsello: that’s because you have 3 pins on your relay; it can be used in two modes normally ON, and normally OFF. Use the other pin on the relay and you’ll get the inversed logic.


Your email address will not be published. Required fields are marked *