VMware ESXi and vSphere Cluster Management
Configure Raspberry Pi Settings with raspi-config
Learn how to launch and navigate raspi-config on Raspberry Pi OS, configure localization, SSH, storage, hardware interfaces, boot settings, and troubleshoot common problems.
raspi-config is the interactive, terminal-based configuration utility for Raspberry Pi OS, the Raspberry Pi-focused operating system formerly called Raspbian. It gathers many common setup tasks into one text menu instead of requiring separate commands or manual edits to configuration files.
This lesson covers how to start raspi-config, navigate its ncurses-style interface, recognize its main categories, and make changes safely. The exact menu entries can differ between Raspberry Pi OS releases, Raspberry Pi models, and installed packages. An option described here might therefore be renamed, moved, or unavailable on a particular system.
When to use raspi-config
raspi-config is commonly used during the first setup of a newly installed Raspberry Pi OS system. Initial configuration often includes choosing a keyboard layout, setting the timezone, changing the default user's password, naming the device, enabling required hardware interfaces, and expanding the root filesystem.
You can also run it again after logging in whenever a supported system setting needs to change. This is different from first-boot configuration: first-boot setup may start automatically, while manual invocation happens when you open a terminal and launch the utility yourself.
Start raspi-config manually
In the Raspberry Pi OS desktop, open the application menu and launch Terminal. A terminal is a command-line application where you type commands and read their output. Then run:
sudo raspi-config
sudo is a command prefix that runs the following command with administrative privileges. raspi-config needs these privileges because it can change system-wide settings, services, partitions, boot behavior, and hardware interfaces. Enter your user password if prompted. The password will not appear on screen while you type it.
If you are already using a text console or connecting through an existing terminal session, the same command works there. Avoid running a configuration command as an administrator unless you understand what it changes, but raspi-config is specifically designed to be run with sudo.
Understand the text-menu interface
raspi-config uses an ncurses-style interface. This is a text-based screen that displays menus, dialogs, selectable choices, and buttons inside a terminal window. It does not require the graphical desktop.
- Use the Up and Down arrow keys to move through menu items.
- Use the Left and Right arrow keys when a dialog has buttons or multiple fields.
- Press Enter to open a highlighted category, choose an item, or confirm a selection.
- Use Tab where applicable to move between a list and buttons such as OK, Cancel, or Finish.
- Read each prompt before confirming. Some choices ask whether a service should be enabled, whether a default should be used, or whether the system should reboot.
After making changes, return to the main menu and select Finish. raspi-config may apply a setting immediately, or it may ask you to reboot. A reboot restarts the Raspberry Pi so selected configuration changes can take effect.
sudo reboot
Do not reboot during an important write operation or while another process is using the system. If a reboot is requested, save your work first and read the prompt carefully.
Common raspi-config option categories
The names and locations of options vary. Focus on the purpose of each category rather than expecting every Raspberry Pi to show the same menu.
| Category | Typical settings | Why a learner would use it | May require reboot |
|---|---|---|---|
| Localization | Keyboard layout, timezone, locale, Wi-Fi country | Match regional input, language, date formatting, time, and wireless regulations | Sometimes |
| System | Hostname, password, boot behavior, display or resolution choices where supported | Identify the device and control how it starts or presents output | Often |
| Interfaces | SSH, VNC, I2C, SPI, serial/UART, camera support, remote GPIO, 1-Wire | Enable only the services and hardware buses required by a project | Often |
| Performance and advanced settings | Memory allocation, overlay filesystem, network behavior, audio, and boot-time options where exposed | Tune a specific workload or alter how the system stores changes and starts services | Often |
| Storage | Root filesystem expansion | Use unused space on a newly flashed storage device | Usually |
| Updates and firmware | Firmware or update-related choices where provided | Manage supported low-level system update behavior | Often |
Localization settings
Localization means adapting the system to your region and language. The related settings are not identical:
- Keyboard layout maps physical keys to typed characters. For example, selecting the correct regional layout can fix punctuation or symbol keys that produce unexpected characters.
- Timezone identifies the region used for system time and timestamps.
- Locale controls regional language, character encoding, date formats, number formats, and similar conventions.
- Wi-Fi country identifies the regulatory region for wireless operation. Choose the country where the Raspberry Pi is being used.
Example: set a timezone
- Run
sudo raspi-config. - Open the localization category.
- Choose the timezone option.
- Select the appropriate geographic region and city or timezone.
- Accept the change, select Finish, and reboot if prompted.
After logging in again, inspect the result with:
timedatectl
Example: correct unexpected keyboard characters
Open the keyboard layout settings and select the correct keyboard model, country, and regional variant. Confirm the change, then test punctuation and symbol keys in a terminal. If the characters remain incorrect, check the layout in both the desktop and console environments and restart when requested. The physical keyboard may use a different layout from the one selected in software.
Change the default user's password
raspi-config commonly provides a system option for changing the password of the default user. Change a predictable or reused password immediately after installation. A strong password should be unique to the Raspberry Pi and difficult for other people on the network to guess.
Password changes are especially important before enabling remote access. Do not treat enabling SSH as a substitute for authentication security. Where practical, use SSH key-based authentication and protect the private key. Avoid exposing SSH directly to the public internet unless you have deliberately designed and secured that setup.
Remote access: SSH and VNC
SSH, or Secure Shell, is a protocol for securely accessing a device remotely through a terminal. The interface or remote-access category can expose an option to enable or disable the SSH service.
VNC provides remote graphical desktop access. It may appear as a separate interface option or may depend on the installed desktop and VNC software.
Example: enable SSH for headless administration
- Connect the Raspberry Pi to the network.
- Run
sudo raspi-config. - Open the interface or remote-access settings.
- Enable SSH and confirm the prompt.
- Select Finish and reboot if requested.
- Find the device hostname or network address. The command below displays the current hostname:
hostname
You can then use an SSH client from another computer with the appropriate username and hostname or IP address. The exact connection command depends on the account and address in use. If SSH is not needed, leave it disabled. Every enabled service increases the number of reachable components that must be secured.
Expand the root filesystem
The root filesystem is the main filesystem containing the operating system, user data, and installed software. A Raspberry Pi OS image may initially use only part of a larger microSD card or other storage device.
Filesystem expansion increases the usable root partition and filesystem to fill available capacity on the storage device. Use the storage-related option in raspi-config when you have flashed an image and the reported capacity is smaller than expected.
- Back up important data before changing partitions or filesystems.
- Open raspi-config and locate the filesystem expansion option.
- Apply the change and read the completion message.
- Reboot when requested.
- Check the available capacity after the system starts.
df -h
Look for the mounted root filesystem and compare its size and available space with the capacity you expect. Do not confuse free space inside the filesystem with unallocated space outside the partition.
System and boot settings
System-related menus can include a hostname, boot behavior, display or resolution options where supported, and update- or firmware-related choices. A hostname is the network name assigned to a computer, so changing it can make several Raspberry Pis easier to distinguish on a local network.
Boot settings may control whether the system starts at a graphical desktop or a command-line login, and whether it logs in automatically. Display choices can be useful with unusual monitors, televisions, or headless setups, but the available controls depend on the hardware, display stack, and Raspberry Pi OS release.
Firmware and update-related settings affect low-level components or update behavior. Use the defaults unless you have a clear project or maintenance reason to change them. Keep the system backed up before making changes that affect boot or storage behavior.
Hardware interfaces
Raspberry Pi projects often communicate with sensors and peripherals through interfaces connected to GPIO pins. Enable only the interface required by the project, then follow the peripheral's wiring and software instructions.
| Interface | Typical use | Required peripheral or project | Follow-up action after enabling |
|---|---|---|---|
| I2C | Connect sensors, RTC modules, and other addressable peripherals | An I2C-compatible device and correct power, ground, data, and clock wiring | Reboot if requested, then install or use software that detects the device |
| SPI | Communicate with displays, converters, memory devices, and fast sensors | An SPI peripheral with compatible voltage and chip-select wiring | Reboot if requested and configure the project for the selected SPI bus |
| Serial/UART | Exchange serial data with controllers, GPS modules, and debugging equipment | A UART peripheral and correct transmit, receive, ground, and voltage connections | Check which device owns the serial console before connecting hardware |
| Camera | Use a supported camera module | A compatible camera and software stack for the installed release | Follow current camera software instructions; support varies by release |
| 1-Wire | Use simple addressed sensors such as temperature sensors | A 1-Wire device and suitable pull-up or wiring arrangement | Load the required driver and verify the device appears |
| Remote GPIO | Access GPIO from another system or service | A project that specifically requires network-based GPIO control | Secure the service and restrict network access |
| VNC | Reach the graphical desktop remotely | A supported desktop environment and VNC software | Use strong authentication and limit who can connect |
Interface names and availability vary. A camera option, for example, may be absent on a release that uses a different camera system or on hardware that does not support the relevant feature. Do not force an unsupported option; consult documentation for the installed release and model.
Performance and advanced settings
Advanced menus may expose memory allocation, overlay filesystem, network behavior, audio, and boot-time options. These settings can have system-wide effects:
- Memory allocation may divide memory between the operating system and graphics-related functions. Choose it for a specific workload rather than copying a value from an unrelated project.
- An overlay filesystem can make the normal filesystem behave as a read-only base with changes stored temporarily or in an overlay. This can help some kiosk or appliance designs, but it changes how files persist across reboots.
- Network behavior options can affect how the device obtains or identifies network configuration.
- Audio choices can select or alter the available audio output path where supported.
- Boot-time options can alter startup services, consoles, automatic login, or graphical behavior.
These options are useful when you have a documented requirement. When you are unsure, keep the documented default, cancel the dialog, or back out without saving.
Safe configuration workflow
- Record the current state. Write down unfamiliar settings, the current hostname, the reason for the change, and any project wiring or service dependencies.
- Group related changes. For example, handle localization together, then handle hardware interfaces separately.
- Change only what the project needs. Enabling every interface or service creates unnecessary complexity and exposure.
- Read prompts carefully. Pay special attention to warnings about storage, services, boot behavior, and rebooting.
- Finish normally. Select Finish instead of closing the terminal abruptly.
- Reboot when required. Save work first and wait for the system to return.
- Verify the result. Use an appropriate command, test the connected hardware, or confirm that the remote service is reachable.
| Setting changed | Expected result | How to verify | Security or project consideration |
|---|---|---|---|
| Timezone | System timestamps use the selected region | timedatectl | Incorrect time can confuse logs, scheduled jobs, and authentication |
| Keyboard layout | Keys produce the expected characters | Type punctuation in the desktop and terminal | Choose the physical keyboard's actual regional variant |
| Password | The account accepts the new credential | Lock and sign in again, or test locally | Use a unique strong password before enabling remote access |
| SSH | Remote terminal access is available | Check network reachability and connect with an SSH client | Enable only when needed; prefer keys and restrict access |
| Filesystem expansion | The root filesystem uses additional storage | df -h after reboot | Back up data and avoid interrupting storage operations |
| Hostname | The device has a recognizable network name | hostname | Avoid duplicate names on the same network |
| I2C, SPI, or UART | The required bus or serial device is available | Use the project's device-detection or test program | Check voltage levels, pin conflicts, and permissions |
Security implications
Configuration changes can affect who reaches the Raspberry Pi and what hardware or services it exposes. Change default credentials because predictable credentials are an easy target, especially when the device is connected to a shared network.
Enable SSH only when remote terminal administration is required. Protect it with strong credentials or, preferably where suitable, key-based authentication. Keep the operating system updated through an appropriate maintenance process and avoid exposing services beyond the network boundaries they need.
Enabling I2C, SPI, UART, camera, remote GPIO, VNC, or other interfaces can make additional devices, drivers, or services active. Match each choice to the project, check whether pins conflict with another function, and secure any network-accessible service.
Practical configuration scenarios
Use the full capacity of a newly flashed card
After installing Raspberry Pi OS on a card larger than the image's initial partition, open raspi-config, select filesystem expansion, apply the change, and reboot. Verify the result with df -h. If the reported size remains unexpectedly small, check that the system actually rebooted and inspect the storage device for partition or filesystem errors.
Prepare GPIO communication for a sensor
Identify the sensor's protocol first. Open raspi-config, enable only I2C, SPI, or another required interface, and reboot if requested. Then wire power, ground, and signal lines according to the sensor documentation, confirm voltage compatibility, and use the project's device-detection tool. Enabling an interface does not replace wiring or installing the correct software.
Troubleshooting
“raspi-config: command not found”
The system may not be Raspberry Pi OS, the utility may be missing, or the installation may be incomplete. Confirm the operating system and release, then check whether the package is available through that system's package manager. Do not apply Raspberry Pi OS-specific instructions to an unrelated distribution without checking its equivalent tools.
An expected menu option is absent
The option may have moved or been removed in a newer release, may depend on an installed package, or may not be supported by the Raspberry Pi model. Check documentation for the installed release and look for an equivalent configuration tool or system file. Do not force an unsupported hardware feature.
SSH is still unreachable
- Verify that the Raspberry Pi is connected to the same network or otherwise reachable.
- Confirm the hostname or IP address;
hostnameshows the local hostname. - Restart if raspi-config requested a reboot, and verify the SSH service status locally.
- Check router, firewall, and network rules.
- Confirm the username, password, or SSH key being used.
Keyboard characters remain incorrect
Revisit localization settings and select the correct keyboard model, country, and variant. Test from both the desktop and a terminal after restarting. If only one environment is affected, its keyboard configuration may differ from the console configuration.
Storage capacity did not increase
Restart the Raspberry Pi after applying filesystem expansion, then run df -h. If the image already fills the device, there may be no additional space to claim. If the reported capacity is still wrong, investigate partition layout, filesystem errors, or a failing storage device before making further changes.
Key points
- raspi-config is a terminal-based Raspberry Pi OS configuration utility run with
sudo. - It is useful during first boot and can be launched again after login.
- Use arrow keys, Enter, Tab, and the on-screen buttons to navigate, then select Finish.
- Common tasks include localization, password changes, SSH, filesystem expansion, hostname and boot settings, and hardware interface configuration.
- Menu items differ by operating system release, hardware model, and installed packages.
- Make small, documented changes, reboot when requested, and verify each result.
For a related lesson, see Raspberry Pi configuration with raspi-config.