#electronics #smt #pick-and-place #openpnp #lumenpnp #pcb-assembly #research # Overview Landscape survey of open-source and DIY-buildable SMT pick-and-place machines, scoped to my use case: prototyping and small-batch production of 1–25 boards, 0402+ passives plus QFN/QFP/SOIC fine-pitch ICs, $1.5k–4k total budget, assembling an existing open design rather than designing from scratch. Four findings drive everything else: 1. **The open-source PnP field has consolidated to one viable project.** LumenPnP v4 (Opulo) is the only open design that is actively maintained, reproducibly documented, and ships bottom vision capable of 0402 and fine pitch. Every other "classic" open design — LitePlacer, openpnp-openbuilds, Teton, PixiePlacer — is dead or unmaintained. 2. **Feeders, not the gantry, are the budget decision.** Twenty powered Opulo feeders cost roughly what the machine costs. For 1–25 board runs, cheap strip feeders are the correct answer for most of the BOM, and a small number of powered feeders for high-count passives. 3. **==OpenPnP no longer supports macOS.==** Opulo's own docs say so explicitly and recommend Ubuntu 22.04 LTS. This build requires a dedicated Linux box — it is not a "plug it into the Mac" project. 4. **The machine is not the bottleneck at my volumes — setup is.** At a realistic ~544 CPH, placing a 100-part board takes ~11 minutes; job setup takes 90–180 minutes. For runs of 1–3 boards, hand placement still wins. See [[#Recommended Configuration]] for the specific build I'd pursue and [[#Decisions]] for the reasoning. # The Shortlist | Machine | 2026 price | Status | Bottom vision | Nozzles | Verdict | |---|---|---|---|---|---| | **LumenPnP v4.1** (Opulo) | $1,995 bare | **Alive**, v4.1.0 released 2026-02-25 | Yes, standard | 2 | **Primary recommendation** | | Pandaplacer CC1 | $569 | Alive, semi-open | Yes (720p) | 1 | Cheap alternative, no CAD published | | MicroSMT PNPv3 | $750 | Alive, semi-open | Yes | 1 | Bing feeders are the draw | | AFARCO PnP V3.2 | $1,968 | Alive, not open | Yes (5MP top) | 2 + changer | Good frame, weak electronics | | Charmhigh CHMT36VA | $2,700 | Commercial + retrofit | Yes | 2 | Best OpenPnP retrofit target | Key LumenPnP v4 specs, from the [v4 datasheet](https://cdn.shopify.com/s/files/1/0570/4256/7355/files/brochure-v4_compressed.pdf?v=1783522165) (vendor): - **CPH: 950 with vision, 1580 without.** Run with vision for 0402/fine pitch, so 950 is the ceiling. - Minimum part 0402; 0.4 mm IC pitch; 0.5 mm BGA pitch - Max part Ø 30 mm, max height 20 mm, max weight 25 g - Staging-plate tradeoff — board size vs feeder count. The mixed-feeder numbers are the ones that matter for my strip-first strategy: | | Dual staging plate (ships standard) | Triple staging plate | |---|---|---| | Max PCB | 240 × 150 mm | **390 × 210 mm** | | Powered feeders only | **50** unique parts (8/12 mm tape) | 25 unique parts | | Powered **+ strip** feeders | **77** unique parts, 64.9% automated | 79 unique parts, 31.6% automated | - 5 axes (X, Y, Z, A, B), 2 vacuum nozzles, CP40-standard nozzle tips - Custom STM32 motherboard (REV05), top and bottom cameras included, 145 W - Up to 50 feeder slots; 16 mm and 24 mm feeders consume 2 slots each Package pricing from [opulo.io/products/lumenpnp](https://www.opulo.io/products/lumenpnp): | Package | Price | Feeders included | |---|---|---| | Bare machine | $1,995 | Strip feeders only | | Basic | $2,450 | 5× 8mm powered + strip feeders | | Standard | $4,990 | 20× 8mm, 5× 12mm, 3× 16mm, 2× 24mm powered | | Fully Loaded | $7,990 | — | ==The Standard package at $4,990 exceeds my budget.== The in-budget path is bare machine or Basic plus selectively-added feeders — see [[#Feeders — The Real Decision]]. ## Documentation and support This is LumenPnP's decisive advantage. Full MkDocs site with separate tracks per hardware revision, a 10-step Issues & Solutions calibration walkthrough, a calibration-validation track, vision-pipeline adjustment guide, a [layout config tool](https://config.opulo.io/), active Discord, paid support at support.opulo.io, and a 1-year warranty (extended from 3 months in Sept 2026). Nothing else in this survey is close. ## Can I actually build one from parts? Partly, and probably not worth it: - **There is no kit anymore.** The [BYOP kit docs](https://docs.opulo.io/byop/) are frozen at **v2** hardware, two generations obsolete. - The [v4 DIY guide](https://docs.opulo.io/guides/diy-v4/) is marked **(WIP)** and defers the bulk of instructions to [OHAI](https://ohai.opulo.io/), Opulo's internal factory work instructions, which reference jigs that only exist at Opulo HQ. It warns the build "will likely require debugging, referencing documentation, and rolling with some errata." - Opulo sells the sub-kits individually — frame $120, control box $249.99, toolhead $59.99, camera set $140, MGN12H rails $249.99, NEMA17 4-pack $79.99 — which sums to $1,100–1,500 *before* extrusion, belts, pulleys, pneumatics, and print time. **Scratch-building does not save money against $1,995.** - If building anyway: pick one release version and do not change mid-build. # Dead and Historical Worth knowing so I don't waste time following stale recommendations — including OpenPnP's own, since its [Build FAQ](https://github.com/openpnp/openpnp/wiki/Build-FAQ) was last edited 2021-05-13 and still recommends two of these corpses. [openpnp.org/hardware](https://openpnp.org/hardware/) doesn't list LumenPnP at all. | Project | Last activity | Notes | |---|---|---| | **LitePlacer** | Store closing, 2026 | Juha Kuusama retiring for health reasons; site kept up for documentation only. Community archived the site 2025-12-21. Still listed as recommended on openpnp.org. | | **openpnp-openbuilds** | Commit 2017-06-19 | 9 years stale. Build guide (2015) says "not for the faint of heart… instructions are not very good… I suggest waiting for the next revision," which never came. **No bottom camera in the BOM.** CAD is in discontinued Cubify Design. Shipped `machine.xml` doesn't load in OpenPnP 2. | | **Teton Technology DIY PnP** | Last log 2016-03-19 | tetontechnology.com is now a fuel-tank monitoring business. All CAD lives behind dead Autodesk A360 links. **No bottom camera.** Requires milling, not printing. Still the frame OpenPnP's Build FAQ recommends. | | **PixiePlacer** | Commit 2024-01-15 | CC0-licensed, genuinely good solo documentation, bottom vision + nozzle changer, larger work envelope than LumenPnP. But author absent (answered 1 of 7 discussion threads, last in Nov 2023), feeders listed "In Development," no CPH or minimum-part data anywhere, no kit ever existed. The only third-party builder I found said it "wasn't really appropriate for a production environment" and bought a commercial machine instead. | | **ICEpick head** (BETZtechnik) | Commit 2020-03-18 | Design frozen, CC BY-NC (not OSHW), BOM wiki effectively empty. **But parts are still sold** — dual-nozzle heads $99–526, CP40 nozzle holders $59. Useful vendor, stale docs. | | richardklingler/openpnp | Changelog ends 2020-09-12 | "Work is on hold due to missing funds." Author calls his own Igus rails "unacceptable." | ==Could not confirm: "Chipmunk PnP" and "Boltz PnP" appear not to exist — zero hits on GitHub topics, Hackaday, or the OpenPnP group.== # Watch List — 2025/26 Newcomers None are buildable today, but worth re-checking in 6–12 months. - **Machdyne PNP "Eins"** — [github.com/machdyne/pnp](https://github.com/machdyne/pnp), CERN-OHL-P-2.0, NLnet-funded. The most genuinely open newcomer: ~850 × 450 mm envelope, top *and* bottom vision, BTT Octopus + Marlin, 0402 tested, a real 243-line ASSEMBLY.md. But 19 stars, 1 fork, last activity 2024-09-20, and **no evidence anyone outside Machdyne has built one.** Max placement speed listed as "YTBD." - **OrionPnP** — [github.com/TheIgorMC/orionPnP](https://github.com/TheIgorMC/orionPnP), GPL-3, pushed 2026-09-09, 152 commits. Real engineering: custom board with per-nozzle isolated pressure sensors, RS485 distributed smart-feeder bus with auto-addressing, ~€800 target. But the wiki says **"!!! THE MANUAL IS NOT YET COMPLETE !!!"**, no finalized BOM, 2 stars / 0 forks — nobody has built one including the author. - **3DPlacer** — [github.com/xpDIY/3DPlacer](https://github.com/xpDIY/3DPlacer), converts an Ender 3 / Anycubic / Kingroon into a PnP. 52 stars / 15 forks, pushed 2026-07-23, claims 0201/0402 and 30+ feeders under $1k. But `doc/` contains one ~5 KB file, no BOM, no assembly guide, and **no bottom camera mentioned anywhere** — treat QFN/QFP as unproven. - **Klipper-based firmware** — `pick`/πck ([majastanislawska/pick](https://github.com/majastanislawska/pick)) is a Klipper fork purpose-built for PnP with real pneumatics support and central-endstop homing for the ICEpick head. KliPiNP is similar but its README is still a template. These replace the motion firmware; OpenPnP still does vision and job management. **Relevant counterpoint:** OpenPnP's own [Design Comparison](https://github.com/openpnp/openpnp/wiki/Pick-and-Place-Design-Comparison) argues against 3D-printer-derived PnP designs — the head is much heavier, printed parts are structurally inadequate, Z must *rotate* accurately for fine pitch, and "rapid movements of a heavy head will make the machine move across tables and the floor." # Semi-Open Asian Kits Not open hardware (no published CAD or BOM), but they *are* "assemble an existing design" and they sit inside budget. This is where the market actually moved in 2025–26. The most useful independent datapoint in the whole survey — a 2026 AFARCO V3.2 owner on the [OpenPnP group](https://groups.google.com/g/openpnp/c/ZhKG0a9i4kI): > I only get around **700–800 CPH** with vision enabled. He also: shipped with no vacuum blow-off and added it himself; ran fine on 0603+ but **"replaced the cameras with Lumen ones, which helped a lot. Now I run 0402s."** No Y auto-squaring and no spare GPIO to add it. No controller idle mode, so motors overheat, torque drops, and the machine crashed when accel was tuned cold. His verdict: *"I would totally buy it as a frame kit and use his feeders, but I think the electronics are currently lacking."* **That camera swap is the single most important finding for my requirements.** The stock optics were the binding constraint on 0402 — which is precisely what LumenPnP v4 spent its development budget on. A Pandaplacer owner who **sold his LumenPnP** for one reports *"I've pushed ~6k SOD323 diodes without a bad pick. 0402 work"* — but also difficult frame tramming, needing vibration damping, and *"the ribbon cables for data and power to the axis' worry the heck out of me."* Pandaplacer's store also carries one scathing review: *"No documentation, No communication. Config files do not work."* ==Caution pattern: a "PSE-3000" appeared in the OpenPnP group 2026-09-06 shipping a vendor-modified OpenPnP whose config won't load in upstream OpenPnP. Verify upstream compatibility before buying any vendor-configured machine.== # Feeders — The Real Decision ## The architectural constraint From Bing Luo on the [OpenPnP group](https://groups.google.com/g/openpnp/c/JucIVeN_f0Q): > If you have used the 0816feeder, you will know that it is impossible to work for 0402 through push-pull operation, because you need to push it forward through the holes on the tape. The minimum spacing between the holes on the tape is 4mm… while the spacing between 0402 is 2mm. **Push-pull and drag feeders are architecturally wrong for 0402.** You need sprocket- or cam-driven feeders with sub-4 mm indexing. A cheap machine with sprocket feeders beats an expensive machine with drag feeders on this specific requirement. ## The 2026 change that matters OpenPnP gained **vision-assisted sprocket-hole localization** for auto feeders (`BambooFeederAutoVision`). Bing Luo's framing: *"After openpnp provided the visual positioning function of the automatic feeder, the sprocket feeder can become a standard configuration for DIY, with a cost of only $10."* He removed the 2 mm-step sprocket from his design entirely because vision finds parts that are 2 mm off. This is what makes a $16 feeder viable. Remaining limitation, in his words: *"The biggest drawback… is the lack of a shutter, which cannot be solved"* — uncovered plastic tape lets light parts bounce out on a DIY frame. ## Cost comparison for ~20 distinct parts | Approach | Feeder spend | Total w/ $1,995 machine | |---|---|---| | 20× Opulo powered (4× 5-pack @ $480) | **$1,920** | $3,915 (+$358 reel holders = **$4,273, over budget**) | | 5× Opulo powered + strips for the rest | $645 | $2,640 | | ~21 lanes of Opulo strip feeders (7× 8mm @ $9.99) | **~$70** | $2,065 | | Printed strip feeders (Menlu / Opulo CAD) | **~$10 filament** | ~$2,005 | | 20× Bing feeder kits ($16) + MEGA2560 + prints | ~$320 + board | ~$2,400 | | 7× T-2 triple-8mm (~€70) = 21 lanes | ~$550 | ~$2,550 | Opulo powered feeders are **$495 per 5-pack ($99 each)**, dropping to $94 at 7+ packs. ==An older, still-live Opulo page shows $475/5-pack and v1.4.0 — confirm pricing at checkout.== Supporting costs: Reel Holder $179 per rail (25 cassettes, "strongly recommended" for 12 mm+), Feeder Loading Station $95, Feeder Connection Kit $155 (pre-installed on v4, only needed for DIY/older machines). Realistic all-in per populated 8 mm slot: **~$101–106**. ## Why strips are the right default at 1–25 boards A 120 mm 8 mm strip lane holds ~30 parts at 4 mm pitch, ~60 at 2 mm pitch. Pat Deegan's longer 160 mm printed lanes hold *"80 0402s or 40 0603s."* Crossover math: 25 boards × 40× 0402 caps = 1,000 parts = ~12 reloads **for that one part**. For 1–5 boards it's ~1 reload, i.e. zero payback. **Powered feeders only earn their keep on standing-library high-count passives** — realistically 5–10 parts (0.1 µF, 10k, 1k, common LEDs). Everything else should be strips. The honest costs of strips-only: manual cover-film removal, per-batch refilling, unprotected tape lets light parts pop out (BlindsFeeder fixes this), you must buy cut tape rather than reels, and you burn staging-plate real estate. ## Open feeder designs worth knowing | Design | Cost | Motorized | Notes | |---|---|---|---| | **Opulo / Photon** | $99 | Yes (2× N20) | RS-485 Photon protocol, 1-Wire EEPROM per slot for auto-discovery. Peel gearbox tested 250k cycles / 1 km tape. Firmware v1.0.6 (Sept 2026) = "tremendous improvement in precision… with 0402 parts and tape with 2mm feed pitches." | | **Bing feeder v3** (microsmt) | **$16 kit** + prints | Yes | **MIT license.** Photoelectric sensor on sprocket = closed loop. Elastic pad adapts to tape thickness. One MEGA2560 drives 48 feeders. | | **BambooFeeder AS2** (Pandaplacer) | servo + prints | Yes (hobby servo) | CC BY-NC-SA, fully printable, 2 mm pitch for 0402/0201 via vision. Needs a BFC controller board. Files updated Dec 2025 / Mar 2026. | | **BlindsFeeder** (Mark Maker) | filament | No | Best non-motorized design. Printed lane arrays with covers the nozzle shifts open. **Solves the part-bounce problem.** Needs vivid green filament for the CV pipeline. | | **0816feeder** (mgrl) | ~$10 | Yes | Long-standing DIY reference, reports cover-tape tension back to OpenPnP. **Last updated 2020-03-21 — frozen.** | | **T-2 / "Ray"** (AliExpress) | ~€70 per triple = **~€23/lane** | Yes | RS-485 via plain USB adapter, `M600 N<addr> F<teeth>`. Community has published a 3D scan and STEP file (Feb 2026) plus the GcodeDriver regex fix for RS-485 collisions. Mixed reviews: *"sharp-edged, the cover tape is fiddly… the tape hangs free, so components can jump with thin plastic tape."* | | **XAutoLab** | $39 "LumenPnP compatible" | Yes | ==Unverified vendor, new storefront, no independent reviews. Their $34 AS2 servo feeder needs their own $34 control board and is NOT Photon-compatible. Buy one before buying twenty.== | ## The warning I should take seriously From the Apr 2025 OpenPnP "Feeders" thread, Marco Blancato, who built ~20 of his own Bing-derived feeders: > they all have major issues with the precise positioning of the component when the tape advances… With cardboard tapes and components down to 0805, the errors are manageable. But with plastic tapes or 0603s (let alone 0402s), it's a nightmare. So at the moment, I only use these feeders for 0805 resistors (with some cursing), and I handle everything else with simple StripFeeders or even manually. What rescued him was **software, not hardware**: *"this problem is fully resolved by using the BambooFeeder in OpenPnP, which recognizes the tape holes."* And bert shivaan, bluntly: *"If you are going to make your own, I HIGHly recommend reading EVERY 'I am making a feeder' thread here. Once you do if you are still planning to do it, I let us know so I can get the popcorn and watch… so far I don't recall many making it to the end."* ## ICs in trays and tubes Don't build anything. Distributors ship QFN/QFP/SOIC in 12/16/24 mm cut tape, so use a **12/16/24 mm strip feeder** ($9.99, CAD published). Strip feeders also allow 6.5 mm tape depth vs the 8 mm powered feeder's 2.5 mm, so they handle thicker bodies. ==The 2.5 mm depth limit on the 8 mm powered feeder is where most reliability complaints cluster.== `ReferenceTrayFeeder` exists for real JEDEC trays but has no vision and needs precise fixturing; `ReferenceTubeFeeder` assumes you bought vibratory hardware, and I found no open-source vibratory feeder for OpenPnP. # Software Reality ## OpenPnP status - **Latest stable: 2.6, released 2026-03-01.** Cadence is ~6 months, even = stable, odd = `test` branch. - Java/Swing, GPL-3, ~5,155 commits, 161 open issues but only ~24 filed in the last 12 months. - `main` looks dead because it only takes release merges; real work is on `test` (~1 merge/week in Aug 2026). - **Bus factor is the real risk.** Toby Dickenson does nearly all merges and both recent releases. Jason von Nieda (founder) is absent from day-to-day work but is the only person who can edit the downloads page and S3 bucket — in June 2025 Toby had to ask who could edit it. - ==CI was failing on `test` from ~2026-08-20, and no new binaries had reached the S3 bucket since 2026-07-03 for any platform. Re-check before installing.== - ==Mark Maker (makr.zone), author of Issues & Solutions, Advanced Motion Control, backlash calibration, vision compositing, and BlindsFeeder, appears absent from Jul–Sep 2026 threads. Unconfirmed, but if he's gone the most sophisticated calibration subsystems have no maintainer.== ## macOS is a blocker From [Opulo's v4.1 install page](https://docs.opulo.io/openpnp/v4-1/preflight/install-config/install-openpnp/), verbatim: > **MacOS Not Supported** — OpenPnP no longer supports MacOS with the latest release. If you are currently using a Mac, you will need to switch to Linux or Windows. Their v4.0 page is blunter: *"MacOS is no longer supported, nor functional with OpenPnP"* — forcing Mac users onto the 2023-04-05 build. Root cause is the `openpnp-capture` JNI layer; [issue #1697](https://github.com/openpnp/openpnp/issues/1697) ("OpenPNP not usable on MacOs regardless of version used," cameras absent on Sequoia) has been open since 2024-11-14. **Opulo recommends a Lenovo ThinkPad on Ubuntu 22.04 LTS.** Windows is "Supported but Not Recommended." Linux setup: `sudo apt-get install openjdk-17-jdk`, add user to `dialout`, reboot, then launch and close OpenPnP once before importing config files. ==OpenPnP fails silently if Java is missing.== The only hardware spec Opulo publishes, verbatim from the [v4 datasheet](https://cdn.shopify.com/s/files/1/0570/4256/7355/files/brochure-v4_compressed.pdf?v=1783522165): > **Requirements** — One computer running Ubuntu Linux 24.04 and OpenPnP. Must handle 2x 1080p USB webcam feeds and 1x USB serial port simultaneously No CPU or RAM minimum is stated anywhere. ==Note the OS discrepancy: the datasheet says Ubuntu 24.04, while the current v4.1 install docs recommend 22.04 LTS and say "this is the platform we test on." Going with 22.04 to match the tested path.== **Control computer: solved at $0 — using an on-hand Dell OptiPlex Micro.** Selection and setup notes: - Pick the newest / highest-core-count unit available. CPU generation is the only thing that meaningfully affects OpenCV pipeline speed; an i5-8500T (6 cores) is a real step up from an i5-6500T (4 cores) for vision work. The 35 W T-suffix CPUs in Micros throttle under sustained load, but vision work is bursty, so it isn't a practical problem. - **8 GB RAM minimum.** 4 GB is workable but tight with the JVM plus two 1080p camera streams and OpenCV buffers. - Three USB devices total: top camera, bottom camera, machine serial (USB-B). The feeder RS-485 bus runs off the LumenPnP motherboard, not the PC, so it needs no port. Every OptiPlex Micro has enough ports. - ==**Do not put the cameras on a USB hub.** PixiePlacer's docs say so emphatically ("Don't use a USB Hub!") and OpenPnP users report cameras freezing mid-job through hubs. One root port per camera. If a camera misbehaves, try moving it between USB 2 and USB 3 ports — some UVC cameras are unhappy on xHCI.== - Having spare identical hardware is a genuine advantage here, since OpenPnP config files are forward-only and can't be downgraded. Image the drive once calibration is good, and keep `.openpnp2` backed up. My machine is macOS 26 (Darwin 25.6), two major releases past that open bug report. Budget for a dedicated Linux box — see below for why it shouldn't be a Raspberry Pi. ## Raspberry Pi is not a viable control computer Checked specifically (Pi 5 4GB vs Pi 4 8GB). **Neither works, and the blocker is the camera driver, not CPU or RAM.** - `openpnp-capture`, the native USB camera layer OpenPnP uses by default, **has no working ARM64 pipeline.** [openpnp-capture issue #60](https://github.com/openpnp/openpnp-capture/issues/60) — "Any update on the 64bit arm camera pipeline. Its broken on Raspberry Pi OS 64-bit" — was opened **2022-11-06** and is **still open, unassigned, labeled 'enhancement', with no linked PRs.** Nearly four years. - Same failure on Pi 4: [openpnp issue #950](https://github.com/openpnp/openpnp/issues/950) (Feb 2020), Pi 4 4GB, *"I can not setup any camera… Camera settings will not show."* - **The Java app itself does run on aarch64** — the crash log in the Pi 5 thread below shows `OpenJDK 64-Bit Server VM … linux-aarch64`. So this isn't an architecture wall, it's one unmaintained native library. Note the official installers bundle an x86 JRE, so on ARM you'd use the `.tar.gz` against a system JDK or build from source with Maven. **The only person who got cameras working on a Pi 5** ([OpenPnP group, Oct 2024 – Mar 2025](https://groups.google.com/g/openpnp/c/xQZFaefmlj4)): `OpenPnpCaptureCamera` failed exactly as on Pi 4, so he fell back to `GstreamerCamera` with `libcamerasrc` and two **MIPI** imx290 sensors. It took him **Oct 2024 to Mar 2025**, and he had to *write a C program* to get usable error output. He then hit a **SIGSEGV when enabling "Suspend during tasks"** — the very option he wanted *"which seems useful on Raspberry"* to cut CPU load — and throttled the down-camera to 60 FPS *"to lessen the stress on the rpi."* His closing note: ==*"have not yet setup my OpenPnP machine on this Pi yet"* — so nobody has demonstrated an actual placement job running on a Pi.== **That workaround doesn't even transfer to a LumenPnP**, which ships two **USB UVC** cameras ($140 camera set), not MIPI sensors. A `v4l2src` GStreamer pipeline might work, but it's undocumented and unproven, and as Ian Arkver (who wrote the GStreamer camera driver) put it: *"GstreamerCamera isn't very easy to use and does assume some familiarity with Gstreamer."* Historical context from Jason von Nieda (2016): *"the OpenCV bundle does not include binaries for Pi"* and with uplooking-camera vision added, *"it's too much for PI."* Every vision feature since has made that worse. **If forced to choose between the two:** Pi 5 4GB, not Pi 4 8GB. The binding constraint is single-thread CPU for the OpenCV pipelines (Cortex-A76 @ 2.4 GHz vs A72 @ 1.8 GHz), not memory — 4 GB is adequate for OpenPnP. But the Pi also lost its price argument: 2026 DRAM shortages pushed the Pi 5 4GB from $60 to $70 MSRP, with Digikey at **$101** in Feb 2026, while **used i5 mini-PCs run $40–150**. ==Decision: used Lenovo ThinkCentre Tiny / Dell OptiPlex Micro / HP EliteDesk Mini, i5-8500T or better, 8–16 GB, Ubuntu 22.04 LTS. Cheaper than a Pi, several times the vision throughput, and the only architecture Opulo actually tests.== ## Vision and calibration The algorithms are good enough for 0402 and 0.5 mm pitch — Opulo published a ["v4 Populating 0402" video](https://www.youtube.com/watch?v=XmiKOtXcUEM) on stock OpenPnP 2.6. Whether *my* machine gets there depends on mechanics, lighting, and tolerance for a multi-week debugging loop. Cautionary tales: - A user spent **three years** failing to place 0402 reliably. The fix took ~5 weeks of public debugging and was a *stack* of independent faults: fiducial locator `Max Distance` default of 4 mm (should be ~1 mm on dense boards), wrong parallax settings, wrong axis steps/mm, backlash tolerance entered 10× too large, and bad up-looking-camera LED lighting at the FOV edges. - A TSSOP20 refused to center; the log showed 99% of the image masked. Cause: **a reflective rotation pulley visible in the bottom camera FOV.** Fixed with black foam. Residual error ~0.15 mm, which reflow surface tension absorbed. - On fine pitch the error budget is brutal: ~1.2° of bottom-camera rotation compromises a 0.5 mm-pitch QFP64, and 0.125 mm of nozzle runout counts as "really good." Opulo's own warning: *"learning the software and calibrating your machine can take **many hours**, and that time should be set aside."* ==No credible published hours-to-first-good-board figure exists.== **Calibration philosophy reversed between doc versions.** v4.0 docs told users to *avoid* Issues & Solutions; **v4.1 docs are built around it.** If I find older LumenPnP tutorials, I must check which philosophy they assume — the two paths are not interchangeable. And per [Opulo issue #482](https://github.com/opulo-inc/lumenpnp/issues/482), the docs declare you calibrated and send you to your first job *before* the precise nozzle↔camera offset steps — **do those before judging accuracy.** **Config files are forward-only.** `machine.xml`, `*.board.xml`, `*.panel.xml` and job files written by a newer OpenPnP won't load in an older one. Back up `.openpnp2` before every version change. One user going 2.4 → 2.6 found 45° rotations **silently ignored**; the fix required enabling unlimited axis rotation, switching nozzles to `AbsolutePartAngle`, and reconfiguring the entire vision library. ## KiCad → OpenPnP Built in: `File → Import Board → KiCAD .pos`, plus Reference CSV, Altium CSV, Eagle importers. Known rough edge: [issue #1176](https://github.com/openpnp/openpnp/issues/1176), "Import Board on KiCAD .pos does not assign every part." Third-party tooling worth setting up early — at 1–25 boards my cost is dominated by library setup: - **[kicad-to-openpnp](https://github.com/mmalecki/kicad-to-openpnp)** — the highest-leverage one. Generates OpenPnP packages *and* parts, deriving pad definitions from footprints via the KiCad Python bindings and physical dimensions from footprint **3D models** via CadQuery bounding boxes. Installed via `pipx`. This eliminates hand-entering package geometry, which is the real grind. - [kicad-mod2openpnp](https://github.com/CatoLynx/kicad-mod2openpnp) — `.kicad_mod` pads → OpenPnP package XML - [FeederUtils](https://github.com/atanisoft/FeederUtils) — `kicad_tools/` automates package/part management from the PCB - [psypnp](https://github.com/psychogenic/psypnp) — Pat Deegan's scripts for bulk feeder/feedset management (`auto_feed_setup`, `generate_map`, `export_feed_config`, `feeders_check_height`, `feeders_translate_set`) One feeder per **unique part**, not per placement. Every feeder must have a Part assigned before the machine config will save. ## What 2.6 fixed that matters at my volumes - **Retry of the full pick/vision/place cycle** when vision fails (previously job-stopping) - **Per-feeder success/failure tally, auto-disable after 3 failures in 6 placements** - **Feeder Priority** (Low/Normal/High) so a nearly-empty tape drains before switching reels automatically; closest-feeder selection among equals - **Rank** for "place X before Y"; `Job.Error` and `Feeder.Fault` script hooks - Concurrent feeding during machine movement; auto-adjusting feeder pick position - Replaced the stale `ReferenceStripFeeder` default vision pipeline - "Through-Board Depth" part property (2.4) for alignment pips, THT pins, board-edge overhangs ## Alternatives **There is no second option.** No new general-purpose open-source PnP control software appeared 2024–26. ==Searched for "ObraPnP" and "FlexPnP" — found no trace of either; names may be wrong.== Klipper efforts replace motion firmware, not OpenPnP. [UniVision](https://www.uni-vision.hu/) (Hungarian, 30-day trial) does top/bottom recognition over TCP/RS232/RS485 but is only relevant if building a custom controller stack. ## Community Alive but small, and it's a mailing list, not a support org. The [Google Group](https://groups.google.com/g/openpnp) has 5,213 total conversations and ran ~4 threads/week in mid-2026, a meaningful share of them hardware or for-sale posts. Quality of help is high — core devs ask for your `machine.xml` and TRACE log and actually debug it. Discord exists for both [OpenPnP](https://discord.gg/EmsrFVx) and [Opulo](https://discord.com/invite/TCwy6De), but as one 2026 comment put it: *"Discord does waste a lot of valuable discussions. It cannot function as a knowledge database."* Search the Group and wiki first. # Throughput Reality ## The CPH numbers don't agree with each other | Source | CPH | Note | |---|---|---| | Opulo product page marketing | 1580 | No vision — not applicable to 0402/fine pitch | | Opulo v4 datasheet | **950** | "with vision" | | Derived from Opulo's own [hand-vs-machine white paper](https://cdn.shopify.com/s/files/1/0570/4256/7355/files/hand-place-vs-lumenpnp-white-paper.pdf) | **544** | 29 placements × 4-up panel in 12.8 min = 57% of datasheet | | AFARCO V3.2 owner, measured | 700–800 | Comparable 2-nozzle machine | | Charmhigh CHMT36VA, OpenPnP-retrofitted | 600–700 | User-measured | **Use 544 CPH for planning.** ==No independent, non-vendor measured LumenPnP v4 CPH figure exists — Reddit and EEVblog were unreachable during this research.== Also note Opulo's product page simultaneously claims "16× faster than hand" and "13× faster than outsourcing," while their own white paper says **3.7× faster than hand at qty 100 including setup**. The 16× figure compares no-vision CPH against hand and excludes setup. **Use 3.7×.** ## Setup dominates at my volumes 100-placement board wall clock: 3.8 min @1580 · 6.3 min @950 · **11.0 min @544 (realistic)**. | 100-place board, 544 CPH | Run of 5 | Run of 25 | |---|---|---| | Setup (90–180 min) + 2.5 min resets | 100–190 min | 150–240 min | | Actual placing | 55 min | 276 min | | **Setup share of total** | **65–78%** | **35–46%** | | Total | 2.6–4.1 h | 7.1–8.6 h | ## Hand-placing break-even Opulo's measured hand rate: **21 min for 29 placements = 43 s/placement**, 135° tweezers, technician with 3 years SMT experience, population only. Break-even (120 min job setup, 40 s/place hand vs ~7 s/place machine-equivalent including resets) lands at **~220 total placements per job**: - 60-place board → ~4 boards - 100-place board → ~2–3 boards - **Single prototype of any size → hand always wins** (setup exceeds the whole job) My 1–25 board envelope straddles this. Qty 1–3 favors hand; qty 5+ favors the machine **provided the job stays configured.** The economics live in changeover, not CPH — which is why the feeder/strip workflow matters more than the machine's top speed. # Build vs Outsource JLCPCB Economic PCBA fee schedule (updated 2026-09-09, [source](https://jlcpcb.com/help/article/pcb-assembly-price)): setup **$8.18**, stencil $1.53, SMT **$0.0016/joint**, extended-part fee **$3.07/part**, X-ray $1.64/component (1–10), minimum 0402 / 0.40 mm pitch, 1–3 day build. Standard PCBA: setup $25.56 1-side, 0201 / 0.35 mm minimum, ≥4 days. **Critical: JLC bills joints, not placements.** 60 placements ≈ ~220 joints. Modeled cost, 50 × 50 mm board, 220 joints, 20 unique (8 extended), 2 QFN: | | qty 5 | qty 10 | qty 25 | |---|---|---|---| | Assembly subtotal | $52.43 | $54.19 | $84.07 | | **Assembly $/board** | **$10.49** | **$5.42** | **$3.36** | | **Realistic all-in $/board** (incl. PCB, parts, shipping) | **~$29** | **~$16** | **~$10** | **Setup + extended-part fees ($34) dominate below ~qty 25** — ~65% of assembly cost at qty 5, ~40% at qty 25. PCBWay headline: 3–5 day lead time, free stencil with assembly, framed stencils $15–45 standalone. ==Could not retrieve PCBWay's itemized per-joint schedule.== **Consignment is the hidden cost at low qty:** JLC doesn't ship parts separately and sacrifices 10–20 pcs of leader tape per reel; PCBWay requires 5–20 spare pcs per part type regardless of build quantity. Against ~$16/board outsourced at qty 10, a mid-config in-house setup needs **~475 boards to break even on cash.** What it actually buys is **1-day turns instead of 14** — which is the real argument, not cost. # Rest of the Line | Item | 2026 price | Source | |---|---|---| | Opulo High-Precision Paste Printer (3040 jig) | $450 | Opulo accessories | | Stencil, JLC frameless 100×100 | from $3 (1st free w/ new-user coupon) | jlcpcb.com/pcb-stencil | | Stencil, framed 370×470 (fits 3040 printer) | $15 PCBWay | pcbway.com | | Loctite GC-10 paste (stencil print) | $145 | Opulo | | Loctite GC-50 75 g (dispense) | $95, **room-temp stable, no refrigeration** | Opulo | | Controleo3 controller only | $149 | whizoo.com | | Controleo3 toaster-oven build kit | $395 | whizoo.com | | Controleo3 ready-to-run oven | **from $1,195** — Opulo's stated favorite | whizoo.com | | CP40 6-piece nozzle set | $75 | Opulo | | Extra staging plate | $70 | Opulo | | Linux control laptop | ~$400 used ThinkPad | — | Opulo recommends **electropolished** stencils for paste release, and for double-sided work GC-10 on side 1 with a lower-temp paste on side 2. ==Could not verify 2026 pricing: MHP30/MHP50 and AiXun hot plates, T962/Puhui T-962A, benchtop reflow ovens in the $500–3,000 band other than Controleo3, USB/stereo microscopes. All vendor sites returned empty or JS-gated bodies.== ## First-year total cost of ownership | | Lean | Mid | Loaded | |---|---|---|---| | Machine package | Basic $2,450 | Standard $4,990 | Fully Loaded $7,990 | | Paste printer | 450 | 450 | 450 | | Reflow | Controleo3 kit 395 + oven ~80 | ready-to-run 1,195 | 1,195 | | Paste | 145 | 240 | 240 | | Spare nozzles / staging | — | 75 | 150 | | Linux laptop | 400 | 400 | 500 | | Stencils + consumables | 210 | 250 | 300 | | **First-year total** | **~$4,130** | **~$7,600** | **~$10,675** | # Recommended Configuration **LumenPnP v4 bare machine + selective feeders + strips.** Target ~$2,500–3,500 for the machine side, leaving room in the $4k envelope for the rest of the line. | Item | Cost | |---|---| | LumenPnP v4 bare (includes top + bottom cameras, control box, nozzle tips, staging plate) | $1,995 | | Opulo strip feeders — 7× 8mm + a few 12/16/24mm (≈25 lanes) | ~$100 | | OR print Menlu / Opulo strip feeder CAD | ~$10 filament | | Control computer — **on hand**, Dell OptiPlex Micro + Ubuntu 22.04 LTS | $0 | | **Subtotal to first board** | **~$2,100** | | *Later, once I know which 5 parts I reload constantly:* 1× 5-pack Opulo 8 mm powered feeders | +$495 | | *Later:* Reel Holder (if going 12 mm+) | +$179 | Sequence: 1. Buy the machine bare. **Do not buy 20 powered feeders up front** — that's $1,920 spent before I know my actual reload pattern. 2. Build Pat Deegan's feedset trays and install psypnp so refills are a tray-swap rather than a re-teach. 3. Run for a month on strips only. Log which parts I reload. 4. Buy **one** 5-pack of powered feeders for those parts. Optionally validate one Bing kit ($16) or one XAutoLab unit ($39) first before committing to a cheaper path. # Decisions - **LumenPnP over everything else**, despite it being "buy assembled" rather than "build from a kit." The open-design alternatives are dead (LitePlacer, Teton, openpnp-openbuilds), unmaintained (PixiePlacer), or unbuilt by anyone (Machdyne, OrionPnP, 3DPlacer). Scratch-building a LumenPnP from Opulo sub-kits costs $1,100–1,500 before extrusion and print time, so it saves nothing against $1,995. I still get full CAD, firmware, and source to read and modify — which is what "open" buys me in practice. - **Strip feeders first, powered feeders later and selectively.** 10–200× cost ratio against a workflow penalty measured in minutes per batch. Powered feeders are a production answer to a production problem I don't have yet. - **x86 Linux box, not the Mac and not a Raspberry Pi.** OpenPnP's macOS support is gone (camera bug open since Nov 2024) and its ARM64 camera pipeline has been broken since Nov 2022 with nobody assigned. Using an on-hand Dell OptiPlex Micro, which clears Opulo's stated requirement (2× 1080p webcam feeds + 1 USB serial port) with room to spare and costs nothing. - **LumenPnP over the cheaper Asian kits**, specifically because of the cameras. The one well-documented 2026 AFARCO build only achieved 0402 after its owner **replaced the stock cameras with LumenPnP ones**. Paying for the optics up front is paying for my stated requirement. - **Don't build my own feeders.** Two independent builders with ~20 self-built feeders each report them unusable below 0805 on plastic tape. The money saved isn't worth the debugging. - **Plan for 544 CPH, not 950 or 1580**, and plan around setup time rather than placement speed. - **This does not replace JLCPCB.** At ~$16/board for qty 10, outsourcing is cheaper for anything I'm not iterating on. The machine buys same-day turns on designs I'm actively revising — that's the justification, not unit cost. # TODO - ==Confirm Opulo feeder pricing at checkout — two live pages disagree ($495/5-pack v1.5.0 vs $475/5-pack v1.4.0).== - ==Check whether OpenPnP CI is building again and whether fresh binaries have landed in the S3 bucket (stale since 2026-07-03 as of this research).== - ==Verify LumenPnP v4 lead time before ordering — community reports ≥1 month persisting into Feb 2026, though Opulo claimed 3 weeks in Sept 2026.== - ==Decide board-size vs feeder-slot tradeoff: 390 × 210 mm boards with 25 powered slots, or 240 × 150 mm with 50. Dual plate + strips reaches 77 unique parts at 64.9% automated, which probably wins unless I routinely build boards over 240 mm.== - ==Price out the reflow side properly — hot plate vs Controleo3 kit vs ready-to-run oven. Hot plate and cheap-oven pricing could not be verified in this pass.== - ==Set up kicad-to-openpnp and test it against one of my existing KiCad projects before buying hardware. If package generation from 3D models works, that removes the largest hidden setup cost.== - ==Find an independent, non-vendor LumenPnP v4 CPH measurement. Check Reddit r/openpnp and EEVblog directly, both unreachable during this research.== - ==Confirm whether Mark Maker (makr.zone) is still active in the OpenPnP project — he authored Issues & Solutions, backlash calibration, vision compositing, and BlindsFeeder.== - ==Read the OpenPnP group's "I am making a feeder" threads before even considering a DIY feeder, per bert shivaan's advice.== - Decide whether a used Charmhigh CHMT36VA ($2,700) + OpenPnP retrofit is worth a serious second look. Note the Smoothieware flash is **irreversible** and expect a week or more of downtime. # Build Log ## 2026-09-12 - Ran the initial landscape survey. No hardware purchased. - Scope set: 1–25 boards, 0402+ passives, QFN/QFP/SOIC, $1.5k–4k, assemble an existing open design. - Parallel research across four tracks: machine designs, feeders, OpenPnP software, workflow/economics. - Conclusion: LumenPnP v4 is the only live open design; feeders are the budget decision; macOS is a hard blocker requiring a Linux host. - Landed on the staged buy plan in [[#Recommended Configuration]] — bare machine + strips first, powered feeders only after observing real reload patterns. - Checked Raspberry Pi 5 4GB and Pi 4 8GB as the control computer. Both ruled out — `openpnp-capture` has no working ARM64 camera pipeline (issue open since 2022-11-06, unassigned), and the one Pi 5 success story used MIPI sensors rather than LumenPnP's USB cameras and never ran an actual job. - Control computer settled: repurposing an on-hand Dell OptiPlex Micro. Opulo's only published requirement is 2× 1080p USB webcam feeds + 1 USB serial port on Ubuntu, which any Micro clears. Drops the budget-to-first-board to ~$2,100. # Resources **Primary — LumenPnP / Opulo** - [Opulo store](https://www.opulo.io/) · [LumenPnP product page](https://www.opulo.io/products/lumenpnp) · [Feeders](https://www.opulo.io/products/feeders) · [Strip feeders](https://www.opulo.io/products/lumenpnp-strip-feeder) - [Opulo docs](https://docs.opulo.io/) · [v4.1 install/calibration track](https://docs.opulo.io/openpnp/v4-1/preflight/install-config/install-openpnp/) · [DIY v4 build (WIP)](https://docs.opulo.io/guides/diy-v4/) · [OHAI work instructions](https://ohai.opulo.io/) - [github.com/opulo-inc/lumenpnp](https://github.com/opulo-inc/lumenpnp) · [feeder repo](https://github.com/opulo-inc/feeder) · [Photon firmware](https://github.com/photonfirmware/photon) - [v4 datasheet PDF](https://cdn.shopify.com/s/files/1/0570/4256/7355/files/brochure-v4_compressed.pdf?v=1783522165) · [hand-vs-machine white paper](https://cdn.shopify.com/s/files/1/0570/4256/7355/files/hand-place-vs-lumenpnp-white-paper.pdf) · [layout config tool](https://config.opulo.io/) · [feeder debug tool](https://debug.opulo.io/) **OpenPnP** - [openpnp.org](https://openpnp.org/) · [hardware list](https://openpnp.org/hardware/) (==stale — omits LumenPnP==) · [github.com/openpnp/openpnp](https://github.com/openpnp/openpnp) - [Google Group](https://groups.google.com/g/openpnp) · [Discord](https://discord.gg/EmsrFVx) · [Opulo Discord](https://discord.com/invite/TCwy6De) - Wiki: [Bottom Vision](https://github.com/openpnp/openpnp/wiki/Bottom-Vision) · [Vision Compositing](https://github.com/openpnp/openpnp/wiki/Vision-Compositing) · [Vacuum Sensing](https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration_Vacuum-Sensing) · [Importing Centroid Data](https://github.com/openpnp/openpnp/wiki/Importing-Centroid-Data) · [BlindsFeeder](https://github.com/openpnp/openpnp/wiki/BlindsFeeder) · [Design Comparison](https://github.com/openpnp/openpnp/wiki/Pick-and-Place-Design-Comparison) · [CharmHigh CHMT36VA retrofit](https://github.com/openpnp/openpnp/wiki/CharmHigh-CHMT36VA) **Feeders** - [microsmt Bing feeder](https://github.com/microsmt/Bing-feeder) (MIT) · [BambooFeeder AS2 docs](https://docs.pandaplacer.com/bamboofeeder/bamboofeeder-as2/) · [0816feeder](https://docs.mgrl.de/maschine:pickandplace:feeder:0816feeder) · [Ploopy pnp-feeder](https://github.com/ploopyco/pnp-feeder) - [Menlu 8–32 mm strip feeder + magazines](https://www.printables.com/model/1369013-menlu-8mm-to-32mm-strip-feeder-magazines-discard-b) · [Pat Deegan's feedset system](https://inductive-kickback.com/2022/12/pnp-feeder-sets-howto/) · [psypnp](https://github.com/psychogenic/psypnp) - [makr.zone BlindsFeeder writeup](https://makr.zone/new-openpnp-blindsfeeder/353/) · [push-pull tape/reel feeder](https://makr.zone/new-all-3d-printed-tapereel-feeder/399/) **Other machines** - [PixiePlacer](https://github.com/PixiePlacer/PixiePlacer) · [Machdyne Eins](https://github.com/machdyne/pnp) · [OrionPnP](https://github.com/TheIgorMC/orionPnP) · [3DPlacer](https://github.com/xpDIY/3DPlacer) · [ICEpick head](https://github.com/BETZtechnik/ICEpick--Direct-drive-pick-and-place-head) · [BETZtechnik store](https://www.betztechnik.ca/store/c9/Pick_and_Place_%28PnP%29.html) - [Pandaplacer docs](https://docs.pandaplacer.com/) · [microsmt](https://www.microsmt.com.cn/) · [liteplacer.com](https://liteplacer.com/) (archive only) **Assembly & line** - [JLCPCB PCBA pricing](https://jlcpcb.com/help/article/pcb-assembly-price) · [JLCPCB stencils](https://jlcpcb.com/pcb-stencil) · [PCBWay SMT guide](https://www.pcbway.com/smt_ordering_guide.html) · [Whizoo Controleo3](https://whizoo.com/) **KiCad tooling** - [kicad-to-openpnp](https://github.com/mmalecki/kicad-to-openpnp) · [kicad-mod2openpnp](https://github.com/CatoLynx/kicad-mod2openpnp) · [FeederUtils](https://github.com/atanisoft/FeederUtils) # References - All prices and repo dates current as of **2026-09-12**. Vendor claims are labeled as such; user reports are attributed to their thread. - ==Research gaps: Reddit (r/openpnp, r/PrintedCircuitBoard) and EEVblog were unreachable, so the richest veins of independent owner experience are unread. Everything about real-world 2026 experience here rests on the OpenPnP Google Group, GitHub, Hackaday, and Hacker News.==