rtwn(4)

rtwn4

Realtek ieee 802.11n/ac wireless network driver

Usage

options RTWN_DEBUG options RTWN_WITHOUT_UCODE

To compile this driver into the kernel, place the following lines in your kernel configuration file:

device rtwn device rtwnfw device rtwn_usb device rtwn_pci device wlan device firmware

Alternatively, to load the driver as a module at boot time, place following lines in loader.conf(5):

if_rtwn_pci_load="YES"
if_rtwn_usb_load="YES"

Overview

The rtwn driver provides support for 802.11n/ac wireless network PHYs supplied by rtwn_pci(4) and rtwn_usb(4).

The rtwn driver supports station, adhoc, hostap and monitor mode operation. There are no limitations for number of monitor mode virtual interfaces; in addition to any other virtual interface one station interface can be added (Note: RTL8821AU supports two non-monitor mode interfaces at the same time).

All chips have hardware support for WEP, AES-CCM and TKIP encryption.

The rtwn driver can be configured at runtime with ifconfig(8).

Hardware

The rtwn driver supports USB and PCI devices with the following chipsets:

  • Realtek 802.11n wireless 8188e (RTL8188E)

  • Realtek 802.11n wireless 8192c (RTL8192C)

  • Realtek 802.11n wireless 8192e (RTL8192E)

  • Realtek 802.11n wireless 8723b (RTL8723B)

  • Realtek 802.11ac wireless 8812a (RTL8812A)

  • Realtek 802.11ac wireless 8821a (RTL8821A)

For specific devices, see rtwn_pci(4) and rtwn_usb(4).

Files

/usr/share/doc/legal/realtek.LICENSE

rtwn firmware license

The driver (if not compiled with options RTWN_WITHOUT_UCODE) may use following firmware files, which are loaded when an interface is brought up:

/boot/kernel/rtwn-rtl8188eefw.ko
/boot/kernel/rtwn-rtl8188eufw.ko
/boot/kernel/rtwn-rtl8192cfwE_B.ko
/boot/kernel/rtwn-rtl8192cfwE.ko
/boot/kernel/rtwn-rtl8192cfwT.ko
/boot/kernel/rtwn-rtl8192cfwU.ko
/boot/kernel/rtwn-rtl8192eufw.ko
/boot/kernel/rtwn-rtl8723bufw.ko
/boot/kernel/rtwn-rtl8812aufw.ko
/boot/kernel/rtwn-rtl8821aufw.ko

Examples

Join an existing BSS network (i.e., connect to an access point):

ifconfig wlan create wlandev rtwn0 inet 192.0.2.20/24

Join a specific BSS network with network name my_net:

ifconfig wlan create wlandev rtwn0 ssid my_net up

Join a specific BSS network with 64-bit WEP encryption:

ifconfig wlan create wlandev rtwn0 ssid my_net \
    wepmode on wepkey 0x1234567890 weptxkey 1 up

Create an IBSS network with 128-bit WEP encryption on the channel 4:

ifconfig wlan create wlandev rtwn0 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 rtwn0 wlanmode adhoc
ifconfig wlan0 inet 192.0.2.20/24 ssid my_net mode 11b

Create a host-based access point:

ifconfig wlan0 create wlandev rtwn0 wlanmode hostap
ifconfig wlan0 inet 192.0.2.20/24 ssid my_ap

Loader tunables

Tunables can be set at the loader(8) prompt before booting the kernel or stored in loader.conf(5).

dev.rtwn.%d.hwcrypto

This tunable controls how key slots are assigned:

0 - disable h/w crypto support. Features that require access to frame contents (e.g., TCP/UDP/IP Rx checksum validation) will not work;

1 - use h/w crypto support for pairwise keys only;

2 - use h/w crypto support for all keys; may not work for multi-vap configurations.

By default it is set to 1.

dev.rtwn.%d.ratectl

This tunable switches between rate control implementations:

0 - no rate control;

1 - driver sends 'tx complete' reports to net80211; algorithm is controlled via net80211;

2 - firmware-based rate control.

By default it is set to 1; however driver may choose another algorithm in case if it is not implemented

Currently selected algorithm is reported via dev.rtwn.%d.ratectl_selected read-only OID.

dev.rtwn.%d.rx_buf_size

(USB only) Controls size of temporary Rx buffer; smaller buffer size may increase number of interrupts.

Diagnostics

rtwn%d: could not read efuse byte at address 0x%x
rtwn%d: %s: cannot read rom, error %d

There was an error while reading ROM; device attach will be aborted. This should not happen.

rtwn%d: failed loadfirmware of file %s

For some reason, the driver was unable to read the microcode file from the filesystem. The file might be missing or corrupted. The driver will disable firmware-dependent features.

rtwn%d: wrong firmware size (%zu)
rtwn%d: %s: failed to upload firmware %s (error %d)
rtwn%d: timeout waiting for firmware readiness

Firmware upload failed; the file might be corrupted. The driver will disable firmware-dependent features. This should not happen.

rtwn%d: device timeout

A frame dispatched to the hardware for transmission did not complete in time. The driver will reset the hardware. This should not happen.

Releases

25 releases since FreeBSD 11.0-RELEASE; the text changed 13 times.

  1. 11.0
  2. 11.1
  3. 11.2
  4. 11.3
  5. 11.4
  6. 12.0
  7. 12.1
  8. 12.2
  9. 12.3
  10. 12.4
  11. 13.0–13.2
  12. 13.3–14.1
  13. 14.2–15.1
  14. 16.0

History

The urtwn driver first appeared in OpenBSD 4.9 and FreeBSD 10.0; the rtwn driver first appeared in OpenBSD 5.8 and FreeBSD 11.0.

Authors

The rtwn driver was initially written by Stefan Sperling ⟨[email protected]⟩ and ported by Kevin Lo ⟨[email protected]⟩. It was based on the urtwn driver written by Damien Bergamini ⟨[email protected]⟩.

Bugs

The rtwn driver currently does not implement firmware-based rate control. The RTL8723BU seems to depend on some firmware commands for antenna setup. Hence, it does not work without firmware.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.