← Blog
0.6.0 · drivers

Driver Fleet: WiFi, VGA Text, SRDX Transport, BT USB

June 22, 2026 · sigil-drivers · Sigil-Docs
drivers wifi display bluetooth srdx 0.6.0

sigil-drivers ships 6 production drivers: BCM43438/CYW43455 onboard WiFi (SDIO), VGA 80×25 color text console, bochs DISPI framebuffer, SRDX frame decoder (viewer-side), SRDX input reverse channel (viewer→host HID), and BT USB self-test. All on the CLS_NET / CLS_DISPLAY / CLS_INPUT seams with cap gates. (sigil-drivers fc2f97f, 0ce8313, 1960672, 71ee428, 76bfa36, def3347)

VGA text console (vt100/vga_text driver) — 80×25 color text PASS x86
VGA text console (vt100/vga_text driver) — 80×25 color text PASS x86

BCM43438/CYW43455 WiFi (bcm43xx.sg, fc2f97f)

SDIO-attached Broadcom/Cypress WiFi for Pi 3B/Zero-W (BCM43438) and Pi 3B+/4/5 (CYW43455). The driver speaks the BCDC ioctl protocol: a 16-byte header over sdio_cmd53 on F2.

CommandUnderlying ioctl
CTL_WIFI_SCANWLC_SCAN + WLC_GET_SCANRESULTS
ASSOCIATEWLC_JOIN
SET_KEYWLC_SET_KEY
GET_SIGNALWLC_GET_RSSI
GET_STATEWLC_GET_VAR

Data path: OP_READ / OP_WRITE transfers 802.3 frames on SDIO F2. The bcm_op() entry point sits on the CLS_NET seam with cap gates. x86-runverify PASS.


VGA 80×25 Color Text (vga_text.sg, 0ce8313)

Direct MMIO at 0xB8000 — no PCI enumeration required. Text mode 2-byte cells (char + attribute byte). Full API:

Color encoding: attr = fg + bg × 16. Hardware cursor is driven via VGA CRTC registers 14/15 (I/O ports 0x3D4/0x3D5). State block at VT_STATE()=0x730000. x86-runverify PASS.


Bochs DISPI Framebuffer (vga_bochs.sg, 1960672)

PCI probe by VID=0x1234 / DID=0x1111. BAR0 is the 64-bit VRAM aperture; BAR2 MMIO holds the DISPI register file at offset 0x500 (QEMU 11.0.1 layout). Resolution setup:

set_res(w, h, bpp):
  DISPI_ENABLE = 0          // disable
  DISPI_XRES = w
  DISPI_YRES = h
  DISPI_BPP  = bpp
  DISPI_ENABLE = 3          // LFB + enable

Surface operations: vb_fill(), vb_put_pixel(), vb_clear(). x86-runverify PASS with 1024×768 screendump.


SRDX Transport Drivers

SRDX delta decoder — 3-run packet applied, pixel values verified x86
SRDX delta decoder — 3-run packet applied, pixel values verified x86

srdx_encode.sg — viewer-side frame decoder (71ee428)

Receives SRDX delta packets from the host via Cap<NetConn> and applies pixel runs to the local framebuffer. Packet format: 8-byte header (magic=SRDX + width/height as LE16) followed by N × 8-byte run records (4B FB offset + 4B BGRA pixel value). x86-runverify PASS: 3-run packet applied, bad-magic input returns -1.

srdx_input.sg — reverse channel (76bfa36)

Viewer→host HID injection over Cap<Input>. 4-byte event records with sign-extension for relative deltas:

Events inject into HID_ROUTER_STATE. 8-event sequence PASS.


BT USB (btusb_test.sg, def3347)

HCI command encoding via bt_pack_cmd (LE opcode + plen byte), bt_probe discovery, and standard HCI opcodes: HCI_RESET=3075, HCI_READ_BDADDR=4105. x86-runverify PASS. Real-hardware proof via raspi3b parallel track.


Fleet summary

DriverFileSeamCommitStatus
BCM43438/CYW43455 WiFibcm43xx.sgCLS_NETfc2f97fPASS
VGA 80×25 text consolevga_text.sgCLS_DISPLAY0ce8313PASS
Bochs DISPI framebuffervga_bochs.sgCLS_DISPLAY1960672PASS
SRDX frame decodersrdx_encode.sgCLS_NET71ee428PASS
SRDX input reverse channelsrdx_input.sgCLS_INPUT76bfa36PASS
BT USB self-testbtusb_test.sgCLS_NETdef3347PASS