Human Following Robot Using Arduino and Ultrasonic Sensor

Submitted by Gourav Tak on

Working of Human Following Robot Using Arduino

In recent years, robotics has witnessed significant advancements, enabling the creation of intelligent machines that can interact with the environment. One exciting application of robotics is the development of human-following robots. These robots can track and follow a person autonomously, making them useful in various scenarios like assistance in crowded areas, navigation support, or even as companions. In this article, we will explore in detail how to build a human following robot using Arduino and three ultrasonic sensors, complete with circuit diagrams and working code. Also, check all the Arduino-based Robotics projects by following the link.

The working of a human following robot using Arduino code and three ultrasonic sensors is an interesting project. What makes this project particularly interesting is the use of not just one, but three ultrasonic sensors. This adds a new dimension to the experience, as we typically see humans following a robot built with one ultrasonic, two IR, and one servo motor.  This servo motor has no role in the operation and also adds unnecessary complications. So I removed this servo and the IR sensors and used 3 ultrasonic sensors. With ultrasonic sensors, you can measure distance and use that information to navigate and follow a human target. Here’s a general outline of the steps involved in creating such a robot.

 

 

Components Needed for Human Following Robot Using Arduino

  • Arduino UNO board ×1

  • Ultrasonic sensor ×3

  • L298N motor driver ×1

  • Robot chassis

  • BO motors ×2

  • Wheels ×2

  • Li-ion battery 3.7V ×2

  • Battery holder ×1

  • Breadboard

  • Ultrasonic sensor holder ×3

  • Switch and jumper wires

Human Following Robot Using Arduino Circuit Diagram

Here is the schematic diagram of a Human-following robot circuit.

Arduino Human Following Robot Circuit Diagram

This design incorporates three ultrasonic sensors, allowing distance measurements in three directions front, right, and left. These sensors are connected to the Arduino board through their respective digital pins. Additionally, the circuit includes two DC motors for movement, which are connected to an L298N motor driver module. The motor driver module is, in turn, connected to the Arduino board using its corresponding digital pins. To power the entire setup, two 3.7V li-ion cells are employed, which are connected to the motor driver module via a switch.

Overall, this circuit diagram showcases the essential components and connections necessary for the Human-following robot to operate effectively.

arduino human following robot circuit

Circuit Connection:

Arduino and HC-SR04 Ultrasonic Sensor Module:

HC-SR04 Ultrasonic sensor Module

  • Connect the VCC pin of each ultrasonic sensor to the 5V pin on the Arduino board.

  • Connect the GND pin of each ultrasonic sensor to the GND pin on the Arduino board.

  • Connect the trigger pin (TRIG) of each ultrasonic sensor to separate digital pins (2,4, and 6) on the Arduino board.

  • Connect the echo pin (ECHO) of each ultrasonic to separate digital pins (3,5, and 7) on the Arduino board.

Arduino and Motor Driver Module:

  • Connect the digital output pins of the Arduino (digital pins 8, 9, 10, and 11) to the appropriate input pins (IN1, IN2, IN3, and IN4) on the motor driver module.

  • Connect the ENA and ENB pins of the motor driver module to the onboard High state pin with the help of a female header.

  • Connect the OUT1, OUT2, OUT3, and OUT4 pins of the motor driver module to the appropriate terminals of the motors.

  • Connect the VCC (+5V) and GND pins of the motor driver module to the appropriate power (Vin) and ground (GND) connections on the Arduino.

Power Supply:

  • Connect the positive terminal of the power supply to the +12V input of the motor driver module.

  • Connect the negative terminal of the power supply to the GND pin of the motor driver module.

  • Connect the GND pin of the Arduino to the GND pin of the motor driver module.

Human Following Robot Using Arduino Code

Here is a simple 3 Ultrasonic sensor-based Human following robot using Arduino Uno code that you can use for your project.

Ultrsonic Sensors on Robot

This code reads the distances from three ultrasonic sensors (‘frontDistance’, ‘leftDistance’, and ‘rightDistance’). It then compares these distances to determine the sensor with the smallest distance. If the smallest distance is below the threshold, it moves the car accordingly using the appropriate motor control function (‘moveForward()’, ‘turnLeft()’, ‘turnRight()’). If none of the distances are below the threshold, it stops the motor using ‘stop()’.

In this section, we define the pin connections for the ultrasonic sensors and motor control. The S1Trig, S2Trig, and S3Trig, variables represent the trigger pins of the three ultrasonic sensors, while S1Echo, S2Echo, and S3Echo, represent their respective echo pins.

The LEFT_MOTOR_PIN1, LEFT_MOTOR_PIN2, RIGHT_MOTOR_PIN1, and RIGHT_MOTOR_PIN2 variables define the pins for controlling the motors.

The MAX_DISTANCE and MIN_DISTANCE_BACK variables set the thresholds for obstacle detection.

// Ultrasonic sensor pins
#define S1Trig 2
#define S2Trig 4
#define S3Trig 6
#define S1Echo 3
#define S2Echo 5
#define S3Echo 7
// Motor control pins
#define LEFT_MOTOR_PIN1 8
#define LEFT_MOTOR_PIN2 9
#define RIGHT_MOTOR_PIN1 10
#define RIGHT_MOTOR_PIN2 11
// Distance thresholds for obstacle detection
#define MAX_DISTANCE 40
#define MIN_DISTANCE_BACK 5

Make sure to adjust the values of ‘MIN_DISTANCE_BACK’ and ‘MAX_DISTANCE’ according to your specific requirements and the characteristics of your robot.

The suitable values for ‘MIN_DISTANCE_BACK’ and ‘MAX_DISTANCE’ depend on the specific requirements and characteristics of your human-following robot. You will need to consider factors such as the speed of your robot, the response time of the sensors, and the desired safety margin

Here are some general guidelines to help you choose suitable values.

MIN_DISTANCE_BACK’ This value represents the distance at which the car should come to a stop when an obstacle or hand is detected directly in front. It should be set to a distance that allows the car to back safely without colliding with the obstacle or hand. A typical value could be around 5-10 cm.

MAX_DISTANCE’ This value represents the maximum distance at which the car considers the path ahead to be clear and can continue moving forward. It should be set to a distance that provides enough room for the car to move without colliding with any obstacles or hands. If your hand and obstacles are going out of this range, the robot should be stop. A typical value could be around 30-50 cm.

These values are just suggestions, and you may need to adjust them based on the specific characteristics of your robot and the environment in which it operates.

These lines set the motor speed limits. ‘MAX_SPEED’ denotes the upper limit for motor speed, while ‘MIN_SPEED’ is a lower value used for a slight left bias. The speed values are typically within the range of 0 to 255, and can be adjusted to suit our specific requirements.

// Maximum and minimum motor speeds
#define MAX_SPEED 150
#define MIN_SPEED 75

The ‘setup()’ function is called once at the start of the program. In the setup() function, we set the motor control pins (LEFT_MOTOR_PIN1, LEFT_MOTOR_PIN2, RIGHT_MOTOR_PIN1, RIGHT_MOTOR_PIN2) as output pins using ‘pinMode()’ . We also set the trigger pins (S1Trig, S2Trig, S3Trig) of the ultrasonic sensors as output pins and the echo pins (S1Echo, S2Echo, S3Echo) as input pins. Lastly, we initialize the serial communication at a baud rate of 9600 for debugging purposes.

void setup() {
  // Set motor control pins as outputs
  pinMode(LEFT_MOTOR_PIN1, OUTPUT);
  pinMode(LEFT_MOTOR_PIN2, OUTPUT);
  pinMode(RIGHT_MOTOR_PIN1, OUTPUT);
  pinMode(RIGHT_MOTOR_PIN2, OUTPUT);
  //Set the Trig pins as output pins
  pinMode(S1Trig, OUTPUT);
  pinMode(S2Trig, OUTPUT);
  pinMode(S3Trig, OUTPUT);
  //Set the Echo pins as input pins
  pinMode(S1Echo, INPUT);
  pinMode(S2Echo, INPUT);
  pinMode(S3Echo, INPUT);
  // Initialize the serial communication for debugging
  Serial.begin(9600);
}

This block of code consists of three functions (‘sensorOne()’, ‘sensorTwo()’, ‘sensorThree()’) responsible for measuring the distance using ultrasonic sensors.

The ‘sensorOne()’ function measures the distance using the first ultrasonic sensor. It's important to note that the conversion of the pulse duration to distance is based on the assumption that the speed of sound is approximately 343 meters per second. Dividing by 29 and halving the result provides an approximate conversion from microseconds to centimeters.

The ‘sensorTwo()’ and ‘sensorThree()’ functions work similarly, but for the second and third ultrasonic sensors, respectively.

// Function to measure the distance using an ultrasonic sensor
int sensorOne() {
  //pulse output
  digitalWrite(S1Trig, LOW);
  delayMicroseconds(2);
  digitalWrite(S1Trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(S1Trig, LOW);
  long t = pulseIn(S1Echo, HIGH);//Get the pulse
  int cm = t / 29 / 2; //Convert time to the distance
  return cm; // Return the values from the sensor
}
//Get the sensor values
int sensorTwo() {
  //pulse output
  digitalWrite(S2Trig, LOW);
  delayMicroseconds(2);
  digitalWrite(S2Trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(S2Trig, LOW);
  long t = pulseIn(S2Echo, HIGH);//Get the pulse
  int cm = t / 29 / 2; //Convert time to the distance
  return cm; // Return the values from the sensor
}
//Get the sensor values
int sensorThree() {
  //pulse output
  digitalWrite(S3Trig, LOW);
  delayMicroseconds(2);
  digitalWrite(S3Trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(S3Trig, LOW);
  long t = pulseIn(S3Echo, HIGH);//Get the pulse
  int cm = t / 29 / 2; //Convert time to the distance
  return cm; // Return the values from the sensor
}

In this section, the ‘loop()’ function begins by calling the ‘sensorOne()’, ‘sensorTwo()’, and ‘sensorThree()’ functions to measure the distances from the ultrasonic sensors. The distances are then stored in the variables ‘frontDistance’, ‘leftDistance’, and ‘rightDistance’.

Next, the code utilizes the ‘Serial’ object to print the distance values to the serial monitor for debugging and monitoring purposes.

void loop() {
  int frontDistance = sensorOne();
  int leftDistance = sensorTwo();
  int rightDistance = sensorThree();
  Serial.print("Front: ");
  Serial.print(frontDistance);
  Serial.print(" cm, Left: ");
  Serial.print(leftDistance);
  Serial.print(" cm, Right: ");
  Serial.print(rightDistance);
  Serial.println(" cm");

In this section of code condition checks if the front distance is less than a threshold value ‘MIN_DISTANCE_BACK’ that indicates a very low distance. If this condition is true, it means that the front distance is very low, and the robot should move backward to avoid a collision. In this case, the ‘moveBackward()’ function is called.

if (frontDistance < MIN_DISTANCE_BACK) {
    moveBackward();
    Serial.println("backward");

If the previous condition is false, this condition is checked. if the front distance is less than the left distance, less than the right distance, and less than the ‘MAX_DISTANCE’ threshold. If this condition is true, it means that the front distance is the smallest among the three distances, and it is also below the maximum distance threshold. In this case, the ‘moveForward()’ function is called to make the car move forward.

else if (frontDistance < leftDistance && frontDistance < rightDistance && frontDistance < MAX_DISTANCE) {
    moveForward();
    Serial.println("forward");

If the previous condition is false, this condition is checked. It verifies if the left distance is less than the right distance and less than the ‘MAX_DISTANCE’ threshold. This condition indicates that the left distance is the smallest among the three distances, and it is also below the minimum distance threshold. Therefore, the ‘turnLeft()’ function is called to make the car turn left.

else if (leftDistance < rightDistance && leftDistance < MAX_DISTANCE) {
    turnLeft();
    Serial.println("left");

If neither of the previous conditions is met, this condition is checked. It ensures that the right distance is less than the ‘MAX_DISTANCE’ threshold. This condition suggests that the right distance is the smallest among the three distances, and it is below the minimum distance threshold. The ‘turnRight()’ function is called to make the car turn right.

else if (rightDistance < MAX_DISTANCE) {
    turnRight();
    Serial.println("right");

If none of the previous conditions are true, it means that none of the distances satisfy the conditions for movement. Therefore, the ‘stop()’ function is called to stop the car.

 else {
    stop();
    Serial.println("stop");

In summary, the code checks the distances from the three ultrasonic sensors and determines the direction in which the car should move based on the 3 ultrasonic sensors with the smallest distance.

 

Important aspects of this Arduino-powered human-following robot project include:

  • Three-sensor setup for 360-degree human identification
  • Distance measurement and decision-making in real-time
  • Navigation that operates automatically without human assistance
  • Avoiding collisions and maintaining a safe following distance

 

 

Technical Summary and GitHub Repository 

Using three HC-SR04 ultrasonic sensors and an L298N motor driver for precise directional control, this Arduino project shows off the robot's ability to track itself. For simple replication and modification, the full source code, circuit schematics, and assembly guidelines are accessible in our GitHub repository. To download the Arduino code, view comprehensive wiring schematics, and participate in the open-source robotics community, visit our GitHub page.

Code Schematics Download Icon

 

Frequently Asked Questions

⇥ How does an Arduino-powered human-following robot operate?
Three ultrasonic sensors are used by the Arduino-powered human following robot to determine a person's distance and presence. After processing this data, the Arduino manages motors to follow the identified individual while keeping a safe distance.

⇥ Which motor driver is ideal for an Arduino human-following robot?
The most widely used motor driver for Arduino human-following robots is the L298N. Additionally, some builders use the L293D motor driver shield, which connects to the Arduino Uno directly. Both can supply enough current for small robot applications and manage 2-4 DC motors.

⇥ Is it possible to create a human-following robot without soldering?
Yes, you can use motor driver shields that connect straight to an Arduino, breadboards, and jumper wires to construct a human-following robot. For novices and prototyping, this method is ideal.

⇥ What uses do human-following robots have in the real world?
Shopping cart robots in malls, luggage-carrying robots in airports, security patrol robots, elderly care assistance robots, educational demonstration robots, and companion robots that behave like pets are a few examples of applications.

 

Conclusion

This human following robot using Arduino project and three ultrasonic sensors is an exciting and rewarding project that combines programming, electronics, and mechanics. With Arduino’s versatility and the availability of affordable components, creating your own human-following robot is within reach.

Human-following robots have a wide range of applications in various fields, such as retail stores, malls, and hotels, to provide personalized assistance to customers. Human-following robots can be employed in security and surveillance systems to track and monitor individuals in public spaces. They can be used in Entertainment and events, elderly care, guided tours, research and development, education and research, and personal robotics.

They are just a few examples of the applications of human-following robots. As technology advances and robotics continues to evolve, we can expect even more diverse and innovative applications in the future.

Explore Practical Projects Similar To Robots Using Arduino

Explore a range of hands-on robotics projects powered by Arduino, from line-following bots to obstacle-avoiding vehicles. These practical builds help you understand sensor integration, motor control, and real-world automation techniques. Ideal for beginners and hobbyists, these projects bring theory to life through interactive learning.

 Simple Light Following Robot using Arduino UNO

Simple Light Following Robot using Arduino UNO

Today, we are building a simple Arduino-based project: a light-following robot. This project is perfect for beginners, and we'll use LDR sensor modules to detect light and an MX1508 motor driver module for control. By building this simple light following robot you will learn the basics of robotics and how to use a microcontroller like Arduino to read sensor data and control motors.

Line Follower Robot using Arduino UNO: How to Build (Step-by-Step Guide)

Line Follower Robot using Arduino UNO: How to Build (Step-by-Step Guide)

This step-by-step guide will show you how to build a professional-grade line follower robot using Arduino UNO, with complete code explanations and troubleshooting tips. Perfect for beginners and intermediate makers alike, this project combines hardware interfacing, sensor calibration, and motor control fundamentals.

Have any question related to this Article?

Build a Compact and Portable DIY Bluetooth Speaker

Submitted by Vishnu S on

This DIY Bluetooth speaker is a budget-friendly project designed to deliver clear wireless audio using affordable components. With the help of a DIY Bluetooth speaker amplifier, the Bluetooth module sends the audio signal to the amplifier, which then provides the necessary power to drive the speakers. It can also be used for building a DIY Bluetooth portable speaker. The setup is simple, compact, and powerful for anyone looking to make their own portable speaker without spending much. It’s a fun and practical way to learn the basics of electronics.

If you’re interested in this type of project, there are also a few improved versions you can explore. One of them is Simple DIY Wireless Bluetooth Speakers Using an Audio Amplifier, which includes an upgraded amplifier and speaker setup to deliver noticeably better sound performance. Another is the Arduino Bluetooth Speaker with Reactive NeoPixel LEDs, an advanced version that integrates dynamic lighting effects using NeoPixel LEDs for a more interactive experience. These projects are built on the same core concept while adding new features to your DIY Bluetooth speaker.

Components Required

ComponentsDescription
JDY-62 Bluetooth ModuleBluetooth 4.2 audio module used to receive wireless audio signals.
PAM8403 AmplifierA 5V stereo amplifier that boosts the audio output for the speakers
2-Watt 8Ω SpeakersCompact speakers used to output the left and right audio channels.
WiresUsed for electrical connections between modules.
Soldering IronRequired to solder wire and ensure stable, long-lasting connections.
Components Required DIY Bluetooth SpeakerSpeaker Hardware

Component Pinouts

JDY-62 BLE 4.2 Module

The JDY-62 enables wireless audio streaming from your phone or device. It can be used for building DIY Bluetooth stereo speakers, handling the Bluetooth connection and sending the audio signal to the amplifier for wireless playback.

JDY-62 BLE-4.2 Module
Pin NameFunctionDescription
VCCPower SupplyConnect to +5V DC
GNDGroundConnect to ground.
L OUTLeft Audio OutputSends the left channel audio signal to the amplifier.
R OUTRight Audio OutputSends the right channel audio signal to the amplifier.

PAM8403 Stereo Amplifier

The PAM8403 is a small, efficient audio amplifier that powers the speakers to produce clear sound. It can be used for creating a DIY Bluetooth stereo, boosting the audio signal from the Bluetooth module so the speakers deliver crisp, high-quality sound.

PAM8403 Stereo Amplifier
Pin NameFunctionDescription
VCCPower SupplyConnect to +5V DC
GNDGroundConnect to ground.
L INLeft Audio InputConnect to the left output from the Bluetooth module.
R INRight Audio InputConnect to the right output from the Bluetooth module.
L OUTLeft Speaker OutputConnect to the left speaker terminals
R OUTRight Speaker OutputConnect to the right speaker terminals.

You can also build your own amplifier circuit. If you need some guidance, you can refer to projects like the Simple Arduino Audio Player and Amplifier with LM386 or the Simple Microphone to Speaker Amplifier Circuit.

DIY Bluetooth Speaker Wiring Diagram

The DIY Bluetooth speaker wiring diagram shows the connection between the JDY-62 Bluetooth 4.2 module, the PAM8403 audio amplifier, and the two 2W/8Ω speakers. Using the right DIY Bluetooth speaker components, the Bluetooth module and amplifier share the same 5V power supply, while the left and right audio signals are routed directly from the JDY-62 to the corresponding inputs on the PAM8403. Each speaker is connected to the amplifier’s left and right outputs of the amplifier, enabling the stereo audio setup

DIY Bluetooth Speaker Circuit Diagram

When powered on, the device instantly reconnects via Bluetooth if it has been paired with that device before. For a new device, you need to pair it manually. Just look for “JDY-62” in the available Bluetooth devices list. The indicator light confirms the connection status, while the speakers deliver clear, high-quality audio that’s ready to play immediately. This easy connection and good sound quality make it a reliable choice for anyone looking to enjoy wireless audio without any hassle.

Building a DIY Bluetooth speaker on a budget is an easy and fun way to enjoy wireless music while learning basic electronics. With simple components, you can create a portable, clear-sounding speaker without spending much, making it a perfect project for beginners and hobbyists.

FAQs

1. How does Bluetooth pairing work?
Once powered on, the JDY-62 module automatically enters pairing mode. It can connect to your smartphone, laptop, or any Bluetooth-enabled device. No additional configuration is required.

2. Does it require any app or software to work?
No app is needed. It works as a standard Bluetooth audio device, so any device that supports Bluetooth audio can connect to it.

3. Can I use different speakers?
Yes, but make sure the speaker matches the amplifier’s output. Using a higher power speaker without adjusting the circuit may damage the amplifier.

4. How can I make my DIY Bluetooth speaker louder?
Use a more powerful amplifier, a larger speaker, provide stable power, and use short, thick wires to reduce signal loss.

In this post, we will build a Raspberry Pi-based Bluetooth Speaker by fusing the power of A2DP, Linux and an audio codec to stream the data packets from an audio source to an audio sink wirelessly.

 

Similar DIY Speaker-Based Projects

Previously, we have used different types of speakers to build many interesting projects. If you want to know more about those projects, links are given below.

How to Build an Amazon Alexa Speaker using Raspberry Pi

How to Build an Amazon Alexa Speaker using Raspberry Pi

In this tutorial, I will show you how to build your own DIY version of the Amazon Alexa by installing Alexa Voice Service (AVS) on a Raspberry Pi 4.

DIY ESP32 Based Audio Player

DIY ESP32-Based Audio Player

Here we use LM386 and a speaker with ESP32 to play music files. The audio output may not be loud, but this application shows the ability of the ESP32 board to play audio files.

ESP32 Based Internet Radio using MAX98357A I2S Amplifier Board

ESP32 Based Internet Radio using MAX98357A I2S Amplifier Board

To build our ESP32 web radio, we have chosen the ESP32 development board (obviously) and the MAX98357A I2S Amplifier board.

Raspberry Pi Bluetooth Speaker: Play Audio wirelessly using Raspberry Pi

Raspberry Pi Bluetooth Speaker: Play Audio wirelessly using Raspberry Pi

In this post, we will build a Raspberry Pi-based Bluetooth Speaker by fusing the power of A2DP, Linux and an audio codec to stream the data packets from an audio source to an audio sink wirelessly.

Have any question related to this Article?

How to Build a Raspberry Pi Wi-Fi Router with RaspAP

Submitted by Dharagesh on

Over the years, I’ve collected a few Raspberry Pi boards, my trusty Pi 4 and even an older Pi 3 that was gathering dust in a drawer. Instead of letting them sit unused, I decided to give them a new life by turning them into something surprisingly practical: a Raspberry Pi WiFi router with built-in ad-blocking capabilities.

With the help of RaspAP’s pre-built image, I managed to transform these little boards into wireless routers that not only share the internet but also strip out ads at the network level. That means every device I connect, laptops, phones, even smart TVs, enjoys cleaner, faster browsing. And because a Raspberry Pi can run off a simple power bank, it doubles as a portable travel router, perfect for hotel stays or road trips.

Now, if you prefer the hardcore way with OpenWrt, we’ve already covered how to run it on Raspberry Pi in another guide Turn your Raspberry Pi into a WiFi Router using OpenWrt. And if you’re someone who wants to dive deeper into the world of Raspberry Pi, you’ll find plenty more hands-on Raspberry Pi projects here on CircuitDigest. This guide is just one of many experiments we’ve done, and you can always find new ways to unlock more potential from your Pi. 

Why I Chose RaspAP Over OpenWrt for My Raspberry Pi Wireless Router

OpenWrt is a beast; it’s robust, battle-tested, and used in enterprise-grade routers. But when it comes to Raspberry Pi as router applications, it often feels like putting racing tyres on a bicycle. You can make it work, but you’ll spend hours tweaking.    

Comparison between RaspAP and OpenWrt for Raspberry Pi router setup showing user-friendly interface

RaspAP, on the other hand, feels like it was designed for the Pi. It has a clean, modern web interface, preconfigured settings, and beginner-friendly defaults. In short, OpenWrt is for networking experts, RaspAP is for Raspberry Pi enthusiasts who want results fast. The RaspAP setup process is straightforward, and you can have a functional Raspberry Pi WiFi hotspot with Ethernet connectivity running in under 30 minutes. For additional insights on network configuration, refer to this comprehensive tutorial on configuring a Raspberry Pi to share Wi-Fi through its Ethernet port.

Required Components for Raspberry Pi WiFi Router Project

Before we begin the RaspAP setup, let's gather everything you'll need to successfully turn Raspberry Pi into WiFi router:

Component

Details / Notes

Raspberry Pi

Works with Pi 3, Pi 4, or Pi 5. Pi 4/5 recommended for better performance.

MicroSD Card

Minimum 8GB, Class 10 or higher. Needed for flashing the RaspAP pre-built image.

Power Supply

Official Pi adapter (5V/3A for Pi 4, 5V/5A for Pi 5) to ensure stable operation.

Wi-Fi Adapter

Built-in Wi-Fi = wlan0. For dual setup, add a USB Wi-Fi dongle (wlan1).

Ethernet Cable

Optional if using Wi-Fi adapter but recommended. Provides stable internet input from your home router.

PC or Laptop

Used to download the RaspAP image and flash it to the microSD card.

USB Data Cable / Phone

Optional. Allows USB tethering to share mobile data with the Pi router.

Understanding Raspberry Pi WiFi Connection Interfaces

One thing that often confuses beginners when learning how to connect Raspberry Pi to WiFi router setup is the different network interfaces on the Raspberry Pi. Here’s how RaspAP organises for your Raspberry Pi WiFi router project:

Interface

Purpose

Example Use Case

wlan0

Built-in Wi-Fi adapter

Broadcasts your hotspot (default).

wlan1

External USB Wi-Fi dongle

Connect Pi to an upstream Wi-Fi while wlan0 serves clients.

eth0

Ethernet port

Connect Pi to your home router for internet sharing.

usb0

Smartphone connection via USB

Share your phone’s 4G/5G data with all devices through the Pi.

In my setup, I kept things simple: eth0 as the internet input, wlan0 as the output hotspot. But knowing you can add a second dongle or even tether your phone makes the Pi router far more versatile than I expected. This flexibility allows you to use your Pi as a RaspAP WiFi repeater or even a standalone portable router powered by mobile data.

Ad Blocking Capabilities

Google recently made life harder for traditional ad blockers like uBlock Origin by crippling their features in Chrome, which means YouTube ads sneak through again. But RaspAP blocks ads at the DNS level, meaning the requests for ad servers are killed before they ever reach your browser. This DNS-based approach works across all devices connected to your Raspberry Pi WiFi router, smartphones, tablets, smart TVs, and gaming consoles, without requiring individual ad blocker installations.

⇒ Step 1: Flashing the RaspAP Pre-Built Image

I started by downloading the RaspAP pre-built image from their official GitHub page. It’s based on Raspberry Pi OS Lite but already configured with RaspAP installed. 

Downloading RaspAP pre-built image from GitHub for Raspberry Pi WiFi router setup

Using Raspberry Pi Imager, I selected “Use custom image,” pointed it to the file, and flashed it to a 16GB microSD card. The process took a few minutes, and then I slotted the card into my Pi 4 and powered it up.

Using Raspberry Pi Imager to flash RaspAP image for WiFi router setup

Within a couple of minutes, a new network appeared in my PC’s Wi-Fi scan list called RaspAP. This automatic network creation is one of the major advantages of using the pre-built image; no command line configuration is needed to get started with your Raspberry Pi wireless router.

RaspAP WiFi network appearing in available networks list after first boot

I connected to it using the default password ChangeMe, and just like that, I was connected to my brand-new Pi-powered Wi-Fi hotspot. No complex networking commands or terminal configurations required, this is what makes RaspAP ideal for those learning how to connect Raspberry Pi to WiFi router configuration.

⇒ Step 2: Accessing the RaspAP Dashboard

Once connected to the RaspAP network, I opened my browser and typed:

http://10.3.141.1

This brought up the RaspAP web interface. The default login was:

RaspAP web interface login screen for Raspberry Pi router administration

Username

admin

Password

secret

After logging in to complete the RaspAP setup, I was greeted by a sleek dashboard showing connected clients, bandwidth graphs, and hotspot controls. It honestly felt like I was using the interface of a commercial router, not a $35 single-board computer turned into a Raspberry Pi WiFi router.

RaspAP dashboard overview showing network statistics and connected devices

⇒ Step 3: Customising Your Raspberry Pi WiFi Hotspot Settings

By default, the hotspot is named RaspAP with the password ChangeMe. That’s fine for testing, but not something you’d want to leave running; anyone who knows the defaults could connect to it.

From the Hotspot settings page in the RaspAP dashboard, I made a few important changes for my Raspberry Pi wireless router:

SSID (Wi-Fi name):

I replaced RaspAP with something personal and easy to recognize. You can name it after your Pi, your project, or even just “HomePiRouter.”

WPA2 Password

I created a strong passphrase with at least 12 characters, mixing letters, numbers, and symbols. This is critical because WPA2 is only as secure as the password you set.

Wi-Fi Channel

I scanned for nearby networks and selected a channel with the least interference. Sticking to a less crowded channel improved both speed and reliability.

Country Code

Select the appropriate country code you live in.

Setting country code in RaspAP for regulatory compliance and optimal WiFi performanceCustomizing RaspAP WiFi settings including SSID and password for Raspberry Pi router

After saving the changes, RaspAP prompted me to reboot the hotspot. When the Pi came back online, my customised Wi-Fi network appeared in the scan list with the new name and settings. I reconnected with the new password, and everything worked smoothly. This completes the basic RaspAP setup for your Raspberry Pi WiFi router.

Successfully configured Raspberry Pi WiFi router with custom settings appearing in network list

⇒ Step 4: Setting Up DNS-Based Ad Blocking

One of the best features of RaspAP for your Raspberry Pi WiFi router project is its built-in DNS-based ad blocker. Unlike browser extensions, which only block ads on a single device, this works at the network level, meaning every device that connects to your Raspberry Pi wireless router gets ad-free browsing.

Enabling Network-Wide Ad Blocking

To activate ad blocking on your Raspberry Pi WiFi router, follow these steps:

  1. Log in to the RaspAP dashboard at http://10.3.141.1.
  2. From the left-hand menu, go to Ad Blocking.
  3. Toggle the switch to Enable Blocklists.
  4. Select a DNS blocklist Provider (the default works well, but you can add more if you want stronger filtering).
  5. Save the settings and reboot the Pi.
Enabling DNS-based ad blocking in RaspAP for network-wide advertisement filtering

After the reboot (which takes approximately 30-45 seconds), your Raspberry Pi WiFi router will act as both a router and a network-wide ad filter, blocking advertisements, tracking scripts, and malicious domains before they reach any connected device.

Testing the Ad Blocker

To confirm that the ad blocking is working properly on your Raspberry Pi wireless router, I performed several tests:

Testing ad blocker effectiveness on Raspberry Pi WiFi router with real-world websitesSuccessfully blocked advertisements using DNS filtering on Raspberry Pi router

Real-World Performance Testing: Raspberry Pi WiFi Router Speed Analysis

After completing the RaspAP setup, I wanted to benchmark how fast my Raspberry Pi WiFi router really performed compared to commercial routers. Here’s what I measured:

RaspAP diagnostics showing network speed and performance metricsWiFi speed test results for Raspberry Pi wireless router configurationComprehensive speed analysis of RaspAP-powered Raspberry Pi router

Not blazing fast compared to high-end WiFi 6 routers, but impressive considering this Raspberry Pi wireless router was running on a board the size of a credit card, with built-in ad blocking, and costing a fraction of commercial alternatives.

Advanced Features: Beyond Basic Routing

The more I explored the RaspAP dashboard, the more I realised my Raspberry Pi WiFi router wasn’t just a simple hotspot manager; it had a full set of features you’d normally expect from a commercial router. Here are some of the highlights I tested:

→ VPN Support for Secure Connections: RaspAP integrates with both OpenVPN and WireGuard, letting you route all network traffic through a VPN server. This is useful if you want to secure devices that don’t natively support VPNs, like smart TVs or IoT gadgets. For travel, this feature is especially handy; you can connect your Pi to hotel Wi-Fi and automatically tunnel all your traffic through your home VPN, like smart TVs, gaming consoles, or IoT gadgets, by connecting them to your Raspberry Pi WiFi router.    

WireGuard VPN configuration in RaspAP for secure Raspberry Pi router connections

For travel scenarios, this feature is especially handy: you can connect your Raspberry Pi WiFi hotspot with Ethernet to hotel Wi-Fi and automatically tunnel all your traffic through your home VPN, creating a secure network wherever you go. This transforms your Pi into a true portable RaspAP WiFi repeater with VPN capabilities
→ Bandwidth Monitoring and Traffic Analysis: The dashboard includes real-time traffic graphs and per-device usage statistics. I could instantly see which devices were using the most bandwidth on my Raspberry Pi wireless router, which is useful if your network feels slow and you suspect one device is hogging the connection.
→ Firewall & Port Forwarding Configuration: RaspAP gives you a web interface for firewall rules, making it possible to block certain devices, restrict traffic types, or expose a local service to the outside world. For example, you could configure port forwarding on your Raspberry Pi WiFi router to make your Pi's web server or home automation system accessible remotely while maintaining security.
→ Bridged vs Routed Network Modes: By default, the Pi works in routed mode, acting as a proper NAT router. But switching to bridged mode allows your Raspberry Pi WiFi router to extend an existing network without creating a new subnet. This flexibility means you can choose between a fully independent Pi-based router or a transparent RaspAP WiFi repeater, depending on your specific networking needs.

What impressed me most was how scalable this Raspberry Pi WiFi router project feels. For a small home lab, a travel router, or even a secondary network at home, RaspAP offers enough features to experiment with advanced networking while still being beginner-friendly.

How to Connect Raspberry Pi to WiFi Router via Command Line

While RaspAP provides an excellent web interface, you may occasionally need to connect Raspberry Pi to WiFi command line for troubleshooting or advanced configuration.  These commands are particularly useful when setting up your Raspberry Pi wireless router in headless mode (without monitor/keyboard) or when troubleshooting connectivity issues remotely via SSH.

Frequently Asked Questions About Raspberry Pi WiFi Router Setup & Troubleshooting

⇥ 1. Can I use Raspberry Pi 3 or Raspberry Pi 5 with RaspAP?
Yes. RaspAP works across Pi 3, 4, and 5. The Pi 3 is slower and best for light use, while the Pi 5 delivers speeds close to budget consumer routers.

⇥ 2. What are the default login details for RaspAP?

Wi-Fi SSID

RaspAP

Wi-Fi Password

ChangeMe

Web UI Login: Username

admin

Web UI Login: Password

secret

⇥ 3. Why don’t I see the Wi-Fi hotspot (raspi-webgui) after the first boot?
Make sure your Pi’s built-in Wi-Fi is not blocked. On some models, you may need to run:

sudo rfkill unblock wifi

Then reboot. If you’re using a Pi 3, check that the microSD image flashed properly.

⇥ 4. My Pi connects, but I don’t get internet on devices. What’s wrong?
Check the uplink interface (the source of the internet):

eth0

make sure your Ethernet cable is plugged into your home router.

wlan1 or USB tethering

confirm that the Pi itself can access the internet before sharing it.

⇥ 5. How many devices can RaspAP handle at once?
It depends on your Pi model and internet source:

Pi 3

~5 devices max before speed suffers.

Pi 4

10–12 devices comfortably.

Pi 5

15+ devices with good speeds

⇥ 6. Does RaspAP really block YouTube ads?
Yes, but not in the same way as browser extensions. Since ad-blocking happens at the DNS level, it prevents connections to known ad servers. This works on TVs, phones, and tablets too. It won’t block every single YouTube ad (since some are served from the same domains as content), but it cuts out most ads better than today’s crippled browser-based blockers.

⇥ 7. Can I replace my main home router with RaspAP?
Technically, yes, but keep expectations realistic. A Pi 4 or Pi 5 can handle small households, but for gigabit internet and 20+ devices, you’ll want a dedicated router. RaspAP is best as a travel router, learning project, or secondary network.

⇥ 8. I forgot the web dashboard password. How do I reset it?
SSH into your Pi and run:

sudo htpasswd /etc/raspap/raspap.auth admin

Then set a new password for the admin user.

⇥ 9. My Wi-Fi speed is slow compared to my main router. Why?
Remember, the Raspberry Pi’s Wi-Fi hardware is mid-range. For better speeds:
Use a Pi 5 with an external USB Wi-Fi dongle.
Stick to 5 GHz instead of 2.4 GHz if your devices support it.
Keep your Pi in an open space to avoid interference.

⇥ 10. Why not just use OpenWrt instead of RaspAP?
You can, but OpenWrt on Pi requires more manual tweaking and isn’t as beginner-friendly. RaspAP is built specifically for Raspberry Pi, with plug-and-play defaults, a modern dashboard, and extras like built-in ad-blocking.

Conclusion: Breathing New Life Into Your Raspberry Pi

By the end of this project, my Raspberry Pi wifi router project had gone from sitting idle on my desk to running as a mini router with DNS-based ad blocking, and even VPN support. All of this came together with very little effort thanks to the RaspAP pre-built image, which saved me from complicated manual configurations.

OpenWrt indeed remains the heavyweight option for dedicated routers, especially for advanced networking scenarios. But when it comes to Raspberry Pi as router applications, RaspAP delivers the perfect middle ground, powerful enough to give you features like WireGuard, bandwidth monitoring, and ad-blocking, yet simple enough to set up in under an hour.

For me, this Raspberry Pi wireless router project wasn’t just about speed or features; it was about breathing new life into old Pi boards and turning them into something useful again. Whether as a home lab experiment, a portable travel router, or a secondary Wi-Fi network, the RaspAP WiFi repeater makes the Raspberry Pi shine in a whole new role.

If you’re a hobbyist, a student learning networking, or simply someone curious about pushing your Pi further, this Raspberry Pi wifi router project is rewarding, practical, and a great way to explore the potential of open-source tools on affordable hardware 

Projects using Raspberry Pi

Previously, we have used Raspberry Pi to build many interesting projects. If you want to know more about those topics, links are given below.

How to Install Windows 11 on Raspberry Pi Devices

How to Install Windows 11 on Raspberry Pi Devices

Learn how to install Windows 11 on Raspberry Pi 4 and Pi 5. Step-by-step tutorial with WoR setup, UEFI configuration, and performance tips for 2025.

How to Boot Raspberry Pi from USB without SD Card

How to Boot Raspberry Pi from USB without SD Card

Learn how to boot a Raspberry Pi from USB without using an SD card. This step-by-step guide covers Raspberry Pi 3, 4, and 5 models, helping you improve system reliability and performance.

How to Set a Static IP on Raspberry Pi?

How to Set a Static IP on Raspberry Pi?

Learn how to set a static IP on Raspberry Pi using NetworkManager (nmcli) and GUI methods. Complete step-by-step guide for Raspberry Pi OS Bookworm with screenshots and troubleshooting tips.

Have any question related to this Article?

How to Install Windows 11 on Raspberry Pi Devices

Submitted by Dharagesh on

If you’ve tinkered with Raspberry Pi boards for a while, you probably know the default choice: Raspberry Pi OS. It’s lightweight, optimised, and works flawlessly for most DIY projects. But what if you could install Windows 11 on Raspberry Pi? That's exactly what I accomplished on my Raspberry Pi 4 and later on the Pi 5 and Pi 3.

That’s exactly what I set out to do on my Raspberry Pi 4 and later on other models like the Pi 5 and Pi 3. Spoiler: it’s not as smooth as running Raspberry Pi OS, but it’s an exciting experiment that transforms your Pi into a tiny Windows PC. In this comprehensive guide, I'll share my complete journey of running Windows 11 ARM on Raspberry Pi using the Windows on Raspberry (WoR) project.

You'll learn everything about Windows 11 on Raspberry Pi 4 performance, Windows 11 on Raspberry Pi 5 setup, and how Raspberry Pi 5 Windows 11 performance compares to older models. Discover a wide range of creative and practical electronics projects on CircuitDigest, including detailed guides for the Raspberry Pi Pico and Raspberry Pi Zero projects and tutorials, perfect for beginners and hobbyists looking to explore embedded systems and IoT applications.

And if you’re someone who wants to dive deeper into the world of Raspberry Pi, whether it’s automation, IoT, robotics, or DIY electronics, you’ll find plenty more hands-on Raspberry Pi tutorials and projects here on Circuit Digest. This Windows 11 installation guide represents just one of many ways to unlock your Pi's potential.

Why Install Windows 11 on Raspberry Pi?

At first, I asked myself the same question. Raspberry Pi OS is fast, stable, and built specifically for the hardware, while Windows 11 is known to be a resource-hungry operating system. Why attempt Windows 11 Raspberry Pi installation at all?

Well, after diving into the project, I realised there are several good reasons to give it a try:

  • Familiar Interface: For many of us, Windows feels like home. If you’re used to the Start menu, File Explorer, and the Microsoft ecosystem, running Windows 11 on Pi makes the transition from a traditional PC to a single-board computer much easier.
  • Windows Software Access: While not everything works, some ARM64-native Windows apps do run. I was able to launch Office tools like Word and Excel, browse with Edge, and even test out lightweight developer tools without needing Linux equivalents. 
  • Experimentation & Learning: This was the biggest reason for me. Running Windows on hardware it was never meant for is like solving a fun puzzle. You learn about ARM architecture, UEFI firmware, and how operating systems boot under the hood.
  • Remote Management with Microsoft Tools: If you’re already working in a Windows environment, things like PowerShell, Remote Desktop, and Microsoft’s developer utilities integrate more seamlessly compared to Linux.
  • A Budget-Friendly Testbed: Raspberry Pi is cheap compared to buying an ARM laptop or Surface device. By running Windows 11 on Pi, I could test ARM-based Windows apps in a low-cost environment before moving them to more powerful hardware.
  • Show-Off Factor: Let’s be honest, there’s something cool about pointing at your tiny Raspberry Pi board and saying: “Yep, that’s Windows 11 running right there.” It’s a perfect conversation starter for tech meetups or classroom demos.
  • Expanding Project Possibilities: Some robotics and electronics engineers may prefer working in Windows. Running it on Pi means you can still connect to GPIO, USB devices, and other interfaces while coding or debugging in a familiar environment.

After completing the installation and testing Windows 11 ARM on Raspberry Pi across multiple models, I discovered several compelling reasons:

Benefits of Running Windows 11 on Raspberry Pi

BenefitDescriptionBest For
Familiar InterfaceWindows Start menu, File Explorer, and Microsoft ecosystem make transitioning from traditional PCs seamless for users unfamiliar with LinuxWindows users
Windows ARM SoftwareAccess to ARM64-native Windows apps including Office 365, Edge browser, and lightweight development tools without Linux alternativesProductivity tasks
Learning ExperienceDeep dive into ARM architecture, UEFI firmware, and operating system boot processes—perfect for understanding Windows internalsEducation
Remote ManagementPowerShell, Remote Desktop, and Microsoft developer utilities integrate seamlessly for Windows-centric workflowsIT professionals
Budget Testing PlatformTest ARM-based Windows applications in a low-cost environment ($35-75) before investing in expensive ARM laptops or Surface devicesDevelopers
Demonstration ValueImpressive conversation starter for tech meetups, classroom demonstrations, and showcasing technical capabilitiesEducators, makers

Even though Windows 11 on Raspberry Pi isn't officially supported and comes with trade-offs, the learning experience and experimentation possibilities make it worthwhile for curious makers and developers.

What You Need to Install Windows 11 on Raspberry Pi

Before you begin the Windows 11 Raspberry Pi installation process, gather the necessary hardware and software. Requirements differ slightly between Raspberry Pi 4 and Pi 5 models.

Windows 11 Raspberry Pi Compatibility

Raspberry Pi ModelMinimum RAMRecommended RAMPerformance RatingBest Use Case
Raspberry Pi 31GBN/A (Slow)Testing only
Raspberry Pi 42GB4GB-8GB(Moderate)Light tasks, browsing
Raspberry Pi 54GB8GB(Good)Office apps, development

Hardware Requirements for Raspberry Pi 4 and Pi 3

Components Quantity

Raspberry Pi board (minimum 2GB RAM, but 4GB is better)

1

MicroSD card (32GB or higher, but an SSD via USB is highly recommended)

1

USB keyboard, mouse, and HDMI display

1

Ethernet adapter or USB Cable (Tethering)

1

Windows PC (Flash and prepare everything)

1

Additional Requirements for Raspberry Pi 5 Windows 11

However, setting up Windows 11 on a Raspberry Pi 5 board requires two separate storage devices,

ComponentQuantityPurpose
Raspberry Pi 5 board14GB or 8GB RAM for optimal Raspberry Pi 5 Windows 11 performance
1GB+ microSD card1To hold UEFI firmware files (separate from Windows storage)
External USB SSD164GB+ for Windows 11 ARM installation (faster than microSD)
Same peripherals as Pi 4Keyboard, mouse, HDMI display, network adapter

Download Windows 11 ARM64 for Raspberry Pi

Unlike installing Windows on a standard PC, you can’t just grab any ISO from Microsoft’s website. For Raspberry Pi, we need the ARM64 build of Windows 11. Instead of the UUP dump, I used the official ESD Image Downloader from the Windows on Raspberry (WoR) project, which makes the process much simpler and more reliable. To install Windows 11 on Raspberry Pi, you need the ARM64 build. I used the official ESD Image Downloader from the Windows on Raspberry (WoR) project, which simplifies the process significantly compared to UUP dump methods.
Here’s how I did it:

Step 1:  How to Download Windows 11 ARM for Raspberry Pi

1. Open your browser and go to the WoR ESD download page.

2. In the Version dropdown, select the latest stable release of Windows 11.

Windows 11 ARM64 ESD Image Downloader showing version, build, architecture and edition selection for Raspberry Pi installation

3. In the Build menu, choose the build you want to install. For me I picked the stable build so I could get the reliable features and security patches.
4. Under Architecture, select ARM64. This is very important; if you choose x64 or x86, it won’t run on Raspberry Pi.

Selecting ARM64 architecture in Windows 11 ESD downloader for Raspberry Pi 4 and Pi 5 compatibility

5. Next, pick the Edition you prefer. For example:

  • Client: Windows 11 Home or Pro
  • Education or Enterprise editions, if you want more features

I went with Windows 11 Home (Client)  ARM64 for testing.

Selecting Windows 11 Home Client ARM64 edition for Raspberry Pi installation

6. Finally, choose your Language (I picked English (United States), but you can pick whichever suits you).

7. After making all these selections, click Download. The tool will fetch the official Windows files directly from Microsoft’s servers and create an ESD package for you.

Downloading Windows 11 ARM64 ESD package from Microsoft servers for Raspberry Pi installation

8. Once downloaded, you can add the ESD file to the WoR Imager in the next step.

At the end of this process, I had a clean, ARM64-compatible Windows 11 image sitting on my PC, ready to flash onto the Raspberry Pi.

Step 2: Install Windows 11 on Raspberry Pi Using WoR Imager

Once I had the Windows 11 ARM64 ESD image ready, the next challenge was to actually get it onto the Raspberry Pi. This is where the WoR Imager tool (Windows on Raspberry Pi Imager) comes in. Think of it as the bridge between the Windows image on your PC and your Raspberry Pi’s storage device.

Here’s exactly how I went through it:

Complete WoR Installation Process

1. First, I downloaded the Windows on Raspberry Pi Imager from the official WoR Project Downloads page.

Downloading Windows on Raspberry Imager tool for installing Windows 11 on Raspberry Pi

2. After extracting the ZIP file, I right-clicked on WoR.exe and selected Run as Administrator.

Running WoR Imager as administrator to install Windows 11 ARM on Raspberry Pi

3. The Welcome screen of WoR Imager popped up. I clicked Next to begin.

WoR Imager welcome screen for Windows 11 Raspberry Pi installation setup

4. On the next screen, WoR asked me to select the storage device.

  • For my Raspberry Pi 4, I used a 64GB microSD card.
  • For my Raspberry Pi 5, I chose an external SSD (recommended for speed).

Selecting storage device (microSD or SSD) for Windows 11 installation on Raspberry Pi

5. After picking the storage, I had to select the device type (Raspberry Pi model).

  • If you’re on Pi 4:  Select Raspberry Pi 4/400.

  • If you’re on Pi 5:  Here’s the trick: you actually need to choose the Raspberry Pi 2/3 option. Choosing Pi 4/400 results in an ACPI BIOS error when booting.

Selecting correct Raspberry Pi device type in WoR Imager for Windows 11 ARM installation

6. Next, WoR asked for the Image file. I clicked the (browse) button and pointed it to the Windows 11 ARM64 ESD/ISO I downloaded earlier.
7. The tool then let me pick which edition of Windows 11 I wanted to install (Home, Pro, etc.). I selected Windows 11 Pro ARM64 for additional features.

Selecting Windows 11 Pro edition for Raspberry Pi ARM installation in WoR Imager

8. WoR then displayed an Installation Overview with my selections, device type, storage device, and image file location. After confirming, I clicked Install, and it prepared the storage device by partitioning, copying files, and setting up the UEFI bootloader.

WoR Imager installation overview showing all settings before flashing Windows 11 to Raspberry Pi
9. Depending on your PC and storage speed, this process can take anywhere from 15 to 45 minutes. I let it run, grabbed a coffee, and came back to see the success message.

WoR Imager progress screen showing Windows 11 ARM installation process on Raspberry Pi storageWoR Imager success screen after completing Windows 11 ARM installation on Raspberry Pi
10. When it was finished, I hit Finish and safely ejected the storage device.

At this stage, my Raspberry Pi storage (microSD/SSD) had Windows 11 ARM fully installed on it. For Raspberry Pi 4 users, you can skip ahead to the boot section. But for Raspberry Pi 5 owners, there’s one extra step: setting up UEFI firmware (which I’ll cover in Step 3). Your Raspberry Pi storage now contains a complete Windows 11 ARM installation. 

Step 3: Configure UEFI Firmware for Raspberry Pi 5 Windows 11

If you’re using a Raspberry Pi 4 or 3, you can skip this step completely. But when I moved to my Raspberry Pi 5, I quickly discovered that things weren’t as straightforward.

The issue is that the WoR installer doesn’t officially support the Pi 5 yet. If you try to boot Windows directly after flashing it with WoR, you’ll most likely be greeted with an ACPI BIOS error and a frozen boot screen. That’s where the UEFI firmware workaround comes in. When testing Windows 11 on Raspberry Pi 5, I encountered a significant obstacle: the WoR installer doesn't officially support Pi 5 yet.

Why Raspberry Pi 5 Needs UEFI Firmware

Here’s how I handled it:

  1. I downloaded the latest Raspberry Pi 5 UEFI firmware package from its official GitHub release page. This is a small collection of boot files that essentially act as a translator, letting the Pi 5 understand how to load Windows 11.
  2. I grabbed a spare microSD card (at least 1GB) and formatted it to FAT32 using Windows’ built-in format tool.
  3. Once the card was ready, I extracted all the UEFI files from the GitHub download and copied them straight onto the root of the microSD card. 
  4. With that done, I inserted the microSD card into the Raspberry Pi 5. This card now acts like a custom BIOS chip, giving the Pi the extra instructions it needs to boot into Windows.
  5. Finally, I connected my external SSD (where I had flashed Windows 11 earlier using WoR) and powered on the Pi 5. This time, instead of the dreaded ACPI error, the UEFI firmware initialised correctly and handed things over to the Windows installer.

The setup is more complex than Pi 4, but it's currently the only way to achieve Raspberry Pi 5 Windows 11 performance testing until WoR adds official Pi 5 support.

Technical Note: The microSD card must remain inserted permanently for Raspberry Pi 5 Windows 11 installations. 

Before installing Windows 11 on a Raspberry Pi 4, there’s one extra step I highly recommend if you’re using a Raspberry Pi 4 or Raspberry Pi 3. Before installing Windows 11 on Raspberry Pi 4 or Pi 3, I strongly recommend updating the bootloader firmware. Updating the bootloader ensures that your Pi can boot cleanly from microSD cards or even from USB drives without weird glitches.

Bootloader Update Process

Here’s what I did:

1. On my Windows PC, I downloaded and launched the Raspberry Pi Imager and selected the board type.

Selecting Raspberry Pi board model in Raspberry Pi Imager for bootloader update

2. I clicked on Choose OS, then scrolled down to Misc utility images → Bootloader.

Navigating to misc utility images in Raspberry Pi Imager for bootloader selectionSelecting bootloader utility in Raspberry Pi Imager for firmware update

3. From there, I picked the boot mode I wanted:

  • SD card boot: If you plan to run Windows 11 from a microSD card.
  • USB boot: If you’re using an external SSD or USB flash drive (which I recommend for performance).

Selecting SD card boot or USB boot mode for Raspberry Pi bootloader update

4. Then I clicked on Choose Storage and selected my microSD card (just a small one is fine, 1GB+ is enough).
5. Finally, I hit Write to flash the new bootloader to the card.

Flashing bootloader update to microSD card for Raspberry Pi firmware update

6. Once the process finished, I inserted the card into my Pi, plugged in the power, and waited.

  • First, the green ACT LED on the board blinked rapidly.

  • Then, the screen connected to my Pi turned solid green; this is the Pi’s way of telling you the bootloader update was successful.

Raspberry pi Boot loader working demonstration

7. After seeing the green screen, I shut down the Pi, removed the bootloader card, and set it aside. Now my Pi was running the latest boot firmware, ready for Windows 11. Your Raspberry Pi now runs the latest boot firmware optimised for Windows 11 on Raspberry Pi 4 installations.

Step 5: Boot Windows 11 on Raspberry Pi

This was the moment I had been waiting for: actually seeing Windows 11 come to life on my Raspberry Pi. After hours of downloading, flashing, and preparing firmware, it was finally time to plug everything in and hit the power button. This is the exciting moment of actually seeing Windows 11 ARM on Raspberry Pi boot for the first time. 

Insert the storage devices 

Raspberry Pi 4/3

I just inserted the microSD card (or SSD if you used one) with Windows 11 flashed WoR.

Raspberry Pi 5

I inserted both: the microSD card with the UEFI firmware and the external SSD containing Windows 11.

First boot screen: When I powered on the Pi, I saw the WoR/UEFI splash screen appear. On the Pi, it took a few extra seconds for the UEFI firmware to initialise, but eventually the Windows installer kicked in.

WoR UEFI splash screen showing during first boot of Windows 11 on Raspberry Pi

 

Raspberry Pi booting Windows 11 ARM with Windows logo and loading animation

Region selection: The Windows installer asked me to choose my region. I picked India, but you can select your country/region from the list.

Windows 11 setup on Raspberry Pi showing region selection screen

Keyboard layout: Next, it asked for a keyboard layout. I went with the US Keyboard, but you can add a layout if needed.

Network connection & Microsoft Account sign-in (…or not): Now, here’s where things got interesting. By default, Microsoft really wants you to sign in with a Microsoft account and stay connected to the internet during setup. They’ve been pushing this more and more in Windows 11, and on a Raspberry Pi, where networking is already a bit tricky, it feels like a roadblock designed just to test your patience. However, for Windows 11 Raspberry Pi installations where networking can be tricky, there's a workaround. Once you have network connectivity, you might want to configure a static IP address on your Raspberry Pi for stable remote access and development work. For comparison, see how Android performs on Raspberry Pi using emteria.OS—another alternative operating system experiment worth exploring.

Windows 11 network connection screen during Raspberry Pi setup with bypass option available

At first, I connected my phone for USB tethering and did it the “official” way, just like Microsoft intended. But then I thought: “Wait, this is a Raspberry Pi project… Do we really need to play by Microsoft’s rules?” Turns out, you don’t!

Here’s the fun workaround:

1. When you’re stuck at the “Let’s connect you to a network” screen, press Shift + F10 on your keyboard. This opens a secret Command Prompt window during the setup process. Yes, right in the middle of Windows Setup.

Command Prompt window opened with Shift+F10 during Windows 11 Raspberry Pi setup for bypassing Microsoft account

2. Type the following command and hit Enter:

OOBE\BYPASSNRO

3. The system will restart once, and when you’re back, voilà, there’s now an option to create a local account without needing any internet connection.

Windows 11 setup showing local account option after bypassing network requirement on Raspberry Pi

It’s almost like pulling the curtain back on Microsoft’s little magic trick. They try so hard to push you online, but one tiny command lets you skip the whole charade. Honestly, it felt like discovering a cheat code in a video game.

Windows 11 device setup screen after successfully bypassing network requirement on Raspberry Pi

So whether you want to do it the “proper Microsoft way” (sign in with a Microsoft account and sync everything) or take the shortcut to a good old-fashioned local account, the choice is yours. I personally went with the bypass; it just felt more “Raspberry Pi hacker style.”

Privacy and personalisation options: The installer walked me through several toggles: location settings, data sharing, diagnostics, etc. I disabled most of them to save resources. Then it tried to upsell me on Microsoft 365 and Game Pass, and I skipped those, too. I disabled most options to conserve Raspberry Pi resources and improve Windows 11 on Raspberry Pi 4 performance.

Windows 11 privacy settings configuration during Raspberry Pi first-time setup

First reboot: After completing all the setup steps, the Pi restarted once more. This time, instead of the installer, the Windows 11 desktop appeared in all its glory. The system even popped up a message saying it created a temporary paging file, which is normal on ARM devices.

Windows 11 preparing your desktop screen during final setup stage on Raspberry PiWindows 11 desktop successfully running on Raspberry Pi showing Start menu and taskbar

And there it was, Windows 11 running on a Raspberry Pi. Seeing the Start menu open on a tiny single-board computer honestly felt surreal. Sure, it wasn’t blazing fast, but it worked. I was able to launch Edge, browse the web, and even type this article draft from within Windows 11 on my Pi. While Raspberry Pi 5 Windows 11 performance isn't blazing fast, it's functional enough for web browsing, Office applications, and light development work.

Reboot Pi Win 11 working demonstration

Limitations of Running Windows 11 on Raspberry Pi

While installing Windows 11 on Raspberry Pi is technically possible and educational, it's important to understand the significant limitations before committing time to this project. 

Raspberry Pi running Windows 11 with USB ethernet adapter showing WiFi limitation workaround

Onboard WiFi

The only thing missing was WiFi, since the chip’s OEM never released Windows ARM drivers. I used a USB-Ethernet adapter or phone tethering instead.

GPIO Pins

Don’t expect to run robotics or electronics projects that rely on GPIO. Windows on Raspberry doesn’t expose these like Raspberry Pi OS does.

HDMI Audio

No sound over HDMI. I had to use a 3.5mm audio jack workaround.

PCIe / Fan Control (Pi 5)

Features like the fan header and PCIe slot weren’t recognized. Still waiting on proper drivers.

Performance Hiccups

Heavy apps like Photoshop (ARM test build) or Visual Studio were either sluggish or crashed outright. Stick to lightweight tools.

For projects requiring GPIO functionality, consider these alternatives: Controlling Raspberry Pi GPIO using MQTT Cloud or getting started with Raspberry Pi for full hardware access.

Pi 4 vs Pi 5 - The Real Difference

On the Raspberry Pi 4 (2GB), Windows felt more like a proof-of-concept. It worked, but you constantly hit memory limits, freezing, and slowdowns. Honestly, I wouldn’t recommend using 2GB unless you’re doing this just for fun. A 4GB or 8GB Pi 4 would perform better.

On the Raspberry Pi 5, the experience was dramatically better. Faster boot, smoother browsing, and fewer hangs. Still not “daily driver” level, but at least usable. With 4GB or 8GB RAM, Windows 11 on Raspberry Pi 4 becomes moderately usable.

Windows 11 Raspberry Pi Performance: Pi 4 vs Pi 5 Comparison

After testing Windows 11 on Raspberry Pi 4 and Windows 11 on Raspberry Pi 5, the performance differences are substantial. Here's my real-world comparison based on extensive hands-on testing. Raspberry Pi 5 Windows 11 performance represents a significant leap forward. The Pi 5's improved CPU, faster memory, and better I/O make Windows 11 genuinely usable for everyday tasks.

MetricRaspberry Pi 4 (2GB)Raspberry Pi 4 (4GB)Raspberry Pi 5 (8GB)
Boot Time (Cold Start)5-6 minutes4-5 minutes1.5-2 minutes
Desktop Responsiveness(Laggy)(Moderate) (Smooth)
Microsoft Edge Launch15-20 seconds10-12 seconds5-7 seconds
Web Browsing (3-5 tabs)Frequent freezingUsable, occasional lagGenerally smooth
Office Apps (Word/Excel)Not recommendedLight documents onlyWorks well
Video Playback (720p)StutteringPlayable with dropsSmooth
Multitasking CapabilityVery limited2-3 apps max5-6 apps comfortably
Overall UsabilityProof-of-concept onlyLight tasks acceptableActually usable

Frequently Asked Questions About Windows 11 on Raspberry Pi

⇥ 1. Can I run Windows 11 on Raspberry Pi 3?
Yes, but it’s painfully slow. A Raspberry Pi 4 or 5 with at least 4GB RAM is highly recommended for usable performance.

⇥ 2. Do I really need to update the bootloader?
Not always, but if you’re on Pi 3 or Pi 4 and your board refuses to boot Windows, updating the bootloader with Raspberry Pi Imager usually fixes it.

⇥ 3. Why doesn’t WiFi work on Windows 11 for Raspberry Pi?
Because the WiFi chip manufacturer never released Windows ARM drivers. Without those, Windows simply can’t talk to the onboard WiFi hardware. Use a USB-Ethernet adapter or phone tethering instead.

⇥ 4. My Pi 5 shows an ACPI BIOS error when booting. What should I do?
That happens if you select the wrong device type in WoR. For Pi 5, always select Raspberry Pi 2/3 in WoR Imager and use the UEFI firmware microSD workaround.

⇥ 5. Can I create a local account instead of using a Microsoft account?
Yes! When stuck at the “Connect to network” screen, press Shift + F10, then type on CMD:

OOBE\BYPASSNRO

Hit Enter, and Windows will restart with the option to create a local account, no Microsoft account required.

⇥ 6. Why does my Pi take so long to boot Windows 11?
That’s normal. Windows 11 is heavy compared to Raspberry Pi OS. Expect around 4-5 minutes on Pi 4 and under 2 minutes on Pi 5.

⇥ 7. Can I use GPIO pins or other Pi hardware in Windows 11?
Not really. Windows doesn’t have drivers or APIs for Raspberry Pi GPIO. If GPIO access is critical, stick with Raspberry Pi OS or Linux.

⇥ 8. Which storage is best: microSD or SSD?
Windows 11 runs much faster from an SSD connected via USB 3. A microSD will work, but expect slower performance and longer boot times. 

Final Thoughts

Running Windows 11 on Raspberry Pi 4 or 5 is like strapping a jet engine onto a bicycle. It works, but it’s clunky, quirky, and not officially supported. Still, it’s one of the most satisfying Pi experiments I’ve done. It’s not the smoothest ride, but if you’re a tinkerer like me, the process itself is worth it. The WoR team has made the impossible possible, and now you can show off Windows 11 running on a credit-card-sized board. To learn how to set up and configure your device, explore this comprehensive tutorial on installing Windows 10 IoT Core on Raspberry Pi.

I tested Windows 11 on Raspberry Pi 4 and Raspberry Pi 5 for a long period of time. Here are my humble thoughts: it's an interesting way to "experiment" and learn about things like ARM architecture, operating systems, and hardware restrictions; however, it's not intended to be a daily driver replacement for Raspberry Pi OS.

This tutorial was created by the Circuit Digest engineering team. Our experts focus on creating practical, hands-on tutorials that help makers and engineers master Raspberry Pi  Projects, Arduino projects, and IoT development projects.

I hope you liked this article and learned something new from it. Share your Windows 11 Raspberry Pi journey in the comments below or use our Circuit Digest forum for a detailed discussion.

Would I use this daily? Probably not. But as a weekend project? Absolutely.

If you try this out, let me know how it went for you. I’d love to hear if you hit the same quirks or discovered new workarounds. 

Raspberry Pi-Based Tutorials

Explore essential Raspberry Pi tutorials covering setup, configuration, and performance enhancement for a wide range of DIY projects.

How to Boot Raspberry Pi from USB without SD Card

How to Boot Raspberry Pi from USB without SD Card

Learn how to boot a Raspberry Pi from USB without using an SD card. This step-by-step guide covers Raspberry Pi 3, 4, and 5 models, helping you improve system reliability and performance.

 How to install Android on Raspberry Pi

How to install Android on Raspberry Pi

In this tutorial, we will convert the Raspberry Pi into an Android device using a popular platform - emteria. OS.

How to Set a Static IP on Raspberry Pi?

How to Set a Static IP on Raspberry Pi?

Learn how to set a static IP on Raspberry Pi using NetworkManager (nmcli) and GUI methods. Complete step-by-step guide for Raspberry Pi OS Bookworm with screenshots and troubleshooting tips.

Have any question related to this Article?

STMicroelectronics Showcases Edge AI Processing with Interactive Robot Demo at electronica India 2025

Submitted by Abhishek on

STMicroelectronics showcased what their STM32MP2 microprocessors are capable of at their electronica India 2025 booth. Visitors could play a game of tic-tac-toe with a robotic arm. The demonstration clearly exhibited how the chips allow for AI-powered robotic applications without cloud connectivity.

Custom Silicon at 7 Dollars | wafer.space Makes Low-Volume Chip Fabrication Viable

Submitted by Abhishek on

You’re hunting through component distributors trying to find that perfect microcontroller for your project. Let’s say you need three SPI controllers, I²C interfaces, and some specific ADC configuration. You go on to find something that has just the right number of SPI controllers, but before you celebrate, you notice it lacks I²C compatibility.

ROHM’s SiC Devices Reflected 20 Years of R&D at electronica India 2025

Submitted by Abhishek on

ROHM Semiconductor was among the key players that exhibited at electronica India 2025. The company’s Group Manager - Technical Centre, Balaji Karthic, while giving us an overview, called attention to their near two decades of research and development in SiC (silicon carbide) that led to their fifth-generation devices.