How to Connect a Raspberry Pi to WiFi Using the Command Line

Photo of author

By Jackson Taylor

This guide is for anyone who wants to connect their Raspberry Pi to WiFi using the command line. We’ll walk you through several methods. You can set up your Pi without a desktop. We cover headless setups, troubleshooting tips, and more.

What You’ll Learn

  • How to use the wpa_supplicant.conf file.
  • How to use Network Manager tools.
  • How to set WiFi via the raspi-config utility.
  • How to pre-configure a WiFi connection before the first boot.
  • Ways to fix common WiFi issues.

Introduction

I remember the first time I set up my Pi without a screen. It felt like magic. You just type a few commands and your device is online. This guide gives clear steps with simple words. You’ll see that the command line can be fast and fun.

Essential Prerequisites

Hardware Requirements

  • A Raspberry Pi with built-in WiFi (e.g., Pi 3, Pi 4, Zero W).
  • A proper power supply (2.5A for Pi 4 is a good idea).
  • A MicroSD card with Raspberry Pi OS.
  • A WiFi network with your SSID and password.
  • Optional: Ethernet cable for the first setup.

Software Requirements

  • Raspberry Pi OS (Bullseye, Bookworm, or later).
  • Basic knowledge of Linux commands.
  • Terminal access via direct connection or SSH.

Understanding Network Interfaces

  • wlan0 is the main WiFi interface.
  • eth0 is for Ethernet.
  • Learn the names that your Pi uses for each interface.

Method 1: Using wpa_supplicant.conf

The wpa_supplicant method works on most Pi systems. This file tells your Pi about your WiFi network.

What is wpa_supplicant?

It is the program that manages your Pi’s wireless settings. The file is located at /etc/wpa_supplicant/wpa_supplicant.conf.

Step-by-Step Process

  1. Open the file in nano:
bash
  sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
  1. Add your network details like this:
network={
    ssid="YOUR_WIFI_NETWORK_NAME"
    psk="YOUR_WIFI_PASSWORD"
    key_mgmt=WPA-PSK
  }
  1. Save the file by pressing Ctrl+X, then Y, then Enter.
  2. Reload the WiFi settings:
bash
  wpa_cli -i wlan0 reconfigure
  1. Check that the WiFi interface is active:
bash
  ifconfig wlan0

Extra Options

  • For hidden networks, add scan_ssid=1.
  • To set priority for each network, add a priority value.
  • You can set a static IP address and country code details.
  • Turn power management on or off as needed.
See also
Variable Resistor vs. Potentiometer: What's the Difference?

Method 2: Using Network Manager Tools

Network Manager is used in newer Raspberry Pi OS versions. It offers a text-based interface and command options.

Using nmtui

  1. Start the text interface:
bash
  sudo nmtui
  1. Select “Activate a connection” and choose your WiFi network.
  2. Type your password when prompted.
  3. For more options, select “Edit a connection” to set a static IP or DNS.

Using nmcli

  1. List available networks:
bash
  nmcli device wifi list
  1. Connect to your network:
bash
  nmcli device wifi connect "YOUR_SSID" password "YOUR_PASSWORD"
  1. Read your connection details:
bash
  nmcli connection show

Method 3: Using raspi-config Utility

The raspi-config tool makes setup easy for beginners.

Steps via raspi-config

  1. Start the config tool:
bash
  sudo raspi-config
  1. Choose the network or system options menu.
  2. Select “Wireless LAN” and type your SSID.
  3. Enter your password and choose your country code.
  4. Save your settings and decide if you want to restart now or later.

When to Use raspi-config

  • It works well for basic setups.
  • For advanced settings, you might prefer the wpa_supplicant file method.

Headless Raspberry Pi WiFi Setup

You can pre-set up WiFi without a monitor. This is handy for remote setups.

Pre-configuring WiFi Before First Boot

  1. Create a file named wpa_supplicant.conf on your computer:

  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
  update_config=1
  country=US
network={
    ssid="YOUR_WIFI_NETWORK_NAME"
    psk="YOUR_WIFI_PASSWORD"
    key_mgmt=WPA-PSK
  }
  1. Copy this file to the boot partition of your SD card.
  2. Also drop an empty file named ssh in the boot partition to turn on SSH.
  3. Insert the card into your Raspberry Pi and power it on. The WiFi settings will load at boot.

Using Raspberry Pi Imager

  1. Install Raspberry Pi Imager.
  2. Press Ctrl+Shift+X to open advanced settings.
  3. Type your WiFi credentials and enable SSH before writing the image.

Troubleshooting WiFi Connection Issues

Sometimes things don’t work right. Here are a few tips.

Common Problems and Fixes

  • “wlan0: No such device”: Check that your wireless adapter is visible. Use lsusb or ip a.
  • Incorrect network details: Double-check your SSID and password.
  • DHCP issues: Try setting a static IP and review your router settings.
  • Frequent drops: Look at power settings and nearby interference.
See also
Best Arduino Starter Kits for Beginners That Actually Teach

Useful Commands

  • View interface status:
bash
 ip addr show wlan0
  • See connection details:
bash
 iwconfig wlan0
  • Test your internet:
bash
 ping -c 4 google.com
  • Scan networks:
bash
 sudo iwlist wlan0 scan | grep ESSID
  • Read system logs:
bash
 sudo journalctl -u wpa_supplicant

Advanced WiFi Configuration Techniques

Sometimes you need more than basic setup.

Enterprise Networks (WPA2-Enterprise)

Learn about enterprise authentication. This method uses 802.1X for secure projects.

Multiple WiFi Networks

  • Set the order for your networks.
  • Create profiles for different locations.
  • Configure fallback settings if one network is not available.

Setting a Static IP Address

  1. Edit the dhcpcd.conf file:
bash
  sudo nano /etc/dhcpcd.conf
  1. Add these lines:
interface wlan0
  static ip_address=192.168.1.100/24
  static routers=192.168.1.1
  static domain_name_servers=192.168.1.1 8.8.8.8

WiFi Optimization Tips

  • Change transmission power and channels.
  • Adjust settings to avoid interference.
  • Tweak power saving modes to keep your connection steady.

Automating WiFi Management

Automation saves time on repeated tasks.

Custom Connection Scripts

Write shell scripts to manage your WiFi. Add them to start on boot to keep connections lively. Include error checks and log outputs.

Python WiFi Scripts

You can use Python libraries to set up WiFi. Write a small program that monitors and reconnects automatically if needed.

IoT Integration

For headless or automatic projects, a smart WiFi manager works best. Adapt the script for your device needs.

Tools and Resources

Here are some programs that help with WiFi on the Pi:

  • iw: A low-level tool for WiFi.
  • iwconfig: For working with wireless settings.
  • nmcli/nmtui: Command tools from Network Manager.
  • ip: The modern replacement for ifconfig.
  • ping and traceroute: For checking network flow.

For more details, check the official Raspberry Pi docs and forums.

Frequently Asked Questions

How do I fix a “wlan0: No such device” error?

This usually means your WiFi hardware is not recognized. Check that your adapter is plugged in and visible with commands like ip a and lsusb.

Can I add multiple networks in wpa_supplicant.conf?

Yes. Use multiple network blocks to connect to different networks as you move around.

See also
Best Sensors for Arduino Projects That Actually Work

What if my Pi is not connecting after editing wpa_supplicant.conf?

Double-check the file. Look for spelling mistakes and punctuation errors. Also, verify your SSID and password are correct.

How do I check my Pi’s WiFi status?

Run the command ifconfig wlan0 or iwconfig wlan0 to see if you have an IP address assigned.

Can I use these commands without a monitor?

Absolutely. For headless setups, prepare the wpa_supplicant.conf file on your computer. Drop it on the SD card’s boot partition and power your Pi up.

Conclusion

This guide showed clear steps to connect your Raspberry Pi to WiFi using the command line. We covered various methods with simple commands, headless setups, and troubleshooting. I hope you find this guide practical and fun to use. Give it a try and share your project results with us. Happy building!