WPI(4)
π wpi(4) β the Intel 3945ABG wireless era, but make it a group chat π
okay bestie, sit down, hydrate, because today we're talking about wpi β that's the Intel 3945ABG Wireless LAN IEEE 802.11 driver, straight out of the Kernel Interfaces Manual, section 4, where all the hardware whisperers live. π¦
β¨ NAME β¨
wpi β Intel 3945ABG Wireless LAN IEEE 802.11 driver. that's it, that's the name, and it's iconic for exactly what it says. π
πΈ SYNOPSIS πΈ
so you wanna bake this driver into your kernel instead of loading it like a normal little module? okay main character, add these lines to your kernel configuration file:
device wpi
device wpifw
device pci
device wlan
device wlan_amrr
device firmware
OR, if you'd rather just load it as a module at boot time (so much easier, no cap), drop this line into loader.conf(5):
if_wpi_load="YES"
π DESCRIPTION π
so the wpi driver is the support system for the Intel 3945ABG Wireless network adapter. she supports station, adhoc, adhoc-demo, hostap, and monitor mode operation. β
but bestie β only one virtual interface may be configured at any time. one. single. at a time. she's monogamous fr fr. π
you can configure wpi to use Wired Equivalent Privacy (WEP) or Wi-Fi Protected Access (WPA-PSK and WPA2-PSK). WPA is the de facto encryption standard for wireless networks, she ate and left no crumbs. π
π¨ it is strongly recommended that WEP not be used as the sole mechanism to secure wireless communication, due to serious weaknesses in it. like, seriously seriously. WEP is giving 2003 and not in a cute way. π
the wpi driver offloads both encryption and decryption of data frames to the hardware for the CCMP cipher. hardware doing the work so your CPU can chill, we love an efficient queen. π
this driver requires the firmware built with the wpifw 4 module to work. no firmware, no vibes, no connection. simple as that.
and guess what β wpi can be configured at runtime with ifconfig(8). live your life, change your settings whenever. β¨
π FILES π
/usr/share/doc/legal/intel_wpi.LICENSEβ wpi firmware license. yes bestie, you have to read the legal stuff. it's giving responsible. π«Ά
π EXAMPLES π
okay this is the fun part, real commands, real slay. π
Join an existing BSS network (i.e., connect to an access point):
ifconfig wlan0 create wlandev wpi0 inet 192.168.0.20 \
netmask 0xffffff00
Join a specific BSS network with network name βmy_netβ:
ifconfig wlan0 create wlandev wpi0 ssid my_net up
Join a specific BSS network with 64-bit WEP encryption:
ifconfig wlan0 create wlandev wpi0 ssid my_net \
wepmode on wepkey 0x1234567890 weptxkey 1 up
Create an IBSS network with 128-bit WEP encryption on the channel 4:
ifconfig wlan0 create wlandev wpi0 wlanmode adhoc ssid my_net \
wepmode on wepkey 0x01020304050607080910111213 weptxkey 1 \
channel 4
Join/create an 802.11b IBSS network with network name βmy_netβ:
ifconfig wlan0 create wlandev wpi0 wlanmode adhoc
ifconfig wlan0 inet 192.168.0.22 netmask 0xffffff00 ssid my_net \
mode 11b
Create an 802.11g host-based access point:
ifconfig wlan0 create wlandev wpi0 wlanmode hostap
ifconfig wlan0 inet 192.168.0.10 netmask 0xffffff00 ssid my_ap \
mode 11g
π DIAGNOSTICS π
okay this is the part where your card starts texting you weird things at 2am. let's decode every single one, no skipped messages, we read them all. π±
wpi%d: could not load firmware image '%s'β the driver failed to load the firmware image using thefirmware(9)subsystem. verify thewpifw(4)firmware module is installed. bestie go check your firmware, it's not there. πwpi%d: %s: timeout waiting for adapter to initialize, error %dβ the onboard microcontroller failed to initialize in time. this should not happen.wpi%d: %s: could not load boot firmwareβ an attempt to upload the boot firmware image to the onboard microcontroller failed. this should not happen.wpi%d: device timeoutβ a frame dispatched to the hardware for transmission did not complete in time. the driver will reset the hardware and continue. this should not happen.wpi%d: scan timeoutβ firmware scan command response was not received in time. the driver will reset the hardware and continue. this should not happen.wpi%d: fatal firmware errorβ the onboard microcontroller crashed for some reason. the driver will reset the hardware and continue. this should not happen. πwpi%d: RF switch: radio disabledβ the hardware switch controlling the radio is currently turned off. data transmission is not possible in this state. check the physical switch babe, it's not a driver issue. πwpi%d: can't map mem spaceβ the driver was unable to map the device registers into the host address space. this should not happen.wpi%d: can't map interruptβ the driver was unable to allocate an IRQ for the device interrupt. this should not happen.wpi%d: can't establish interrupt, error %dβ the driver was unable to install the device interrupt handler. this should not happen.wpi%d: %s: bus_dmamap_load failed, error %dβ the driver was unable to map newly allocated mbuf to device visible address space. contents of currently received frame will be lost. this should not happen.
notice how half of these end in "this should not happen"? yeah. that's not a vibe. that's a cry for help. π«Ά
π SEE ALSO π
go read these, they're the friend group:
pci(4), wlan(4), wlan_amrr(4), wlan_ccmp(4), wlan_tkip(4), wlan_wep(4), wlan_xauth(4), wpifw(4), hostapd(8), ifconfig(8), wpa_supplicant(8)
π§ AUTHORS π§
the original wpi driver was written for OpenBSD by Damien Bergamini <damien.bergamini@free.fr>. then Benjamin Close <benjsc@FreeBSD.org> ported wpi to FreeBSD. legends, both of them, we thank them for their service. πΈ
β οΈ CAVEATS β οΈ
Hostap mode is not directly supported by the device β it is implemented through IBSS mode. and as a result? DFS/passive channels are not available in this mode. so if you were hoping for those channels, bestie, they're not coming. π
Powersave may be unstable on some networks β it results in occasional wpi%d: device timeout messages. you can try to disable it to improve device stability. that's a real tip from the actual docs, not me making things up. π
so yeah. that's wpi(4). she's old, she's from the Intel 3945ABG era, she needs her firmware module, and she will absolutely tell you "this should not happen" while it is, in fact, happening. but we love her. π₯Ή
this page came from the Debian build of the manual, dated January 31, 2016, filed under WPI(4) in section 4. bye bestie, go configure your interface. π β¨π¦
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 2004-2007 Damien Bergamini <damien.bergamini@free.fr>. All rights reserved
- Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms