NextBSD · Driver delivery · naming manifest
The curated KMOD → kext mapping that drives buildextensions / buildgraphics. Naming follows build origin: base in-tree drivers take their FreeBSD name (if_iwlwifi.kext), out-of-tree ports take custom names (IntelGraphics.kext). Grounded against FreeBSD main (what the monorepo seeds from), with each driver's prior catalog name shown so you can see what changed.
Naming style tracks build origin, so a custom name only costs you where you're already paying for a custom build recipe.
| Origin | Built by | Naming | Count |
|---|---|---|---|
Base / in-tree (sys/modules) | buildextensions | FreeBSD-name <KMOD>.kext, id org.nextbsd.<cat>.<kmod> (strip if_) — mechanical, auto-derived | ~30 fw kexts + ~250 plain klds |
| Out-of-tree (drm-kmod, nvidia ports) | buildgraphics/vendor | Custom curated hand-assigned in this manifest | 12 names |
Only 12 names are hand-curated (6 GPU/DRM + 6 nvidia branches). Everything else falls out of the KMOD mechanically. Zero driver deltas between main and releng/15.1 for this set, so the manifest is stable across the migration.
KMOD + .kext (if_iwlwifi → if_iwlwifi.kext). Bundle identifier = org.nextbsd.<category>.<kmod-without-if_> (org.nextbsd.driver.iwlwifi). CFBundleExecutable = the exact KMOD (if_iwlwifi) — always, both schemes, non-negotiable. Category: driver (hardware), firmware (blob kexts), compat (LinuxKPI), kpi (shared cores). No human judgment needed — a script can emit every base row from a sys/modules walk.All in-tree sys/modules drivers. The "prior catalog name" column is what the June kld-to-kext catalog proposed; the new name is the decided mechanical one. Firmware column = the base firmware module (bundled into the kext's Resources/, or a separate org.nextbsd.firmware.* kext per open decision D4).
KMOD (main) | Prior catalog name | New kext (FreeBSD-name) | Bundle id | Firmware module |
|---|---|---|---|---|
if_iwm | IntelIWM | if_iwm.kext | org.nextbsd.driver.iwm | contrib *.fw (no iwmfw module) |
if_iwn | IntelIWN | if_iwn.kext | org.nextbsd.driver.iwn | iwnfw (15 images) |
if_wpi | IntelWPI | if_wpi.kext | org.nextbsd.driver.wpi | wpifw |
if_ipw | IntelIPW | if_ipw.kext | org.nextbsd.driver.ipw | ipwfw (4) · license-ack |
if_iwi | IntelIWI | if_iwi.kext | org.nextbsd.driver.iwi | iwifw (4) · license-ack |
rtwn (core) | Rtwn | rtwn.kext | org.nextbsd.driver.rtwn | rtwnfw (11) |
if_rtwn_pci | RtwnPci | if_rtwn_pci.kext | org.nextbsd.driver.rtwn_pci | — |
if_rtwn_usb | RtwnUsb | if_rtwn_usb.kext | org.nextbsd.driver.rtwn_usb | — |
if_otus | Otus | if_otus.kext | org.nextbsd.driver.otus | otusfw (3) |
if_ral | Ral | if_ral.kext | org.nextbsd.driver.ral | ralfw (6) |
if_mwl | Mwl | if_mwl.kext | org.nextbsd.driver.mwl | mwlfw |
if_run | — (missing) | if_run.kext | org.nextbsd.driver.run | runfw |
if_rsu | — (missing) | if_rsu.kext | org.nextbsd.driver.rsu | rsufw (3) |
if_uath | — (missing) | if_uath.kext | org.nextbsd.driver.uath | contrib (no fw module) |
fwget)KMOD (main) | Prior catalog name | New kext (FreeBSD-name) | Bundle id | Firmware |
|---|---|---|---|---|
if_iwlwifi | IntelIwlwifi | if_iwlwifi.kext | org.nextbsd.driver.iwlwifi | port wifi-firmware-iwlwifi-kmod → bake in |
if_iwx | IntelIWX | if_iwx.kext | org.nextbsd.driver.iwx | out-of-base |
if_rtw88 | Rtw88 | if_rtw88.kext | org.nextbsd.driver.rtw88 | port wifi-firmware-rtw88-kmod |
if_rtw89 | Rtw89 | if_rtw89.kext | org.nextbsd.driver.rtw89 | port wifi-firmware-rtw89-kmod |
if_ath10k | Ath10k | if_ath10k.kext | org.nextbsd.driver.ath10k | port wifi-firmware-ath10k-kmod |
if_ath11k | Ath11k | if_ath11k.kext | org.nextbsd.driver.ath11k | port wifi-firmware-ath11k-kmod |
if_ath12k | Ath12k | if_ath12k.kext | org.nextbsd.driver.ath12k | port wifi-firmware-ath12k-kmod |
athk_common | AthkCommon | athk_common.kext | org.nextbsd.driver.athk_common | — (shared lib) |
mt76_core + if_mt7615/7915/7921/7925/7996 | Mt76 (1 → 6 KMODs) | 6 kexts: mt76_core.kext, if_mt7921.kext, … | org.nextbsd.driver.mt76_core, …mt7921, … | port wifi-firmware-mt76-kmod |
if_malo | Malo | if_malo.kext | org.nextbsd.driver.malo | restricted — no public fw |
if_bwn | BWn | if_bwn.kext | org.nextbsd.driver.bwn | restricted — source-build only |
if_bwi | BWi | if_bwi.kext | org.nextbsd.driver.bwi | restricted — source-build only |
if_upgt | — (missing) | if_upgt.kext | org.nextbsd.driver.upgt | restricted — no public fw |
compat/kpi)KMOD (main) | Prior catalog name | New kext | Bundle id |
|---|---|---|---|
linuxkpi | LinuxKpi | linuxkpi.kext | org.nextbsd.compat.linuxkpi |
linuxkpi_wlan | LinuxKpiWlan | linuxkpi_wlan.kext | org.nextbsd.compat.linuxkpi_wlan |
linuxkpi_hdmi | LinuxKpiHdmi | linuxkpi_hdmi.kext | org.nextbsd.compat.linuxkpi_hdmi |
linuxkpi_video | LinuxKpiVideo | linuxkpi_video.kext | org.nextbsd.compat.linuxkpi_video |
backlight | Backlight | backlight.kext | org.nextbsd.kpi.backlight |
KMOD (main) | Prior catalog name | New kext (FreeBSD-name) | Bundle id | Firmware module(s) |
|---|---|---|---|---|
if_ice | Ice | if_ice.kext | org.nextbsd.driver.ice | ice_ddp |
if_cxgbe | CXGBE | if_cxgbe.kext | org.nextbsd.driver.cxgbe | t4fw_cfg/t5fw_cfg/t6fw_cfg/t7fw_cfg |
if_cxgb | CXGB | if_cxgb.kext | org.nextbsd.driver.cxgb | cxgb_t3fw |
if_mxge | Mxge | if_mxge.kext | org.nextbsd.driver.mxge | mxge_{eth,ethp,rss_eth,rss_ethp}_z8e |
isp | Isp | isp.kext | org.nextbsd.driver.isp | ispfw (isp_2400…isp_2800) |
qat | Qat | qat.kext | org.nextbsd.driver.qat | qat_{200xx,4xxx,c3xxx,c4xxx,c62x,dh895xcc}_fw |
qat_c2xxx | QatC2xxx | qat_c2xxx.kext | org.nextbsd.driver.qat_c2xxx | qat_c2xxxfw |
GPU KMS drivers + shared DRM cores from the graphics/drm-kmod port, and the nvidia branches from x11/nvidia-driver. These already need bespoke build recipes (fetch/patch/branch), so custom names cost nothing extra. Built by buildgraphics/vendor, not buildextensions.
| KMOD | Port | Prior name | New kext (custom) | Bundle id | Exec |
|---|---|---|---|---|---|
i915kms | drm-kmod | IntelGraphics | IntelGraphics.kext | org.nextbsd.driver.IntelGraphics | i915kms |
amdgpu | drm-kmod | AMDGraphics | AMDGraphics.kext | org.nextbsd.driver.AMDGraphics | amdgpu |
radeonkms | drm-kmod | RadeonGraphics | RadeonGraphics.kext | org.nextbsd.driver.RadeonGraphics | radeonkms |
drm | drm-kmod | IOGraphics | IOGraphics.kext | org.nextbsd.kpi.IOGraphics | drm |
ttm | drm-kmod | TTM | TTM.kext | org.nextbsd.kpi.TTM | ttm |
dmabuf | drm-kmod | DMABuf | DMABuf.kext | org.nextbsd.kpi.DMABuf | dmabuf |
nvidia (+-modeset,-drm) | nvidia-driver (per branch) | NVIDIA → per-branch | NVIDIAGraphics595.kext | org.nextbsd.driver.NVIDIAGraphics595 | nvidia |
NVIDIAGraphics580.kext | …NVIDIAGraphics580 | nvidia | |||
NVIDIAGraphics470.kext | …NVIDIAGraphics470 | nvidia | |||
NVIDIAGraphics390.kext | …NVIDIAGraphics390 | nvidia | |||
NVIDIAGraphics340.kext | …NVIDIAGraphics340 | nvidia | |||
NVIDIAGraphics304.kext | …NVIDIAGraphics304 | nvidia |
The prior catalog/naming-plan (June) proposed a single NVIDIA / org.nextbsd.driver.NVIDIA; the newer nvidia-porting-plan (July) supersedes it with per-branch bundles — used here, since coexistence needs a unique bundle name per branch. Every branch's CFBundleExecutable is literally nvidia (the EEXIST wall) — only the bundle name/id disambiguates on disk; one loads. Multi-.ko packaging (nvidia+nvidia-modeset+nvidia-drm in one bundle) is still an open ko2kext.sh gap.
main grounding forcedif_run, if_rsu, if_uath, if_upgt were never in the catalog (they build under sys/modules/usb/, not top-level) — now included with org.nextbsd.driver.* ids.mt76 is 6 KMODs, not 1: mt76_core + if_mt7615/7915/7921/7925/7996. If the manifest is 1:1 with .ko, it expands to six kexts (or one umbrella + plugins).iwmfw does not exist as a base module in main — if_iwm blobs live in sys/contrib/dev/iwm/*.fw and load via firmware(9). (The catalog already had no IWMFirmware row — good.)NVIDIA → per-branch NVIDIAGraphics<NNN> (§2)._fw: qat_4xxx_fw, qat_c3xxx_fw, … (dir names lack it); qat_c2xxxfw has no underscore.t7fw_cfg exists (Chelsio T7, sys/modules/cxgbe/t7_firmware) — include it.main removed hifn and le (drop if listed); main added apple_bce, aq, rge, thunderbolt, ntsync, etc. (none need firmware).firmware)Base firmware blobs. Per open decision D4, each is either bundled into its driver's kext (Contents/Resources/firmware/ — preferred for the self-contained base-owned model) or shipped as its own org.nextbsd.firmware.* kext the driver depends on. Under FreeBSD-name rules the separate form is mechanical too:
iwnfw.kext · wpifw.kext · ipwfw.kext · iwifw.kext · rtwnfw.kext · otusfw.kext · ralfw.kext · runfw.kext · rsufw.kext · mwlfw.kext · ice_ddp.kext · t4fw_cfg.kext…t7fw_cfg.kext · cxgb_t3fw.kext · mxge_*_z8e.kext · ispfw.kext · qatfw.kext · qat_c2xxxfw.kext — all org.nextbsd.firmware.<module>.
IntelWiFi.kext wrapping iwlwifi — that's a tiny curated-override list layered on the mechanical default, not a change to the rule:
| KMOD | Mechanical default | Optional override |
|---|---|---|
if_iwlwifi | if_iwlwifi.kext | IntelWiFi.kext (already shipped) |
IntelWiFi (since the PoC already uses it) — your call.KEXTS table consumed by buildextensions (base, auto-generated rows) and buildgraphics (the 12 custom rows). Each entry supplies: KMOD, bundle name, bundle id, category, firmware, and dep list. The IOKitPersonalities match table inside each kext is not here — it's generated separately by gen-*-personalities.sh from the driver's own PCI-ID table. Static manifest = names + wiring; generated = match data.