

This is a collection of all the rpositories for the DEFCON screen hat
- Size
- 80 × 56 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 34
- Nets
- 67
- Pads
- 262
- Tracks, vias
- 305, 105
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 15 Aug 2026
- Updated
- 2 Nov 2026
Overview
595pcb is an open-source printed circuit board by abc123me, from the abc123me/screen-hat-defcon repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 80 × 56 mm with 34 parts on 67 nets, routed with 305 tracks and 105 vias.
It is built around the AP63203WU and 74HC595. Its parts include 14 capacitors, 7 ICs, 6 connectors and 1 inductor.
Main components
2AP63203WU
TSOT-23-6-40℃~+85℃@(TA) 1 1.1MHz 22uA 2A 3.3V 3.8V~32V Buck Built-in Fixed Overcurrent Protection、Light load efficient mode、Cycle-by-cycle current limiting、Hiccup current limiting、EMI optimization (spread spectrum) Step-down type Yes TSOT-23-6 DC-DC Converters ROHSDiodes IncorporatedDC-DC Converters74HC595
SOP-16-40℃~+85℃ 1 100ns@5V,50pF 10MHz 2V~6V 74HC 8 Serial-to-Serial or Parallel Tri-State SOP-16 Shift Registers ROHSGRShift Registers
README
README.mdscreen-hat-defcon
This is a collection of all the rpositories for the DEFCON screen hat
| Name | Description |
|---|---|
| screen-hat-rs | Userspace rust animation app |
| fbgl-rs | Userspace rust graphics library |
| ddmafb | Linux kernel direct DMA framebuffer driver |
| Vivado project | Vivado project for the screen hat |
| Vivado IP | Vivado IP for the screen hat |
| jlbsp | BSP for the screen-hat |
Hardware information
Wiring and other information is contained in the ScreenHat.ods spreadsheet. See the V2 page or picture below for complete information.

GPIO expandsion PCB information
The 595pcb KiCAD project is the core GPIO expansion PCB used for backlight and reset
control, gerber files for version 1 of the PCB are inside of 595pcb/grb_v1.zip in this
repository, the BOM for the PCB is below:
| Digikey part no | Quantity | Description |
|---|---|---|
| AP63203WU-7 | 1 | 3.3V 2A Buck converter |
| 74HC595DCT-ND | 6 | 8-Bit Serial-In, Parallel-Out shift register |
| T491S106K010AT | 4 | 10uF, 10V Tantalum capacitor |
| 478-KGM21NR71H104KTCT-ND | 10 | 100nF, 50V MLCC capacitor |
Displays used
- The displays are 14x ILI9341 based 2.4" TFT LCDs, they're 240x320 and use a three-wire SPI interface. The SPI interface is unique as a word is 9-bits wide as opposed to the typical 8-bits.
- The linux kernel driver always sends multiples of 9 bytes in order to meet this strange requirement of the SPI interface while using a typical 8-bit SPI driver.
- The FPGA IP just does 9-bit SPI natively since it's an FPGA and I can make the hardware do whatever I want.
Development board used
- The MicroPhase Z7 lite is a cheap $100 chinese Zynq 7000 series development board, sometimes can be found for as cheap as $70
- I am using the Zynq 7010 variant, the Zynq 7000 series has two 32-bit ARM V7 cores, this particular development board has 2Gib of RAM which.
- This equates to 512MB of RAM in Linux (since 1B = 8b)
- They don't provide a Vivado example for this board, I had to figure it all out myself, so videos on that below:
- Microphase Z7 lite DDR3 buildroot configuration
- Ethernet on MicroPhase Z7 lite
- The DDR3 RAM on these chips is LPDDR3, I tried to get it to go as fast as I could but it is still pretty slow.
- Never got USB to work, tried once, and gave up on it as I didn't have much interest in it since I never use USB anyways
Potential improvements
The version 1 on the 595 expansion PCB worked almost perfectly however I suspect it could be improved.
- Add a GPIO line to pin 6 of the AP632XX buck converter, so FPGA can contreol power for all screens, this would improve the initialization by making sure screens the screens are all turned on after the FPGA is fully loaded.
- I2C ADC so voltages can be monitored
- Global output enable controls for both shift register banks
Building
Dependencies
This is a buildroot project, meaning the entire linux kernel and all apps are built from source.
I use Arch btw, but last I checked Fedora is recommended for Linux kernel / Buildroot builds. Arch Linux typically has a GCC version that is too new, meaning you will be fighting GCC - so I wouldn't recommend it.
Buildroot required dependencies
My custom packages all use git so it is also a required package.
fd-find is required for my custom BSP repository and bsp script, if you have not used this unix find replacement, try it!
For any questions on how to modify packages, see the buildroot manual
Instructions
- Clone jlbsp
- Enter the repository (
cd jlbsp) - Checkout the develop branch for latest (
git checkout develop) - Setup the screen hat BSP (
./bsp setup screen-hat) - Enter the screen hat BSP (
cd ../builds/screen-hat) - Turn off the
JL_SECRET_KEYSrepository viamake menuconfig - Build the BSP using
make all - Flash the SD card using
dd if=images/sdcard.img of=<my-sd-card> bs=4M oflag=sync status=progress
Troubleshooting
The jlbsp contains an upgrade script you can use to remotely upgrade the screen hat via make deploy.
The bsps/screen-hat.bsp file contains the IP address that would be used here. You'll also have to
setup SSH keys yourself by adding your SSH keys to the rootfs or enabling root login via SSH.
Serial via the USB UART may also be used, 115200 baud, the username is root, no password.
Pictures


And yes, I know my camera is a potato, and no I will not be upgrading.
Parts
34| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 100nF | Capacitor_SMD:C_0805_2012Metric | C101, C102, C103, C104, C105, C106, C107, C109, C113, C114 |
| 6 | 74HC595 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U101, U102, U103, U104, U105, U106 |
| 4 | 10uF | Capacitor_Tantalum_SMD:CP_EIA-3216-12_Kemet-S | C108, C110, C111, C112 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | H101, H102, H103, H104 |
| 2 | Conn_01x24 | Connector_PinHeader_2.54mm:PinHeader_1x24_P2.54mm_Horizontal | J101, J102 |
| 2 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Horizontal | J105, J106 |
| 2 | Conn_02x08_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_Horizontal | J103, J104 |
| 2 | TestPoint | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP_3V101, TP_5V101 |
| 1 | AP63203WU | Package_TO_SOT_SMD:TSOT-23-6 | U107 |
| 1 | L_Ferrite_Small | Inductor_SMD:L_Changjiang_FNR5045S | L101 |
Questions
How big is the 595pcb PCB?
It measures 80 × 56 mm and has 2 copper layers, 1.6 mm thick.
What parts does the 595pcb use?
34 parts, built around the AP63203WU and 74HC595. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the 595pcb KiCad files?
From the abc123me/screen-hat-defcon repository on GitHub, at the commit this page was made from: the board is 595pcb/595pcb.kicad_pcb and its schematic 595pcb/595pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the 595pcb design in my own project?
Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 2 layers65.5 × 30 mm

- 4 layers44.9 × 42 mm

Techy robot Mighty Micro Motors esp32-s3 single motor battery controller
punkfab/pcb-corpus
235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark
133 parts1 - 4 layers37.1 × 37.2 mm

Doorman
AzonInc/Doorman
ESP32-S3 based Intercom Gateway (TCS / Koch / Niko / Scantron / Analogue Systems)
44 parts252GPL-3.0 - 4 layers81.6 × 88.8 mm

Cheetah MX4-Mini
KaiPereira/Cheetah-MX4-Mini
A powerful yet compact 3D printer motherboard that supports TMC stepsticks, fans, heaters, screens and thermistors
171 parts179 - 6 layers84 × 98 mm

FujiNet-5200-Rev0
FujiNetWIFI/fujinet-hardware
Schematics and design files for FujiNet hardware
145 parts142 - 2 layers50 × 70 mm

- 2 layers30 × 49.3 mm

USB PD monitor V1
lhm0/pd_logger
This repository contains two DIY gadgets to monitor and log USB-C Power Delivery (PD). Both devices are designed to be easy to build, hackable, and useful for makers who want to explore USB-C PD.
34 parts82 - 4 layers55 × 100.5 mm

OSS Radio Hardware Design
Arkos-Engineering/HT-15_hardware
We can split this out into separate repos later, right now its very convenient to have everything here.
256 parts72