OpenBSD Handbook

    Theme
    • Part I. Install & Configure
      • Introduction to OpenBSD
      • Installing OpenBSD
      • The X Window System
      • Networking on OpenBSD
      • System Configuration
      • OpenBSD Basics
      • Managing Software: Packages and Ports
    • Part II. Daily Operations
      • OpenBSD Desktop Environments
      • Multimedia
      • Printing
      • Linux Compatibility
      • Windows Compatibility
      • Games
    • Part III. System Administration
      • Virtualization
      • Storage and File Systems
      • Updating and Upgrading
      • Localization
      • The OpenBSD Boot Process
      • Security
    • Part IV. Networking & Daemons
      • Services
        • Database
          • MariaDB
          • PostgreSQL
          • Redis
          • memcached
        • Directory
          • YP (NIS)
          • LDAP
        • File
          • NFS
          • Samba
        • FTP Services
          • ftpd
          • ProFTPD
          • vsftpd
          • Pure-FTPd
          • TFTP
        • Mail
          • OpenSMTPD Mail Server
          • Dovecot IMAP and POP3 Server
          • Postfix
          • Exim
          • Rspamd
        • Name
          • Unbound DNS Resolver
          • NSD Authoritative DNS Server
          • BIND DNS Server
        • Networking
          • OpenBGPD
          • rad
          • DHCP on OpenBSD
          • slaacd
        • Web
          • Apache HTTP Server
          • nginx Web Server
          • OpenBSD httpd Web Server
          • relayd Reverse Proxy
        • Logging
          • syslogd
        • Monitoring
          • SNMP
        • Remote Access
          • Audit OpenSSH
          • OpenSSH Server
        • File Synchronization
          • rsync
        • Messaging
          • RabbitMQ Message Broker
        • Time
          • NTP Time Synchronization
        • Load Balancing
          • Build Redundant Load-Balanced Gateways
          • Load Balance Services with NAT or DSR
          • Build an HA HTTPS Load Balancer
      • PF
        • pfctl cheat sheet
        • PF Anchors
        • PF Filter Rules
        • PF Forwarding
        • PF Lists and Macros
        • PF Load Balancing
        • PF Logging
        • PF NAT
        • PF Options
        • PF Policies
        • PF Shortcuts
        • PF Tables
      • Advanced Networking
        • High Availability and State Replication
        • Multi-WAN and Policy-Based Routing
        • VPN and Cryptographic Tunneling
        • Classic and Lightweight Tunnels
        • IPv6 at Scale
        • QoS and Traffic Shaping
        • MPLS and Label Distribution
        • Network Services at Scale
        • Virtualization and Host Networking
        • Large-Scale L2 and L3 Design
        • Telemetry, Logging, and Flow Export
        • Hardening and Operational Safety
        • Reference Architectures
        • Troubleshooting Playbooks
      • Serial Communication
    • Part V. Miscellaneous
      • Virtualization Cheat Sheet
      • OpenBSD Cheatsheet
      • How-to Guides
        • Installation and First Boot
          • Complete the First 30 Minutes After Installation
          • Check Hardware Compatibility Before Installing
          • Bootstrap Wi-Fi Firmware Without Ethernet
          • Run OpenBSD as a Virtual Machine Guest
          • Install OpenBSD on a VPS or Cloud Server
          • Install OpenBSD with Full-Disk Encryption
          • Dual-Boot OpenBSD on a UEFI System
          • Automate OpenBSD Installation with Autoinstall and PXE
        • Desktops and Laptops
          • Set Up OpenBSD as a Laptop or Workstation
          • Configure Laptop Power Management
          • Troubleshoot Web Browsers on OpenBSD
          • Use Plan 9 Tools on OpenBSD
          • Build a Minimal Desktop with suckless Tools
          • Install Z shell (zsh)
        • Networking and Remote Access
          • Create an Administrator Account with doas and SSH Keys
          • Configure Secure Remote Access with OpenSSH
          • Use FIDO Security Keys with OpenSSH
          • Configure Wi-Fi Roaming and Wired Failover
          • Troubleshoot PF, NAT, and Routing
          • Route Multiple VLANs with PF
          • Configure a Road-Warrior WireGuard VPN
          • Route IPv6 Networks without NAT
          • Test OpenBGPD with Two Providers
          • Unlock an Internal Service with an SSH Key
          • Build a Simple Router and Firewall
        • Servers and Services
          • Set Up WordPress on OpenBSD
          • Build a Mail Server with OpenSMTPD, Dovecot, and Rspamd
        • Security, Maintenance and Recovery
          • Establish a Conservative Security Baseline
          • Recover Access and Reset the Root Password
          • Collect OpenBSD Diagnostic Evidence
          • Troubleshoot Package Installation and Update Failures
          • Schedule Recurring Maintenance
          • Monitor an OpenBSD System
          • Back Up and Restore an OpenBSD System
          • Configure softraid RAID1
          • Recover an OpenBSD System That Does Not Boot
        • Building, Automation and Virtual Machines
          • Manage OpenBSD with Ansible
          • Build Third-Party Software from Ports
          • Build OpenBSD from Source
          • Plan a Docker Workload Migration to OpenBSD
      • OpenBSD for Linux Users
      • OpenBSD for FreeBSD Users
      • OpenBSD for macOS Users
    • OpenBSD FAQ
    • OpenBSD Architectures
      • OpenBSD Package Search
        • Synopsis
        • Identify the Wireless Driver
        • Obtain the Firmware Archive
        • Attach and Mount the Removable Device
        • Install from the Local Directory
        • Configure and Verify Wireless Networking

        Bootstrap Wi-Fi Firmware Without Ethernet

        Synopsis #

        Some wireless devices require firmware that OpenBSD cannot distribute with the installation media. fw_update(8) normally downloads the required signed firmware after installation, but that method first requires a working network connection.

        When no wired connection is available, obtain the exact firmware archive on another computer, copy it to OpenBSD-readable removable media, and install it locally with fw_update. Firmware enables a supported driver; it does not add support for hardware that lacks an OpenBSD driver.

        Identify the Wireless Driver #

        Inspect dmesg(8) and ifconfig(8) :

        dmesg | less
        ifconfig
        

        The interface name normally begins with the driver name and ends with an instance number. For example, iwm0 uses the iwm driver. Confirm the driver’s firmware requirements in its section 4 manual page. A device reported only as not configured may lack a supported driver and cannot be fixed by installing an arbitrary firmware archive.

        Obtain the Firmware Archive #

        On a networked computer, open the official OpenBSD firmware repository and select the directory for the installed OpenBSD release. Download SHA256.sig and the archive matching the driver name, then copy both files to the same directory on a USB storage device.

        Do not extract the archive and do not substitute firmware from a third-party operating-system distribution. fw_update uses the signed checksum list to verify and install the OpenBSD firmware package format.

        Attach and Mount the Removable Device #

        Insert the USB device and inspect the final kernel messages to identify its device name.

        dmesg | tail -20
        

        The following example assumes that the device appears as sd2 and that its first OpenBSD-visible filesystem is sd2i. Device letters depend on the partition table and filesystem. Confirm them with disklabel(8) before mounting anything.

        doas disklabel sd2
        doas mkdir -p /mnt/firmware
        doas mount -t msdos /dev/sd2i /mnt/firmware
        

        For a FAT filesystem that is not represented by an automatic disklabel entry, use the filesystem-specific form documented by mount_msdos(8) . Do not guess the disk number or partition letter.

        Install from the Local Directory #

        Change to the directory containing the downloaded archive and direct fw_update to the local source:

        cd /mnt/firmware
        doas fw_update -p .
        

        If the removable device contains archives for several drivers, fw_update examines the running system and installs the applicable firmware. To restrict the operation to one confirmed driver, specify its name:

        doas fw_update -p . iwm
        

        Replace iwm with the actual driver name. Review any verification error instead of bypassing it.

        Unmount the device after installation.

        cd /
        doas umount /mnt/firmware
        

        Configure and Verify Wireless Networking #

        Create the appropriate hostname.if(5) file for the interface. The following example uses WPA and IPv4 autoconfiguration:

        join example-network wpakey example-passphrase
        inet autoconf
        

        Protect the file because it contains the network key, then apply the interface configuration with netstart(8) :

        doas chmod 600 /etc/hostname.iwm0
        doas sh /etc/netstart iwm0
        

        Replace iwm0 with the detected interface. Confirm association, addressing, routing, and name resolution.

        ifconfig iwm0
        route -n show
        ping -c 3 1.1.1.1
        host openbsd.org
        

        Once the connection works, run fw_update without a local source so that all applicable firmware can be checked against the official repository.

        doas fw_update
        

        Failure after verified firmware installation should be diagnosed as a driver, radio, authentication, addressing, or routing problem. Installing unrelated firmware repeatedly does not resolve those conditions.

        Report a bug
        • Synopsis
        • Identify the Wireless Driver
        • Obtain the Firmware Archive
        • Attach and Mount the Removable Device
        • Install from the Local Directory
        • Configure and Verify Wireless Networking