This guide takes you from “I have never ordered a circuit board” to a working flashlight and slide remote 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.
Status: designed, not yet built. Nobody has assembled a FlashKa yet. Everything in this guide is checked by software only (chapter 14, section 14.10), so you may be the first to build one. Where a step or a behaviour is untested, the guide says so. The light figures are simulated from datasheets, not measured. Please tell the project what you find (section 18).

Render, not a photo: FlashKa has not been built yet. Every picture of the light in this guide is a computer render made from the design files. The finished light seen from below: 99.2 × 20 × 18 mm, a faceted octagon of black anodised aluminium with textured panels, three keys on the centre line of the bottom face (the clear main key glows in the ring colour), USB-C charging on the side, a white LED behind a lens and a small green laser in the head, and Bluetooth for the phone app and for presenting.
FlashKa is a keychain flashlight with a green laser pointer. It has a second job: it turns slides. In presenter mode the light is a Bluetooth keyboard, and the laser stays the pointer. Version 0.7 is the 1000 lm FlashKa: a strong LED behind a lens (a “TIR optic”) throws a narrow beam far. It runs on one 14500 lithium-ion cell, the size of an AA battery. The three keys sit on the centre line of the bottom face, the body is a faceted octagon with a rugged surface, and no part of the light is 3D-printed.
| Size | 99.2 × 20 × 18 mm, an octagon with eight flat faces; about 62 g (an estimate: 32.7 g of housing parts from the CAD, 1.7 g for the optic and the LED board, about 22 g for the cell and 6 g of electronics; not weighed) |
| Keys | three keys in a row on the bottom face: ^ next (black rubber), ● main (clear acrylic with a glowing ring), v previous (black rubber) |
| Ring | two RGB LEDs under the clear main key light up a frosted ring on its face and show what the light is doing |
| Main light | Luminus SST-20 Gen 2 LED under a LEDiL TIR optic, from 3 mA (moonlight; 2 mA in the Endurance profile) to a 2,850 mA turbo: about 1,045 lm out of the front at switch-on and about 966 lm once the LED is hot, a beam that reaches about 160 m. High: about 600 lm for about three and a half minutes, then about 280 lm for more than two hours. Turbo is weaker when the cell is half empty: about 775 lm (all simulated, not measured) |
| Laser | green 520 nm module, Class 2 (≤ 1 mW), with a hardware safety switch |
| Presenter mode | the light is a Bluetooth keyboard: ^ next slide, v previous slide, ● black screen; the laser is the pointer |
| Battery | one 14500 lithium-ion cell (Vapcell INR14500 F15, 1,500 mAh, 3 A), with two nickel strips welded to its ends; a circuit on the main board protects it |
| Charging | USB-C, about 500 mA (a full charge in about 3.5 hours), status shown on the ring |
| Brain | ESP32-C3 module with Bluetooth Low Energy |
| Phone and computer app | a web page: no app store, works in Chrome or Edge (Android, Windows, Mac, Linux) |
| Firmware | FlashKa firmware 0.7.0, installed from a web page over the same USB-C cable: no programmer needed. The installer asks which FlashKa you have: choose “FlashKa v0.7 - three keys in the middle” |
How it is made:
Hold the light with the bottom face up and the head pointing away from you (at the screen, when you present). The keys then read, from the head to the tail: ^ next · ● main · v previous. The chevron on each rubber key points along the light: on the next key, nearest the head, it points to the head and reads ^; on the previous key, nearest your hand, it points to you and reads v. Next is towards the screen, previous towards you.

Render. The bottom face, tail with the lanyard slot on the left, head on the right. The three keys sit in one shallow frame (the bezel): v previous, ● main with its ring (shown cyan), ^ next. Seen this way the chevron of the next key points right, to the head, and that of the previous key left, to the tail. The textured panel next to the keys also hides the radio window of the floor: a black plastic plug fills it flush. No screw or hole shows near the head: the laser set screw sits under the lid.
If you know the v0.6 guide: chapter 14, section 14.1 lists what changed and why.
Cost. The workbook FlashKa_Parts_List_v0.7.xlsx lists every part and every fee. The short
version (delivery to Lithuania, EU, 21 % VAT; prices read on 2026-10-23, unchanged parts on
2026-10-14, 2026-10-18, 2026-10-21 and 2026-10-22):
| one light | two lights | five lights | |
|---|---|---|---|
| Everything, including shipping, VAT and set-up fees | 859.28 USD (768.04 EUR) | 1,014.92 USD (907.15 EUR) | 1,496.35 USD (1,337.46 EUR) |
| Per light | 859.28 USD | 507.46 USD (453.58 EUR) | 299.27 USD (267.49 EUR) |
| Tools you may not have yet (one-time) | about 204 USD (164 USD without the spot welder) |
The 1000 lm design and the one-cell body made the light about 60 USD cheaper than the first v0.7 design (918.89 USD for one light), although they added the lens, the stronger driver and the battery protection: the casting mould is now a cheap resin print, the casting rubber is a cheaper one of the same hardness, the housing parcel of one light stays below the EUR 150 customs line, and the glass window and the spacer ring are gone. The one 14500 cell, instead of the two small pouch cells drawn before, costs about 4 USD more for one light (the battery shop’s own parcel and the nickel strip) and saves about 4 USD per light for five. Version 0.6 cost about 620 USD for one light. v0.7 costs about 239 USD more:
A builder who already has a mould and the casting supplies (a second batch, or a mould shared with a friend) pays about 746 USD for one light. One light is expensive because the fixed costs (assembly set-up, stencils, the rubber kit, several parcels from the shops and the marketplace) are paid once, whatever the quantity. JLCPCB makes at least 5 panels and assembles at least 2. Building with friends brings the price down a lot. The workbook also prices cheaper options (no panel texture, economy shipping, a cheaper pogo pin, Sugru for the keys) and says what each costs in quality.
Many prices are estimates. The shops show their price only after you upload the files, and some pages could not be read. The aluminium parts, the two plastic kits, the resin mould, the bare panels and the two-design surcharge, the courier fees of the lens and of the battery shop, the spot welder, the shipping and the marketplace parts are estimates. The workbook marks them (blue on amber). Replace them with the real quotes before you pay.
Time and the order of the orders. Building takes two or three evenings, plus a night in which the rubber of the keys cures; 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 and to nickel strips (practise on scrap first), spot-welding two nickel strips onto the cell if it comes without tabs (practise on scrap strip first), using a small screwdriver, cutting two tiny pieces of rubber with a sharp knife, mixing a small amount of casting rubber with two syringes (like a two-part glue), cutting thin stainless sheet with tin snips, gluing with a very small amount of glue, and following instructions exactly. Nothing else.
Safety — read this. The project’s safety notes are in SAFETY.md at the
root of the LuxLibre repository. The design rules named in this guide (for example LAS-1) are in
docs/design-rules.md at the same root.
The laser of FlashKa is a green 520 nm module of Class 2 (EN 60825-1:2014): its output is at most 1 mW (P ≤ 1 mW). Class 2 means that the blink reflex protects the eye from an accidental glance; do not stare into the beam. The light itself carries no marking, so its warning label is printed here, and it belongs on the packaging too:

The laser warning label, black on white. The picture is made from the artwork of the optional lid label in order_files/optional_laser_label/, which marks it on the lid.
Its text, beside the laser warning sign: “FlashKa Keychain”, “v0.7 LuxLibre”, then “LASER RADIATION”, “DO NOT STARE INTO BEAM”, “CLASS 2 LASER PRODUCT” and “520 nm P ≤ 1 mW EN 60825-1:2014” (the wavelength, the highest output power and the standard).
order_files/optional_laser_label/ (its README says how; section 4).Everything you upload is ready in the folder order_files/ of the package, one subfolder per
shop. The paths below start in that folder.
| Shop | File | What it is |
|---|---|---|
| JLCPCB | 1_JLCPCB/FlashKa_panel_gerbers.zip |
the drawings of the panel with both circuit boards (Gerber files) |
| JLCPCB | 1_JLCPCB/BOM_JLCPCB.csv |
list of the parts to mount (35 lines, 79 parts per panel) |
| JLCPCB | 1_JLCPCB/CPL_JLCPCB.csv |
where each part goes and how it is turned |
| JLCCNC | 2_JLCCNC/FlashKa_tray.step + FlashKa_tray.pdf |
aluminium tray: 3D model + drawing (2 sheets) |
| JLCCNC | 2_JLCCNC/FlashKa_lid.step + FlashKa_lid.pdf |
aluminium lid: 3D model + drawing |
| JLCCNC | 2_JLCCNC/FlashKa_pmma_kit.step + .pdf |
three clear main keys on tabs in a frame (one kit = one light and two spare keys) |
| JLCCNC | 2_JLCCNC/FlashKa_pom_kit.step + .pdf |
the black POM-C parts of one light on tabs in a frame: two radio window inserts (one spare) and the antenna spacer |
| other shop | 2_JLCCNC/FlashKa_key_main.step, FlashKa_rf_window.step, FlashKa_antenna_spacer.step and their drawings |
the same parts one by one, for a shop that takes small parts |
| other shop | 2_JLCCNC/FlashKa_laser_sleeve.step |
only if your laser module is thinner than 6 mm |
| JLC3DP, once | 3_rubber_keys/FlashKa_key_mould_resin_cavity.stl + FlashKa_key_mould_resin_lid.stl |
the two resin plates of the casting mould (the default; same merged order as JLCCNC) |
| JLCCNC, once (option) | 3_rubber_keys/FlashKa_key_mould_cavity.step + FlashKa_key_mould_lid.step + FlashKa_key_mould.pdf |
the aluminium mould instead: dearer, but it lasts for many pours |
| you | 3_rubber_keys/README.txt, FlashKa_key_side.pdf |
how to cast the side keys; drawing of the key and its stiffener |
| nobody | optional_laser_label/ |
a laser label for the lid, only for a light that you sell or give away (section 1, Laser safety) |
Files you keep:
| File | What it is |
|---|---|
hardware/flashka-keychain-v06/app/flashka-flasher.html |
the firmware installer (open it in Chrome or Edge); it holds the firmware of both FlashKa v0.7 and v0.6 and asks which one you have |
hardware/flashka-keychain-v06/app/flashka-app.html |
the phone and computer app (open it in Chrome or Edge); it recognises a v0.7 by itself |
FlashKa_Parts_List_v0.7.xlsx |
every part, price, link and fee |
(The same files, with all the source data behind them, are also in production/ and cad/.
order_files/README.txt describes every folder; 2_JLCCNC, 3_rubber_keys and
optional_laser_label also have a short README.txt of their own.)
order_files/1_JLCPCB/FlashKa_panel_gerbers.zip. Wait until the picture appears: one panel
of about 45 × 32.5 mm with the small key board on the left, the main board on the right and a
rail along the top and the bottom.Set these options (leave everything not listed at its default):
| Option | Choose |
|---|---|
| Base material | FR-4 |
| Layers | 4 |
| Delivery format | Panel by Customer, panel format 1 × 1 (the file already is the panel) |
| Different design | 2 (two different boards in one file; JLCPCB adds a surcharge, shown in the price) |
| PCB qty | 5 (the minimum) |
| PCB thickness | 0.8 mm |
| PCB Color (the solder mask) | Black solder mask, white silkscreen (the design and all renders use black boards; a colour surcharge, if any, shows in the price) |
| Surface finish | ENIG (flat gold pads: needed for the Bluetooth module, the small chips and the pogo-pin pads) |
| Outer / inner copper | 1 oz / 0.5 oz (1 oz inner copper is an option: it halves the resistance of the battery strip inside the board, which the board does not need) |
| Via covering | Tented |
| Min via hole size/diameter | the value JLCPCB detects (no surcharge) |
| Remove order number | No (the default). JLCPCB prints a small number on a free spot; it stays inside the closed 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 / edge rails | by customer: the rails of the panel already carry 3 fiducials and 4 tooling holes. If JLCPCB’s review asks for a bigger panel, accept the rails it offers |
| 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.The parts list appears: 35 lines. Every line should show a matched part with stock.
These lines need a closer look:
If another part is out of stock, the workbook (sheet Panel BOM) names an alternative. For example, the Bluetooth module C2838502 (ESP32-C3-MINI-1-N4) can be replaced by C41349510 (ESP32-C3-MINI-1-H4X), a drop-in alternative. Four small parts had low or zero retail stock at LCSC on 2026-10-14 (C15850, C15195, C1525, C11702). JLCPCB has its own warehouse, and the upload page shows its real stock.
Check the placement preview. JLCPCB draws every part on the panel. For each chip, the small dot or line that marks pin 1 must sit on the pin-1 mark of the board. The pads of every part must fall on the pads of the board. If a part is turned, select it and use Rotate.
Look closest at the parts whose drawing in JLCPCB’s library is often turned against KiCad’s (DFM-7): on the main board the Bluetooth module U4, the small chips U1, U2, U3, U5, U6, the transistors Q1, Q2, Q3, Q4, Q5 and the USB-C socket J1. The LED driver U2 (top side) is a 3 × 3 mm chip with no legs: its pin 1 is at the corner nearest the coil L1, towards the USB-C opening. On the bottom side the protection chip U6 sits right above the double transistor Q3, both turned the same way, pin 1 of each on the side nearer the battery pads. On the key board (the left board) check the three switches SW1, SW2, SW3 and the two ring LEDs LED3, LED4 on its bottom side, and the six pogo pins P1–P6 on its top side. The six round gold pads J6 on the bottom of the main board get no part: that is right.
If you are unsure, do not worry. With “Confirm parts placement” an engineer checks it and sends you a picture before production.
Why one panel? Both boards carry parts on both faces. Ordered on their own, each board would pay its own set-up fees and stencils. In one panel they share one order, one set-up per side and one stencil per side, and you upload one Gerber, one BOM and one CPL. (Each board on its own is in
production/as a fall-back.)
Why the gold surface (ENIG)? The Bluetooth module and the LED driver sit on flat pads under their bellies, and the pogo pins press on the six gold pads J6. Tin (HASL) surfaces are bumpy and can tarnish. ENIG costs a few dollars more and avoids both problems.
Everything comes from order_files/2_JLCCNC/, except the mould plates, which are in
order_files/3_rubber_keys/. One merged order holds all of it: JLCCNC machines the metal and
plastic parts, JLC3DP prints the resin mould, and both come in one parcel (put both in the
same cart and use JLC’s merged ordering: select “All” in the cart, and the cart calculates one
shipping rate for the merged order).
Tray and lid. Upload FlashKa_tray.step + FlashKa_tray.pdf and FlashKa_lid.step +
FlashKa_lid.pdf. JLCCNC matches a drawing to a 3D file by its name, which is why both are
called the same. The drawings carry the threads and the tolerances.
| Option | Choose |
|---|---|
| Process | CNC milling |
| Material | Aluminum 6061-T6 |
| Surface finish | Bead blasting + anodizing, black (the drawings ask for type II, 8–12 µm). No marking of any kind |
| Tolerance | ISO 2768-m (standard); the critical values are on the drawings |
| Threads | yes. Write in the remark: “Tray: 4 × M1.6×0.35 for the lid, 2 × M1.6×0.35 BLIND in the key-board bosses (must not break through the floor), 1 × M1.6×0.35 from the head-block top into the laser bore (under the lid); see drawing; tapped before anodising, screws must fit after finishing” |
| Texture | write in the remark: “panels with a 0.2 mm 90° V texture and 0.3 mm V grooves, one V engraving cutter, before blasting and anodising (drawing FK-H-01 sheet 2)”. If the shop cannot cut it, the parts still fit and work. To save money you may leave it out on purpose (the workbook prices it, about 13 USD for one light): then write “skip feature 17 (texture) of drawing FK-H-01”, because the 3D files carry the texture |
| Quantity | one of each per light. Order one set first, test-fit it with your real parts, then order the rest |
Bead blasting shoots tiny glass beads at the part for a matt surface. Anodising grows a hard, black oxide layer on the aluminium.
The clear main keys (PMMA kit). Upload FlashKa_pmma_kit.step + FlashKa_pmma_kit.pdf.
| Option | Choose |
|---|---|
| Material | Acrylic (PMMA), clear, cast (not extruded) |
| Surface finish | polished (drawing FK-H-03 asks for a vapour or flame polish; the frosted ring stays matte). If the shop offers only machine polishing, take it, or “as machined” and polish at home (section 12) |
| Quantity | 1 kit (three keys) for 1 or 2 lights, 2 kits for 5 lights: kits = (lights + 1) ÷ 3, rounded up |
The black plastic parts (POM-C kit). Upload FlashKa_pom_kit.step + FlashKa_pom_kit.pdf.
Material POM (acetal), black, as machined. One kit per light. It holds the radio window
insert of the lid (plus a spare) and the antenna spacer with the plug for the floor window.
The shop machines plastic parts only from 30 × 20 × 8 mm up, which is why the small parts come in a frame on thin tabs (the kits are 52.8 × 22 × 8.5 mm and 45.4 × 39.3 × 17 mm). Ask in the quote whether it accepts parts on tabs. If it refuses, any CNC shop that takes small parts can make the single files from the same folder.
The casting mould, once per builder (JLC3DP). Open 3D printing (jlc3dp.com, the same
account) and upload FlashKa_key_mould_resin_cavity.stl and FlashKa_key_mould_resin_lid.stl
from order_files/3_rubber_keys/ as two parts.
| Option | Choose |
|---|---|
| Process | SLA (resin), a standard resin |
| Orientation | write in the remark: “print with the flat parting face up; supports only on the ribbed back” (the parting face carries the key cavities and must stay smooth) |
| Quantity | 1 of each. Leave the mould out if you can borrow one |
The plates are 48 × 28 mm, 6.0 and 5.0 mm thick, with ribs on the back; together they cost about 3 USD (estimate). Four M3 × 16 socket head screws with washers and nuts (section 6) close the mould: the resin carries no threads. A print does not hold the ±0.02 mm of a machined mould, so you try the first key in its opening (section 9).
Durable option: the aluminium mould from JLCCNC (FlashKa_key_mould_cavity.step and
FlashKa_key_mould_lid.step as two parts, FlashKa_key_mould.pdf attached; aluminium
6061-T6, cavity half fine glass-bead blasted, lid as machined, no anodising, 4 × M3 threads in
the cavity half, cavities ±0.02 mm, chevron groove with a 0.6 mm end mill). It costs about
40 USD more, lasts for many pours and needs two dowel pins and four M3 × 12 screws instead of
the bolts. Order one mould or the other, not both.
JLCCNC answers with a price within a day. Things that can come up:
docs/bom_notes.md).Laser label. The light itself carries no marking. The laser warning label (Class 2, EN 60825-1) is printed in this guide (section 1, Laser safety) and belongs on the packaging, which is fine for a light you build for yourself. A light that you sell or give to other people needs the label on the light: then order the lid with laser marking from
optional_laser_label/(its README says how).
The two side keys are cast at home in the mould of section 4: one pour gives four keys (two for the light, two spares). What you need, once:
| Item | Specification | Where |
|---|---|---|
| Casting rubber | Smooth-On ECON 80, 0.86 kg trial unit (part A + part B): urethane rubber, Shore 80A, mixed 1 part A to 1 part B by volume, pot life about 13 minutes, cured overnight | an EU shop that sells Smooth-On rubber, for example kaupo.de (EUR 28.56 on 2026-10-22) |
| Black pigment | Smooth-On SO-Strong black (a pigment made for urethane rubber; without it the keys come out translucent) | the same shop |
| Mould release | a release made for urethane rubber, for example Universal Mold Release (spray) | the same shop |
| Mixing cups, two 5 ml syringes, wooden sticks, toothpicks, nitrile gloves | small disposable cups; one syringe for part A, one for part B | any shop |
| Stainless steel shim | 0.3 mm, stainless (1.4301 / 304), a small sheet (100 × 100 mm makes dozens of stiffeners) | AliExpress or a model shop |
| Cyanoacrylate | rubber-toughened grade (a “super glue” for rubber and metal) | any shop |
| Polish and abrasive paper | a metal polish (paste) for the chevron grooves of the mould, wet-and-dry paper 400 for the mould and 1000–3000 with a plastic polish for the main keys | any shop |
| Mould bolts | M3 × 16 socket head (ISO 4762), 4, with 8 washers and 4 nuts, stainless | AliExpress or a hardware shop |
Read the technical bulletin and the safety data sheet of the rubber before you buy (they are on the maker’s page). The rubber, the pigment and the release come in one parcel from inside the EU: no customs. The workbook prices the casting supplies at about 86 USD and the resin mould at about 3 USD (estimate). Smooth-On PMC-780 DRY (Shore 80A, 2 : 1 by weight) works as well but costs more and needs a 0.01 g scale. Sugru (pressed in by hand, petroleum jelly as release) is the cheapest option, but its keys are softer (Shore 70A) than the drawing asks for.

Render. Left: the resin cavity half with two freshly cast keys still in it and two empty cavities; the keys lie face down, so the chevron is a groove in the cavity floor. Front: a key face up, and one turned over with its stainless plate and doubler glued in. Right: the lid, turned over; its four small plateaus form the recess for the plate in each key.
Search these on AliExpress, Kaidomain or any electronics shop; the cell and the nickel strip come from an EU battery shop. The workbook (sheet Bought parts) has a search term, 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 |
|---|---|---|
| Li-ion cell | Vapcell INR14500 F15: one cylindrical 14500 lithium-ion cell (the size of an AA battery), 3.6 V, 1,500 mAh, 3 A continuous, flat top, no protection board (the main board protects it), 14.0 × 49.0 mm. Buy it from an EU battery shop that ships lithium cells (for example nkon.nl, EUR 3.10 without VAT on 2026-10-23); it comes in the shop’s own parcel. If the shop offers it with welded tabs, take that: then you need no spot welder. Not a button-top or a protected cell: they are longer. Alternative: the Vapcell INR14500 K10 (1,000 mAh, 8 A, flat top), which keeps the full turbo to a lower charge but runs about a third shorter; no EU shop had it in stock | 1 (+1 spare) |
| Nickel strip | pure nickel strip, 0.2 × 5 mm (not nickel-plated steel), 1 m from the same shop: two pieces of about 15 mm per light, welded to the ends of the cell | about 30 mm |
| LED board | Luminus SST-20 Gen 2, 6500 K, on a 10 mm round copper DTP board (direct thermal path), 1.6 mm thick. Ask for the G1 flux bin. Not the older SST-20 (Gen 1), and not a 16 or 20 mm board (it does not fit) | 1 (+1 spare) |
| TIR optic (the lens) | LEDiL LISA3-RS-PIN (LEDiL code FP16558): round, 10.0 mm, 6.9 mm high, clear lens in a black holder with two pins. Not the clip version LISA3-RS-CLIP16 (too tall). Sold in packs of 5 by electronics distributors (for example RS, stock no. 186-2699) | 1 (a pack of 5) |
| 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, Class 2 (≤ 1 mW), with wires. Ask the seller for a measured output power | 1 |
| Lid screws | M1.6 × 6 mm countersunk (ISO 7046 / DIN 965), stainless steel. Not shorter: the lid is 3.4 mm thick where they pass | 4 (+4 spare) |
| Key-board screws | M1.6 × 2.5 mm pan head (ISO 7045 / DIN 7985), stainless steel. Not longer: the two holes are blind | 2 (+4 spare) |
| Laser set screw | M1.6 × 5 mm set screw, flat point (ISO 4026) or cup point (ISO 4029), hex socket for a 0.7 mm key, stainless steel. Not longer: it sits under the lid, and a longer screw stops the lid from closing | 1 (+4 spare) |
| Wire | 24 AWG PTFE, red and black (usually sold as 5 m rolls; one light needs about 0.4 m). The thicker wire carries the 3 A of turbo. The laser keeps its own thin leads | – |
| Thermal paste | non-curing silicone paste, a small syringe: a thin film under the LED board | a little |
| Kapton tape | polyimide tape, 0.05 mm thick, 5–10 mm wide: on the two rails of the cell bay, over the strips and every joint, and in the corner where the black cell wire runs | a little |
| Closed-cell foam | 0.5 mm thick, soft (PE or EVA), a small sheet: you stack a few layers into a strip that presses the cell down under the lid and a pad at the tail end (section 14.9) | a little |
| Two-part epoxy | 5 minute, small syringe: fixes the lens in the head. Not cyanoacrylate (white bloom) | a little |
| Silicone gap pad | 1.5 mm thick, Shore 00 70–80 (soft; the thermal rating does not matter), a sheet of at least 20 × 20 mm. You cut 8.8 × 12.4 mm from it for the module-can boss | 1 piece |
| Silicone rubber sheet | 1.0 mm thick, Shore A 70 (firmer), at least 20 × 20 mm. You cut 3.7 × 3.0 mm from it for the front boss | 1 piece |
| Silicone adhesive | small tube, neutral cure (no vinegar smell: the acid kind can attack the copper of the board). Sticks the two pads | a drop per pad |
| Split ring or lanyard | stainless split ring, 20–25 mm, wire at most about 1.5 mm thick (its double coil must pass the 3.6 × 4.6 mm tail slot), or a thin cord | 1 (+1 spare) |
The two pads hold the main board down against the six pogo pins of the key board (section 14.6). The firmer pad goes on the small boss, the softer one on the big boss. The casting supplies and the mould bolts are in section 5.
Another cell: any flat-top 14500 lithium-ion cell from a known maker, with a datasheet, fits if it measures at most 14.5 mm across and 50.4 mm long (without its strips); the foam takes up the difference (section 14.9). The battery numbers of the firmware are made for the F15.
| Tool | Why | About (USD) |
|---|---|---|
| Soldering iron with a fine tip (temperature-controlled, e.g. Pinecil or TS101) | the wires, also onto the nickel strips (never onto the cell) | 35 |
| Solder 0.5 mm with flux core | clean joints on small pads | 8 |
| Flux (gel syringe or pen) | makes the solder flow on small pads and on the nickel strips | 6 |
| Desoldering braid (wick) | to remove solder if a joint goes wrong, and the temporary wires of the test | 3 |
| Fine tweezers | hold small parts and wires | 5 |
| Flush side cutters | wires, the tabs of the two kits, the two pins of the lens, the stubs of the cast keys | 5 |
| Wire stripper (fine), for 24 AWG | strip the wires without cutting the strands | 7 |
| Hobby knife or scalpel and a small cutting mat | cut the two silicone pads and the foam to size, trim the cast keys | 7 |
| Precision screwdriver and hex key set | M1.6 lid and key-board screws (check the head type you bought); 0.7 mm hex key for the M1.6 laser set screw; 2.5 mm hex key for the M3 mould bolts | 8 |
| Digital caliper | measure the cell, the LED board, the lens, the laser, the pads and the cast keys | 12 |
| Multimeter | check cell voltage, polarity and shorts | 15 |
| Laser safety glasses for 520 nm (OD 4 or better, CE / EN 207 marked) | laser tests | 14 |
| Isopropyl alcohol 99 %, cotton swabs | cleaning flux, the mould and the glue faces | 6 |
| USB-C cable that carries data | firmware; many cheap cables only charge | 4 |
| Small vice with soft jaws | flatten the cut shim | 15 |
| Small straight tin snips | cut the stiffener plates from the 0.3 mm shim, and the nickel strip | 8 |
| Small spot welder for nickel strip (not needed if the cell comes with welded tabs, or a shop welds them) | weld the two nickel strips onto the ends of the cell: never solder onto the cell. Practise on scrap strip first; wear safety glasses | 40 |
| Needle files | file the tab stubs of the kits and the shim pieces | 6 |
| Computer with Chrome or Edge (Windows, macOS, Linux or ChromeOS) | firmware installer | – |
These tools add up to about 204 USD (164 USD without the spot welder). Optional and not counted: a 0.01 g pocket scale (about 10 USD, only for PMC-780 DRY), a magnifier or USB microscope (about 15 USD; good for checking the small parts and the cast chevrons), a bench power supply with a current limit (about 30 USD, for a careful first power-up), a laser power meter for 520 nm (about 45 USD, to check that the module is really Class 2), M1.6 hand taps, a normal one and a bottoming tap (about 10 USD, only if JLCCNC cannot cut the threads, section 4), and a small vacuum chamber with a pump (about 60 USD) to take the air out of the mixed rubber.
Start with the keys: the rubber cures overnight before the mould can be opened, and you can do
steps 2 and 3 meanwhile. The numbers below come from the rubber maker’s data. Casting has not
been tried with this mould yet (section 18: tell the project how it went). The same steps, a
little shorter, are in order_files/3_rubber_keys/README.txt; it also gives the steps for
PMC-780 DRY and for Sugru.
Wear gloves and eye protection, work in fresh air, and keep the room at about 23 °C.
A rubber key alone would bend when you press it near one end, and it would feel soft. A thin stainless plate glued into the key makes it rock as one stiff part, so it clicks wherever you press it. Each key gets two pieces of the 0.3 mm shim:
You should see: the plate lies a little below the rim of the flange and the doubler stands a
little above it (0.15 mm each way in the model). Make four keys this way: two for the light and
two spares. (A sheet-metal shop can also laser-cut the plates from FlashKa_key_stiffener.step.)
The flashlight takes its power from the cell, also while you install the firmware, so the cell comes first. The 14500 cell of v0.7 has no protection board of its own. Two nickel strips on its ends carry the current; you solder one wire to each strip, and the two wires go to the two cell pads of the main board, where the protection circuit sits.
The pads you will solder. The front end of the board is the end with the LED pads J3 (the head of the light). The rear end is the end with the cell pads J2. Keep this picture next to you. Sections 13 and 14 use it again.

A drawing of the two sides of the main board, not a photo (the real board is black). Red pads are +, dark blue pads are −. J2: the two cell pads, one wire on each; J3: the LED, LED+ on the top side between the two front legs of the USB-C socket and LED− on the bottom side behind the socket; J5: the laser. The row of six round pads on the bottom side is J6, where the key board makes contact: no wires there. The small “+” and “−” printed on the board are tiny: trust the picture.
How the cell lies in the light. It lies on two low rails along the floor of the bay, its + end (the small raised cap) towards the head. The + strip leaves the cap towards the USB-C side and bends forward into the open channel of the antenna spacer, the black plastic part between the board and the bay; the red wire is soldered to it there. The − strip leaves the flat end at the tail downwards into the lower corner of the bay on the USB-C side; the black wire is soldered to it there and runs forward along that corner, beside the cell, to the board. The two wires never cross. Cut the antenna spacer out of its kit now (section 12.1 shows how): you need it, and the tray, to try the shape of the strips.
If anything gets hot, smells or smokes: pull the cell away with pliers by its wire and put it in the metal box. A reversed cell destroys the board. That is why the picture and step 8 matter: the − pad of v0.7 is the one nearer the USB-C edge.
Optional, for the first power-up. Nobody has powered a FlashKa yet. If you own a bench power supply with a current limit, you can follow the bring-up of the LuxLibre testing guide (bring-up of a new board) before you solder the cell: set about 3.7 V and a current limit of 100 mA on the J2 pads. The protection chip may hold the board off when power first reaches J2 (the supply then shows almost no current): plug in USB for a moment, or connect the supply’s minus to the board ground (the USB-C shell) instead of J2 −. This guide goes on directly with the cell.
The firmware is the program that runs in the flashlight. v0.7 runs FlashKa firmware 0.7.0: the FlashKa firmware built for the v0.7 electronics (its LED driver, its levels, its battery). You install it from a web page, through the flashlight’s own USB-C socket. Nothing to download, nothing to install on your computer. Never install the v0.6 firmware on a v0.7: the two set the LED current differently. The installer makes sure of it.
You need: the main board with the cell soldered on (step 2), 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. The project publishes it at
https://dompka.github.io/LuxLibre/flashka/flashka-flasher.html. The same page is the file
app/flashka-flasher.html of the v0.6 folder:
open it in Chrome or Edge (double-click the file; if it opens in another browser, right-click →
Open with → Chrome). You can also put the app folder of v0.6 on any website with https (see
web_apps.md of v0.6).
2. Choose your FlashKa. The page asks “Which FlashKa do you have?” and shows two pictures. Choose “FlashKa v0.7 - three keys in the middle” (firmware 0.7.0). Nothing can be installed before you choose.

The installer asks which FlashKa you have (a screenshot of the page). Choose FlashKa v0.7, three keys in the middle.
3. Plug in. Connect the board’s USB-C socket to the computer. (The ring that shows charging is on the key board, so you see nothing on the bare main board. That is normal.)
4. 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)”. It also reads the firmware already on the light: a new board has none. If it finds the firmware of the other FlashKa, it warns you, and you can install only after you tick that you have checked your light.

The installer after Connect (a screenshot of the page): it names the firmware inside the page (FlashKa firmware v0.7.0 for FlashKa v0.7, 535,328 bytes) and shows three green checks.
5. Install. Leave the box “Factory reset” unticked (every installation already puts the settings back to the factory defaults). Click Install firmware. A progress bar runs for about one minute. Do not unplug while it runs.
6. Done. The page says “Installed and checked”. Unplug the cable.
That’s it. To update the firmware later, do exactly the same with a newer installer page.
Every installation resets the saved settings (your custom profile) to the factory defaults and makes the light forget the paired computers. After an installation, remove “FlashKa” from the Bluetooth list of each computer and pair it again (section 15).
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): a key must be held while the USB cable is plugged in. In v0.7 the key switches are on the key board, so:
In a closed light it works the same way: hold ● while you plug in. Why this works: plugging in USB restarts the chip (a small circuit on the board does that), and a chip that starts with a key pressed waits for new firmware instead of running the old one. Every press of any of the three keys pulls the same pin low. (The pin reaches the key board through the last of the six round J6 pads, the one nearest the rear end; the first one, nearest the front end, is ground.)
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 (flashka-fw-v0.7.0-merged.bin,
535,328 bytes: bootloader, partition table and program) to address 0 of the module’s 4 MB flash
memory. The file sits inside the page, next to the v0.6 firmware. The page checks its fingerprint
(SHA-256, 6554028f31b3e86c958335a1b03b4fd6f2a95000f727d752f4cb891318e79f96) and that it was
made for the board you chose before writing.
The three keys go into the floor from the inside, and the key board, screwed to two bosses of the floor, holds them in place.
Cut the parts out of the two frames with the flush cutters, close to the part, and file the stub of each tab flush with a needle file. The tabs sit on faces that are hidden in the light. Never cut or file the outer face of a clear key or its frosted ring. The frames are scrap.
The clear key carries the light of the ring, so its faces should be clear and smooth. Polish with fine wet-and-dry paper (1000, then 2000 and 3000, wet) and plastic polish. Keep the frosted ring matt. Clean the key with water and a little mild soap only: solvents (also isopropyl alcohol) can craze acrylic, and cyanoacrylate vapour leaves a white bloom.

Render, close-up of the bottom face (head to the upper right). The keys sit in a shallow frame: the previous key (left), the clear main key with the frosted ring (shown lit cyan; the switch is visible through it) and the next key (right). The chevrons point along the light: on the next key towards the head, on the previous key towards the tail.
Lay the tray open side up on a towel.
production/FlashKa_keys_assembly_top.pdf shows the pin
side. Turned the other way, the switches of ^ and v change places, the pins miss their six
gold pads, and two of them hit the USB-C socket of the main board, so the main board cannot go
down onto its ledges. Never force it.Turn the tray over and press each key from outside with a fingertip. You should feel: a hair of free movement (0.15 mm for the main key, 0.25 mm for the side keys), then a clear click. Press each side key near its two ends too: it must still click (that is the job of the stiffener). No key may stay down, and none may click by itself when the tray lies on the table.
Find a fault now, while the light is still open. The switches are on the key board, so the test runs with the main board lying in the tray on the six pogo pins. This way of testing is new and untested. Work on a non-metal surface. Keep the USB cable unplugged unless a step says so.
Lay the board in. The cell stays outside the tray for now, beside it on the table.
How to click a key. Hold the board down with one hand and press the keys from below with the other (lift the tray a little, or turn it on its side). A click is a press shorter than 0.4 s; the pause between the clicks of one gesture is at most 0.4 s. A hold is longer. If a gesture does not work, you were too slow: click faster, like a double-click.
With the light off, do each gesture and look at the ring:
| You do | You should see |
|---|---|
| ● 4 clicks | red × 3 (lockout on) |
| ● 4 clicks again | green × 3 (lockout off) |
| ● 3 clicks | blue × 2 (a Bluetooth window opens for 2 minutes), then a blue double blink every 3 s |
| ^ or v click | nothing: ^ and v do nothing while the light is off |
Red, green and blue must look like red, green and blue. If a colour is wrong (for example the lockout shows green first), the pad map of the ring LED differs from the plan. That is a known open point of the design (chapter 14, section 14.12). Do not assemble. Write down what you see and report it (section 18). The mixed colours (white, yellow) may look tinted: the colour balance is not tuned yet.
To check Bluetooth with the app (optional): open the app (section 16) in Chrome or Edge on a computer, click ● three times (ring blue × 2), click Connect in the app and choose FlashKa-XXXX. You should see: the battery percentage, the voltage and the temperature, and the app knows that it is a FlashKa v0.7.
Do not click ● once for now. A single click switches the main LED on, and no LED is connected yet. Nobody has tried that on a real board, so leave it for the LED test below.
Do not run High or Turbo on the bench, and keep Medium to a few seconds. Outside the aluminium body the LED board has nothing to shed heat into, and High puts more than 4 W into the LED. Do not look into the bare LED.
Warning — laser. Put on the 520 nm safety glasses first. Point the module at a matt dark card at the end of the table. Nothing shiny in the beam, nobody in line with it. Never look into the beam. The laser is on only while you hold the gesture.
Unplug the USB cable first: plugging in USB restarts the chip and ends presenter mode. The cell must be above 3.20 V (presenter mode is refused below that: one red blink).
Nobody has tried the pairing with a real FlashKa yet; if it does not work, see section 17.
Lock the light (4 clicks on ●, red × 3): it stays locked until section 15. Lift the board out and unsolder the LED wires from J3 and the laser wires from J5 with the desoldering braid: you need them with free ends in section 14. Check that nothing bridges the pads. The keys and the key board stay in the tray.
Work on a clean towel. The order matters, because some joints cannot be reached later. Two steps use glue (the lens and the two pads): give each the time on its pack to harden, and do the other work meanwhile. Close the lid last.
The cell is connected, so the board is live. Push the knob of the slide switch S2 towards the front (LED) end: SAFE. The light is locked since section 13.6 (if not: lay the board into the tray, hold it down and click ● 4 times, red × 3).

Render, exploded view. From the front into the head: the TIR optic (the lens), the LED on its 10 mm board, and the laser module (with the optional sleeve); above the head block the laser set screw (M1.6 × 5), which goes in from the top, under the lid. Below the tray, ready to go into its floor from inside: the clear main key and the two rubber side keys with their glued-in stainless plates. In the tray: the key board with its six pogo pins, held by two M1.6 × 2.5 screws. Then the main board with the hold-down pads drawn above it, the antenna spacer, the 14500 cell with its nickel strips, and the lid with its radio window insert and four M1.6 × 6 countersunk screws.
They are already in (section 12). Check once more that every key clicks.
If you did not do this in section 13.3: solder a red 24 AWG wire (60 mm) to the + pad and a black one (60 mm) to the − pad of the LED board, on the LED side, with the wires pointing away from the board’s centre. Keep the joints small and flat: the lens stands on this face.
Look into the big bore from the front. Its wall has two narrow grooves that end in two small holes at the bottom: seen from the front, the upper groove at about 11 o’clock (tilted towards the laser) and the lower one at about 5 o’clock.
Push the module into the small bore beside the LED bore, on the S2 side, from the front, wires first, until its front sits about 0.3 mm behind the front face (no thermal paste needed: a Class 2 module makes almost no heat). If you use the plastic sleeve (only for a module thinner than 6 mm), turn its slit down, away from the screw.
Then fix it with the M1.6 × 5 set screw, now, while the lid is off. The screw goes into the small thread in the top of the head block (the face that the front end of the lid covers), in front of the front lid-screw hole on the S2 side; look into it and you see the laser module at the bottom. Turn it in with the 0.7 mm hex key until it presses on the module: snug only, the module body is soft brass. In the model the screw then ends 0.77 mm below the top face, so the lid closes over it and nothing of it shows on the closed light. A screw that stands out of the top face is too long: use an M1.6 × 5.

Render, the open tray seen from the lid side, head on the left. The two hold-down pads are drawn on the board, where the lid bosses press: the big grey one on the metal can of the Bluetooth module and the small one nearer the head. Behind the board: the radio-window zone over the antenna and the 14500 cell on its two rails.
Pads. Under the lid there are two raised blocks, the bosses. A boss presses on the board through its pad: the big one is 8.8 × 12.4 mm and goes over the metal can of the Bluetooth module; the small one is 3.7 × 3.0 mm and goes at the front of the board.
When the lid closes, the big pad is compressed from 1.5 to 1.15 mm and the small one from 1.0 to 0.75 mm. Together they press the board down with about 40 N (calculated): five times the push of the six pogo pins, so the board stays on its ledges.
Radio window insert. The black insert closes the window of the lid; the Bluetooth signal passes through it. It is not glued: its plug fits the window, its flange sits in a pocket on the inside, and the antenna spacer below holds it when the lid is closed. Put it in from the inside just before you close the lid (section 14.10), with the textured face out.
Shorten the LED wires so that they lie flat without loops.
The antenna spacer goes in before the board. The antenna of the Bluetooth module sticks out of the board’s rear edge and lies just above the spacer once the board is in, so the spacer cannot go in afterwards. The two cell wires run through the open channel of the spacer, which the board then covers. The cell goes in together with the board, because the short red wire joins them.
The cell must not rattle, and the lid must close without force. Two small stacks of the 0.5 mm foam sheet do both: a strip under the lid, about 6 × 46 mm, that presses the cell onto its rails, and the tail pad, about 8 × 8 mm, between the − end and the tail wall. Use the size of your cell that you measured in section 8:
| Your cell (diameter × length) | Foam strip under the lid | Tail pad |
|---|---|---|
| 13.8 × 48.7 mm (the smallest F15) | 3 layers (1.5 mm) | 7 layers (3.5 mm) |
| 14.0 × 49.0 mm (a typical F15) | 3 layers (1.5 mm) | 6 layers (3.0 mm) |
| 14.2 × 49.3 mm (the largest F15) | 2 layers (1.0 mm) | 5 layers (2.5 mm) |
| 14.3 × 50.4 mm (the largest K10) | 2 layers (1.0 mm) | 1 layer (0.5 mm) |
The way of the strips and the cell wires has not been tried on a real light. If it does not fit, report it (section 18).
You should see: the lid flat on the tray, no gap along the edges of the facets, no wire pinched in the joint. Shake the light gently: the cell must not rattle (if it does, add a foam layer).
If a key does not work or feels wrong, see section 17 (keys).
Thread a split ring (wire at most about 1.5 mm) or a thin cord through the slot in the tail.
Plug in the USB cable and charge the light until the ring is steady green. Then:
The levels of the default profile: Moon 3 mA (about 1 lm), Low 40 mA (19 lm), Medium 250 mA (119 lm), High 1,530 mA (601 lm), Turbo 2,850 mA (966 lm with the LED hot, about 1,045 lm in the first second). These are estimates from the LED’s datasheet, not measurements. All levels and profiles are in Appendix A, section A.9.

Render, the laser side (+Y), head on the right, tail with the split ring on the left. Near the head, the small slot of the slide switch S2. There are no marks on the body: knob towards the head = SAFE, towards the tail = ARM.
The laser warning label and what it means are in section 1 (Laser safety). With the light off, click ●, then click and hold ●: the laser is on while you hold. The ring is steady red. The slide switch S2 in the side wall must be armed: knob pushed towards the tail (ARM). With the knob towards the head (SAFE) the laser cannot come on, whatever the software does: the switch cuts the laser’s supply in hardware (LAS-2). The laser stops after 60 s, above 60 °C, below 3.2 V and in lockout.
Check it once with the safety glasses on and the light pointed at a wall (unlock first: 4 clicks, green × 3): knob towards the head → no green dot; knob towards the tail → the dot appears. If the laser comes on with the knob towards the head, your switch works the other way round. Do not use the light as it is, and report it (section 18).
In presenter mode FlashKa is a Bluetooth keyboard that turns slides. The laser stays the pointer. Hold the light like a presenter, keys up under your thumb and the head towards the screen: the key nearest the head shows ^ and goes to the next slide, the key nearest your hand shows v and goes back.
Enter it: hold ^ and v together for 2 seconds. The ring blinks magenta twice and then breathes cyan, slowly: the light waits for a computer. The main LED cannot be switched on in presenter mode.
What the keys do (the key set “Page keys”, the default):
| You press | Key sent |
|---|---|
| ^ click | next slide: Page Down (key set “arrows”: Right arrow) |
| v click | previous slide: Page Up (key set “arrows”: Left arrow) |
| ^ hold 0.8 s | start the show: F5 (sent once) |
| v hold 0.8 s | end the show: Esc (sent once) |
| ● click | black screen on or off: B |
| ● hold | laser while you hold (S2 on ARM) |
Every key goes out once, as a quick press and release, so holding a key never makes the computer repeat it. Keys are sent only while a computer is connected (ring off). While the ring breathes cyan, presses are dropped.
Pairing works only in presenter mode. The light uses a pairing method without a PIN (“Just Works”): the computer asks you to confirm. When the computer is connected, the ring blinks cyan twice and goes off. The steps below come from the documentation of each system. Nobody has tried them with a real FlashKa. If your screen differs, trust your system and tell the project.
| System | Steps | Note |
|---|---|---|
| Windows 11, Windows 10 (1803 or newer) | Settings → Bluetooth & devices → Add device → Bluetooth → “FlashKa-XXXX” (keyboard icon) | older Windows 10 cannot pair |
| macOS | System Settings → Bluetooth → “FlashKa-XXXX” → Connect | close the Keyboard Setup Assistant if it opens |
| Android 6 or newer | Settings → Connected devices → Pair new device → “FlashKa-XXXX” → Pair | |
| iPhone, iPad (iOS 9 or newer) | Settings → Bluetooth → “FlashKa-XXXX” (Other devices) → Pair | the on-screen keyboard hides while the light is connected |
| Linux (BlueZ, kernel 3.19 or newer) | bluetoothctl: scan on, pair <addr>, trust <addr>, connect <addr> |
The light remembers up to 4 computers; a fifth replaces the one paired longest ago. After the first pairing, entering presenter mode is enough: the computer reconnects by itself and the ring blinks cyan twice.
Which keys suit which program has not been tested. Choose the key set in the app (section 16).
| Program | Key set | Note |
|---|---|---|
| PowerPoint (Windows, Mac), LibreOffice Impress | Page keys (default) | B is the black screen, Esc ends the show |
| PDF viewers | Page keys (default) | |
| Keynote, Google Slides | arrows (Right / Left) | on a Mac, F5 does not start a show: start it on the computer |
| A program that ignores Page Up and Page Down | arrows |
F5 starts a show in Windows and Linux programs only. If the slides do not move, try the other key set.
Presenter mode ends when:
Presenter mode keeps the radio on, about 20 mA (an estimate, not measured), which is about 50 to 70 hours from a full cell (calculated with the 1,400 mAh that the firmware assumes).
Forget all paired computers: hold ^ and v together for 10 seconds. The ring blinks white × 3. On the way the light changes mode at 2 seconds (ring magenta × 2), as for any 2-second hold: from flashlight mode it enters presenter mode and stays there, ready to pair a new computer; from presenter mode it leaves. Also remove “FlashKa” from the Bluetooth list of each computer, otherwise that computer keeps trying the old key.
The app serves both FlashKa v0.7 and v0.6 and recognises your light by itself. On a computer
(Windows, Mac, Linux, ChromeOS with Bluetooth): open
app/flashka-app.html of the v0.6 folder in
Chrome or Edge. On a phone the page must come from a web address (https). The project
publishes it at https://dompka.github.io/LuxLibre/flashka/flashka-app.html. Open that address
in Chrome on Android, or in the free Bluefy browser on an iPhone or iPad. You can also put the
app folder of v0.6 on a web site of your own (free on GitHub Pages, about 10 minutes, step by
step in web_apps.md of v0.6, section 4).
The light listens for the app only in short Bluetooth windows: while it is on, for 2 minutes after it was switched off, after a triple click, or while USB is connected. So switch it on (or triple-click it) before you tap Connect. The app cannot connect while presenter mode is on: a light has one Bluetooth connection at a time.
What the app shows and does (the picture below shows the pages):

Screenshots of the web pages in demo mode, not of a real light. Left: the light controls and the profiles. Middle: the Presenter card (dark theme). Right: the firmware installer.
| What you see | What to do |
|---|---|
| Nothing at all when you click | Charge it (USB). The ring breathes red while charging. |
| USB does not charge | Charging pauses above 45 °C (it goes on at 43 °C) and below 0 °C, and while the LED runs above 500 mA. Check the cable. |
| Charging pauses, or a full charge takes more than 4 hours | Normal with a nearly empty cell: the charger warms the board next to the temperature sensor, so charging pauses above 45 °C until it cools to 43 °C. A full charge takes about 3.5 hours at room temperature, up to about 3.8 hours with the pauses, and longer in a warm room. |
| A short red flash when you click ● | Locked: four clicks unlock it (green × 3). |
| Five fast red blinks | Battery empty: charge it. (It also means that presenter mode ended because the battery fell below 3.20 V.) |
| One red blink | The light refused a request: turbo when too hot, the laser when not allowed, switch-on with an empty battery, presenter mode in lockout or below 3.20 V. |
| ^ or v do nothing | Normal while the light is off or locked. They step the levels while the light is on, and turn slides in presenter mode. |
| The ring flickers red for a moment when the light starts | Normal: the boot message runs over that pin. |
| A very short press on ^ or v switches the light on | Known: from deep sleep a very short press counts as ●. Hold a little longer when you wake the light. |
| Light gets dimmer by itself | Normal: in turbo the temperature regulation takes over after about 57 s and the turbo time ends at 60 s; High steps down after about 3.5 minutes (210 s); then the light holds about 280 lm at a steady temperature. A low battery also steps it down. |
| Turbo is weaker when the cell is not full | Normal: one cell sags under the turbo current, and below about 3.7 V the driver cannot hold the full current. From a half-full cell turbo gives about 775 lm instead of 966 lm (simulated). A high-drain cell such as the Vapcell K10 keeps the full turbo longer, but runs shorter. |
| The light goes dark during turbo and no key wakes it | The battery protection on the board cut the cell off and stays off: the light has no power switch, so only USB power resets it. Plug in USB for a moment; the light then works again. It should not happen in normal use: report it (section 18) and use High until the cause is known (or set the Custom profile’s battery current limit to 2,500 mA). |
| After connecting the cell nothing reacts | Before the firmware is installed this is normal. Plug in USB once: it also wakes the protection chip. |
What the ring shows (the complete table is in Appendix A, section A.5):
| Ring | Meaning |
|---|---|
| red, slow breathing / green, steady | USB connected: charging / charge complete |
| red × 3 / green × 3 | lockout on / off |
| green, yellow or red for 2 s after switch-on | battery above 50 % / 20–50 % / below 20 % |
| red blink every 4 s while the light is on | battery below 10 % |
| blue × 2 | Bluetooth window opened (● 3 clicks while off) |
| blue double blink every 3 s | flashlight mode: Bluetooth window open, nobody connected |
| cyan (dim), steady | flashlight mode: the app is connected |
| cyan × 3 | “Identify” from the app |
| magenta × 2 | presenter mode entered or left |
| cyan, breathing | presenter mode: waiting for the computer |
| cyan twice, then off | presenter mode: computer connected |
| short white blip | a presenter key was sent |
| white × 3 | paired computers forgotten |
| red, steady | laser on |
| one red blink | request refused |
| five fast red blinks | battery empty |
| What you see | What to do |
|---|---|
| The computer does not list FlashKa | The ring must breathe cyan (waiting). If not, enter presenter mode (^ and v together, 2 s). One red blink means the light refused: it is locked, or the battery is below 3.20 V. Bluetooth must be on in the computer. |
| Pairing fails, or the computer says it cannot connect | Remove FlashKa from the computer’s Bluetooth list and pair again. Do this after every firmware installation too: the installation makes the light forget its computers, but the computer still holds the old key. |
| A computer cannot pair at all | A computer that only supports old (“legacy”) pairing cannot pair: Windows 10 before 1803 and Android before 6. The light uses only LE Secure Connections. |
| Paired, but the keys do nothing | The ring must be off (connected). Cyan breathing means no computer is connected, and keys are dropped. Click into the slide window first so that it has the keyboard focus. Try the other key set in the app. |
| F5 does not start the show | F5 starts a show in Windows and Linux programs only. On a Mac start the show on the computer. |
| The app cannot connect | One connection at a time: the app cannot connect while presenter mode is on. Leave presenter mode first (^ and v together, 2 s). A paired computer in range may also hold the link for up to 10 s; wait, or switch off its Bluetooth. |
| Presenter mode ended by itself | The idle time ran out (30 minutes by default), the battery fell below 3.20 V, or USB was plugged in. |
| A computer should forget the light | Hold ^ and v together for 10 s (ring white × 3) and remove FlashKa in the computer’s list. |
| What you see | What to do |
|---|---|
| Laser does not come on | S2 must be armed (knob towards the tail). The gesture is click, then click-and-hold from off (● hold in presenter mode). It stops above 60 °C, below 3.2 V and after 60 s, and never works in lockout. |
| Installer: no port | Data cable, other USB port (section 11). |
| Installer: connection fails | Hold the main key while plugging in (section 11). |
| Installer: it says the firmware on the light belongs to the other FlashKa | Check your light: a v0.7 has the three keys in the middle of the bottom face. If it is a v0.7, tick the box that says you have checked it, and install. |
| Installer: it refuses a file you chose yourself | The file was made for the other FlashKa. Use the firmware inside the page. |
| Installer: “The firmware inside this page is damaged” | Get the page again (a changed file fails the check). |
| App: “the button has priority” | Wait 3 seconds after pressing a key, then try again. |
| App finds no flashlight | Bluetooth is off to save power: switch the light on, or click ● three times (ring blue × 2), then Connect. It also finds nothing in presenter mode. |
| What you see | What to do |
|---|---|
| The LED board does not drop into the bore | Sand its edge lightly on fine paper, turning it, and try again. |
| The lens rocks or stands out of the front face | It stands on the solder joints of the LED board: file two small notches into the rim of its holder (section 14.4), or make the joints flatter. |
| The lens is foggy or white | Cyanoacrylate vapour, or epoxy on the face. Use a spare lens (they come in packs of 5), and only epoxy, in tiny dots at the rim. |
| The beam has a dark spot or a ring | The LED board is turned or not flat on the bottom of the bore, or the lens does not stand on the board. Report what you see (section 18). |
| The lid does not close over the cell | The foam strip is too thick for your cell (take a layer off, section 14.9), a strip or a joint stands out (bend it flatter, into the channel or the corner), or the cell is not on its rails. Never press the lid down onto the cell by force. |
| The cell rattles | Add a layer of foam to the strip or to the tail pad (section 14.9). |
| A strip came off the cell | Weld it on again (or have it welded). Never solder it onto the cell. |
| What you see | What to do |
|---|---|
| The ring stays dark and no key works, but USB charging starts | The pogo pins do not reach the main board. With the lid closed the pads press the board down; with the lid open, press the board onto its ledges. Check that no pin is bent and that the six gold pads J6 are clean (wipe them with isopropyl alcohol). Are the key-board screws in and the board flat on its bosses? Is the key board the right way round, its pins on the S2 side (section 12.4)? |
| One key does nothing, the others work | Open the lid, take the main board out and look at that switch on the key board: is it soldered on all pads? Is a cast stub or a drop of glue between the key and the switch? |
| A key sticks or does not come back | Take it out: it must drop through its opening by its own weight. Look for a burr in the opening, a tab stub on the clear key, or glue on the flange of a side key. A cast key that is too big (the resin mould) can be trimmed carefully at its edge, or cast again. |
| The main key is blocked, or the key board does not sit flat on its bosses | The main key is turned by 90°: the long side of the pocket in its inner face must run along the light (section 12.3). |
| A key clicks by itself, or the light switches on when it lies on the table | The free play is gone. Check that the key flange lies flat on the floor (no stub or glue under it), that the side key’s doubler is not too thick (only one layer of 0.3 mm shim) and that the key-board screws are not overtightened. The main key has a calculated worst case of a light touch on its switch (chapter 14, section 14.4.4): report it. |
| A side key clicks in the middle but not at its ends | The stiffener is missing or loose: glue the plate and the doubler again (section 9.4). |
| A side key shows its chevron the wrong way | Turn it round (section 12.3): the key nearer the head points to the head (^), the other to the tail (v). |
| The ring is dim, uneven or only a spot | Not known yet: nobody has seen a real ring through the clear key. Check that the key is the right way up (frosted ring outside) and clean. Report what you see (chapter 14, section 14.12). |
| The lid does not close flat | The board is not flat on its ledges, a wire is under it, the antenna spacer is not down or is turned (its tall side goes to the S2 side), a pad is too thick (1.5 mm and 1.0 mm), the foam on the cell is too thick, or the laser set screw stands out of the head block (use an M1.6 × 5). |
| What you see | What to do |
|---|---|
| The rubber stays sticky after a day | The mix ratio was wrong (equal volumes of A and B, from two syringes), the room was too cold, or there was too much pigment. Clean the mould and pour again. |
| Bubbles on the key face, or an incomplete chevron | Work rubber into the chevron grooves with the toothpick before pouring, pour slowly into one corner, and degas the rubber if you can. ECON 80 sets fast: pour right after mixing. Keep the good keys as spares. |
| A key tears or sticks in the mould | Not enough mould release: spray every face that touches rubber and let it dry before each pour. Without release the rubber sticks hard to the resin. |
| A thin film (flash) on the edge of the key | Trim it with the scalpel. Tighten the four bolts evenly next time. |
| The key face is glossy or shows lines of the print | Rub the cavity floors with 400-grit paper (section 9.1); the key still works. |
| The chevron is matt | Polish the chevron grooves of the mould (section 9.1); the key still works. |
docs/ch14_v0.7_keys_and_skin.md: the design story of v0.7 (why every decision was made, the
1000 lm design and the 14500 cell with their simulated numbers, the cost), the checks that were run and the open
points of the first prototype (section 14.12). It is also printed as
FlashKa_v0.7_Hardware_Package.pdf.docs/bom_notes.md: where every price in the workbook comes from, what got cheaper, the
options, and what to re-check.docs/housing_v07_notes.md: the housing files, the moulds and how to rebuild them.order_files/3_rubber_keys/README.txt: the casting steps with the rubber maker’s numbers.docs/testing.md
at the root of the repository): the bring-up of a new board and the
optical safety checks.hardware/flashka-keychain-v06/ in the repository).Tell the project what you find. No FlashKa had been built when this guide was written, so
every result helps: what you ordered and what the shops said, how the casting went, what worked,
what you measured, what went wrong. Open a Build report in the issue tracker of the LuxLibre
repository (https://github.com/DomPka/LuxLibre/issues).