I don’t run a GUI/Desktop on my Raspberry Pi devices. I don’t have monitors or keyboards connected to them — typically I log into them via SSH and manage them that way. I recently wanted to activate multiple network connections on my Raspberry Pi 3 Model B, so I decided to activate the wireless connection in addition to the wired connection that was already configured.
I tried following the steps at Setting WiFi up via the command line but got an error after the first step:
$ sudo iwlist wlan0 scan
wlan0 Interface doesn't support scanning : Network is down
I decided to check an see what devices were available via ifconfig
:
$ ifconfig
eth0 ...
lo ...
No wireless device is listed there. I checked for all devices using the -a
switch:
$ ifconfig -a
eth0 ...
lo ...
wlan0 ...
It’s there, wlan0
, but it wasn’t active. I tried to bring the device up:
$ sudo ifconfig wlan0 up
SIOCSIFFLAGS: Operation not possible due to RF-kill
That error message is completely indecipherable to me! Fortunately, someone else had this error message too:
“SIOCSIFFLAGS: Operation not possible due to RF-kill”?
From that post I was able to determine that the wireless device was soft blocked:
$ sudo rfkill list
0: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
How to unblock it? The following, described at the aforementioned post, worked. Although I’m not sure why I’m unblocking wifi
instead of phy0
:
$ sudo rfkill unblock wifi
$ sudo rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
$ sudo ifconfig wlan0 up
$ ifconfig
eth0 ...
lo ...
wlan0 ...
The device is now active, but we still need to connect. First, I generated an encrypted passphrase:
$ wpa_passphrase "my_network_id" "my_network_password"
network={
ssid="my_network_id"
psk=8a9b456b28ef0707987622421592d3cc2fd22544ac281bced0f2028f4f4fcb85
}
Next, I appended that block of text to /etc/wpa_supplicant/wpa_supplicant.conf
Based on what I’ve read, that should be sufficient. The system should periodically detect changes to the wpa_supplicant.conf
file and load the new settings automatically. I was impatient and rebooted. Apparently the following command should work too:
$ sudo wpa_cli reconfigure
After the reboot, I checked ifconfig
for the wlan0
interface:
$ ifconfig wlan0 | grep 'inet addr'
inet addr:192.168.0.23 Bcast:192.168.0.255 Mask:255.255.255.0
It has an address — success!