Raspberry Pi raspi-config Guide: The Complete Tutorial for Setup, Interfaces, and System Configuration
Dec 2th,2025

When it comes to Raspberry Pi configuration, one of the first tools users encounter is raspi-config—a versatile utility for setting up essential system parameters. It’s a simple, text-based utility that appears in almost every setup guide, and for good reason: it centralizes the most important system configurations in one place. Understanding what raspi-config does, how it interacts with the desktop configuration tool, and when to edit /boot/config.txt manually helps keep your device stable and easier to maintain over time.

Raspi-config sits between Raspberry Pi OS and the underlying system files. Many of the settings it exposes are simply shortcuts to configurations that would otherwise require manual edits — for example, enabling I2C or SPI without editing system files manually. You can refer to the Raphael Kit for Raspberry Pi to see how these settings are used in real projects.For example, enabling I2C or SPI involves modifying kernel modules and parameters; adjusting display settings writes values to /boot/config.txt; and changing localisation updates system-wide defaults. On the full version of Raspberry Pi OS, most of these options are mirrored in the graphical “Raspberry Pi Configuration” window found in Preferences. Both tools ultimately modify the same settings, but raspi-config is the more universal method because it works on headless setups, remote systems, and Lite installations without a desktop environment.

If you open /boot/config.txt, you’ll see exactly where many changes end up. This file controls low-level board behaviour such as display modes, interface activation, CPU/GPU memory allocation, and hardware overlays. While editing the file manually is still possible—and sometimes necessary for advanced tweaks—most users will find that raspi-config provides a safer interface that prevents syntax errors or misconfigurations.

Lite vs. Full Raspberry Pi OS: Key Differences in raspi-config
The behaviour of raspi-config is consistent between the Lite and Full versions of Raspberry Pi OS, but there are a few small differences that matter depending on how you work — you can explore those differences in the official Raspberry Pi OS overview.

On Raspberry Pi OS Lite, raspi-config becomes your main configuration tool. Since there’s no desktop environment, you rely on it for enabling interfaces—such as when you enable SSH on Raspberry Pi for headless access—adjusting performance settings, expanding the filesystem, and setting localisation.It’s also the easiest way to enable SSH so you can manage the Pi entirely over the network—ideal for a headless Raspberry Pi setup.
On the Full Raspberry Pi OS, the graphical configuration window duplicates many of the same options—SSH, camera support, interfaces, resolution, and localisation—but raspi-config still remains useful. It exposes a few advanced settings not always visible in the GUI, and it’s available even when connecting via SSH.Some changes, especially those related to performance and certain interfaces, still require a reboot, and raspi-config clearly indicates when that is necessary. You can see examples of this in projects like the PiCar-X, which involve SPI, I2C, and camera configuration.
In both cases, once you select an option and confirm your changes, the tool writes directly into system configuration files and prompts for a reboot to apply them. The underlying behaviour remains identical, only the access method differs.
Interface Options: Practical Examples for Real Projects

The “Interface Options” section is one of the most frequently used parts of raspi-config. Enabling these interfaces allows external hardware, sensors, and services to interact with the Pi. For a complete list of available interfaces and how to use them, check the official interface documentation from Raspberry Pi.
SSH – Remote Login
SSH lets you manage the Raspberry Pi from another computer. This is crucial for headless setups or remote administration. Once SSH is enabled, you can log in from any Linux or Mac terminal using:
ssh pi@raspberrypi.local
Windows users can access the device through PowerShell or tools like PuTTY.
I2C – Sensors and OLED Displays
I2C is a low-speed communication protocol widely used in electronics projects. Many popular sensors—temperature, humidity, pressure, accelerometers—use I2C, as do tiny OLED screens like the SSD1306.
Enabling I2C loads the required kernel modules (i2c-dev) and allows libraries such as smbus or CircuitPython to communicate with external devices—simplifying your Raspberry Pi I2C setup.
This is typically followed by a quick test with:
sudo i2cdetect -y 1
which scans the I2C bus and shows connected peripherals.
SPI – TFT Displays and ADC Modules
The SPI interface on Raspberry Pi is ideal for fast communication with external hardware, outperforming I2C in scenarios that require speed, such as small TFT displays, ADC boards like the MCP3008, or certain RFID modules.
Turning on SPI ensures the spi-bcm2835 driver is enabled and exposes /dev/spidev0.* devices for your applications to use — see the official Raspberry Pi SPI interface guide for low-level details and testing steps.
Camera – CSI Camera Modules
For any Raspberry Pi camera setup, especially when using the CSI-connected Camera Module, enabling the Camera option in raspi-config is essential.On older distributions, this activated the legacy camera stack. On modern Raspberry Pi OS versions, it ensures libcamera support is ready to use for applications such as timelapses, surveillance, computer vision, or streaming.
Once enabled and rebooted, running:
libcamera-hello
confirms the camera is functioning.
These interface options are designed to save time and reduce mistakes. Instead of manually editing multiple system files, raspi-config handles everything with a simple “Enable” selection.
Performance and Localisation: Settings That Matter
Tuning performance ensures the Pi matches your workload, and localisation makes the system practical for your region.
Overlay File System on Raspberry Pi OS

The Overlay File System on Raspberry Pi is a powerful feature that lets the system operate in a read-only mode while still allowing normal file operations. It is widely used in industrial deployments, kiosks, IoT devices, classrooms, and any environment where stability is more important than persistent changes.
On Raspberry Pi OS, this feature can be enabled directly through raspi-config, making it one of the easiest ways to protect the SD card from corruption.
The overlay mechanism uses two layers that stack on top of each other:
1. Lower Layer (read-only)
This is the real filesystem stored on the SD card. When the overlay is enabled, this entire layer is mounted as read-only, preventing any permanent modification.. If you want to monitor how your Raspberry Pi behaves under such conditions, check out our Raspberry Pi System Monitor Guide using Monit.
2. Upper Layer (temporary, in RAM)
All changes—file creation, deletion, or modifications—are written to a temporary virtual filesystem stored in RAM.
This means:
• Changes are not permanent
• Everything is lost at reboot
• The system returns to a clean, original state every time it restarts
This design effectively turns the Raspberry Pi into an immutable system.
Localisation Essentials

Localisation settings may seem minor but they affect daily workflow.
• Timezone: ensures logs, cron jobs, and timestamps remain accurate.
• Keyboard layout: avoids typing errors when switching between US, UK, ES, or Latin American keyboards.
• Wi-Fi country: required for regulatory compliance and proper wireless channel operation.
Choosing the wrong Wi-Fi country can cause connectivity issues, especially on 5 GHz networks. Setting it once through raspi-config guarantees drivers behave correctly.
First-Time Setup Checklist
A proper Raspberry Pi first-time setup ensures the device is secure and functional. Anyone configuring it should follow a short but important sequence.This ensures the system is secure, usable, and ready for further customization.
1. Change the default password
Protects the device from automated attacks, especially when SSH is enabled.
2. Update the system
sudo apt update && sudo apt full-upgrade
3. Expand the filesystem
On newer versions this is automatic, but on older ones it’s necessary to access the full SD card capacity.
4. Enable SSH
Allows remote access and makes headless setups possible.
5. Set localisation
Adjust locale, keyboard layout, timezone, and Wi-Fi country.
6. Enable required interfaces (I2C, SPI, Camera)
Depends on your project needs.
7. Reboot
Applies all changes.
This checklist prepares the Raspberry Pi for nearly any practical use case.
Alternatives to raspi-config: Editing /boot/config.txt Directly
Advanced users may eventually need configurations that raspi-config doesn’t expose, which often requires them to edit /boot/config.txt directly for more control.In those cases, editing /boot/config.txt is perfectly acceptable. A few common examples include:
Force HDMI Resolution
hdmi_group=1
hdmi_mode=16
This is useful when connecting to displays that don’t report EDID data correctly.
Screen Rotation
display_rotate=1
A simple method for portrait-mode screens.
Manually Enabling I2C (alternative method)
dtparam=i2c_arm=on
Although raspi-config sets this automatically, advanced configurations—like enabling additional I2C buses—require manual changes.
Conclusion
Raspi-config remains one of the most important tools for managing and customizing a Raspberry Pi, especially during first-time setup or when working in headless and Lite environments. By centralizing essential options—such as interface activation, localisation, performance tuning, and system security—it provides a safe, structured alternative to manually editing system files. Whether you're enabling I2C for sensors, preparing a camera project, configuring remote access, or fine-tuning display and hardware behavior, raspi-config ensures those changes are applied correctly and consistently. And for advanced users, knowing when to switch to /boot/config.txt opens the door to even deeper customization. Mastering both approaches makes your Raspberry Pi more stable, flexible, and ready for any project you take on next.
