Wi-Fi
This page describes how to set up a wireless network connection with WPA encryption.
Prerequisites
Working wireless drivers
If you are using a Broadcom chipset, see the Broadcom Wi-Fi section.)
wpa_supplicant
To get started install wpa_supplicant
apk add wpa_supplicant
To list your available network interfaces:
ip link
or
ip a
Bring up the desired interface:
ip link set wlan0 up
ioctl 0x8914 failed: No error information
, that's busybox ip
's way of saying your wireless radio is rfkill'd. See the Rfkill section for information on how to unblock your wireless radio.
Use this command to add your Wi-Fi network to wpa_supplicant:
wpa_passphrase 'ExampleWifiSSID' 'ExampleWifiPassword' > /etc/wpa_supplicant/wpa_supplicant.conf
(Access point not broadcasting its SSID requires additional line scan_ssid=1
in the file wpa_supplicant.conf
)
Start wpa_supplicant in the foreground to make sure the connection succeeds.
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
If all is well, run it as a daemon in the background by setting the -B option.
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Configure the interface with an IP address.
udhcpc -i wlan0
Sanity check: the interface should have a inet address.
ip addr show wlan0
Automatic Configuration on System Boot
Add a entry for the desired interface (e.g. wlan0) to /etc/network/interfaces:
auto wlan0 iface wlan0 inet dhcp
Sanity check: Make sure /etc/wpa_supplicant/wpa_supplicant.conf is the correct configuration for the wireless access point you want to connect to.
Bring the interface down.
ip link set wlan0 down
Manually restart (or start) networking.
/etc/init.d/networking --quiet restart &
If all is well (feel free to confirm with the sanity checks),
Configure wpa_supplicant to start automatically on boot:
# rc-update add wpa_supplicant boot
Also make sure networking is set to automatically start on boot:
# rc-update add networking boot
Launching udhcpc through wpa_cli actions
With the above configuration, udhcpc will only run once at boot. If the Wifi isn't available then, or the network changes in between, it needs to be notified. This is done through the wpa_cli action script in /etc/wpa_supplicant/wpa_cli.sh
Automatic Reconnection when WIFI signal is lost
To enable automatic reconnection when wifi signal is lost add these to config:
Contents of /etc/wpa_supplicant/wpa_supplicant.conf
rc-update add wpa_cli boot
Troubleshooting
Broadcom Wi-Fi Chipset Users
The Broadcom chipset is quite popular among older computers. You will need to compile the firmware manually for this chipset as it is not included.
You can check if you have a Broadcom chipset by using dmesg:
dmesg | grep Broadcom
First install the SDK and Git:
apk add alpine-sdk git
Then git clone aports from git.alpinelinux.org.
git clone git://git.alpinelinux.org/aports
Change your directory to aports/non-free/b43-firmware, then build it.
abuild -r
Install the generated packge file (it will be in ~/packages/) - make sure to pass --allow-untrusted
apk add --allow-untrusted ~/packages/...pkg
Now we need fwcutter, which is executed from the firmware package:
apk add b43-fwcutter b43-firmware
Now you need to use modprobe so the device will show up:
modprobe b43
To automate this on startup add it to /etc/modules:
echo b43 >> /etc/modules
Now continue with the normal instructions.
Rfkill
See Also: Network configuration/Wireless#Rfkill caveat - ArchLinux Wiki
Many laptops have a hardware button (or switch) to turn off wireless card, however, the card can also be blocked by kernel. This can be changed using rfkill. To show the current of your Wi-Fi:
Contents of (example) $ rfkill list
If the card is hard-blocked, use the hardware button or switch to unblock it. If the card is not hard-blocked but soft-blocked, use the following command:
# rfkill unblock wifi