How to Add a Power Button to Your Raspberry Pi

To keep the Raspberry Pi affordable, it does not have a power button. However, you can add one. This guide will show you how to add power switches to your Raspberry Pi to turn it on and off. This is one of our most important Raspberry Pi projects!

Raspberry Pi Projects: Find amazing Raspberry Pi projects for all skill levels!

A few scripts are used to monitor the two GPIO Pins on your Pi. They will also monitor the button that turns on the Pi.

Why is the Raspberry Pi’s power button so important

You should not pull the power cord from your Pi as this could lead to severe data corruption or physical damage to your SD cards. The software command or switch or power button can be used to turn off the Pi safely (see this guide). 🙂

Don’t pull the plug.

Notice: When we “shut down” Pi, it causes it to enter an inoperable state. This still uses very little power. This is how modern computers work. This guide will demonstrate how to add a power switch to your Pi. It will halt the Pi and bring it up from a paused position. After the Pi is shut down, you can safely disconnect its power supply.

Raspberry Pi 4 Support

In the Raspberry Pi 4’s early models, WAKE_ON_GPIO wasn’t enabled. This means you can’t wake it up using the instructions in this guide. This feature is supported by the latest bootloader.

This guide may not work for your Raspberry Pi 4 device. You will need to manually install the bootloader if it isn’t working. These files can be downloaded by following the instructions.


 Also, we made a Raspberry Pi power button clip. You can check it out, then read on for the full guide!


HomeInterestsRaspberry Pi

How to add a power button to your Raspberry Pi

You should always turn off your Pi.

John (304)

Nov 25, 2020

20 minutes

The Raspberry Pi does not come with a power button to keep it affordable, but you can easily add one! This guide will teach you how to add a power switch to your Raspberry Pi so it can turn on and off. This is one of our most valuable Raspberry Pi projects!

Raspberry Pi Projects – Find amazing Raspberry Pi projects for every skill level!

A few scripts will be used to monitor the two GPIO pins of your Pi. They will also look for the button that is pressed to turn on the Pi.

Why is the Raspberry Pi power button so important?

As this could cause severe data corruption and even physical damage to your SD card, you should not “yank” your Pi’s power cord. You can safely turn off your Pi using a software command, or a switch or power button (see this guide). 🙂

 Don’t pull the plug.

Notice: If we “shut down” a Pi, it will cause it to enter a halt state. However, this still consumes very little power. This is how modern computers operate. This guide will show you how to add a power button to your Pi that will both halt it and bring it back up from a paused state. You can also safely disconnect the power supply after the Pi has been shut down.

Raspberry Pi 4 Support

The bootloader that was used in the early Raspberry Pi 4 units did not come with WAKE_ON_GPIO disabled. This means you cannot wake it using the methods we have outlined here. The latest bootloader supports this feature.

If your Raspberry Pi 4 unit is not working after following this guide, it may be necessary to manually install the bootloader. Follow the instructions to download these files.


Also, we made a Raspberry Pi power-button video. Check it out and then continue reading for the complete guide!



Raspberry Pi × 1
Soldering Iron × 1
Electronics Kit × 1
Solder × 1
NO momentary switch × 1
Pre-soldered Raspberry Pi power button × 1


 is reader-supported. If you purchase via our links, we may be eligible to receive a small affiliate commission.

Table of Contents

Jump to the next step

  1. Get your supplies

  2. Understanding wake functionality

  3. Sleep functionality is in development

  4. To test the button, use a breadboard

  5. Our final circuit

  6. Uninstalling

  7. Next: Install an LED power indicator for your Pi

These are my interests


Raspberry Pi

250 guides = h/pi



h/python *67 Guides



h/electronics 8 Guides

Raspberry Pi Basics Series


Get your supplies


Pre-soldered Raspberry Pi power button

Shop at Howchoo

Before we can start, we need to gather all necessary supplies. You will need a Raspberry Pi for this project. Any version of the Raspberry Pi will work.

If you’re following this guide, you will need to choose the right button for your project. While I will be using a large button, it is important to select a “normally open momentary push button”.

Amazon has a wide selection of momentary push buttons you can add to your Pi Cart.

Pi Cart: A Raspberry Pi Retro Gaming Rig and an NES Cartridge

You have two options to make your button.

Option 1: You can make a button assembly using a premade kit. This is the easiest.

If you don’t have a soldering iron or don’t want your Raspberry Pi to burst, you can order a premade Raspberry Pi Power Button Assembly. This eliminates the need for breadboard or soldering.


All Available

Pre-soldered Raspberry Pi power button

Shop at Howchoo

Option 2: Create your own button assembly

This is an option if you have a soldering torch already and are looking for a particular size button. For a complete list, see the Tools and Materials section.



Understanding wake functionality


This is the end of the road. Before we can create the shutdown functionality, however, we need to understand how to wake up the Pi from a halt. To wake the Pi from a halt, you can reduce pins 5-6 (GPIO3 and GND).

You can do this by closing down the Pi with sudo shutdown-h and connecting pins 5- 6 with a male cable to a female. These pins can temporarily be shorted. You will then see that the Pi “awakes” to reality.


Sleep functionality is in development

There are two ways to build the sleep functionality. You can either use our script to install it or do it manually. Although the manual method is simpler, I recommend it.

Option 1: Use our easy-to-use install script.

It is easy to install the required scripts by copying the repository power buttons and then running the installation script.

If git is not installed on your Pi, install it and then SSH into it.

git clone



Please read the following section if you’re interested in learning more about these scripts.

Option 2: Manual installation

The wake solution is simple, but it is not safe to turn off the Pi. To wake the Pi, we know that pins 5 and 6 will be used. These pins can be used to shut it down. This will enable us to attach a button to the pins. It will turn off and wake up the Pi.

It will be necessary to create a script that listens for the button presses and turns off the Pi. Before we move on to the script, let’s discuss some options. First, we could write a script that starts an infinite loop and waits for a change in the GPIO pin status before it executes the script. You could see this with pseudo-code

It’s true

If GPIO3 has been pressed

Turn off the pi

Although this would be a great solution, it can cause performance problems. Listening for edge detection can detect an interrupt. Interrupts are a state change, such as HIGH to HIGH or HIGH–LOW to LOW. Wait_for_edge, a function in the RPi.GPIO Library that will stop execution until it detects an interruption, is a function. Once we detect a falling edge, we’ll start GPIO3 on the Pi and shut it down.

First, we’ll need to connect via SSH directly to the Pi. Then, we’ll use a script called

SSH is the most widely used and popular method to connect to your Raspberry Pi remotely to execute commands.

To create the script, you can use the nano editor.  After connecting to your Pi, run the following command to create a file called

sudo nano

To exit, copy the code below and press CTRL-X/Y.

#!/usr/bin/env Python


Import RPi.GPIO from GPIO

Subprocesses to import



GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.wait_for_edge(3, GPIO.FALLING)[‘shutdown’, ‘-h’, ‘now’], shell=False)

Next, we need to start the script at boot. To make the script executable, we will place it in /usr/local/bin.

sudo mv /usr/local/bin/

sudo chmod +x /usr/local/bin/

 Now add another script called that will start/stop our service. This script is easy to create:

sudo nano

Enter the code below to save the file.

#! /bin/sh



# Provides:

# Required-Start: $remote_fs $syslog

# Required-Stop: $remote_fs $syslog

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6



# If you want it to, you can create a command that will always run here.


# Perform certain functions as required by the system

Case “$1”.


echo “Starting”

/usr/local/bin/ &



echo “Stopping”

pkill -f /usr/local/bin/



echo “Usage: /etc/init.d/ stop”

Exit 1




Exit 0

This file can be made executable by placing it into /etc/init.d

sudo mv /etc/init.d/

sudo chmod +x /etc/init.d/

Now we will register the script for boot

sudo update-rc.d defaults

This will be the start of the script, since the script won’t be running.

sudo /etc/init.d/ start

Note: These scripts have been added to a Github repository in order to make it easier for you to pull them down. For any improvements, you are welcome to submit pull requests.


To test the button, use a breadboard


You will need to wire up a button and test it with a breadboard. Even though this is a very simple circuit, it is important to make sure it works before you move on.

The image below will provide more details. Let me explain. There are two male-to-female jumper cables. The one connected to pin 5 is the SCL, and the other connects to ground at 6 (ground). If pin 6 is taken by someone else, you can replace it with any ground pin. This is a great way for you to identify all of your pins.

Then, I connect them with the breadboard by pressing a button between them. The button is normally open, so the circuit will stay open until it is pressed. The circuit will be completed when the Pi is awake or if it’s in a halt.

To confirm it works, I will log in to SSH.

ssh pi@raspberrypi

The button confirms that the session is over. To confirm that the Pi’s network has gone down, Arp-scan is available.

sudo arp-scan –interface=en0 –localnet

Although this guide doesn’t address arp scan in detail, it will help you to get started if the interface is right.

Arp scan output can be checked to ensure that the Raspberry Pi is not connected to the Internet.

Next, push the button again to wake it up. After a few seconds, the Pi should wake up. You can test the Pi again by using arp-scan. If the Pi is turned on, you’ll get similar output. 20:3d:66:44:c6:70 (Unknown) 58:82:a8:7e:66:36 (Unknown)

Now you can connect again via SSH!


Our final circuit


Now it’s time to wire up the button we will be using in this project. A jumper wire will make it easier to remove the button from my Pi. I will attach the cable to the button by removing the other end.

If you don’t have a GPIO header, you can solder directly to the Pi Zero’s GPIO through the holes.



You can remove the power button functionality by using GPIO3 for something else. You can do this by deleting all files and shutting down the listener.

This could be a script.


Similar Articles



Please enter your comment!
Please enter your name here



Most Popular