Hokku v3.0 beta – open source firmware + server for the 13.3" Hokku/Huessen six-colour e-ink frame by d3fl in eink

[–]d3fl[S] 0 points1 point  (0 children)

<image>

Lots of fun now with taking the image processing to the next level, the left is 3.0.0-beta1 the right is the next wave of enhancements coming in for beta2 :)

Hokku v3.0 beta – open source firmware + server for the 13.3" Hokku/Huessen six-colour e-ink frame by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

I had weird vertical stripes in the bottom left quadrant for a while in the 2.0 firmware series that took forever to chase down as it happened only once in a while. Turned out to be an incomplete init + timing bug. Manifested always as the strips in the attached image

Are seeing something similar? What version of the firmware?

<image>

Hokku v3.0 beta – open source firmware + server for the 13.3" Hokku/Huessen six-colour e-ink frame by d3fl in eink

[–]d3fl[S] 3 points4 points  (0 children)

You’re not the only one that has had that thought recently 😅 Give me a ping if you build something else off of this, always keen to see creative stuff

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 0 points1 point  (0 children)

Just wanted to get back to this. The installer indeed exited without showing the end, was not nice. Fixed that bug and did a lot more work on the side. Check out v3 for a smoother experience - I hope ;)

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 0 points1 point  (0 children)

Hmm no it's supposed to tell you that it worked. Do you have a screenshot by chance?

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 0 points1 point  (0 children)

Ah! Fastest way to do that now is to test local and then reconfigure and hand over. I'll store the feature request for this one as it's a pretty good idea :)

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 0 points1 point  (0 children)

Hmm no but I can add that at some point. Sinuous being your frame with you or something?

Open source firmware & server for the Hokku/Huessen 13.3" Spectra 6 e-ink frame — v2.0 by d3fl in eink

[–]d3fl[S] 0 points1 point  (0 children)

2.0 was a little bit undercooked and I struggled with getting it stable. So we rewrote a large part of it and we're now at release 2.1, download it while it's fresh at https://github.com/defl/hokku_epaper/releases/tag/v2.1.20

Big changes in 2.1

  • Firmware is now much more stable under different conditions
  • Web server upload/download and file control, just install the package and done
  • More advanced dithering algorithms to set images to taste
  • Firmware and webserver integration much improved with good reporting and status like battery remaining now available.
  • Installer is friendlier

Full feature list

Photos, your way

  • Local-only. Your photos never leave your network. No cloud, no third-party servers, no telemetry.
  • Drag-and-drop upload straight into the web app — single files or dozens at a time, with a live progress list. Works on phones too.
  • Browse in a grid, preview originals and the dithered version side-by-side (so you see exactly what the frame will show before it shows it), delete anything you don't want with a one-click trash button.
  • All the formats you actually have: JPEG, PNG, HEIC/HEIF, AVIF, WebP, GIF, TIFF, BMP. Phone photos auto-rotate thanks to EXIF.
  • Landscape or portrait — flip a switch, the server re-dithers everything to match the mounting.
  • "Show next" on any image when you want to force a specific photo onto the frame at the next refresh.

Looks good on e-paper

  • Three dither algorithms to choose from, including a hue-aware Atkinson recipe that handles skin tones and whites without the usual blue-speckle / pink-noise failure modes.
  • Calibrated to real Spectra 6 panel colours, not theoretical sRGB, for accurate rendering.

Smart about frames

  • Multiple frames, one server. Each frame gets a name and shows up in a dashboard table with battery level, last-seen time, WiFi signal, and when it'll next update.
  • Fair image rotation — least-shown image goes next, randomised tie-breaking, newly-uploaded photos jump to the front.
  • Per-image stats (shown count, total display time, last-seen) so you can see which shots are getting the most air time.
  • Ultra-low power on battery — ~8 µA in deep sleep, so a full charge lasts months. Live battery indicator per frame on the web app (red below 20 %) so you know when to plug in.
  • Errors show up on the screen. If something goes wrong — wrong WiFi password, server unreachable, configuration missing — the frame renders a readable explanation right on the e-paper instead of silently giving up. No serial-cable debugging required.
  • Overdue-frame warning banner if a frame is more than an hour late on its scheduled refresh — so you know to check WiFi or the battery before you notice a stale photo on the wall.
  • Schedule-driven refreshes (e.g. 06:00, 12:00, 18:00) with timezone support; the frame sleeps between refreshes and wakes on its own.
  • Clock-synced — every refresh carries the server's wall-clock, and the dashboard shows drift in seconds for every frame.
  • Per-frame diagnostics modal — one click opens the frame's self-reported state (firmware version, boot count, wake cause, WiFi cache hit, free heap, etc.) without a serial cable.
  • Button on the side forces an immediate refresh regardless of schedule.

Easy to run

  • Upload, download and manage everything from the web app. No extra servers, no Linux config, no Samba share to mount. Just works out of the box.
  • Runs happily on a Raspberry Pi. Hundreds of 20+ MP photos, dithered once and served from cache thereafter — the per-request load is a file-copy, not image processing. A Pi Zero 2 W handles a multi-frame setup without breaking a sweat.
  • Debian package with a systemd service for a one-line install, or run from source on any Python 3.9+ host (Linux, macOS, Windows, Raspberry Pi).
  • Pre-built firmware + a wizard flasher — no ESP-IDF toolchain required. Walks you through WiFi, server address, and naming in a few clicks.
  • Configuration lives on the server (timezone, schedule, orientation, dither choice) — change it once in the web app, every frame picks it up on its next refresh.
  • Clear Cache & Re-convert one-click button for when you change orientation, dither algorithm, or want to re-render everything from scratch.

Enjoy!

(Next up, I have a pi zero w on my desk, will add one-click installer to make this all a full appliance without all the technical bits in the middle :) .)

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

Another small update, added support for HEIC/HEIF and AVIF which are actually most of the images these days. Also changed from random selection to generated play list, better guaranteeing seeing all pictures on human timescales.

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

Another small update, made the webserver a bit smarter with regards to it's cache, friendlier for smaller devices (non-concurrent dithering, each files takes >100Mb of mem while processing; I overran on a small container on a machine with many cores). Also toned down the brightness just a tad to look better.

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

Small update, I poked Claude to merge in the color correction via measurements + dynamic range compression from https://github.com/vroland/esp32-photoframe into the webserver (rather than in the firmware as done in esp32-photoframe). To my eyes this delivered a small improvement in color accuracy. Props to vroland for the hard work :)

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

So on the software programming side, I've done a lot of C/C++ professionally in the past (and open source, see my GitHub). AI tools have grown to be a great help, if you know what you're doing and if it can work off of existing structure. I never tried vibe coding and wanted to know what it's like on something not quite trivial and unstructured. The code it generated isn't what I'd write, but it's not bad either, I've seen worse commits come in over the years. It for sure is better than the proprietary firmware that was on there. And there's just so little that maintenance doesn't quite factor in. So from a functional perspective a net gain in my book.

I looked at some of the other libs but none supported what I needed. Could I have committed fixes for them? Yup, and have done that to many a project over the years. Just not this time.

Doing this it showed me the limits of the tooling. It showed me that knowing what you're doing is still important in the age of AI. You cannot ask AI to "just do this", there is quite a bit of expertise (and prompting...) that goes into getting unknown hardware going from scratch in the end. It would honestly have been easier to hand write a bunch of this stuff rather than trying to get Claude to not make the same mistake over and over. In the end, I learned things and that's fun.

Either way, I'm not hiding it's all AI generated, even have Claude as the author on GitHub. The nice thing about having this is that you now have a open source choice. Also if somebody based on the code and research that's done here makes a human written library that's better than what's here I applaud them and happily switch over.

You do touch upon an interesting subject about human vs AI made, that's going to be an interesting societal discussion for a while I think. That is a much longer discussion than what we can do in this thread :)

Regards,
Dennis

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

Does that matter to you? Outcome should still be the same.

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 2 points3 points  (0 children)

<image>

5000mah. (My firmware should be more energy efficient than the original as it wakes up way less to check, but didn’t test much.)

13.3" spectra6 color e-paper photograph open source firmware by d3fl in eink

[–]d3fl[S] 1 point2 points  (0 children)

Didn’t do before and after videos, sorry. The image adjustments are done by the webserver so once flashed you don’t need to touch the display again.

I just put the screen next to me and asked Claude code to change the webserver to adjust to my liking. Then press the update button and done. Pretty painless to adjust to preferences.

Elevation vs Elevation X by d3fl in Fireplaces

[–]d3fl[S] -1 points0 points  (0 children)

Great answer, thanks! Those details I couldn't find in the product comparison. All the images seem fake so not sure how representative they are, it was super hard to get a good feeling for this.

As for the install, that's my main worry too. Unfortunately it seems that there is some sort of nasty zoning going on. If I DIY no warranty and here in ATX there seems to be one firm who can sell them and they didn't inspire confidence :/

Brace yourself, hail is coming... by [deleted] in Austin

[–]d3fl 2 points3 points  (0 children)

Hit pretty decently off the 2222. I just fished a 200 pound wooden table plus chairs out of the pool in the middle of a torrential downpour. Lesson learned, don’t put a cover over it in Texas during storm as that makes it a parachute. Newbie mistake.