Alphabetical-ish lookup for jargon used across the site. Each entry includes a short definition and a pointer to where it gets the most attention. For chip part numbers and pin assignments, see Hardware instead.
A
A2DP — Advanced Audio Distribution Profile. Bluetooth profile for streaming stereo audio from a phone to headphones or speakers. Built on top of L2CAP and AVDTP. See essay 12.
ACL — Asynchronous Connection-Less. The BR/EDR Bluetooth data channel; carries L2CAP packets between paired devices. Distinct from SCO, which carries voice.
AES-CCM — Advanced Encryption Standard in Counter-with-CBC-MAC mode. The link encryption used when Bluetooth Secure Connections is enabled. Replaces the legacy E0 stream cipher. See essay 11.
AVDTP — Audio/Video Distribution Transport Protocol. The signaling layer A2DP uses to negotiate codec, sample rate, and streaming endpoints over L2CAP. See essay 12.
B
BCDC — Broadcom Common Driver Component. The control protocol brcmfmac uses to talk to the BCM43xx firmware after it’s loaded. Carries IOCTLs and event notifications over the SDIO mailbox. The firmware loads but BCDC currently times out — see project status.
BCM4345 — Broadcom Bluetooth controller in the AzureWave AP6255
combo module. The PinePhone Pro uses the C5 stepping (BCM4345C5).
UART HCI interface, separate from the BCM43455 WiFi side. See
essay 9 onward.
BCM43455 — Broadcom WiFi MAC/PHY in the AP6255 combo module.
SDIO interface. Driver work in progress as bwfm.
BD_ADDR — Bluetooth Device Address. 48-bit MAC-like identifier unique per BT controller; the BCM4345C5 reads its from a non-volatile config block loaded with the firmware patchram.
brcmfmac — Broadcom FullMAC WiFi driver. Linux upstream; in-progress FreeBSD port targets the BCM43455 SDIO chip on the PinePhone Pro and BCM4350 PCIe on other boards.
C
CDC ECM — Communications Device Class — Ethernet Control Model.
The USB device-class spec for emulating an Ethernet adapter. The
PinePhone Pro acts as a CDC ECM gadget over its USB-C port; the host
sees it as ue0. See essay 4.
CRU — Clock and Reset Unit. The Rockchip silicon block that generates and gates every clock on the SoC. Hacking the CRU to skip UART reinit during display bring-up is why kernel boot messages don’t appear on serial — see essay 7.
D
DPHY — Display PHY. The MIPI physical layer underneath DSI; turns parallel pixel data into the differential lane signaling the panel expects.
DRM — Direct Rendering Manager. Linux’s kernel-side graphics
framework; FreeBSD ports it via drm-subtree. Provides KMS, GEM
buffer objects, and the substrate panfrost plugs into.
DSI — Display Serial Interface. MIPI’s standard for connecting display panels over a few high-speed differential lanes. The PinePhone Pro and PineTab2 panels both attach via DSI; the Synopsys DW-MIPI-DSI bridge translates from DRM to DSI signaling.
DTS / DTSO / DTBO — Device Tree Source / Source Overlay / Blob
Overlay. .dts is the human-readable hardware description; .dtso
is an overlay fragment that patches the base tree at boot;
.dtbo is the compiled binary form of an overlay. See
Writing a device-tree overlay.
DWC3 — Synopsys DesignWare USB 3.0 controller. The PinePhone Pro uses one in gadget (peripheral) mode for USB-Ethernet. Re-implementing the gadget side from scratch is the subject of essay 5.
E
EFI framebuffer — A linear framebuffer the EFI firmware (U-Boot
in our case) sets up before handoff to the kernel. FreeBSD’s efifb
driver consumes it directly. We rely on it for boot-time display
because we don’t have a real DRM/KMS stack on the path until late.
EIR — Extended Inquiry Response. Optional payload appended to inquiry results so a discoverable device can advertise its name and service classes without a full connection.
F
FDT — Flattened Device Tree. The runtime binary form (.dtb) of
a .dts. FreeBSD’s simplebus enumerates devices from FDT nodes.
See also OFW.
G
GIC — Generic Interrupt Controller. The ARM architectural interrupt controller. The RK3399 uses GICv3. See INTRNG for the FreeBSD framework that talks to it.
H
HCI — Host Controller Interface. The protocol between the host CPU and the Bluetooth radio chip. On the PinePhone Pro it runs over UART (H4 framing); on USB BT dongles it runs over USB. See essay 9.
hcsecd — userspace daemon (in usr.sbin/bluetooth/hcsecd) that
handles HCI security events: PIN requests, link-key replies, IO
capability negotiation. We’ve patched it for SSP and SC support —
see essay 11.
I
INTRNG — Interrupt next generation. FreeBSD’s hierarchical
interrupt framework, replacing the legacy flat IRQ table. PIC
(Programmable Interrupt Controller) drivers like rk_gpio plug in via
five required methods — see essay 6.
K
KMS — Kernel Mode Setting. The DRM subsystem that owns mode-set
operations (resolution, refresh rate, output routing). On FreeBSD the
KMS path is provided by drm-subtree; we rely on it for the
panfrost/Mali GPU stack.
L
L2CAP — Logical Link Control and Adaptation Protocol. The
Bluetooth transport above ACL; multiplexes channels for different
profiles (RFCOMM, AVDTP, BNEP, etc.). FreeBSD implements it as the
ng_l2cap netgraph node.
LMP — Link Manager Protocol. The chip-to-chip protocol that controllers speak over the air to negotiate link state. Below HCI; not directly visible to host software.
LRCK — Left/Right Clock (a.k.a. word select). The I²S audio clock that selects which channel a sample belongs to; runs at the sample rate (e.g. 48 kHz). See essay 13.
M
mclk — Master clock. The high-frequency clock fed to an audio codec from which it derives BCLK and LRCK. Typically 256× or 512× the sample rate.
MIPI — Mobile Industry Processor Interface alliance. Standardizes DSI (display) and CSI (camera) interfaces for mobile SoCs.
N
netgraph — FreeBSD’s runtime-composable network protocol stack.
Bluetooth is implemented as netgraph nodes (ng_h4frame, ng_hci,
ng_l2cap, etc.) wired together at startup.
ng_h4frame — netgraph node that frames the HCI H4 byte stream from the UART into HCI packets (and back). The TX tickler workaround for the BCM4345C5 trailing-byte stall lives here — see essay 9.
ng_hci — netgraph node implementing HCI command/event processing.
Sits above ng_h4frame and below ng_l2cap. We’ve patched it
extensively for SSP and SC support.
O
OFW — Open Firmware. Historical name retained in FreeBSD for the
FDT-based device-enumeration APIs (ofw_bus_*, OF_*). All of our
DT-aware drivers use OFW interfaces.
P
panfrost — Open-source kernel + Mesa driver for ARM Mali Midgard
and Bifrost GPUs. The PinePhone Pro’s Mali T860 is Midgard; panfrost
provides GLES 3.1 in the FreeBSD drm-subtree. The PineTab2’s
Mali-G52 is Bifrost/Valhall and needs the newer panthor driver
instead. See essay 8.
patchram — Broadcom’s name for the firmware patch the host loads
into the BT controller’s RAM at boot, via HCI vendor-specific
commands. The BCM4345C5.hcd file we ship is a patchram. See
essay 11.
PIC — Programmable Interrupt Controller. In FreeBSD’s INTRNG,
any controller that can register and fire interrupts (GIC at the
top, rk_gpio further down). Adding PIC methods to a GPIO driver is
what made Goodix interrupts work — see
essay 6.
PMIC — Power Management IC. The chip that owns regulators, RTC, sometimes battery gauging. The PinePhone Pro uses RK818 on i2c0; the PineTab2 uses RK817.
PPP — Point-to-Point Protocol. The dial-up-style serial link
protocol used to carry IP over the EG25-G modem’s data channel
(/dev/cuaU3). Also the affectionate shorthand for “PinePhone Pro”
in commit messages and casual chat.
R
RK3399S — Voltage-locked, lower-binned variant of the Rockchip RK3399 used in the PinePhone Pro. 6 cores (2× A72 + 4× A53), runs ~20% slower than the standard RK3399. See Hardware.
RK3566 — Rockchip 4-core Cortex-A55 SoC used in the PineTab2 and the Quartz64 SBCs. FreeBSD support comes via the Quartz64 platform.
RK818 — Rockchip PMIC paired with the RK3399S on the PinePhone Pro. Custom Honeyguide driver provides regulators, RTC, charger, and fuel gauge.
RT5640 — Realtek (ALC5640) audio codec on the PinePhone Pro, i2c1 addr 0x1c. PCM device registers; vchan-to-hardware buffer path still being debugged. See essay 13.
S
SBC — Sub-Band Codec. The mandatory A2DP audio codec — every A2DP source and sink must support SBC. Lower quality than AAC or LDAC but universal. See essay 12.
SC — Secure Connections. Bluetooth 4.2+ pairing using P-256 ECDH; supersedes legacy SSP key generation while keeping the same UI flows. Triggers AES-CCM link encryption.
SCO — Synchronous Connection-Oriented. The BR/EDR voice channel (distinct from ACL data). Used for hands-free audio profiles.
SDIO — Secure Digital I/O. SD-card-style interface used for WiFi/BT modules; the AP6255 attaches via SDIO. FreeBSD SDIO support is limited compared to Linux — the gating dependency for brcmfmac.
simplebus — FreeBSD bus driver that enumerates device_ts from
FDT nodes at the root of the tree (or under explicit simple-bus
parents).
SoC — System on Chip. RK3399S, RK3566.
SSP — Secure Simple Pairing. Bluetooth 2.1+ pairing using public- key cryptography. Replaces legacy PIN-based pairing. See essay 11.
T
TRB — Transfer Request Block. DWC3’s queue entry format for USB transfers; the gadget driver builds rings of TRBs for the controller to consume. See essay 5.
U
U-Boot — Universal Boot Loader. The bootloader between Rockchip’s ROM/SPL and the kernel. We use Megi’s 2024.04 build because it sets up the EFI framebuffer FreeBSD inherits. Lives in raw sectors on the SD card (see Porting research).
UART — Universal Asynchronous Receiver/Transmitter. Plain-old serial. We use uart0 for the BT chip and uart2 / headphone-jack pin for console.
USB-C — USB Type-C connector. The phone’s power, data, and (in gadget mode) Ethernet path. CC pins are managed by FUSB302 over I²C; DWC3 owns the USB endpoint.
V
vchan — Virtual channel. FreeBSD’s PCM mid-layer that converts between application format and hardware format, mixes streams, and hands buffers to the lower-level driver. Where the audio zero-buffer pipeline issue currently lives — see essay 13.
virtual_oss — Userspace OSS-emulation daemon (/usr.sbin/virtual_oss)
that exposes mixed/synthesized audio devices on top of /dev/dsp*.
We’ve patched it for our audio routing experiments.
VOP — Visual Output Processor. The Rockchip display controller; RK3399 has VOP-Big and VOP-Little. The PinePhone Pro panel hangs off VOP-Lit at 720×1440. See essay 7.