Bird
Raised Fist0
Raspberry Piprogramming~20 mins

Headless deployment setup in Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Headless Deployment Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Raspberry Pi headless Wi-Fi setup script?
Consider this script snippet that configures Wi-Fi on a Raspberry Pi without a monitor. What will be the output after running it?
Raspberry Pi
import os
ssid = "HomeNetwork"
password = "mypassword"
wpa_supplicant_conf = f"""
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={{
    ssid=\"{ssid}\"
    psk=\"{password}\"
    key_mgmt=WPA-PSK
}}
"""

with open("/etc/wpa_supplicant/wpa_supplicant.conf", "w") as f:
    f.write(wpa_supplicant_conf)

print("Wi-Fi configuration file created.")
AWi-Fi configuration file created.
BPermission denied error
CFile not found error
DSyntax error in configuration file
Attempts:
2 left
💡 Hint
Think about file writing permissions on Raspberry Pi OS.
🧠 Conceptual
intermediate
1:30remaining
Which file enables SSH access on a Raspberry Pi in headless mode?
When preparing a Raspberry Pi SD card for headless setup, which file must be created or modified to enable SSH access on boot?
Awpa_supplicant.conf
Bssh (empty file in boot partition)
Ccmdline.txt
Dconfig.txt
Attempts:
2 left
💡 Hint
This file is placed in the boot partition and has no extension.
🔧 Debug
advanced
2:30remaining
Why does this headless Wi-Fi setup script fail to connect?
This Python script writes a wpa_supplicant.conf file but the Raspberry Pi does not connect to Wi-Fi. Identify the bug.
Raspberry Pi
ssid = "MyWiFi"
password = "pass1234"
wpa_conf = f"""
network={{
ssid="{ssid}"
psk="{password}"
key_mgmt=WPA-PSK
}}
"""
with open("/etc/wpa_supplicant/wpa_supplicant.conf", "w") as f:
    f.write(wpa_conf)
print("Config written")
Assid and psk lines lack indentation
BDouble quotes inside f-string cause syntax error
CMissing country code line in config
DFile path is incorrect
Attempts:
2 left
💡 Hint
Check the indentation inside the network block.
📝 Syntax
advanced
1:30remaining
What error does this Raspberry Pi headless setup script produce?
What error will this Python code produce when run on Raspberry Pi to create wpa_supplicant.conf?
Raspberry Pi
with open('/etc/wpa_supplicant/wpa_supplicant.conf', 'w') as f
    f.write('network={ssid="MyWiFi" psk="pass1234"}')
AIndentationError: expected an indented block
BFileNotFoundError: no such file or directory
CPermissionError: [Errno 13] Permission denied
DSyntaxError: expected ':' after 'with' statement
Attempts:
2 left
💡 Hint
Check the syntax of the with statement.
🚀 Application
expert
2:00remaining
How many lines will the Raspberry Pi read from wpa_supplicant.conf after this script runs?
This script writes a wpa_supplicant.conf file for headless Wi-Fi setup. How many lines will the file contain?
Raspberry Pi
conf = '''ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB

network={
    ssid="OfficeWiFi"
    psk="securepass"
    key_mgmt=WPA-PSK
}
'''
with open('/etc/wpa_supplicant/wpa_supplicant.conf', 'w') as file:
    file.write(conf)
A8
B10
C9
D7
Attempts:
2 left
💡 Hint
Count all lines including blank lines in the triple-quoted string.

Practice

(1/5)
1. What is the main purpose of a headless deployment setup on a Raspberry Pi?
easy
A. To connect multiple Raspberry Pis in a cluster
B. To install a graphical user interface on the Raspberry Pi
C. To control the Raspberry Pi without a monitor, keyboard, or mouse
D. To update the Raspberry Pi firmware automatically

Solution

  1. Step 1: Understand headless setup concept

    Headless setup means using the Raspberry Pi without directly connecting a monitor, keyboard, or mouse.
  2. Step 2: Identify the main purpose

    This setup allows remote control, usually via SSH, without extra devices attached.
  3. Final Answer:

    To control the Raspberry Pi without a monitor, keyboard, or mouse -> Option C
  4. Quick Check:

    Headless = Remote control without peripherals [OK]
Hint: Headless means no monitor or keyboard needed [OK]
Common Mistakes:
  • Thinking headless means adding a GUI
  • Confusing headless with networking multiple Pis
  • Assuming it updates firmware automatically
2. Which file must you add to the Raspberry Pi's boot partition to enable SSH on headless setup?
easy
A. ssh_enable
B. ssh.txt
C. enable_ssh.conf
D. ssh

Solution

  1. Step 1: Recall SSH enabling method

    To enable SSH on boot, you add an empty file named exactly 'ssh' (no extension) to the boot partition.
  2. Step 2: Identify correct filename

    Only the file named 'ssh' without extension works; others are ignored.
  3. Final Answer:

    ssh -> Option D
  4. Quick Check:

    Empty file named 'ssh' enables SSH [OK]
Hint: Add empty file named 'ssh' to boot partition [OK]
Common Mistakes:
  • Adding file with extension like .txt
  • Using wrong filenames like ssh_enable
  • Not adding any file at all
3. Given this wpa_supplicant.conf content added to the boot partition, what will happen after the Raspberry Pi boots?
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
  ssid="HomeWiFi"
  psk="mypassword"
  key_mgmt=WPA-PSK
}
medium
A. The Pi will fail to connect because the country code is missing
B. The Pi will connect to the Wi-Fi network named 'HomeWiFi' automatically
C. The Pi will connect but require manual password entry
D. The Pi will connect to any open Wi-Fi network nearby

Solution

  1. Step 1: Analyze wpa_supplicant.conf content

    The file includes correct country code, control interface, and network block with SSID and password.
  2. Step 2: Understand Wi-Fi connection behavior

    With this config, the Pi will automatically connect to the specified Wi-Fi network on boot.
  3. Final Answer:

    The Pi will connect to the Wi-Fi network named 'HomeWiFi' automatically -> Option B
  4. Quick Check:

    Valid wpa_supplicant.conf = Auto Wi-Fi connect [OK]
Hint: Correct wpa_supplicant.conf auto connects Wi-Fi [OK]
Common Mistakes:
  • Thinking country code is optional and causes failure
  • Assuming manual password input is needed
  • Believing it connects to any open network
4. You added the 'ssh' file and 'wpa_supplicant.conf' to the boot partition but cannot SSH into your Raspberry Pi after boot. What is the most likely mistake?
medium
A. The 'ssh' file has a .txt extension, so SSH is not enabled
B. The Raspberry Pi does not support headless setup
C. You forgot to connect a monitor and keyboard
D. The Pi boots too fast to accept SSH connections

Solution

  1. Step 1: Check common headless setup errors

    A common error is naming the 'ssh' file with an extension like '.txt', which disables SSH enabling.
  2. Step 2: Evaluate other options

    Raspberry Pi supports headless setup; monitor/keyboard not needed; boot speed does not block SSH.
  3. Final Answer:

    The 'ssh' file has a .txt extension, so SSH is not enabled -> Option A
  4. Quick Check:

    File must be named exactly 'ssh' without extension [OK]
Hint: Check 'ssh' file has no extension [OK]
Common Mistakes:
  • Assuming monitor is required for SSH
  • Thinking Pi doesn't support headless mode
  • Blaming boot speed for SSH failure
5. You want to set up a Raspberry Pi headlessly to connect to a hidden Wi-Fi network named 'SecretNet' with password 'safePass123'. Which wpa_supplicant.conf snippet correctly configures this?
hard
A. network={ ssid="SecretNet" psk="safePass123" scan_ssid=1 }
B. network={ ssid=SecretNet psk=safePass123 hidden=1 }
C. network={ ssid="SecretNet" psk="safePass123" hidden=1 }
D. } 1=neddih "321ssaPefas"=ksp "teNterceS"=diss {=krowten

Solution

  1. Step 1: Understand hidden Wi-Fi config

    To connect to a hidden Wi-Fi, you must set scan_ssid=1 to actively scan/probe for the non-broadcasting SSID.
  2. Step 2: Check option correctness

    network={ ssid="SecretNet" psk="safePass123" scan_ssid=1 } includes scan_ssid=1 with correct quotes around SSID and password.
  3. Final Answer:

    network={ ssid="SecretNet" psk="safePass123" scan_ssid=1 } -> Option A
  4. Quick Check:

    Hidden Wi-Fi needs scan_ssid=1 [OK]
Hint: scan_ssid=1 for hidden Wi-Fi [OK]
Common Mistakes:
  • Omitting scan_ssid=1 for hidden networks
  • Not quoting SSID and password
  • Using wrong parameter names like 'hidden=1' alone
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard