The Charmera, Inside and Out
A field guide to Kodak’s keychain camera: what the spec sheet says, what’s really in it, what it costs to build and who makes it
This is the reference companion to Better Taste for a Tiny Camera. The essay is an argument, told as eight questions in the order I had to answer them: what the Charmera is, whether anyone can get inside it, how it makes a photo, what could change, why that’s worth doing, what it should look like, how to fit taste onto it, and where it stands. This page collects the facts underneath, for anyone who owns one, is thinking of buying one, or wants to build on it.
Every claim says where it comes from:
- Public: a published source, linked.
- Firmware: read from the public firmware dump, or found by running its code in an emulator. Nothing here has been checked on a camera with modified firmware.
- Estimate: a number I modelled, with its assumptions stated.
The spec sheet, checked
Most listings give the same handful of numbers. Here is what each one turns out to mean.
| The listing says | What’s actually there | Basis |
|---|---|---|
| 1.6 MP photos, 1440 × 1080 | The sensor runs a 1280 × 720 mode. The firmware keeps the centre 960 × 720, captures it at 800 × 600 (0.48 MP) and enlarges that to 1440 × 1080 when it saves the JPEG. | Firmware |
| 1440 × 1080 or “1080p” video at 30 fps | Generalplus rates the chip’s hardware motion-JPEG encoder at up to 720p at 30 fps. The video is either enlarged too or recorded beyond that rating. I haven’t traced the video path. | Public |
| A “2 MP” camera module (community teardowns) | An SP140A sensor, identified by matching the firmware’s register program against two open-source drivers. It is a 720-line part. | Firmware |
| 7 filters and 4 frames | A 12-position mode selector: Standard plus three colour filters (Warm, Cool, B&W), four frames and four Pixel filters. Three colour filters plus four Pixel filters make the seven. The colour filters only change settings in the colour processor, so they cost nothing per photo. The Pixel filters run on the CPU over the whole 800 × 600 image. | Firmware |
| “2 MB” of memory (teardown comments) | The 2 MB is the flash chip that holds the firmware. The working memory is 8 MB of DDR inside the processor’s package. | Public |
| No Wi-Fi | Correct for the hardware, but the firmware carries a complete Wi-Fi driver and network stack for a radio the camera doesn’t have. | Firmware |
| A Kodak camera | Made by Reto, a Hong Kong company, under a Kodak licence. The firmware’s build strings name a project called JH5408, and the words Reto and Kodak appear nowhere in its code. |
Public, Firmware |
None of this makes the Charmera a worse buy than its reviews say. It explains them. Reviewers describe soft, low-detail photos and jerky video, and the numbers above are why. The essay traces the whole photo path in How does it make a photo?
What’s inside
The Charmera is a car dashcam platform in a keychain shell. One chip does almost everything, which is why the board is so small and so cheap.
- ARM7 processor, up to 144 MHz
- 8 MB DDR memory in the same package
- Colour processor and scaler
- JPEG encoder; motion JPEG up to 720p30
- USB 2.0 and a lithium battery charger
| Part | Notes |
|---|---|
| Processor Generalplus GPCV2247F |
A camera chip sold for dashcams. The 64 Mb (8 MB) of DDR memory, the colour processor, the JPEG engine, USB and the battery charger are all on one QFN64 package. |
| Sensor SP140A, 1/4-inch |
Identified from the firmware’s own register writes. The camera module is marked KC28, and the same module turns up in no-name keychain cameras. |
| Flash Puya PY25D16HB, 16 Mbit |
Holds the whole 2 MiB firmware image, mapped region by region in the essay. |
| Screen About 0.8 inches |
The interface art in the firmware is drawn at 160 × 80. The optical peephole beside it shows nothing electronic. |
| Battery 200 mAh lithium polymer |
Taped to the board; the chip’s built-in charger is rated at 200 mA. |
| Build Two screws hold the board |
The camera module plugs in on a ribbon cable, an infrared-cut filter is glued between sensor and lens, and the speaker hangs on two wires. |
The parts identification is byjp’s teardown; the processor details are Generalplus’s own product page. Lens figures are from retailer listings.
Relatives and copies
The Charmera has close relatives. Godox’s C100 camera runs the same Generalplus dashcam platform. Its community firmware map lists the same USB ID, 1B3F:8301, which also sits in the Charmera’s firmware. It puts the colour processor at the same address, 0xD0800000, but pairs it with a different sensor.
The copies are a different story. The best-known Charmera clone, the G6 “thumb camera”, sells for around $15 with a preview screen and a “1984” in place of “1987”. Hackaday found it runs on an unrelated chip, the HX-Tech HX3302B. PetaPixel called it a knockoff that “steals everything but the charm”. The shell is easy to copy; the platform underneath is not the same. How the firmware on that platform was read, and how changes could get back in, is the essay’s Can anyone get inside it?
What it costs to build
My estimate is that Reto pays its factory about $3.60 per camera for launch builds and about $3.95 for current builds, give or take $0.30. That is around 12% of the $29.99 launch price.
| Part | Launch | Now |
|---|---|---|
| Processor with 8 MB memory | $0.76 | $1.06 |
| Camera module (sensor, lens, IR filter, cable) | $0.53 | $0.53 |
| Screen module | $0.39 | $0.39 |
| Battery with protection board | $0.25 | $0.25 |
| Housing, printing, clasp | $0.21 | $0.21 |
| Packaging and cable | $0.28 | $0.28 |
| Flash chip | $0.05 | $0.09 |
| Passives, connectors, board, speaker, buttons | $0.41 | $0.41 |
| Parts | $2.88 | $3.22 |
| Assembly, test, overhead, scrap | $0.45 | $0.45 |
| Factory margin (about 8%) | $0.27 | $0.29 |
| Price to Reto, at the factory | about $3.60 | about $3.95 |
How the estimate was built matters more than its precision. It started near $7, using typical prices for this kind of part. It came down as each line was rebuilt from the supplier’s own economics:
- Processor: Generalplus’s reported gross margins, plus the cost of the die and of the memory stacked with it.
- Sensor: the average selling price of a large Chinese sensor maker.
- Flash: the flash supplier’s average price per chip.
- Assembly: each step timed from the teardown, about four minutes of labour per camera.
Two corrections moved it most. The first was learning that the “2 MB of RAM” in teardowns is the flash, and that the chip carries 8 MB, not 16–32 MB, of memory. The second was replacing a margin at every tier with what a single factory would actually quote.
The rise since launch is almost all memory. Contract prices for the older DDR memory inside the chip rose sharply through 2026, and small flash chips went up too. The molds are a separate one-off cost, perhaps $50,000 to $80,000, a few cents a camera at this volume. The rest of the $29.99 pays for Kodak’s royalty, freight, tariffs, the retailer and Reto itself.
How many have sold
Reto has never given a number. What’s public:
- The first drop, on 9 September 2025, sold out within 24 hours. Reto’s Vivienne Tsang said it sold about ten times what the company expected.
- The next presale sold out in eight minutes, limited to one box per order.
- It stayed scarce until early 2026. Resold units went for several times the retail price.
- Kodak’s brand-licensing segment, which collects royalties from every Kodak licensee, earned $13 million in the first half of 2026, against $10 million a year earlier.
If the Charmera pays Kodak something like a dollar a camera, even part of that $3 million increase means hundreds of thousands of cameras a quarter. My working estimate is about a million in the first year. The chip maker’s revenue growth gives a looser ceiling of a few million. The weak link is the royalty: at fifty cents a camera, the estimate doubles.
How the Millennium Edition is doing is genuinely unclear. Reto capped orders when it launched in June 2026, but neither edition has had the original’s months of sell-outs since. Being in stock doesn’t prove weak demand, because Reto may simply have built more. Kodak’s next quarterly filing, the first to cover a full quarter of the new edition, will say more.
Who makes it
Reto is a small Hong Kong design and brand company. It designs the products and sells them worldwide, and a contract factory builds them. Its founders keep a low profile; nearly everything public comes through Vivienne Tsang, its sales and marketing director.
| When | What |
|---|---|
| 2019 | Reto’s own three-lens 3D film camera, crowdfunded on Kickstarter |
| May 2022 | The Kodak Ektar H35, a $50 half-frame film camera and Reto’s first Kodak camera |
| September 2025 | The Kodak Charmera, its first digital camera |
| Late 2025 | The Kodak Snapic A1, a $99 35 mm film camera with a glass lens |
| 2026 | The Charmera wins an iF Design Award in March and a Red Dot award in May |
| June 2026 | The Charmera Millennium Edition: the same hardware with new shells, frames and filters |
Kodak lends the name. Reto is one of its global brand licensees, and the Charmera’s royalties show up, unseparated, in Kodak’s brand segment.
The factory wrote the software, built on Generalplus’s. The firmware still carries its build history:
- the project string
JH5408 20250520; - source paths under
G:\code\2247\5408\v006, meaning project 5408, on the 2247 chip, sixth revision; - paths from a Generalplus reference kit for a different chip,
GPCV1235F_WIFI_SingleCam_SDK_20191212, which is where the Wi-Fi stack comes from; - an auto-exposure and white-balance library signed “by Comi”, dated March 2020;
- a second build date,
Oct 14 2025, a month after launch.
The card updater looks for files starting JH_, so “JH” is most likely the factory’s own prefix. That makes each new edition, in effect, the factory swapping assets in its own build, which is why Reto’s newest Charmera can have new filters while older ones can’t get them.
Why it hit
Most of the Charmera’s success came from decisions Reto made deliberately. Some of it was timing.
What Reto did well:
- The licence. Reto has said that building a brand from scratch was the hard part with its own cameras. The Kodak name solved that, and opened doors to retailers.
- The reference. The design tributes the Kodak Fling, Kodak’s first disposable camera. The yellow model’s “1987” is the Fling’s year. It’s specific enough to feel authentic, even to buyers born long after the Fling.
- The blind box. It turned a $30 gadget into a collectible, with a 1-in-48 secret edition.
- The keychain. Every owner carries it where other people can see it.
- Cheap engineering. A vendor reference platform at a few dollars a unit kept the price an impulse buy, and made new editions cheap to produce.
Where it was lucky:
- The wave. It launched at the height of the 2025 blind-box craze and the lo-fi digital camera trend.
- Under-forecasting. Selling ten times the plan created months of real scarcity, which fed the hype. It looks like first-run planning, not a tactic.
- Reviews that helped. “The worst camera I’ve ever used” came with “but I actually love it”, because people were buying a charm that happens to take photos.
How this was figured out
Most of this came from a few weeks of research in long conversations with AI assistants, ChatGPT and Claude. They read disassembly, wrote and ran the emulation harnesses, searched filings, teardowns and forums, and cross-checked one another’s work. I chose the questions, judged the evidence and made the calls.
The methods were plain ones:
- Static analysis of the public dump. Call graphs, the camera’s own build strings and resource directory, and the tables the code reads.
- Running the original code. Selected routines from the dump, executed instruction by instruction in an emulator, with the hardware around them modelled explicitly. That is how the Pixel filter’s threshold, the frame compositor’s see-through rule and the way the tone curve feeds metering were confirmed. It is not the same as running on a camera, and nothing here has been flashed.
- Measuring real photos. Two of my own Charmera photos, with phone photos as a control.
- Pricing from the supplier side. Each line of the cost estimate built from the supplier’s own margins and prices, not from retail.
Being wrong carefully
Reverse engineering depends on the path you took, so the wrong turns stay on the record rather than being edited away. These are the ones that taught the most:
- “The sensor’s native resolution is 1280 × 720.” This was stated too confidently before the sensor was identified. At that point the evidence only showed a working raster.
- “
sensor_preview_initstarts a task.” It doesn’t. The string is a tag passed to a memory allocator. - “This function is the auto-exposure controller.” It had the right arithmetic but no live callers. The real controller was elsewhere.
- “Digital gain is masked to eight bits.” The instruction clears bits 9 to 15, so values keep nine bits.
- “960 × 720 is a second photo mode.” It is the fallback used when there’s no memory card. It also drops JPEG quality from as high as 85 to 45.
- “Standard is a constant 1.25× saturation.” It adapts with exposure, as the essay describes.
- “The big empty block in the program is free space for new code.” It is the heap. The boot code hands exactly that range to the memory allocator, so code placed there would be overwritten by the first allocation.
- “The Wi-Fi stack is dead, so it can be overwritten.” Mostly dead, but two general-purpose helper functions happen to sit inside it, and live code calls them. Overwriting the region wholesale would have bricked the camera.
- “Teardowns say it has 2 MB of RAM.” The 2 MB is the flash chip. The processor carries 8 MB of memory in its own package, and getting that right was one of the two corrections that moved the cost estimate most.
The rules that came out of these were plain ones. Keep what the binary shows separate from what a related SDK suggests, what emulation does, what the community reports and what real hardware does. Don’t promote a function’s name or its first caller into its meaning. Don’t let a plausible architecture harden into fact.
What’s still unknown
- How the video path actually works, and at what resolution video is really recorded.
- Whether every production batch runs the same firmware and the same flash chip as the public dump.
- The camera’s physical colour and noise response, which needs untouched files straight off the card.
- How many have sold, and the royalty rate behind every estimate.
- Who the “JH” factory is.
Estimates on this page come from research notes kept alongside the essay. Firmware findings are against the public dump from Project Sirius, SHA-256 720ed0b6…436c. The context, the checks and the scripts are in scripts/charmera/README.md. This page has no affiliation with Kodak, Reto or Generalplus.