=== Wifibox: Use Linux to Drive your Wireless Card on FreeBSD

Links: +
link:https://github.com/pgj/freebsd-wifibox[Project GitHub Page] URL: link:https://github.com/pgj/freebsd-wifibox[] +
link:https://cgit.freebsd.org/ports/tree/net/wifibox[net/wifibox port] URL: link:https://cgit.freebsd.org/ports/tree/net/wifibox[]

Contact: PÁLI Gábor János <pali.gabor@gmail.com>

Wifibox is an experimental project for exploring the ways of deploying a virtualized Linux guest to drive wireless networking cards on the FreeBSD host system.
There have been guides to describe how to set this up manually, and Wifibox aims to implement those ideas as a single easy-to-use software package.

* It uses man:bhyve[8] to run the embedded Linux system.
This helps to achieve low resource footprint.
It requires an x64 CPU with I/O MMU (AMD-Vi, Intel VT-d), ~150 MB physical memory, and some disk space available for the guest virtual disk image, which can be even ~30 MB only in certain cases.
It works with FreeBSD 12 and later, some cards may require FreeBSD 13 though.
* The guest is constructed using link:https://alpinelinux.org/[Alpine Linux], a security-oriented, lightweight distribution based on link:https://www.musl-libc.org/[musl libc] and link:https://busybox.net/[BusyBox], with some custom extensions and patches imported from link:https://archlinux.org/[Arch Linux] most notably.
It is shipped with a number of diagnostic tools for better management of the hardware in use.
The recent version features Linux 6.1, but Linux 6.5 is also available as an alternative.
* Configuration files are shared with the host system.
The guest uses man:wpa_supplicant[8] or man:hostapd[8] (depending on the configuration) so it is possible to import the host's man:wpa_supplicant.conf[5] or man:hostapd.conf[5] file without any changes.
* When configured, man:wpa_supplicant[8] and man:hostapd[8] control sockets could be exposed by the guest, which enables use of related utilities directly from the host, such as man:wpa_cli[8] or man:wpa_gui[8] from the package:net/wpa_supplicant_gui[] package, or man:hostapd_cli[8].
* Everything is shipped in a single package that can be easily installed and removed.
This comes with an man:rc[8] system service that automatically launches the guest on boot and stops it on shutdown.
* It can be configured to forward IPv6 traffic, which is currently an experimental option but turned on by default.

Wifibox has been mainly tested with Intel chipsets, and it has shown great performance and stability.
Therefore, it might serve as an interim solution whilst FreeBSD matures its support for these chipsets.

It was confirmed that Wifibox works with Atheros, Realtek, and Mediatek chipsets too, and feedback is more than welcome about others.
Broadcom chips (that are often found in MacBook Pros) can also work, but there are known stability issues.
