The PSLab repository is a KiCad project, a bill of materials and four copper layers
PSLab Hardware Design and Schematics https://pslab.io
At a glance
- What is it?
- pslab-hardware holds the design files for the PSLab pocket science lab, not firmware: schematics, Gerbers, a pick and place CSV, pin layout PDFs and an interactive bill of materials. The last tagged release is Version 6.0 from 2021, so the useful question is which of six documented hardware revisions you are actually building.
- Who is it for?
- Use this repository when you are building a PSLab board, replacing one, or teaching the class of labs it was designed for, since the Gerbers, pick and place file and datasheets are what turn the design into a physical device. Do not expect it to help if you want to drive a board you already own, because no firmware or host software lives here.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 68 days ago.
- What is it written in?
- Mainly Prolog, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Nothing here runs: firmware, bootloader and apps are four other repositories
The first thing to settle is what this repository is not. The README opens with "This repository contains the PSLab hardware design files", and everything after that is design data.
The software is split across separate repositories, listed in the README: a bootloader at fossasia/pslab-bootloader, firmware at fossasia/pslab-firmware, a Python library at fossasia/pslab-python, and the PSLab app at fossasia/pslab-app, which also has F-Droid and Google Play entries under the package id io.pslab and an `app` branch for Linux and Windows.
So the split is hardware here, everything else elsewhere. If you want to write a script that reads a waveform, you want pslab-python. If you want a GUI, you want the app. If you want to flash the board, you want the firmware or the bootloader. This repository is what you open when you need to change a component, regenerate the Gerbers, or understand what a pin does electrically.
There is also a hardware CI workflow badge pointing at `.github/workflows/hardware-ci.yml`, which is a hint that something in the design files is checked automatically rather than only by eye.
The tree separates editable source from generated output
The repository structure section is a directory map, and reading it tells you the workflow. Editable KiCAD sources live in `schematics/`, containing `PSLab.pro` as the main project file, a `PSLab.pretty` custom library directory, and a `3DModels` directory of STEP models. Generated board data lives elsewhere: `output/Gerber` holds the Gerber files for the current board design and `output/Images` holds images of the four copper layers.
`print/` holds the silk screen images, split into `Back-Side-Images` and a `Readme.md`. That separation means you can see the manufacturing output without touching the design source, which is exactly what you want when you only need to check whether a change landed.
`docs/` is the reference material, and it is organized by use. `docs/components` holds `BillOfMaterials.csv` and `InteractiveBoM.html`, the interactive version of the bill of materials. `docs/datasheets` holds PDF datasheets for the components used, `docs/drawings` holds CAD dimension drawings, and `docs/pin_layouts` holds `PSLab_Pin_Layout.pdf` and `PSLab_Pin_Layout.svg`.
Two directories carry honest labels. `docs/reference` is marked "TeX documentation (stale)". `docs/position_files` holds `PositionFile.csv`, the pick and place information a assembler needs to place parts. `archives/` keeps source files for previous PSLab versions, including Breakout_Boards and three KiCAD generations.
The paths you actually open, in the order a first build needs them:
pslab-hardware
archives
Breakout_Boards
PSLab KiCAD
docs
components
BillOfMaterials.csv
InteractiveBoM.html
datasheets
drawings
pin_layouts
PSLab_Pin_Layout.pdf
PSLab_Pin_Layout.svg
position_files
PositionFile.csv
reference
schematics
PSLab.pdf
output
Gerber
Images
print
Back-Side-Images
schematics
3DModels
PSLab.pretty
PSLab.proStart with `PSLab.pro`, because a KiCAD project is not a single schematic file, and treat `output/Gerber` as the artifact you hand to a fabricator rather than something to edit.
Six documented revisions, and the form factor changed twice
The version table is the most useful thing in the README, because it records design decisions rather than marketing. Each revision is described by what changed.
The KiCAD v1 entry is the original, with `SEELABLET` schematics and layout files. v2 is the developed version with a voltage regulator and an oscillator added. v3 changed the device layout to the Arduino Uno form factor. v4 is an assembly-optimised version with the Arduino Mega form factor and components mounted only on the top side. v5 added a socket for an external Bluetooth module and a bottom silk screen with pin descriptions. v6 added external power input, an RTC module, an SD card slot, USB type C, an ESP 01, and upgraded UART and power ICs.
Two patterns are worth noting. The form factor changed twice, from an unspecified original to Uno to Mega, which means enclosure designs do not carry across revisions. And v6 is mostly a connectivity revision: external power, USB type C, a wireless module and an SD card slot are additions to the interface, not to the measurement chain.
The default branch is `pslab-v6`, which tells you which revision the top of the tree is working on. When you download Gerbers from `output/Gerber` you are getting whatever the current board design on that branch produces, so confirm the revision rather than assuming it matches the tag you last looked at.
The bill of materials names exactly what goes on the board
The parts list is concrete enough to check a build against, and it starts with the microcontroller, a PIC24EP256GP204, with the toolchain named alongside: MPLAB X IDE v3.35, the MPLAB XC16 compiler, and a PICkit 3 in-circuit debugger, all supported on Linux, Windows and Mac.
The measurement chain is where the engineering decisions show. A MCP6S21 programmable gain amplifier sits in front of a MCP4728 four channel DAC, with a TL082 two channel op-amp and an LM324 four channel op-amp doing the signal work around them. Charge pumps handle the rails: a TC7660 charge pump voltage invertor and a TC1240A charge pump voltage doubler, which is the classic way to get negative and doubled voltages without an inductor.
Power and interface parts are listed too: a DS1307Z+ RTC module, an LDFM33PUR 3.3 V regulator, an LDL212PU50R 5.0 V regulator, a CP2102N-A02-GQFN24 USB-UART bridge, a 74HC126 four channel buffer and an SP0503BAHTG ESD protector, plus a 0.5 A fuse and assorted resistors, capacitors and diodes.
The ESD protector and the fuse are the two entries that matter most for a build that will be carried in a pocket and plugged into a laptop, and both are the kind of part that gets dropped when someone rebuilds from a partial list. The complete bill of materials lives in `docs/components/BillOfMateria`.
The last tagged release is from 2021 and the tags do not describe later work
Version history is the weak spot. The tagged releases are V5.0 on 2018-11-05, V6.0 on 2021-08-06, and V6.0-beta on 2021-10-20. Nothing newer carries a tag.
The repository itself is not archived and its last push was on 2026-08-16, so files are still changing on the default branch `pslab-v6`. That gap, untagged work on a tagged project, is normal for hardware design: a board revision is verified by building and measuring it, not by cutting a release, so the design file is often ahead of the last tag that names a board.
What this means for you is that the tag is a weak signal and the branch is the real state. If you need a reproducible board, the reliable unit is a commit on `pslab-v6` plus the Gerbers regenerated from that commit, not `V6.0`.
There is also a `scripts/` directory at the repository root alongside `archives/`, `docs/`, `output/`, `print/` and `schematics/`, which is where the generation scripts live if you want to reproduce the manufacturing output instead of trusting the committed Gerbers.
Where a lab kit differs from a bench instrument
The realistic comparison is with a bench oscilloscope and with buying a commercial pocket lab. PSLab is described as "a tiny pocket science lab that provides an array of test and measurement instruments", functioning like an oscilloscope, waveform generator, frequency counter, programmable voltage and current source, and data logger.
The honest difference is scope. A bench scope has a display, a front panel and a trigger you can adjust by hand, with a measurement chain specified in volts per division. A design that ships as open source files and a bill of materials is teaching and prototyping equipment: the instrument is the firmware and the app, not the board alone, which is why the README spends more space on where the software repositories are than on any performance figure.
The three repositories to compare with are the ones people actually choose between: the Arduino Uno and Mega form factors it adopted at v3 and v4 make it stackable with existing teaching hardware, and the v6 additions of USB type C and the ESP 01 move it toward wireless control without changing the measurement chain.
If you need calibrated absolute measurements to a stated tolerance, an open design with a parts list and datasheets is the wrong starting point, and the datasheets in `docs/datasheets` are where you would establish the error budget yourself.
Editorial conclusion
Use this repository when you are building a PSLab board, replacing one, or teaching the class of labs it was designed for, since the Gerbers, pick and place file and datasheets are what turn the design into a physical device. Do not expect it to help if you want to drive a board you already own, because no firmware or host software lives here. Before ordering boards, compare V6.0-beta from 2021-10-20 with the current default branch, since the repository was last pushed on 2026-08-16.
Frequently asked questions
What does the pslab-hardware repository contain?
It contains the PSLab hardware design files: KiCAD schematics in `schematics/`, Gerber files in `output/Gerber`, silk screen images in `print/`, and documentation in `docs/`. Firmware, bootloader, the Python library and the app live in separate repositories.
Which PSLab hardware version is current?
The default branch is `pslab-v6` and the latest listed release is V6.0-beta on 2021-10-20. The repository was last pushed on 2026-08-16, so the branch is ahead of the last tag.
Where can I find the bill of materials and pin layout?
The bill of materials is `docs/components/BillOfMaterials.csv` with an interactive version in `docs/components/InteractiveBoM.html`, and the pin layout is in `docs/pin_layouts/` as both `PSLab_Pin_Layout.pdf` and `PSLab_Pin_Layout.svg`.
What do I need to build a PSLab board myself?
The repository names the platform and toolchain: a PIC24EP256GP204 microcontroller with MPLAB X IDE v3.35, the MPLAB XC16 compiler and a PICkit 3 in-circuit debugger, supported on Linux, Windows and Mac. The design sources are KiCAD, with the main project file at `schematics/PSLab.pro`.
Can I use PSLab to control a board I already own?
This repository is design data, so it does not drive hardware. For that you want the firmware at fossasia/pslab-firmware, the Python library at fossasia/pslab-python, or the PSLab app at fossasia/pslab-app, which is also published for F-Droid and Google Play as io.pslab.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/fossasia-pslab-hardware)