Someone threw this Lunii « Ma Fabrique à Histoires » in the trash because its selection wheel was broken. I took it home.
One resoldered knob and one new regulator later, it works again. And it now plays a story that no shop sells: made at home, about our own village, read with my own voice.

The repair
First the wheel: a broken solder joint on the knob, resoldered. Then, a few stories later, the box started to show NO SD CARD. Merci du cadeau.


The 3.3 V rail was at 2.5 V. The regulator, an AP7362-33, had its ground pin not soldered to the board.

The fix: a new regulator, plus a small wire from its ground pin to the USB-C connector ground. Kapton tape first, because hot air also heats what is next to the part.


3.3 V again. It boots.

Then a cleaning: stickers removed with hot air and a scalpel, shells washed with 99.9 % isopropanol.

The format
There is no official way to add your own stories. Thanks to the work of the community, here is what a V2 box wants:
- Content encrypted with XXTEA (the V3 uses AES-128)
- A key made from the box’s own
.mdfile (512 bytes on a V2): a story pack plays on one box only - MP3, mono, 44.1 kHz, no ID3 tag at all, and 300 ms of silence at the start (if not, the first word is cut)
- Images: 320 x 240, 16 levels of grey, BMP RLE4
- The pack itself: small binary files called
ni,li,ri,si,bt,nm, plus foldersrf/(images) andsf/(sounds) - A
.piindex file that sets the order of the stories on the wheel
One small mistake, and the story does not play.

The pipeline
1. The story: I took photos of places in our village and gave them to an AI agent, with a brief file (STORY_CREATION_PROMPT.md) that explains the format. It wrote a tree of 3 places x 3 companions = 9 branches of 7 sentences each: real places and real habits, turned into children’s stories. 2. The narration is my voice, cloned by a model running locally. The clone reads better than I do. Vexant. Missing lines use a standard TTS voice (edge-tts, fr-FR-DeniseNeural). 3. The images come from Google Imagen 4, always with the same style prompt:
Minimalist white silhouette of {subject} on a solid black background,
flat 2D icon style, high contrast, no writing, no text, no words
Then converted to 320 x 240, 16 greys, RLE4. Same images are kept once (MD5), so the whole story uses only 9 images. 4. A script builds the pack and encrypts it with XXTEA. Another one finds the SD card (lsblk), copies the files, updates the .pi index, checks and unmounts. A third one puts everything back as before.

How AI was used
Almost everywhere, and that is the fun part:
- the story text: an AI agent, from my photos and my brief
- the images: Google Imagen 4
- the voice: my own voice, cloned by a local model
- the code (compiler, encryption, deployment): written with an AI coding agent (Claude Code), from the community documentation of the format
My part: the photos, the choices, the soldering iron, and checking every story before it reaches the box.
Note: I don’t have much time for the blog these days, so this post was written with the help of an AI, from my own notes, then read and corrected by me. Better to share the content this way than not at all.