SD Signal
A card for a laptop's SD slot, designed to play a plain-text pattern file on five RGB lights with no driver or app.
- Status
- Designed and simulated, unbuilt
- Period
- Oct–Nov 2026
- Discipline
- Hardware
- Reference
- KL-U3




Overview
SD Signal is a small card that sits in a laptop's SD slot and shows five RGB lights on its outer edge. I designed it as a general-purpose indicator: what the lights mean is up to whoever writes the file. The card is meant to mount as ordinary storage. A plain-text file on it sets colours, brightness, timing, easing, roll and repeat. Drop in a new file and the lights should follow it, with no driver and no app. Signal Studio, a Mac menu bar app I built, can also design and preview patterns, and an archived build adds writing them to this card.
In the current revision, E9-B, the computer talks to a real SD storage chip, so it sees a normal card. A microcontroller sits behind three two-line switches. When the computer ends a multi-block write, the storage chip signals busy. In that pause the microcontroller holds the busy signal, takes over the chip's lines, reads the pattern file and hands the lines back. Five side-view RGB LEDs shine through a clear light guide with white diffusing tips to five dots in a thin aluminium faceplate. Everything fits inside the cross-section of a standard SD card. The face is meant to sit flush in the SD slot of 14 and 16 inch MacBook Pro models from 2021 on.
The board is generated and routed by scripts and passes KiCad's own checks. The firmware was tested as the compiled image, run instruction by instruction in an emulator. Around it sit models of the storage chip, the switches, an SD host and the LED driver. The runs covered file saves recorded from macOS's FAT driver, the timing of the hand-over, power cuts while the microcontroller stores a pattern, other FAT formats and random sessions. All passed, one replay only by assuming the laptop sends a lone sector as a multi-block write. Supply current, line loading and part clearances were calculated, and the light path was ray traced. The simulated SD host is generic, and the analog behaviour of the lines while the switches move is not modelled.
Fit is unmeasured: the housing is drawn at three depths, with a measuring cap to find which one sits flush. Colour, brightness and leakage between the dots are estimates. How a real laptop sends and ends its writes, which the hand-over depends on, can only be seen on hardware. My laptop's card reader appears to cut power about three minutes after the last access. Lights that stay on would need something on the computer to read the card every so often. Signal Studio has such a read, but whether it keeps a real reader powered is not known. The flush face also looks sideways, so the lights show from beside the laptop and not from the typing position.
Specifications
- The board is four layers and 0.50 mm thick, 23.9 x 13.8 mm, with 24 parts of 14 kinds on one side.
- KiCad 10.0.6 reports 0 design rule violations, 0 unconnected items, 0 schematic parity differences and 0 electrical rule violations, on 421 tracks and 68 through vias.
- The simulation runs the compiled firmware against models of the storage chip, the switches, an SD host and the LED driver, and all 17 scenario groups pass. Three groups use a test build with a shortened save delay.
- A sweep of 23,328 hand-over timing cases in 10 ns steps passes. When a takeover backs off, the storage chip is off the computer's lines for at most 843 ns.
- A random soak of 600 sessions covers 7,869 file operations and 12,799 read windows, with 111,773 LED frames matching the reference. In 347 of the sessions the lights were allowed to lag a save, and they showed the expected pattern after 3,843 of 4,533 operations.
- Worst-case supply current is calculated at 92.1 mA against the 100 mA limit for an SD card, with every part at its data-sheet maximum.
- The light path is ray traced with 20 million rays per LED die. The estimate at 70 degrees off head-on is about 1,400 candela per square metre in the weakest colour, at full brightness with typical LEDs.