Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2023Q3 status report for Wifibox #263

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions website/content/en/status/report-2023-07-2023-09/wifibox.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
== Wifibox: Use Linux to drive your wireless card on FreeBSD

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

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 ``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 https://alpinelinux.org/[Alpine
Linux], a security-oriented, lightweight distribution based on
https://www.musl-libc.org/[musl libc] and
https://busybox.net/[BusyBox], with some custom extensions and
patches imported from 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
``wpa_supplicant(8)`` or ``hostapd(8)`` (depending on the
configuration) so it is possible to import the host's
``wpa_supplicant.conf(5)`` or ``hostapd.conf(5)`` file without any
changes.

- When configured, ``wpa_supplicant(8)`` and ``hostapd(8)`` control
sockets could be exposed by the guest, which enables use of related
utilities directly from the host, such as ``wpa_cli(8)`` or
``wpa_gui(8)`` from the ``net/wpa_supplicant_gui`` package, or
``hostapd_cli(8)``.

- Everything is shipped in a single package that can be easily
installed and removed. This comes with an ``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 until the Intel Wireless support becomes mature
enough. 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.