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

Open source low-profile leverless design with an integrated RP2040.
GRAM SLIM is an open-source printed circuit board by GRAMCTRL, from the GRAMCTRL/GRAM-SLIM repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 288.8 × 160.1 mm with 63 parts on 67 nets, routed with 581 tracks and 56 vias.
It is built around the RP2040, W25Q128JVSIQ and USBLC6-2SC6, with the XC6206-2.8V among its other parts. Its parts include 17 capacitors, 11 resistors, 4 ICs, 3 diodes and 2 connectors. It belongs with the RP2040 boards of this library.
GRAM Slim is a modular low-profile 21-button controller designed for Smash and FGC games. 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. With industrial design from GRAM, and PCB designed in collaboration with Quark.Works, this guide goes over a DIY-friendly approach to building the original GRAM Slim, and future guides/repos may hold remixes and modifications.
If you would like to support the developer 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 simple GRAM Slim 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 the 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.
NOTE: This ordering guide is for the DIY-friendly versions of the Slim. For Screwless panels, Powder-coated aluminum, and custom die-cut/injection molded parts, we do not have a guide, as these are beyond the reach of traditional DIY makers. These parts are still covered under GPLv3. Per GRAM Slim, 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:
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.
In the files, there are two versions. A single button for reference, and a 10x .STL file for mass printing at JLC. Each GRAM Slim requires 2.1 prints, so to make the minimum order quantity of 5 PCBs, you will need to order 11 prints of it.
The 10x file is the ideal for JLC, as it minimizes cost. JLC may reach out to you and add some cost (0.30/pc) for small parts. This is normal.
The buttons have been tested in 4 material materials:
Building the GRAMv2 is relatively straightforward, but an updated in-depth build guide (including a video!) is currently in the works.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 21 | choc_SW_HS | PCM_marbastlib-choc:SW_choc_v1_HS_1u | CH1, CH2, CH3, CH4, CH10, CH11, CH12, CH13, CH14, CH15, CH16, CH17, CH18, CH19, CH20, CH21 +5 |
| 10 | 100nF | Capacitor_SMD:C_0402_1005Metric | C3, C5, C6, C11, C12, C13, C14, C15, C16, C17 |
| 4 | 1uF | Capacitor_SMD:C_0402_1005Metric | C1, C2, C4, C10 |
| 2 | 1k | Resistor_SMD:R_0402_1005Metric | R10, R11 |
| 2 | 22pF | Capacitor_SMD:C_0402_1005Metric | C7, C8 |
| 2 | 27 | Resistor_SMD:R_0603_1608Metric | R8, R9 |
| 2 | 5.1k | Resistor_SMD:R_0402_1005Metric | R2, R3 |
| 2 | Schottky Diode | Diode_SMD:D_SOD-123 | D1, D2 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | 10k | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 10uF | Capacitor_SMD:C_0402_1005Metric | C9 |
| 1 | 12MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 1999 logo | 1999:1999 logo md | H2 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 470 | Resistor_SMD:R_0402_1005Metric | R4 |
| 1 | 5.6k | Resistor_SMD:R_0603_1608Metric | R5 |
| 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 | D3 |
| 1 | JTAG_TC2030 | PCM_marbastlib-various:CON_TC2030_outlined | J2 |
| 1 | RP2040 | qw-footprints:RP2040-QFN-56 | U3 |
| 1 | USB C Connector | qw-footprints:TYPE-C_24P_QCHT | J1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | W25Q128JVS | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U4 |
| 1 | XC6206 | Package_TO_SOT_SMD:SOT-23 | U1 |
| 1 | qw-logo | qw-logo:qw new logo silk + copper md | H1 |
It measures 288.8 × 160.1 mm and has 2 copper layers, 1.6 mm thick.
63 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-SLIM repository on GitHub, at the commit this page was made from: the board is GRAM Slim/3.1/GRAM-SLIM.kicad_pcb and its schematic GRAM FGC/v1.2/PCB/KiCAD/Buttons.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-SLIM
Open source low-profile leverless design with an integrated RP2040.

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.

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

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.

