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)
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.
| Command | Underlying ioctl |
|---|---|
CTL_WIFI_SCAN | WLC_SCAN + WLC_GET_SCANRESULTS |
ASSOCIATE | WLC_JOIN |
SET_KEY | WLC_SET_KEY |
GET_SIGNAL | WLC_GET_RSSI |
GET_STATE | WLC_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:
vt_init,vt_cls— initialization and clearvt_gotoxy,vt_set_attr— cursor positioning and colorvt_putc,vt_puts,vt_putd— character, string, decimal outputvt_scroll,vt_newline— scrolling and line advance
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_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:
KEY_DOWN/KEY_UP— keycode eventsMOUSE_REL— relative motion with signed delta extensionMOUSE_BTN— button state
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
| Driver | File | Seam | Commit | Status |
|---|---|---|---|---|
| BCM43438/CYW43455 WiFi | bcm43xx.sg | CLS_NET | fc2f97f | PASS |
| VGA 80×25 text console | vga_text.sg | CLS_DISPLAY | 0ce8313 | PASS |
| Bochs DISPI framebuffer | vga_bochs.sg | CLS_DISPLAY | 1960672 | PASS |
| SRDX frame decoder | srdx_encode.sg | CLS_NET | 71ee428 | PASS |
| SRDX input reverse channel | srdx_input.sg | CLS_INPUT | 76bfa36 | PASS |
| BT USB self-test | btusb_test.sg | CLS_NET | def3347 | PASS |