Wi-Fi
This document describes how to set up a wireless network connection with WPA encryption.
Install necessary drivers and software
First make sure your wireless drivers are loaded properly. (if you are using a Broadcom chipset, see the section at the bottom of this post.)
Install wireless-tools and wpa_supplicant, which are probably available to be installed in the base setup.
apk add wireless-tools wpa_supplicant
Manual Configuration
List your available network interfaces. If you don't see any wireless interfaces (e.g. wlan0), you probably need to load and/or install extra drivers/firmware.
ip link
Bring the desired interface up.
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 here for information on how to unblock your wireless radio; the base installation should have busybox rfkill
available.
Use the interface to scan for wireless access points. Make sure the ESSID you want to connect to appears here.
iwlist wlan0 scanning
Associate the interface with desired ESSID.
iwconfig wlan0 essid ExampleWifi
Sanity check: the interface should be configured with ESSID:"ExampleWifi".
iwconfig wlan0
Create a wpa_supplicant configuration stanza for the wireless access point.
wpa_passphrase 'ExampleWifi' '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 an inet address.
ip addr show wlan0
Automatic Configuration on System Boot
Add a stanza for the desired interface (e.g. wlan0) to /etc/network/interfaces:
auto wlan0 iface wlan0 inet dhcp
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.
ifconfig wlan0 down
Manually start wpa_supplicant.
/etc/init.d/wpa_supplicant start
If all is well (confirm with the sanity checks in Manual Configuration), configure wpa_supplicant to start automatically on boot.
rc-update add wpa_supplicant 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
rc-update add wpa_cli boot
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.