
GRAM PRISM
GRAMCTRL/GRAM-PRISM
A modular and scalable design based on WunWae's Prism Controller

A modular and scalable design based on WunWae's Prism Controller
Panelized Board is an open-source printed circuit board by GRAMCTRL, from the GRAMCTRL/GRAM-PRISM repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 203.3 × 221.2 mm with 87 parts on 71 nets, routed with 778 tracks and 76 vias.
It is built around the RP2040, W25Q128JVSIQ and USBLC6-2SC6, with the XC6206-2.8V among its other parts. Its parts include 18 capacitors, 11 resistors, 8 connectors, 5 ICs and 3 diodes. It belongs with the RP2040 boards of this library.
The PRI$M is a modular take on the Prism, originally designed by WunWae. It has the standard pinout for firmwares like HayBox and Pico-Rectangle, and is also compatible with more fleshed-out FGC firmwares like GP2040-CE. The key distinctive features between the original Prism and the PRI$M is the USB-C connectivity, and the modular panels that can be replaced and swapped to change the hand layouts without purchasing a whole new controller. With industrial design from GRAM, PCB designed by Quark.Works, this guide goes over a DIY-friendly approach to building and modifying the PRI$M to suit your needs.
If you would like to support the developers of this project, consider purchasing parts like buttons, PCBs, USB-C to GCC cables, and official GRAM builds at GRAMCTRL.COM rather than a fab house.
Included in this repo is all the files needed to get started with a PRI$M build:
If you want more info around GRAM builds, both open source and official builds, please join the GRAM Digital Controllers Discord to ask questions and work with the community! I would love to see people creating new interesting designs, and building upon our initial framework.
There are several people who made this project possible, either directly or indirectly.
While most of these files are universal and can be used at any fab house, JLCPCB has become the de-facto standard for DIY box manufacturing. This is due to their hyper-affordable pricing and low minimum order quantity.
Per GRAM PRI$M, you will need (some files can be made using this repository, but I will link to places to purchase them if you would like to avoid MOQs)
Optional
This guide assumes a level of knowledge on soldering and computer literacy. General tool requirements are:
Note: Since the ordering process of the PRI$M is almost identical to the SLIM, I have used the ordering guide from the SLIM here. You may need to do more repetitions of these steps depending on which PCB you are printing, and you need to do the panel steps for all 5 aluminum panels.
The PCB Fabrication files should come in the form of a Gerber ZIP file and bom/cpl files (usually in Excel spreadsheet formats).
Drag them into the "Upload Gerbers" box at JLCPCB and this page will pop up:
Here you can change the color of the PCB. Green is the fastest and cheapest from JLC, but their black PCBs look siiiiiick. The only setting I recommend you change is to check "Yes" on Confirm Production file. This allows for any mistakes to be ironed out by their engineers.
Towards the bottom of the page, you want to turn on the switch for PCB ASSEMBLY.
Make sure you are assembling the Bottom Side of the PCB, and make sure to set Confirm Parts Placement to "Yes". None of the advanced options need to be changed.
Upon confirming your PCB Assembly options, you'll be taken to the Assembly wizard. Clicking next will give you a location to upload the BOM and CPL files (CPL is referred to as Positions in the GRAM Slim files). Once you click through, you'll be brought to you BOM list.
This will allow you to modify parts if there's any low stock. There's a line at the bottom for CH1-CH21 with some red text. This is for assembling hotswap sockets, which is not recommended for JLC, as you have to preorder them. when you click next, continue by clicking Do not place.
The wizard looks intimidating, but good news! Since you're confirming part placement, the JLC engineers will fix any errors. Just go ahead and continue.
There you have it! Your PCB is ready to order. As of the time of this writing, a set of 5 assembled boards costs $56.07 before shipping.
The process of ordering aluminum panels from JLC is similar to the PCB ordering process, but much simpler. Start by dragging the GRAM Slim Top Zip file into the JLC upload window. We want an aluminum PCB, 1.6mm. You can choose either white or black coating (white tends to be glossy, black is matte but a fingerprint magnet).
Under High-spec Options, make sure to remove order number, or else they'll put an ugly serial number on the panel.
Once you save to cart, you'll see this screen:
Here you can add the GRAM Slim Bottom Zip file, and it will copy all your settings from the Top panel. Save to cart, and you're ready to check out with your PCBs!
Note: JLCPCB cannot transact PCB and 3D printing orders together, so place this order, then move on to 3D printing.
The frame file is pretty self explanatory. Just go into JLC's 3D printing section, drop the STL file in, and choose your material. I recommend black Resin, but LEDO 6060 is a great, low cost alternative. The only material I recommend against is the textured Nylon options, as the tolerances between the frame and panels are extremely tight, and the texture could interfere with that. make sure the surface finish is set to sanded.
The website will flag some possible errors (Inverted normals, Multi-shells, Possible noise shells) but if you have not modified the .stl file you are good to go. It is also possible that their support contact you about a risk of deformation given the geometry of the workpiece but it is normal and you should reply to the email that you accept the risks.
Need help building your PRI$M? Feel free to join our Discord for advice from our lovely open source community!
| Qty | Value | Footprint | References |
|---|---|---|---|
| 20 | choc_SW_HS | PCBs:Kailh_socket_PG1350 | CH1, CH2, CH3, CH4, CH5, CH10, CH11, CH12, CH13, CH14, CH15, CH16, CH17, CH18, CH19, CH20 +4 |
| 10 | 100nF | Capacitor_SMD:C_0402_1005Metric | C3, C4, C5, C6, C8, C9, C10, C11, C12, C15 |
| 7 | MouseBites | PCM_marbastlib-various:mousebites_5p5mm_easysnap | H13, H14, H15, H16, H17, H18, H19 |
| 4 | 19.99 logo | 1999:1999 logo md | H3, H4, H7, H8 |
| 4 | 1uF | Capacitor_SMD:C_0402_1005Metric | C2, C7, C16, C17 |
| 4 | qw-logo | qw-logo:qw new logo silk + copper md | H1, H2, H5, H6 |
| 2 | 10k | Resistor_SMD:R_0402_1005Metric | R3, R8 |
| 2 | 1k | Resistor_SMD:R_0402_1005Metric | R4, R5 |
| 2 | 22pF | Capacitor_SMD:C_0402_1005Metric | C13, C14 |
| 2 | 27 | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R10, R11 |
| 2 | DuPont Connector | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J4, J7 |
| 2 | FFC Connector | Connector_FFC-FPC:TE_1-84953-4_1x14-1MP_P1.0mm_Horizontal | J2, J5 |
| 2 | JST Connector | Connector_JST:JST_SH_SM06B-SRSS-TB_1x06-1MP_P1.00mm_Horizontal | J3, J8 |
| 2 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U4, U5 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | 10uF | Capacitor_SMD:C_0402_1005Metric | C1 |
| 1 | 12MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1999 logo | 1999:1999 logo md | H12 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | 4.7u | Capacitor_SMD:C_0603_1608Metric | C18 |
| 1 | 5.6k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 500 mA | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | Boot | Button_Switch_SMD:SW_SPST_SKQG_WithStem | SW1 |
| 1 | GREEN | LED_SMD:LED_0805_2012Metric | D2 |
| 1 | JTAG_TC2030 | PCM_marbastlib-various:CON_TC2030_outlined | J1 |
| 1 | MountingHole | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | H10 |
| 1 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | H9 |
| 1 | RP2040 | footprints:RP2040-QFN-56 | U1 |
| 1 | Schottky Diode | Diode_SMD:D_SOD-123 | D1 |
| 1 | Schottky Diode | Diode_SMD:D_SOD-323 | D3 |
| 1 | USB C Connector | Rectangles:TYPE-C_24P_QCHT | J6 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U2 |
| 1 | XC6206 | Package_TO_SOT_SMD:SOT-23 | U3 |
| 1 | qw logo | qw-logo:qw new logo silk + copper sm | H11 |
It measures 203.3 × 221.2 mm and has 2 copper layers, 1.6 mm thick.
87 parts, built around the RP2040, W25Q128JVSIQ, USBLC6-2SC6 and XC6206-2.8V. 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.
From the GRAMCTRL/GRAM-PRISM repository on GitHub, at the commit this page was made from: the board is v1/PCBs/Panelized Board/Panelized Board.kicad_pcb and its schematic v1/PCBs/DaughterBoard/MiniRectangleDB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.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).

GRAMCTRL/GRAM-PRISM
A modular and scalable design based on WunWae's Prism Controller

GRAMCTRL/GRAM-PRISM
A modular and scalable design based on WunWae's Prism Controller

GRAMCTRL/GRAM-PRISM
A modular and scalable design based on WunWae's Prism Controller

GRAMCTRL/GRAM-PRISM
A modular and scalable design based on WunWae's Prism Controller

GRAMCTRL/GRAM-SLIM
Open source low-profile leverless design with an integrated RP2040.

quark-works/Integrated-OF1
Design files are available in this repository. Production files for JLCPCB in the releases page. Tested working and fitting previously mentioned Frame 1 cases.

quark-works/OpenRectangleTemplate
RP2040 template for use with box style controllers for the GC

quark-works/OpenRectangle
Custom PCBs for a RP2040 powered rectangle controller


quark-works/tiebox
Labels are already assigned to the default pinout of the most popular firmware available as well as in stock parts for every component from LCSC.

