This guide takes you from “I have never ordered a circuit board” to a working flashlight in your hand. You do not need to know electronics or programming. You need patience, a soldering iron and a computer with the Chrome or Edge browser. Read the whole guide once before you order anything.

The finished light: 94.4 × 20 × 16 mm, black anodised aluminium, USB-C charging, a white LED in front, a small green laser below it, and Bluetooth for the phone app.
| Size | 94.4 × 20 × 16 mm, about 50 g with cells |
| Main light | Luminus SST-20 LED, 3 mA (moonlight) to 2.2 A (turbo, short bursts) |
| Laser | green 520 nm module, Class 2 (≤ 1 mW), with a hardware safety switch |
| Battery | two LP601646 lithium-polymer cells in parallel, about 800 mAh |
| Charging | USB-C, about 300 mA, status shown by a small RGB LED through the lid |
| Brain | ESP32-C3 module with Bluetooth Low Energy |
| Phone app | a web page — no app store, works in Chrome/Edge (Android, Windows, Mac, Linux) |
| Firmware updates | from a web page over the same USB-C cable — no programmer needed |
How it is made:
Cost. The workbook Aurora_Parts_List_v0.5.xlsx lists every part and every fee. The short version
(prices checked 2026-10-14, delivery to Lithuania):
| one light | per light when you build five | |
|---|---|---|
| Everything, including shipping, VAT and set-up fees | about 530 USD (473 EUR) | about 196 USD (175 EUR) |
| Tools you may not have yet (one-time) | about 128 USD |
One light is expensive because the fixed costs (assembly set-up, stencils, three parcels from JLC, several AliExpress parcels) are paid once whatever the quantity. JLCPCB makes at least 5 boards and assembles at least 2. Building with friends brings the price down a lot.
Time and the order of the orders. Building takes one afternoon; the waiting takes longer. Order in this sequence (the workbook’s sheet Ordering checklist has the same steps):
At every checkout choose shipping with taxes and duties paid (DDP / “tax included”) — the cost figures above assume it.
Skills. Soldering wires to pads (practise on scrap first), using a small screwdriver, following instructions exactly. Nothing else.
Safety — read this.
Everything you upload is ready in the folder order_files/ of the package, one subfolder per
shop — you never have to look for a file anywhere else:
| File | What it is | Who gets it |
|---|---|---|
order_files/1_JLCPCB/Aurora_main_gerbers.zip |
the circuit board drawings | JLCPCB (PCB) |
order_files/1_JLCPCB/BOM_JLCPCB.csv |
list of parts to mount | JLCPCB (assembly) |
order_files/1_JLCPCB/CPL_JLCPCB.csv |
where each part goes | JLCPCB (assembly) |
order_files/2_JLCCNC/Aurora_tray.step + Aurora_tray.pdf |
aluminium body + its drawing | JLCCNC |
order_files/2_JLCCNC/Aurora_lid.step + Aurora_lid.pdf |
aluminium lid + its drawing | JLCCNC |
order_files/2_JLCCNC/Aurora_marking_class2.dxf |
optional laser marking | JLCCNC |
order_files/3_JLC3DP/Aurora_print_kit.stl |
the four plastic parts on one sprue | JLC3DP |
app/aurora-flasher.html |
the firmware installer (open in Chrome/Edge) | you |
app/aurora-app.html |
the phone/computer app (open in Chrome/Edge) | you |
Aurora_Parts_List_v0.5.xlsx |
every part, price, link and fee | you |
(The same files, with all the source data behind them, are also in production/ and cad/.)
order_files/1_JLCPCB/Aurora_main_gerbers.zip. Wait until the picture of the board appears
(24.0 × 16.5 mm should be detected automatically).Set these options (leave everything not listed at its default):
| Option | Choose |
|---|---|
| Base material | FR-4 |
| Layers | 4 |
| PCB qty | 5 (the minimum) |
| PCB thickness | 0.8 mm |
| PCB color | green (cheapest; others are fine) |
| Surface finish | ENIG (flat gold pads — needed for the Bluetooth module) |
| Outer / inner copper | 1 oz / 0.5 oz |
| Via covering | Tented |
| Min via hole size/diameter | the value JLCPCB detects (0.2 mm hole, 0.45 mm via: no surcharge) |
| Remove order number | No (the default) — JLCPCB prints a small number on a free spot; it is hidden in the body |
Scroll down and switch PCB Assembly on:
| Option | Choose |
|---|---|
| PCBA type | Standard (parts on both sides need Standard) |
| Assembly side | Both sides |
| PCBA qty | 2 (the minimum) — or as many lights as you build, if more |
| Tooling holes | Added by JLCPCB |
| Confirm parts placement | Yes (an engineer checks the orientation of every part — recommended) |
order_files/1_JLCPCB/BOM_JLCPCB.csv and
CPL = order_files/1_JLCPCB/CPL_JLCPCB.csv. Click Process BOM & CPL.Why the gold surface (ENIG)? The Bluetooth module sits on a big flat ground pad under its belly. Tin (HASL) surfaces are bumpy and the module can end up crooked. ENIG costs a few dollars more and avoids that.
order_files/2_JLCCNC/Aurora_tray.step and Aurora_tray.pdf from the same
folder — JLCCNC matches the drawing to the 3D file by its name, which is why both are called
Aurora_tray (the drawing carries the threads and tolerances JLCCNC needs).
Do the same for the lid: Aurora_lid.step + Aurora_lid.pdf.For both parts choose:
| Option | Choose |
|---|---|
| Material | Aluminum 6061-T6 |
| Surface finish | Bead blasting + anodizing, black |
| Tolerance | ISO 2768-m (standard) |
| Threads | yes — write in the remark: “4 × M1.6×0.35 in the tray, 1 × M2×0.4, see drawing; tapped before anodising, screws must fit after finishing (drawing note 3)” |
| Quantity | one of each per light (+1 spare tray if you want a safety margin) |
order_files/2_JLCCNC/Aurora_marking_class2.dxf on the
bottom face (the laser warning text). Only if your laser module really is Class 2.order_files/3_JLC3DP/Aurora_print_kit.stl. (Only if
your laser module is 4.5 mm instead of 6 mm thick, also upload Aurora_laser_sleeve.stl.)Search these on AliExpress (or any electronics shop). The workbook has a link example and the typical price for each. Order them first (section 1) and measure what you receive before you order the aluminium body.
| Part | Exact specification | Quantity per light |
|---|---|---|
| LiPo cells | LP601646 (6.0 × 16 × 46 mm), 3.7 V, about 400 mAh, with protection board and wire leads, rated for at least 2 C continuous (0.8 A per cell; 3 C if you want the Extreme profile); the whole cell including its protection board must fit 6.0 × 16 × 47 mm | 2 (+1 spare) |
| LED board | Luminus SST-20 (white, 5000–6500 K) on a 10 mm round copper DTP board, 1.6 mm thick | 1 |
| Laser module | 520 nm green, 6 × 12 mm body, with a built-in constant-power (APC) driver for a 3.0–4.2 V supply (the board gives it the cell voltage), Class 2 (≤ 1 mW), with wires | 1 |
| Window | glass or PMMA disc 10 mm × 1.0 mm (AR-coated “flashlight lens” is best) | 1 |
| Lid screws | M1.6 × 4 mm countersunk, stainless (A2) | 4 (+4 spare) |
| Laser set screw | M2 × 2 mm set screw, cup point (M2 × 2.5 also fits; longer ones stick out of the bottom) | 1 |
| Wire | 28 AWG PTFE, red and black (usually sold as 5 m rolls; one light needs about 0.3 m) | — |
| Thermal paste or 0.15 mm thermal tape | for the LED board | a little |
| Kapton tape, thin double-sided foam tape | insulation, cells | a little |
| Clear 5-minute epoxy or UV resin | RF window and front window | a little |
| Split ring or lanyard | through the tail slot | 1 |
| Tool | Why |
|---|---|
| Soldering iron with a fine tip (a temperature-controlled one, e.g. Pinecil or TS101) | the wires |
| Desoldering braid (wick) | to remove solder if a joint goes wrong |
| Digital caliper | measure the cells, the LED board and the laser before you order the body |
| Solder 0.5 mm with flux core, plus a flux pen | clean joints on small pads |
| Fine tweezers, side cutters, wire stripper (or a sharp knife) | wires, print kit |
| Small screwdriver for M1.6 countersunk screws (check the head type you bought) | lid |
| 0.9 mm hex key (for the M2 set screw) | laser |
| Multimeter | check cell voltage and polarity |
| Laser safety glasses for 520 nm | laser test |
| USB-C cable that carries data | firmware — many cheap cables only charge |
| Computer with Chrome or Edge (Windows, macOS, Linux or ChromeOS) | firmware installer |
| Isopropyl alcohol, cotton swabs | cleaning flux |
The pads you will solder. Front end = the end with the LED pad J3 (the head of the light); rear end = the end with the cell pads J2. Keep this picture next to you:

The two sides of the board. Red pads are +, dark blue pads are −. The small “+” and “−” printed on the board are tiny and partly covered by solder mask — trust the picture.
The flashlight takes its power from the cells — also while you install the firmware. So the cells come first.
If anything gets hot, smells or smokes: pull the cells away with pliers by the wire, put them in the metal box. A reversed cell destroys the board — that is why step 1 matters.
The firmware is the program that runs in the flashlight. You install it from a web page, through the flashlight’s own USB-C socket. Nothing to download, nothing to install on your computer.
You need: the board with the cells soldered on (step 1), a USB-C cable that carries data, and a computer with Google Chrome or Microsoft Edge. (Firefox and Safari cannot do this, and phones cannot flash.)
1. Open the installer. Open app/aurora-flasher.html from the package in Chrome or Edge
(double-click the file; if it opens in another browser, right-click → Open with → Chrome).
If someone has put the package on a website (see docs/web_apps.md), you can open the same
page from there instead.
2. Plug in. Connect the flashlight’s USB-C socket to the computer. The status LED starts breathing red slowly (charging) — if the firmware was not installed yet, it may stay dark; that is normal.
3. Connect. Click Connect. A small browser window lists the serial ports. Choose:
cu.usbmodem…),ttyACM0).and click Connect in that window. The page says “Flashlight found (ESP32-C3, 4MB memory)”.

4. Install. Click Install firmware. A progress bar runs for about one minute. Do not unplug while it runs.
5. Done. The page says the installation is complete. Unplug the cable and plug it in again. The status LED breathes red (charging) or shows steady green (full).
That’s it. To update the firmware later, do exactly the same with a newer installer page. Installing resets the saved settings (your custom profile) to the factory defaults.
sudo usermod -a -G dialout $USER, then log out and in again.Force the chip into its built-in installation mode (it cannot be broken this way):
Why this works: plugging in USB restarts the chip (a small circuit on the board does that), and a chip that starts with the button pressed waits for new firmware instead of running the old one.
The ESP32-C3 has a USB port built in. The installer page uses your browser’s Web Serial
feature and the open-source esptool-js to write one file (aurora-fw-v0.5.0-merged.bin,
419,136 bytes — bootloader, partition table and program) to address 0 of the module’s 4 MB
flash memory. The page checks the file’s fingerprint (SHA-256) before writing.
app/aurora-app.html in Chrome or Edge
(a phone needs the app from a web address — see section 14).
Press the flashlight button three times quickly: the RGB LED blinks blue twice — Bluetooth
is on for 2 minutes. In the app, click Connect, choose Aurora-XXXX. You see the
battery percentage, the voltage and the temperature.Work on a clean towel. The order matters, because some joints cannot be reached later.
12.0 Make it safe first. The cells are connected, so the board is live. Push the knob of the slide switch S2 towards the front (LED) end — SAFE — and lock the light with four quick clicks (red ×3). It stays locked until section 13.

Exploded view: window, spacer ring and LED board go into the head from the front; the laser below them; the PCB with the cells drops into the tray; the antenna spacer sits behind the PCB; the lid with its translucent RF window closes everything with four screws.
12.1 Cut the print kit. Cut the four parts off their rods with side cutters, close to the part, and trim the stubs with a knife: RF window (the flat stepped plate), button cap (the tiny plunger), spacer ring (the ring) and antenna spacer (the U-shaped block).
12.2 LED board. Solder a red wire (60 mm) to the + pad and a black wire (60 mm) to the − pad of the LED board, on the LED side, with the wires pointing away from the board’s centre. Hold the board so that + is at 12 o’clock (top, lid side) and − at 6 o’clock.
12.3 Into the head. From the front of the body, push the red wire into the upper groove of the big bore and on through the upper hole into the inside of the body; the black wire through the lower groove and hole. Put a thin layer of thermal paste (or the thermal tape) on the back of the LED board and push the board to the bottom of the bore, wires pulled gently from inside.
12.4 Spacer ring and window. Insert the spacer ring (its notches go over the two solder joints), then the glass window. Fix the window with three tiny dots of clear epoxy or UV resin at its edge. Keep the glass clean.
12.5 Laser. Push the module into the small bore below the LED from the front, wires first, until its front sits 0.2–0.3 mm behind the front face (no thermal paste needed — a Class 2 module makes almost no heat). Tighten the M2 × 2 set screw from the bottom of the body with the 0.9 mm hex key — gently, the module body is soft brass.
12.6 Button cap. From inside, push the button cap into the small rectangular hole in the control-side wall (flange inside).
12.7 Wires to the board (bottom side first).
12.8 Board in. The slide switch S2 sticks out of the board edge on the side opposite the USB-C socket.
12.9 Antenna spacer and cells. Push the U-shaped antenna spacer in behind the board: the module’s antenna (it sticks out of the board’s rear edge) sits in the U, the cell wires pass through the notch. Put a strip of Kapton over each cell’s protection board. Lay both cells into the bay behind the spacer, flat, one on top of the other (the bay is two cells high), the end with the protection board and the wires towards the PCB, and put a strip of foam tape on top so that the lid holds them without rattling.
12.10 Lid. Glue the RF window into the lid from inside (epoxy on the flange, not on the top face) and let it cure. Put the lid on and fasten the four M1.6 × 4 screws — snug only, the threads are in aluminium and strip easily.
12.11 Thread a split ring or a lanyard through the slot in the tail.
The complete button table, the RGB LED colours and the protection behaviour are in
docs/firmware.md, chapter 2 (the user manual).
On a computer (Windows, Mac, Linux, ChromeOS with Bluetooth): open app/aurora-app.html
in Chrome or Edge. On a phone the page must come from a web address (https): put the app
folder on GitHub Pages once — free, about 10 minutes, step by step in docs/web_apps.md,
section 4 — and open that address in Chrome on Android or in the free Bluefy browser on an
iPhone. Bluetooth is only on while the light is on, 2 minutes after it was switched off, after
a triple click, or while USB is connected — so switch it on (or triple-click) before you tap
Connect.

| What you see | What to do |
|---|---|
| Nothing at all when you click | Charge it (USB). |
| A short red flash when you click | Locked: four clicks unlock it (green ×3). |
| Five fast red blinks | Battery empty: charge it. |
| One red blink when you ask for turbo | Too hot — turbo is refused near the temperature limit. Wait. |
| Light gets dimmer by itself | Normal: turbo time over, or temperature / battery protection. |
| App: “the button has priority” | Wait 3 seconds after pressing the button, then try again. |
| App finds no flashlight | Bluetooth is off to save power: triple-click the light, then Connect. |
| Installer: no port | Data cable, other USB port (section 10). |
| Installer: connection fails | Hold the button while plugging in (section 10). |
| Red LED flickers briefly when it starts | Normal (the boot message runs over that pin). |
| Laser does not come on | S2 must be armed (knob towards the tail); the gesture is click + click-and-hold from off; it stops above 60 °C, below 3.2 V and after 60 s. |
| USB does not charge | The charger pauses above 45 °C and below 0 °C, and while the LED runs above 500 mA. |
docs/firmware.md — how the firmware works, the user manual, the bench test plan.docs/ble_protocol.md — the Bluetooth protocol (for anyone who wants to write their own app).docs/web_apps.md — the app and the installer, and how to put them on GitHub Pages.docs/bom_notes.md — where every price in the workbook comes from.docs/ch12_v0.5_bluetooth_redesign.md — the design story of v0.5 (why every decision was made).