WPI(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1

πŸ’– WPI(4) πŸ’–

okay bestie, so this is the wpi manual page β€” like, the kernel interfaces manual one, and honestly? it's giving "vintage Intel wifi icon" ✨. let me walk you through it, no cap.


🌸 NAME 🌸

wpi β€” the Intel PRO/Wireless 3945ABG IEEE 802.11a/b/g network driver. yes, that's the whole name, it's a whole mouthful, we love her anyway 🫢


✨ SYNOPSIS ✨

so to get this driver baked into your kernel, you literally drop these lines into your kernel configuration file:

device wpi
device wpifw
device pci
device wlan
device wlan_amrr
device firmware

or!! alternatively (and ngl this is the slay option), you can load it as a module at boot time by putting this line in loader.conf(5):

if_wpi_load="YES"

πŸ’… DESCRIPTION πŸ’…

The wpi driver supports running the Intel PRO/Wireless 3945ABG network adapter in station, adhoc, adhoc-demo, hostap, and monitor mode operation. okay that's a lot of modes, she's versatile πŸ’β€β™€οΈ

This driver requires the wpifw firmware module, and you can configure it at runtime with ifconfig(8) or at boot in rc.conf(5). and here's the catch, bestie: only one virtual interface may be configured at any time. one. that's it. don't get greedy πŸ™ˆ

The wpi driver can be configured 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. and like, it is strongly recommended that WEP not be used as the sole mechanism to secure wireless communication, due to serious weaknesses in it β€” fr fr, WEP is not it, do not trust her 😭

The wpi driver offloads both encryption and decryption of data frames to the hardware for the CCMP cipher. iconic behaviour, honestly πŸ‘‘


πŸŽ€ HARDWARE πŸŽ€

The wpi driver provides support for the Intel PRO/Wireless 3945ABG Mini PCIe network adapter. that's the one. that's the card. πŸ’³βœ¨


πŸ¦‹ FILES πŸ¦‹

  • /usr/share/doc/legal/intel_wpi.LICENSE β€” wpi firmware license (yes you should probably read it, it's the legal bit πŸ“œ)

🌈 EXAMPLES 🌈

okay these are the actual practical ones, screenshot these honestly πŸ“Έ

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

(again, WEP is a vibe crime, but the syntax is the syntax πŸ€·β€β™€οΈ)

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 🩺

these are the messages she'll hit you with, and what they mean β€” study up bestie πŸ“š

  • wpi%d: could not load firmware image '%s' β€” The driver failed to load the firmware image using the firmware(9) subsystem. Verify the wpifw firmware module is installed. (like, did you actually install the firmware? did you? πŸ‘€)
  • 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. 😭 she's having a moment, just let her reset.
  • 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 switch, babe πŸ”‡)
  • 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. πŸ«₯

πŸ‘€ SEE ALSO πŸ‘€

the whole friend group, honestly:

pci(4), wlan(4), wlan_amrr(4), wlan_ccmp(4), wlan_tkip(4), wlan_wep(4), wlan_xauth(4), networking(7), hostapd(8), ifconfig(8), wpa_supplicant(8)


πŸ’œ AUTHORS πŸ’œ

The original wpi driver was written for OpenBSD by Damien Bergamini <damien.bergamini@free.fr>. Benjamin Close <benjsc@FreeBSD.org> ported wpi to FreeBSD. legends, both of them 🫢✨


⚠️ CAVEATS ⚠️

Hostap mode is not directly supported by the device β€” it is implemented through IBSS mode (as a result, DFS/passive channels are not available in this mode). so like, it works, but it's cosplaying as IBSS the whole time 🎭
Powersave may be unstable on some networks β€” results in occasional 'wpi%d: device timeout' messages. you can try to disable it to improve device stability. worth a shot ngl πŸ“

and that's the whole page!! source/version is Debian, dated October 17, 2024 β€” that's the footer, bestie, we made it to the end πŸ’–βœ¨πŸŽ€ go forth and wifi responsibly πŸ’…

πŸ“¦ where this page comes from
  • freebsd 14.5: base 14.5
  • freebsd 15.1: base 15.1
  • πŸ“œ the page's license: BSD-2-Clause
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms