A real, working USB business card. It's shaped like a card, but the bottom edge is cut into a USB-A male connector, plug it straight into any port, no cable, no adapter. Powered by a CH552G with native USB (no USB-to-serial bridge chip), two capacitive touch pads, a status LED, and a UART debug header.
It's a business card, a hacking tool, and a flex in one.
π Full build write-up, schematics and pinout: https://wiki.netrunsecurity.com/electronics/sao/business-card/
.
ββ hardware/
β ββ card/
β β ββ v4/ # current editable KiCad design (source of truth)
β β ββ v3/ # validated production build, gerbers only
β ββ shim/ # USB-tab PCB shim (KiCad source + gerbers)
ββ firmware/
β ββ rubber-ducky/ # HID keystroke injection (opens a URL on plug-in)
β ββ touchpad-testing/ # capacitive Touch-Key + LED demo
β ββ ctf/ # USB serial CLI with hidden flags
β ββ usb-uart-bridge/ # USB β UART bridge for debugging IoT targets
ββ docs/ # photos, schematic PDF, fabrication files (BOM)
ββ LICENSE # TAPR OHL 1.0, hardware
ββ firmware/LICENSE # GPL-3.0, firmware
| Version | Status | Files |
|---|---|---|
| V3 | Soldered & tested, the build in the photos | Gerbers (archived) |
| V4 | Same circuit, current revision | Full KiCad sources |
V3 and V4 are electrically identical. R6 was a redundant RST pull-down (R5 already pulls RST to VCC) and was left unpopulated on V3, so it never affected the circuit. V4 removes the footprint to prevent accidental population and updates the silkscreen text. The V4 sources faithfully represent the validated V3 build.
β οΈ The originalv00110100board had a reversed USB edge-connector polarity that destroyed chips on plug-in. Do not fabricate that revision. Use V3/V4.
- MCU: WCH CH552G (8051 core, native USB)
- USB: PCB-edge USB-A male connector, no bridge IC
- Input: 2Γ capacitive Touch-Key pads (read through the solder mask)
- Indicator: status LED
- Debug / flash: 1Γ4 UART header + BOOT/RESET buttons
- Mechanical: card + glued USB-tab shim (~2.4 mm total) for a snug USB-A fit
- EDA: KiCad
| Ref | Qty | Value / Part | Package | MPN | LCSC |
|---|---|---|---|---|---|
| U1 | 1 | CH552G β 8-bit USB MCU | SOP-16 | CH552G | C111292 |
| C1 | 1 | 10 Β΅F 16 V X5R | 0805 | CL21A106KOQNNNE | C1713 |
| C2, C3 | 2 | 100 nF 50 V X7R | 0805 | CC0805KRX7R9BB104 | C49678 |
| R1, R2 | 2 | 1 kΞ© 1% | 0805 | 0805W8F1001T5E | C17513 |
| R4, R5 | 2 | 10 kΞ© 1% | 0805 | 0805W8F1002T5E | C17414 |
| D1 | 1 | Red LED 630 nm | 0805 | NCD0805R1 | C84256 |
| SW1, SW2 | 2 | Tactile switch SPST | SMD 5.2Γ5.2 mm | TL3342F260QG | C2886894 |
| J2 | 1 | 1Γ4 pin header 2.54 mm (UART) | THT | HX PH254-01-04 | C52016392 |
R6 is not populated (removed in V4). TP1/TP2 are copper touch pads and U2 is the PCB-edge USB connector β neither is a placed part.
Several firmwares, each demoing a different capability of the platform:
- rubber-ducky: enumerates as a USB keyboard and types a payload (opens a URL).
- touchpad-testing: exercises the two Touch-Key pads and the LED.
- ctf: exposes a USB serial CLI with a small command set and hidden flags.
- usb-uart-bridge: bridges the on-board UART to the host for field debugging.
Build & flash instructions are in firmware/README.md
(Arduino IDE 2.x + ch55xduino).
- Send the gerbers in
hardware/card/v4/(orv3/) to any fab. - Order parts from the assembly BOM in
docs/(LCSC part numbers included). - Glue the shim under the USB tab.
- Flash a firmware, see
firmware/README.md.
A few hard-won notes: hand-solder the SOP-16 (no hot air), verify USB edge-pad polarity against the socket before ordering, and keep a USB power meter handy for first power-up.
This is open hardware, dual-licensed:
- Hardware (PCB design, schematic, gerbers): TAPR Open Hardware License 1.0, see
LICENSE. - Firmware (code): GPL-3.0, see
firmware/LICENSE.
Derivatives welcome, credit the original and highlight your changes.
Designed by AlrikRr, NetRunSecurity Β· wiki Β· linktr.ee


