Skip to the content
PCBKitNew board
4 layers72.4 × 70.2 mmElpass, the printed circuit board in 3D

超老电子通行证:基于zynq7010的LJ64H034 平板电脑/显示器

Size
72.4 × 70.2 mm
Copper layers
4
Thickness
1.6 mm
Parts
214
Nets
376
Pads
1,274
Tracks, vias
5,387, 840
Pours
27
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
30 Jun 2026
Updated
13 Sep 2026

Overview

Elpass is an open-source printed circuit board by inapp123, from the inapp123/elPass_hardware repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 4-layer board of 72.4 × 70.2 mm with 214 parts on 376 nets, routed with 5,387 tracks and 840 vias.

It is built around the USB3320C-EZK-TR, TF-123-ARP9H17 and TXS0108EPW, with the EA3059QDR, TPS563201 and ZX-SH1.0-8PLT among its other parts. Its parts include 106 capacitors, 71 resistors, 12 ICs, 6 inductors and 4 transistors. It belongs with the FPGA and CPLD boards of this library.

Main components

12

README

README.md

ePass EL or elPass

An open-source EL display controller built on the Xilinx Zynq-7010.

ePass EL drives an electroluminescent (EL) panel from a Zynq-7010 SoC, pairing PS-side Linux with PL-side panel timing so you get a real compositor on top of a display technology that usually only sees bit-banged microcontroller drivers. HDMI in/out, WiFi/BT, USB host, a resistive touchscreen, and USB-C PD power all live on a single self-designed four-layer board.

Rhodes Island Engineering Dept. (c) 1097 — because every ruler needs a screen.


Status

SubsystemState
PCB (4-layer)Fabricated and bring-up tested. Working hardware.
FPGA / LinuxArchitecture defined; EL driver + DRM compositor in progress
Enclosure2-piece FDM/resin shell, parametric (build123d), in design

This is Rev 1. KiCad 10.0.3 source, schematic dated 2026-05-25.

PCB is designed for JLC04016-3313 stack.1.6mm,3313 imdepend matching.


Highlights

  • Zynq-7010 (CLG400) — dual-core Cortex-A9 PS + Artix-class PL on one die.
  • EL panel driver in the PL — column/row drive (UD*/LD*/CP*/S) with 1-bit temporal dithering, level-shifted to the panel through dual TXS0108E.
  • DRM/KMS on Linux — a single-master compositor owns the CRTC; clients hand in buffers over dmabuf. Legacy fbdev programs and even an X server can run as clients without ever touching the real DRM master.
  • HDMI, both directions — J2 is a dual-mode sink/source. Default build is a sink (TMDS receive into HR banks via IDELAY/ISERDES); populate D2 to flip it into a source.
  • WiFi + Bluetooth — RTL8723BS over SDIO (routed through EMIO to the PL), with a 2.4 GHz chip antenna and a proper RF keepout.
  • USB-C PD power — CH224K negotiates 12 V for the panel rail; data lines stay free for whatever you want.
  • USB 2.0 host — USB3320 ULPI PHY (24 MHz) to a full-size Type-A port.
  • Resistive touch — XPT2046 over SPI.
  • microSD boot + storage, RTC-less but with the usual JTAG/UART debug paths.

Architecture

mermaid
flowchart TB
    USBC[USB-C In<br/>CH224K PD sink] --> PWR
    PWR[EA3059 quad buck<br/>+ TPS563201] -->|1V0 / 1V8 / 1V35 / 3V3 / 5V / 12V| ZYNQ

    subgraph ZYNQ[Zynq-7010]
        PS[PS<br/>Cortex-A9 + Linux]
        PL[PL<br/>EL timing + dither<br/>HDMI TMDS]
    end

    PS <-->|EMIO SDIO| WIFI[RTL8723BS<br/>WiFi/BT]
    PS --> USB[USB3320 ULPI] --> USBA[USB-A Host]
    PS --> SD[microSD]
    PS <-->|DDR| DDR[MT41K256M16<br/>512 MB DDR3L]

    PL -->|level shift| EL[EL Panel]
    PL <--> HDMI[HDMI A<br/>sink / source]
    PS -->|SPI| TOUCH[XPT2046<br/>resistive touch]

PS / PL split

  • PS runs Linux and owns the slow-and-smart side: USB, SD, the RTL8723BS (SDIO bridged out through EMIO to PL pins), DDR3L, and the touch SPI link.
  • PL owns the timing-critical side: generating EL panel drive waveforms with 1-bit dithering, and the HDMI TMDS datapath.

Power tree

USB-C comes in, CH224K trips the source to 12 V, and everything fans out from there. The Zynq rails are brought up in the order the datasheet asks for.

RailSourceNotes
+5 VTPS563201Buck from VBUS
+1.0 VEA3059VCCINT / VCCPINT
+1.8 VEA3059VCCAUX / VCCPAUX / MIO bank 1
+1.35 VEA3059DDR3L VCCO_DDR
+3.3 VEA3059I/O banks, MIO bank 0, last to rise

Sequence: 1.0 V → 1.8 V → 1.35 V → 3.3 V (approx. instant → 22 ms → 41 ms → 55 ms, set by the enable-cap timing). A MAX811 supervises the last-rising 3.3 V rail and drives PS_POR_B.

Panel budget: 5 V @ 300 mA max, 12 V @ 1.3 A max.


Boot configuration

Mode straps live on the MIO pins (see zynq_misc):

PinsValueMeaning
MIO[6]0Wait for PLL lock, then run BootROM
MIO[8:7]2'b103.3 V on both MIO banks
MIO[5:3]3'b110Boot from SD card
MIO[2]0JTAG chain: cascaded

PS reference clock is a 50 MHz oscillator. JTAG is broken out on a ZX-SH1.0 header for bring-up.


Software stack

The interesting part isn't that it runs Linux — it's how the display is shared.

  • Single-master DRM compositor. A DRM lease can't split a CRTC between two masters, so one compositor owns all atomic commits. Clients submit buffers as dmabuf file descriptors passed over a Unix socket (SCM_RIGHTS).
  • Legacy fbdev support via LD_PRELOAD, intercepting open/ioctl/mmap so old framebuffer programs think they own a screen.
  • X11 as a client — xf86-video-fbdev runs against the compositor's virtual framebuffer, keeping the compositor as the sole DRM master.
  • Touch routing. The real input device is grabbed (EVIOCGRAB) and a virtual device is published via uinput/libevdev; the compositor routes events by overlay visibility. On focus switch, in-flight multitouch slots are cancelled cleanly (ABS_MT_TRACKING_ID = -1, BTN_TOUCH = 0, SYN_REPORT). A udev rule (LIBINPUT_IGNORE_DEVICE=1) hides the raw device from X's libinput.

Credits

This design stands on the shoulders of:

Thanks to everyone who documented Zynq-7010 minimal designs and EL driving so the rest of us didn't have to start from a blank schematic.


License

CERN-OHL-P.

Parts

214
QtyValueFootprintReferences
36470nFCapacitor_SMD:C_0201_0603MetricC32, C33, C35, C36, C37, C38, C40, C41, C44, C45, C108, C109, C115, C116, C117, C118 +20
17100nFCapacitor_SMD:C_0201_0603MetricC3, C84, C86, C87, C88, C89, C90, C91, C92, C93, C94, C95, C98, C100, C101, C102 +1
124.7uFCapacitor_SMD:C_0402_1005MetricC27, C28, C29, C30, C31, C42, C46, C51, C52, C53, C56, C58
1247KResistor_SMD:R_0402_1005MetricR25, R40, R41, R42, R43, R44, R68, R77, R78, R79, R80, R81
104.7KResistor_SMD:R_0402_1005MetricR30, R31, R32, R56, R65, R66, R69, R71, R72, R73
1049.9RResistor_SMD:R_0402_1005MetricR47, R57, R58, R59, R60, R61, R62, R63, R64, R85
910uFCapacitor_SMD:C_0805_2012MetricC1, C2, C7, C8, C9, C10, C68, C113, C114
920KResistor_SMD:R_0402_1005MetricR16, R17, R18, R19, R20, R21, R22, R23, R24
81uFCapacitor_SMD:C_0402_1005MetricC11, C12, C13, C14, C16, C18, C20, C103
6100uFCapacitor_SMD:C_1206_3216MetricC24, C25, C26, C39, C47, C50
622uFCapacitor_SMD:C_0603_1608MetricC5, C6, C22, C106, C107, C112
5100KResistor_SMD:R_0402_1005MetricR9, R11, R27, R49, R74
547uFCapacitor_SMD:C_0603_1608MetricC23, C43, C48, C55, C60
5FTC252012S2R2MBCAEasyEDA:IND-SMD_L2.5-W2.0_MHCHL2520L1, L3, L5, L6, L8
410KResistor_SMD:R_0402_1005MetricR4, R28, R82, R83
41KResistor_SMD:R_0402_1005MetricR45, R54, R55, R70
3100nFEasyEDA:C_0201_0603Metric_WideGapC85, C96, C97
3AO3400APackage_TO_SOT_SMD:SOT-23Q1, Q2, Q3
2150KResistor_SMD:R_0402_1005MetricR6, R15
21N5819WSDiode_SMD:D_SOD-323D2, D3
2200KResistor_SMD:R_0402_1005MetricR7, R26
2330RResistor_SMD:R_0402_1005MetricR29, R67
2470nFEasyEDA:C_0201_0603Metric_WideGapC34, C66
280KResistor_SMD:R_0402_1005MetricR5, R75
280RResistor_SMD:R_0201_0603MetricR50, R51
2TBD(NC)Capacitor_SMD:C_0402_1005MetricC104, C105
2TXS0108EPWPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU13, U15
10RResistor_SMD:R_0805_2012MetricR12
1120RInductor_SMD:L_0603_1608MetricFB1
1240RResistor_SMD:R_0201_0603MetricR53
13225 24MHzEasyEDA:OSC-SMD_4P-L3.2-W2.5-BLX2
13225 50MHzEasyEDA:OSC-SMD_4P-L3.2-W2.5-BLX1
1450KResistor_SMD:R_0402_1005MetricR13
156.2KResistor_SMD:R_0402_1005MetricR3
18.06KResistor_SMD:R_0402_1005MetricR46
180REasyEDA:C_0201_0603Metric_WideGapR52
1BW2.4MNX3216EasyEDA:ANT-SMD_L3.4-W1.8_BW2.4MNX3216L7
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ5
1Conn_02x10_Odd_EvenConnector_PinSocket_2.00mm:PinSocket_2x10_P2.00mm_VerticalJ6
1DC002-1.3EasyEDA:DC-IN-TH_DC002-1.3DC1
1EA3059EasyEDA:VQFN-24_L4.0-W4.0-P0.50-TL-EP2.5U3
1HDMI_AConnector_Video:HDMI_A_Molex_208658-1001_HorizontalJ2
1LEDLED_SMD:LED_0603_1608MetricD1
1LOGOEasyEDA:kigcadG***
1MAX811TEUS-TPackage_TO_SOT_SMD:SOT-143U5
1MLT-5020EasyEDA:BUZ-SMD_L5.0-W5.5-P4.60BUZZER1
1MT41K256M16TWEasyEDA:BGA-96_P0.8mm_NoPasteU9
1RL-SM02BD-RTL8723BSEasyEDA:WIRELM-SMD_RL-SM02BD-RTL8723BSU7
1SS8050Package_TO_SOT_SMD:SOT-23Q4
1TBD(0R)Resistor_SMD:R_0402_1005MetricR76
1TF-123-ARP9H17EasyEDA:TF-SMD_TF-123-ARP9H15U14
1TPS563201Package_TO_SOT_SMD:SOT-23-6U1
1TS-1088-AR02016EasyEDA:SW-SMD_L3.9-W3.0-P4.45SW1
1TS24CAEasyEDA:SW-SMD_2P-TS24CASW2
1USB3320C-EZK-TREasyEDA:QFN-32_L5.0-W5.0-P0.50-BL-EP3.4U8
1USB_AConnector_USB:USB_A_Molex_67643_HorizontalJ3
1XPT2046TSPackage_SO:TSSOP-16_4.4x5mm_P0.65mmU6
1ZX-SH1.0-8PLTEasyEDA:CONN-SMD_8P-P1.00_MEGASTAR_ZX-SH1.0-8PLTU12
1xc7z010clg400EasyEDA:Xilinx_CLG400_NoPaste_JLC_Package_DelayU4

Questions

How big is the Elpass PCB?

It measures 72.4 × 70.2 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Elpass use?

214 parts, built around the USB3320C-EZK-TR, TF-123-ARP9H17, TXS0108EPW and EA3059QDR. 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 Elpass KiCad files?

From the inapp123/elPass_hardware repository on GitHub, at the commit this page was made from: the board is elpass.kicad_pcb and its schematic elpass.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Elpass design in my own project?

Its repository publishes it under the CERN-OHL-P-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

  • 4 layers16 × 44 mmPilkbrain, the printed circuit board in 3D

    Pilkbrain

    cr1tbit/pilkbrain

    The schematic is still a bit messy, just for the reference for now.

    106 parts1
  • 2 layers25 × 50 mmPapajbadge, the printed circuit board in 3D

    Papajbadge

    rough-rat/papajbadge

    habemus lāminam!

    56 parts1
  • 4 layers41 × 60.3 mmVesta, the printed circuit board in 3D

    Vesta

    carlosgj94/vesta-wildfire-detection-hardware

    Vesta is an early-stage project to build an open source hardware device for wildfire detection. The hardware design is being done in KiCad, with the goal of making a device that is easy to manufacture, cheap to deploy…

    40 parts
  • 6 layers90 × 90 mmClock odial, the printed circuit board in 3D

    Clock odial

    JulienKluge/Clock-odial

    Clock-odial is a PCB featuring a ECP5 fpga for frequency/clock signal processing

    370 partsMIT
  • 4 layers33.5 × 24 mmUSBPowerMeter, the printed circuit board in 3D

    USBPowerMeter

    JunKimmmy/USBPowerMeter

    A compact USB-C passthrough power meter that displays real-time voltage, current, and power on an integrated 128×64 OLED screen.

    84 parts8
  • 4 layers83 × 83 mmPWNSAT, the printed circuit board in 3D

    PWNSAT

    Pwnsat/PWNCUBE

    PWNCUBE v1.0 is a Cubesat hardware based platform for aerospace cybersecurity research

    139 parts29
  • 2 layers150 × 100 mmBadge HackGDL-2026, the printed circuit board in 3D

    Badge HackGDL-2026

    ElectronicCats/badge_hackgdl_2026

    Badge HackGDL 2026

    151 parts
  • 6 layers79.3 × 68.9 mmPCIeDMA, the printed circuit board in 3D

    PCIeDMA

    jayhusemi/PCIeDMA

    Open source Artix-7 FPGA designed to be used with PCILeech.

    267 partsMIT