SSH into a Kindle 4 from 2012

Now that I’ve gotten the Kindle looking and working just how I like it, I suppose it’s time to get ready to mess it all up.  As before, I’m going to mention where I got started on this process, but then link to the specific post/page/file where I ended up.

  1. USB Network Hack
    1. The last time I tried to implement this hack, I started at the MobileRead wiki on this page.  Not only did it not work for me, but I ended up preventing the Kindle from connecting to my PC over USB.  Let’s see if we can avoid that this time.
    2. I’ll use the “Packages targeting Kindle 2/Dx/DXG/3/4” from NiLuJe’s 10/18/2013 post, updated 01/03/2025, specifically the “kindle-usbnetwork-0.57.N-r18979.tar.xz” file.
    3. Following the instructions in the “README_FIRST.txt” file, drop the “Update_usbnetwork_0.57.N_k4_install.bin” into the root, then as with most of the steps thus far, safely eject the Kindle, Menu Button -> Settings -> Menu Button -> Update Your Kindle, confirm, and wait patiently.
    4. I just can’t seem to get this to work. I’ll update it later if I can.  In the meantime, I’m going to forge ahead with a series of suggestions from Redditor /user/SpartanHeavy/ on the /r/Kindle subreddit.  They suggest continuing the toolchain after the jailbreak to the Mobile Kindlet Kit, the KUAL, the DevCerts update, and then the KOReader.  If this works, I think it will enable me to add functionality that will do an end run around the Calibre UI causing all books to appear on the main screen.  Let’s find out!
  2. MobileRead Kindlet Kit
    1. Download “kindle-mkk-20141129-r18833.tar.xz” from the same mega-post from NiLuJe, extract “Update_mkk-20141129-k4-ALL_install.bin”, save to the root of the Kindle, safely eject the Kindle, Menu Button -> Settings -> Menu Button -> Update Your Kindle, confirm, and wait patiently.
  3. KUAL
    1. Download “KUAL-v2.7.37-gfcb45b5-20250419.tar.xz” from the mega-post, extract “KUAL-KDK-1.0.azw2”, save to the “/documents/” folder on the Kindle.  (Note: This is not KUAL (coplate) or KUAL+)
  4. Install DevCerts Update
    1. Download “DevCerts-20250419-KeyStore.zip” from this post by NiLuJe, extract “Update_mkk-20250419-k4-ALL_keystore-install.bin”, save to the root of the Kindle, safely eject the Kindle, Menu Button -> Settings -> Menu Button -> Update Your Kindle, confirm, and wait patiently.
    2. Note:  I noticed before I restarted the Kindle there’s something called “dev KUAL and it lists the author as “ixtab NiLuJe twobob stepk”. 1
  5. Install KOReader
    1. Download KOReader from this Github repository, specifically this file “koreader-kindle-v2025.04.zip“.  Unzip all of the contents into the root directory of the Kindle.

So, after all that, I don’t see that the “USBnetwork” or “USBnet” are in any way working on this device.  That’s okay.  I haven’t killed it, I can still ready my books updated via Kindle/Amazon/Libby and I can read the books I’ve archived via Calibre, and I have the cool new screensavers.  The KOReader should theoretically permit me to view Wikipedia, but when everyone pretty much has a phone that can access the web easier, who would want to read a wikipedia entry on a much slower device?

As it turns out, I’m just not going to be able to use USBnetwork, even if I could get it working, to have the Kindle OS treat Calibre books in the same hide-when-in-a-collection as native Amazon formatted books.  There are some super hacky work arounds involving scripts and such that would permit me to do this, but then hiding a book from the main screen would make it unavailable elsewhere, which kinda defeats the purpose.

I may give Duokan a try later.  The major relevant benefits of Duokan appear to be easy organization of books into folders and possibly longer battery life.  Any amount of battery life in excess of a day’s worth of reading is likely to be more than sufficient for me.  However, I kinda dislike the clutter and disorganization of the native Kindle OS treatment of Calibre books.  One drawback to Duokan is that it can’t download books through the Amazon ecosystem, so I’d need to re-boot into Kindle OS any time I wanted to check out a new library book.  This may be enough to get me to add this dual-booting operating system to the Kindle.

Lastly, the number of additional resources and sites that I went through to even get as far as I have above has been dizzying.  There was a CNet2 article about screensaver hacks, but none of the images work and it’s not a lot easier to follow.  I also stumbled across the blog of someone named “Yifan Lu” who I suspect was a contributor to many of the various NiLuJe updates.  If I ever get far enough with the SSH nonsense I was chasing, I also found a site with a Javascript tool to figure out the Kindle’s default root password.  The secret appears to be the password is the word “fiona” plus the MD5 hash of the all caps serial number for the Kindle.

Kindle 4 Non Touch Customization
  1. Futzing With An Old Kindle
  2. Jailbreaking a Kindle 4 Non Touch (2012), Take 2
  3. SSH into a Kindle 4 from 2012
  4. Calibre, Kindle 4 Non Touch
  1. Man, I hope I’m not screwing up my system. []
  2. Remember CNet?!? []

Jailbreaking a Kindle 4 Non Touch (2012), Take 2

When last we saw our intrepid hero, he was running a factory reset on his new-ish Kindle 4 Non Touch (Black) circa 2012. 1  He’d managed to jailbreak it and then install some new screensavers, before going for broke to install SSH and turning off the Kindle’s ability to appear as a drive on Windows, preventing all future side-loaded content.

It’s taken me a bit of fiddling, but I’ve now gotten the the Kindle to where it is working “as intended.”  After the factory reset and arduously reentering my ridiculously long WiFi and Amazon passwords, I couldn’t deliver the books that had been registered with this account to this device.  The books that I still had checked out simply wouldn’t deliver.  I figured maybe they were stuck in the intertubes and I should send a few more after it.  When I tried to deliver the books through the Libby App, my Amazon page pulled up in the mobile browser as expected, but when I clicked the button in Amazon to deliver the book, the page simply said, “Sorry, we couldn’t find that page.”  I was stuck with books I had previously checked out through Libby in my Amazon account which I couldn’t deliver to this device – and was unable to check out additional books to appear in my Amazon account.2 Ah, I found another way in which this error can occur – when you try to download a graphic novel to your ancient Kindle 4, get the “Sorry, we couldn’t find that page” error making you think your Libby app is borked, only to copy/paste the link into a PC browser and discovery it’s really because “We could find a registered device to read this title” and you realize the problem is you don’t own any Kindle devices that can read comics.

I took the browser back to the page with the button to send the delivery, copied the URL, and entered it into my desktop browser – which provided a much more informative error message.  The desktop Amazon page said there were no devices registered to my account!  I went and changed the name of my device in the Amazon “Digital Content” page and then made sure to make it my “default” device was this same one.  Having the Kindle check for new updated content wasn’t working, so I restarted it and checked again.  This time the books started to appear.  Yay!  I now have a basic as-intended Amazon experience!

But that’s not good enough.  I want …

Skeletor would never steer us wrong

Let’s try jailbreaking it again.  What could possibly go wrong this time?!

  1. Confirm Firmware
    1. I’m already running the latest 4.1.4 firmware, so I should be ready to proceed.  You can see the firmware version at the bottom of the screen under Menu Button -> Settings.
  2. Identify The Kindle
    1. I didn’t need to do this, since I had previously identified my Kindle.  The easiest way to ID your Kindle3
    2. Wait for the Kindle to boot into diagnostics mode.  (I saw the screen take on a broken / static appearance for just a second.  Don’t freak out.)
    3. Select “D) Exit, Reboot or Disable Diags” and then “R) Reboot System”.  In order to “Q) To continue”, you’ll need to click to the left on the directional pad.
    4. Be patient while the jailbreak does it’s thing.
  • Jailbroken
    1. After going through all of this, Kindle eventually reappeared as a drive on Windows.  I safely ejected it once more.  I saw the screen go blank, then the main page come up showing all content missing.  After a moment, even though I’m still disconnected from WiFi, the content returned with “You are Jailbroken” appearing as the topmost “book.”  The entire contents of this document is the statement “It is safe to delete this document.”
    2. The wiki suggests jailbreaking allows minor things like getting custom screensavers and fonts, but that the “more fun stuff” requires gaining SSH access to the device.
    3. This is where your intrepid hero ran afoul last time…  let’s see what happens next!
    4. I’m trying to keep this guide-of-guides as organized as possible.
  • Custom Screen Savers
    1. The thread for screen saver hacks starts here, in the wiki.  But, really, you’ll want this file (kindle-ss-0.47.N-r18980.tar.xz) from the forum post by NiLuJe above.
    2. Upload the “Update_ss_0.47.N_k4_install.bin” file to the root directory of the Kindle.
    3. Menu Button -> Settings -> Menu Button -> Update Your Kindle.  Confirm.  Wait for it to restart.
    4. Once it’s booted up again, navigate to “/linkss/screensavers/” and upload additional images.  To make my own screensavers, I downloaded artwork I like, rotated them 90 degrees, scaled them down to 600 px wide x 800 px tall, reduced the DPI to 72, and saved as a PNG file.  Easy, right!?

      This slideshow requires JavaScript.

    5. I chose to add blank files named “random” and “shuffle” in the /linkss” directory so that the screensavers I uploaded will cycle through.  A blank “reboot” file, followed by a reboot, is apparently necessary in order to change and update screensavers.  So, safely eject, Menu Button -> Settings -> Menu Button -> Restart.
  • I’ve reached the point where my Kindle was at the end of the day yesterday.  A fully functional Kindle 4, but with custom screensavers.  I’m not gonna lie, these magnificent pieces of art look amazing even scaled down and on a black and white screen.  Now that I’ve gone through everything a second time, I think I may try pushing my luck and going for the SSH installation again.  I mean, what’s the worst that could happen!?

    Kindle 4 Non Touch Customization
    1. Futzing With An Old Kindle
    2. Jailbreaking a Kindle 4 Non Touch (2012), Take 2
    3. SSH into a Kindle 4 from 2012
    4. Calibre, Kindle 4 Non Touch
    1. Listed as “NoTouch” sometimes, but that just sounds too weird for me to use except in instances where I want my notes to match what appears on various guides… []
    2. I’m skipping past all the uninstall, restoring Libby nonsense that went on in between these other steps… []
    3. But, really, I’m speaking to my future self when I have to do this a third time… in which case “my Kindle”…) is to read the serial number off the back or from Menu Button -> Settings -> Tab page to “Device Info” and it should be listed as “Serial Number” whatever.
    4. Look up the serial number against this MobileRead wiki list to find the Model Name and Nicknames for the Kindle.  In my case, I have a serial number starting with either “B023, 9023”, a Model Name of “Kindle NoTouch Black (2012)” with a Nickname of “K4” or “K4B.”
  • Jailbreak
    1. This is the part of the process that I found to get extra confusing.  There is so much interplay between the MobileRead forums and their wiki and the files you download, that I was frequently get caught in a loop referring from one page to another to a file and back again.  For future reference I’ll link where the loop starts – but then link directly or as close to directly to the necessary file as possible.
    2. The loop starts here under “How to install the Jailbreak Hack.”  It ends at this MobileRead forum post by NiLuJe from 09/15/2012 and a link to “kindle-k4-jailbreak-1.8.N.zip  It ends at this MobileRead forum post by NiLuJe from 10/18/2013 last updated on 01/03/2025 and a link to “kindle-k4-jailbreak-1.8.N-r18977.tar.xz
      1. You may be wondering, “MakerBlock!  What the heck?!  What happened here?!”  The answer is that while stuck in the loop that absolutely lead to that first forum post, looking for further information later on lead me to an updated version of this file.  While all you have to do is read what is happening here, I need to uninstall the 2015 jailbreak so I can install the latest r18977 version.  I’ll resume in two restarts.  I am fairly confident this is where I screwed up last time.  I didn’t see this latest version of the jailbreak firmware.
    3. Download the file, open the ZIP, and read the “README” file nestled within.
    4. The README directs:
      1. Connect the Kindle via data USB cable to a PC
      2. Copy the following to the “root” drive of the Kindle
        1. data.tar.gz
        2. ENABLE_DIAGS
        3. diagnostic_logs “folder”
      3. Safely eject the Kindle from the PC
      4. Menu Button -> Settings -> Menu Button -> Restart ((If you don’t see “Restart” something probably went wrong []
  • Futzing With An Old Kindle

    The Kindle was an incredible device for 2012.  E-ink display, 2-4GB of storage, wifi, ability to download thousands of books, purchase and borrow new books wirelessly, play games, and battery that could last for weeks.  We bought one new back then, but it’s tied to my wife’s account and I don’t want to lose access to the books on it or accidentally brick it.  $30 and a week later, I have another Kindle 4 Non-Touch shipped to my door courtesy of an eBay seller.

    Obviously, DRM’s upside for content owners is protecting themselves from IP theft.  The downside for everyone else is being treated like a criminal.  I just want to read the books I legitimately have access to on any device I own without a whole bunch of rigamarole, authentications, and nonsense.

    Fortunately this Kindle is so old mature that many of the content and firmware problems that might have once existed and somewhat solved.  Using Calibre, I can remove the DRM off the books I have on our original Kindle and drop them onto this NTM1 Kindle.  If I go so far as to jailbreak this Kindle, I can install new screensavers which would be a super cool upgrade.  I followed the various slightly-new-hostile guides through the MobileRead forums and wiki, and even successfully jailbroke the Kindle, installed new cool screensavers, and brought over books through Calibre.  The one downside was2 big enough that I kept pushing.

    So true…

    That one downside was that while books on a stock Kindle appear on the main screen where you can page through them all, you can also add them to custom “Collections” where once they’ve been assigned to one, they’ll disappear from view on the main screen where they are now only visible in the one or more Collections to which they’ve been assigned.  It essentially operates much as a “tagging” system.  Well, after bringing over the books via Calibre, apparently the process removes something from the metadata for the books that permits the Kindle device to flag them for non-displaying on the main screen.  The result is that while books can still be assigned to collections, they’ll also still clutter up the main screen.  Obviously, I there’s no way I can deal with this, so I decided to explore other options.

    Once you’ve got your Kindle jailbroken, you can start to do things like SSH into it, change some core settings, and otherwise just tinker around changing things and ripping stuff out.  While I didn’t brick this device, I did get it to the point where it would neither enter a debug mode nor permit me to access it over USB to sideload books via Calibre.  I don’t trust the Amazon email delivery system well enough to want to send de-DRM’ed books to the address Amazon so graciously assigned the Kindle, so that option is out.

    This has lead me to a factory reset, fresh Kindle, and the need to enter my ridiculously long WiFi network password and Amazon account password back into the Kindle via the 5 key directional pad.

    Wish me luck.

    Kindle 4 Non Touch Customization
    1. Futzing With An Old Kindle
    2. Jailbreaking a Kindle 4 Non Touch (2012), Take 2
    3. SSH into a Kindle 4 from 2012
    4. Calibre, Kindle 4 Non Touch
    1. New to me []
    2. Cue ominous foreshadowing []

    QR Codes and Avatars

    Not me at all

    I’m not really big on social media, especially Facebook.  While I used Twitter for a long time, I pretty much abandoned it after their re-brand.  For a variety of reasons, mostly privacy related, I actively avoid associating my online moniker with my real name or photographs of myself.  Plus, I can be a lot more candid here where a comment won’t have to be associated with my work persona. 1  Anyhow, instead of using my real name and birthday, I fed Facebook the above photograph and use a totally different birthday and other information.  Later on, I used a very small version of this photograph as my “avatar,” but that changed when Bre drew a super cool secret agent looking version of my avatar for use on the MakerBot blog.

    Anyhow, I was thinking about the “evolution” of my online avatar recently and some other projects when I remembered I’d seen some cool instances of people distorting a QR code in such a way that it appeared to be an image of something – but the contrasting light and dark patterns would be interpreted as a QR code.  I found a website (QRBTF) that will automate most of the process for you.

    This isn’t the first time I’ve played with QR codes.  One of the first was waaaay back in the day.  Thingiverse has over 7 million “things” uploaded to the site as of right now.  But, Thing #5000 was this gem by yours truly.

    Where was I?

    MakerBlock’s Avatar QR Code of MakerBlock’s Blog

    The process is … fiddly, even with lots of nice dials and buttons to adjust the image.  I don’t think I’ll keep this as the last version of this QR / avatar.  There needs to be either way higher error correction, larger QR code, or lower resolution, or higher contrast or… something to make scanning the image more reliable.

    Anyhow, the reason why I’m even messing with this at all is so that when our projects are (hopefully!!!) accepted to Maker Faire, I can put this on my “maker badge” as a way for people who know me by my pseudonym / avatar to recognize me and for everyone else to be able to scan it and check out my website with more information about our projects.

    Here’s another variation with some modifications:

    This latest version required some post-processing:

    1. Trial and error to position the original image and then see how it looked when turned into a QR code.  Obviously, this also involved tinkering with the brightness and contrast settings.  I kept the error correction at maximum throughout.
    2. I downloaded the image in SVG format which was kinda messy.  Every black or white pixel was a separate element.  I laid a rounded corner set of squares over the four alignment blocks, obscuring the sharp corners usually associated with QR codes.  Then, I duplicated the central figure, and in the copy above I deleted the four alignment blocks and the figured, then made all the black speckled pixels slightly larger – to make it easier to read at small sizes.
    3. Centered the QR code on the white background, then rotated it 45 degrees for a diamond shape.

    This version scans much more reliably and faster than any prior version.  I’m fairly happy with this result and will allow myself to fall down the rabbit hole of my next project… Or prior project.  Projects.0

    Thermal Sticker Printer
    1. QR Codes and Avatars
    2. Sticker Printer
    3. Thermal QR Code Sticker Success!
    1. While my work-name and work-face are the same as my real name and real face, that’s just the professional responsible adult I pretend to be in order to pay the bills. []

    Papercraft Phone Stand

    I recently saw an Instagram post from someone I follow who makes cardboard furniture in India.  His story of building cardboard furniture while in college during COVID, building hand sanitizer dispensers out of cardboard, licensing this, and then pivoting to creating a business around making cardboard furniture is pretty cool.  One part of the story is how this guy’s designs started getting ripped off by others who saw it was an inexpensive and easy to produce product.  Even with patent protections, ideas get ripped off all the time.  Anyhow, this IG post was about how he had invented a business card which opens into a phone stand and apparently rejected an offer for the equivalent of $1M to sell his patent.

    When they won’t license the design or sell the business card itself, I’m not at all sure why it was patented at all.1 They apparently got 10,000 produced, gave most away, and turning down offers to buy individual cards.

    This slideshow requires JavaScript.

    Sometimes when I see something interesting, I think about how it’s constructed and how I could build one using my own resources.  Just a quick glimpse at the video reveals pretty much everything one would need to build one.  A quick mockup in Inkscape and I had a version printed out on copier paper.  It was slightly flimsy, but it works just fine.  If I did this again out of cardstock, 300GSM paper, or even thin cardboard, I bet it would even better.

    This slideshow requires JavaScript.

    It’s a neat little tool – and I think I will make a few more for personal use.  Mine has a rounded front “nub” rather than the angled one in the video.  I could see adding an RFID tag/sticker, QR code for info, and other minor functional augments to be more useful to me.  I think there’s even a few ways to improve my design a little.

    1. I tried looking up the patent, but couldn’t find it anywhere []

    Smol Fonts for E-Ink Displays

    Posts are so much more interesting with pictures, don’t you think?

    I’ve been playing with different screen designs for my e-ink display.  After initially going with some “to do” style items, I quickly pivoted to playing with some more interesting screens while I was working out the best way to update the display with new content from lists.  This wasn’t a totally worthless chase, however.  Fiddling with various ideas and tests about updating the display and coming up with different images lead me to chase down good looking fonts (Futura variants and Roboto being attractive and friendly fonts) and fonts that look good at very small scale (UNSCII, Tom Thumb, TinyFont for TinyGo displays, and Terminus).  Adafruit has a great toolchain for converting a font from an PC recognizable font to a BDF format font which is much smaller and can fit into a microcontroller.1 It involves2 using FontForge to remove unused glyphs, restrict the font to a specific bitmap size, exporting the font, then using an online tool to convert it to a BDF format.

    For extra visual interest, here’s the first Fallout themed screen I uploaded and the latest:

    Things are not looking up, my dude

    The main screen was inspired by the work of CrowTeeRobot on the RPF.  I took a few screens, jammed them together, added and deleted a bunch of stuff.  After all that, there was still a fair bit of negative space, so I kept adding in more things.  A low battery indicator, life point indicator, a GPS lost / map indicator, an increasingly worrying radiation counter, and a “low ammo” indicator.  If these end up getting installed into a PIP-Boy, I’ll probably try to add a green transparency over it to give a more retro feel.

    For working with an e-ink display to go into a PIP-Boy, it really only needs to cycle through a set number of screens.  This could just be done by having the MCU just play new screens every few minutes (keeping in mind the Adafruit guides recommend updates be no more frequently than every 3 minutes) or having it be slightly interactive and update the screen way less often (say every 10 minutes) but can be set to a new screen manually by pressing an associated button.  However, this just requires building a few static screens, saving them as BMP files, tossing them in, and letting the MCU detect button presses, capacitive touches, or some other kind of input.  There wouldn’t be any kind of need for a text overlay.  That said, while I was playing with the screen, I discovered that some of the graphic text I had included was surprisingly readable at very small scale.  This lead me back to my main project…

    For my note / reminder / task purposes, I’m still toying with how the workflow would go.   Since I want a device that is untethered from a USB cable and has

    Here are some ideas I’ve gotten to work and played with:

    1. ESP32C3 as a WiFi access point and provides an HTML form which the phone or my computer can connect to.  The problem with this is then I have to disconnect my phone/computer from the network, connect to the ESP, send an update through the HTML form, disconnect and reconnect to the router.
    2. Cell phone as a WiFi access point, the ESP32C3 connects and fetches data from the phone.  The problem with this is then I would have to disconnect the phone from the router, let the device connect, pull data, then I would reconnect the phone to my router for regular usage again.  This is pretty clunky.
    3. ESP32C3 connects to same WiFi network, then tries to push/pull data from a local IP address.  Also possible is for the ESP32C3 to connect to a webservice via an API, but then this makes the device dependent upon proximity/access to both my home router and internet access.
    4. The best way forward is probably a Bluetooth connection to my phone and an associated app.  I’ve written some small apps using the MIT App Inventor, so this looks like the best way forward.  I’m thinking, something along the lines of:
      1. Use the app to create an ordered list of items
      2. Press a button on the device, to “wake” it – which also makes it try to connect over Bluetooth to the device it’s been paired with, and pull the latest list
      3. The device disconnects from Bluetooth, displays the topmost list item, and goes to sleep
      4. I can can press a button to start a timer until X seconds has elapsed
      5. When the time elapses, the device buzzes, vibrates, and/or lights up an LED
      6. I can then press a button to sleep or another button to advance the task to the next item
      7. Possibly an interval timer as well to remind me to get up and walk around / move :)
    Sticky Note Timer
    1. Ah, just what I need! A new project!
    2. Sticky Note Timer, parts arrived!
    3. Seeed Studio XIAO ESP32C3 and a small sticky note display
    4. Brainstorming More E-Ink Stuff
    5. Smol Fonts for E-Ink Displays
    6. Tap Light Focus Timer System
    1. This one, League Spartan Bold 16, looked particularly good []
    2. as best as I understand it… []

    Brainstorming More E-Ink Stuff

    I’ve been on vacation for a few weeks and a big part of that was completely leaving work and a computer/laptop entirely behind.  If I had a computer handy, I would have been tempted to noodle around on some project, jot down some notes on some new harebrained scheme, and potentially slide sideways into working.  And, even if I didn’t do any of that, I would have been looking at a screen – rather than the scenery I had worked so hard to go and see.

    Even so, I couldn’t help but notice things that still helped germinate ideas.  In Europe lots of grocery stores and especially pharmacies made use of e-ink price tags.  Pretty nifty since they could probably be updated wirelessly via Bluetooth or perhaps with an IR protocol of some kind.  These tags were often the really cool tri-color variants1 and I only l learned of the quad color variants just today.2

    With the weather heating up, it might be neat to have a weather display – but I don’t just want another weather display.  I would prefer something that had data I’m interested in – just the one task I have to be working on right now, the time I’ve allotted myself to work on it, maybe the weather, a timer button that can start/stop lights and/or a buzzer.  I dunno, this is all very much in the “brainstorming” stage while I’m still fumbling around with e-ink code.

    Random ideas:

    • It would be neat to have exercise, stretching, standing, eating, drinking, etc breaks built into the display.  (I do realize there are circular themed smart-watch systems…)
    • My job requires various tasks with various timelines and monthly-ish metrics.  It might be neat to have various trackers for that kind of data.
    • I know various wearables display neat graphics like circles that get completed, achievements, etc, when the person reaches a certain number of steps or level of activity.  That would be neat to incorporate as a way to “gamify” certain aspects of my life / job.  Additional colors would certainly add to this kind of flair.
    • I haven’t given up on the idea of feedback from the sticky-e-note via buzzer,  speaker, vibration motor, haptic feedback, and LED’s or with inputs from buttons or touch capacitive sensors.  However, the more of these things I pack into a device, the more unwieldy it becomes and longer it would take to learn / build.  There’s certainly something to be said for a stripped down, elegant solution versus building a chunk pile of wires tethered to a USB cable.

    Having just come back from vacation, my home office / lab area is an absolute catastrophe.  It’s a tangle of all the things I might have packed, almost packed, unpacked, and the remnants of all the things I kind did while walking around all the aforementioned stuff.  At a glance, I’m probably operating on about 10% of the normal surface area – mostly now devoted to a thin, windy, and treacherous path from the door to my desk.

    Sticky Note Timer
    1. Ah, just what I need! A new project!
    2. Sticky Note Timer, parts arrived!
    3. Seeed Studio XIAO ESP32C3 and a small sticky note display
    4. Brainstorming More E-Ink Stuff
    5. Smol Fonts for E-Ink Displays
    6. Tap Light Focus Timer System
    1. Black, red, white-gray []
    2. Black, red, yellow, white-gray! []

    OpenSCAD Club Cookies

    @raster wanted to make cookie cutters.  This has been something of a solved problem for about 12 years now, through Thingiverse’s Cookie Cutter Customizer.  Except, it’s been totally non-functional for probably a decade now.  :(

    My solution is basically to make a solid for the thin brim + tall cutting edge and then subtract the original SVG shape.  I tried it with each of @raster’s SVG’s for the teddy bear, cloud, hexagon, and pacman and they seem to work.  Anyhow, here’s the code I wrote instead of doing the work my employer pays me to do:

    //  Settings
        $fn = pow(2,7);
        nozzleD = 0.4;
        th = nozzleD*pow(2,2);
    //  Measurements
        cutterH = 15;
        cutterW = 10;
    
    
    cutter() import("TeddyBear.svg");
    
    module cutter()
        {
        difference()
            {
            union()
                {
                //  Thin, tall cutter wall
                linear_extrude(height=cutterH, center=false)
                    offset(r=th)
                    children();
                //  Wide, short cutter holder
                linear_extrude(height=th, center=false)
                    offset(r=cutterW)
                    children();
                }
            //  Cutting out the shape
            linear_extrude(height=cutterH*3, center=true)
                children();
            }
        }
    

    Should we have a club motto?  I vote for “Vive la différence!”

    #OpenSCADClub
    1. OpenSCAD 3D Printed Spring
    2. OpenSCADClub Week 2: Directional Pad
    3. OpenSCAD Render Times
    4. One Simple Trick Can Save You 30 Minutes…
    5. OpenSCAD Club Cookies

    Seeed Studio XIAO ESP32C3 and a small sticky note display

    The chief benefit of the XIAO ESP32C3 appears to be it’s very low cost.  $5 for a microcontroller which can run Arduino or CircuitPython and has WiFi and Bluetooth sounds like a smoking deal.  As I’m fumbling my way through this project, I’m finding some little hiccups learning experiences along the way.

    1. The XIAO ESP32C3 doesn’t support USB file transfer, which is going to make putting CircuitPython on the board more interesting.
      1. One of the most convenient aspects of CircuitPython is being able to update the MCU over USB.  In an ideal world, I would have worked out the kinks on this project and then transferred the program to a cheaper Board.
      2. I went with this particular board since that’s what the author of the Hacksterio article used.  For $2.50 more I could have gotten a XIAO ESP32S3 which would support native USB rather than the ESP32C3.  I’ll just make sure to order some S3’s next time!  :)
    2. Using the guide linked above, you need to enable “Experimental Web Platform features” in Chrome.
    3. My “XIAO ESP32C3” showed up in the Adafruit web based ESPTool.  I noted the MAC address, erased the MCU (~15 seconds), and uploaded the new firmware BIN file from CircuitPython.org (~12 seconds).
    4. After futzing with Mu for a while, I ended up following an Adafruit guide and installing the portable version of Thonny on my PC which allowed me to update the board’s settings.toml file as described in the Adafruit guide.
    5. I wasn’t having a lot of success figuring out the MCU’s local IP address, so I used the Adafruit code for having print the IP address to the terminal.  For some reason I found the MCU’s MAC address appearing on my router’s wireless client page.
    6. Uploading files from my PC to the MCU using Thonny wasn’t quite intuitive.  There’s a file navigator on the left side of the screen.  On the top you can use to find files on the local PC and on the bottom navigate to the target MCU folder.  Once you’ve got these, you can right click on the local files and upload them to the target folder.  Later, I discovered I could select multiple files and upload them all at once, which made adding libraries way faster.
    7. After installing CircuitPython on the XIAO, I keep bumping into the error “ValueError: D8 in use”.  It took WAY longer to figure out this problem than I was anticipating.  After much hand wringing and rending of clothes, it turns out that if you don’t call “displayio.release_displays()” when initializing the board, it will claim this or that particular pin is in use and won’t let you do anything interesting.
    8. Even after solving that problem, it turned out that I was trying to use the wrong driver for the board.  I started with “il0373” which wouldn’t display anything, then “uc8151d” which also displayed nothing, and finally “ssd1680” which did work.

    Here’s the pin connections I’m using, going from the label on the e-paper display, to what the acronym means, to the color of the wire on the cable, to the XIAO pin, to what that pin means:

    E-Paper Meaning Color XIAO Meaning
    BUSY Busy purple D4 D4 / SDA / GPIO6
    RST Reset white D3 D4 / A3 / GPIO5
    DC Data Command1 green D2 D2 / A2 / GPIO4
    CS Chip select2 orange D1 D1 / A1 / GPIO3
    CLK SPI SCK pin3 yellow D8 D8 / SCK / GPIO8
    DIN SPI MOSI pin blue D10 D10 / MOSI / GPI10
    GND Ground brown GND Ground
    VCC 3.3 volts gray 3V3 3.3 volts

    Here’s the code I could get working:

    import displayio
    displayio.release_displays()
    import time
    import board
    import wifi
    import socketpool
    from adafruit_display_text import label
    import adafruit_requests
    from fourwire import FourWire
    import board
    import busio
    import digitalio
    from adafruit_ssd1680 import SSD1680
    #import terminalio 
    #import ipaddress
    #These last two commented out as I try to figure out what's still necessary to get this project to run
    spi = busio.SPI(clock=board.D8, MOSI=board.D10) display_bus = FourWire( spi, command=board.D2, chip_select=board.D1, reset=board.D3 ) display = SSD1680( display_bus, width=296, height=128, rotation=270, busy_pin=board.D4 ) # 🔧 Set custom hostname BEFORE connecting to Wi-Fi wifi.radio.hostname = "Sticky" # change this to whatever name you want print("Connecting to Wi-Fi...") if wifi.radio.ipv4_address: print("Connected to Wi-Fi!") print("My hostname:", wifi.radio.hostname) print("Connecting to SSID...") print("My IP address is", wifi.radio.ipv4_address) ipad = wifi.radio.ipv4_address else: print("Failed to connect to Wi-Fi.") # Fetch the IP address if wifi.radio.ipv4_address: ip_text = str(wifi.radio.ipv4_address) ip_text = "19.2.168.0.1" etext = f"Hello! It's me! \nA TOTALLY \nresponsible \nadult!" else: etext = "Hello eInk!\nWi-Fi not connected." from adafruit_bitmap_font import bitmap_font # Load a larger font (adjust path as needed) font = bitmap_font.load_font("/lib/Junction-regular-24.bdf") splash = displayio.Group() text = label.Label( font, text=etext, color=0x000000, x=10, y=15, line_spacing=0.7 ) bg_bitmap = displayio.Bitmap(296, 128, 1) bg_palette = displayio.Palette(1) bg_palette[0] = 0xFFFFFF # White background bg_sprite = displayio.TileGrid(bg_bitmap, pixel_shader=bg_palette) splash.append(bg_sprite) splash.append(text) print(etext) try: display.root_group = splash display.refresh() print("Waiting for refresh to complete...") time.sleep(5) print("Display refresh called.") except Exception as e: print("Error during display refresh:", e)

    Here’s the progress so far:

    This slideshow requires JavaScript.

    Having gotten this to work, I’m pretty excited about the possibilities.  I would love to have a Doctor Who psychic paper display4 , an addition to my kid’s Pip-Boy, or a physical desktop widget that displays interesting / useful information.

    With this setup I can manually hardcode a new message and update the e-paper display.  Not super useful in and of itself. However, with some elbow grease and a few late nights, I’m hopeful I can add the ability to connect to a Bluetooth device and update the screen, set off a buzzer, or set off a small vibration motor.  Right now there are 5 pins left unused:  D0, D5, D6, D7, D9.  I figure I’ll need one to wake the device from a deep sleep, one for an RGB / NeoPixel LED to provide a little instant visual feedback, one for a buzzer, one for a vibration motor, and then maybe one more for another button.

    Sticky Note Timer
    1. Ah, just what I need! A new project!
    2. Sticky Note Timer, parts arrived!
    3. Seeed Studio XIAO ESP32C3 and a small sticky note display
    4. Brainstorming More E-Ink Stuff
    5. Smol Fonts for E-Ink Displays
    6. Tap Light Focus Timer System
    1. Data / Command selection [high for data, low for command] []
    2. SPI chip selection, low active []
    3. Clock []
    4. Thus, the “responsible adult” above []

    Where is the Othercutter? [Draft 06/08/2015]

    [This is a post I’ve revisited so often that I really have no idea when I began writing it – and couldn’t figure it out without digging deep into the WordPress database.  Suffice it to say, I’ve wanted a cardboard cutting CNC for a long time.  Originally a collaboration between DARPA and OtherLabs, most of the interesting parts of this project have been removed from Otherlabs’ website and many other resources the victim of linkrot.  As a project funded by a federal agency, there’s a slight possibility some semblance of documentation for this machine might still kinda exist somewhere accessible via FOIA requests…  The operation isn’t exactly arcane, a reciprocating blade, that can be rotated through 360 degrees, on a rail, and a bed that moves a sheet of cardboard back and forth – like a suped up craft cutter.]

    I can’t help it – I love cardboard and I love CNC tools. 1  Cardboard is free or cheap, lightweight, strong, but can look unfinished and is very susceptible to moisture.  This makes it ideal for prototypes and temporary projects.  However, when a cardboard structure is covered, it can be incredibly strong and durable.

    The promise of the Othercutter was a simple CNC machine kit using an off the shelf x-acto blade to cut cardboard or foamcore.  

    The shortest possible version is that the Othercutter was the brainchild of Otherlabs (now Bantam Tools).  What started out as a project to cut cardboard morphed into the Othermill, a small capable desktop CNC mill initially released on Kickstarter.  I could never do justice to the Otherlabs and Bantam Tools story – it’s a wild ride and worth a read.

    • https://web.archive.org/web/20130209054433/http://blog.mentor.otherlab.com:80/
    • https://blog.bantamtools.com/loving-our-own-dog-food
    • https://otherlab.com/blog/post/the-othercutter-low-cost-cnc-machine
    • https://web.archive.org/web/20130122094442/http://blog.mentor.otherlab.com/the-othercutter-low-cost-cnc-machine/
    • https://web.archive.org/web/20130109063100/http://blog.mentor.otherlab.com:80/the-beginning-otherlab-and-the-mentor-project/
    • https://web.archive.org/web/20130131051839/http://blog.mentor.otherlab.com:80/architecture-and-the-othercutter/
    • https://web.archive.org/web/20130131175353/http://blog.mentor.otherlab.com:80/othercutter-update-speed-and-quality-control-testing/
    • https://web.archive.org/web/20130210080545/http://blog.mentor.otherlab.com:80/cardboard-in-the-wild-marty-morales
    • http://kimlyis.me/otherlab-otherfab/
    • https://sites.google.com/site/3dprinterlist/cnc-cutters/othercutter
    • https://ingriddragotta.com/Info
    • https://www.youtube.com/user/Otherlab/videos
    • https://arstechnica.com/information-technology/2013/05/a-day-at-the-bay-area-maker-faire-the-greatest-show-and-tell-on-earth/
    • https://www.mssm.org/uploaded/STEM_Collaborative/2013_Educators’_Camp_Course_Selections_.pdf
    • https://web.archive.org/web/20101231104932/https://www.fbo.gov/index?s=opportunity&mode=form&id=0248c338123e8b6f51d4dcf743196464&tab=core&_cview=1

    Drafts Zero - The Lost Blog Posts

    1. Misnamer [11/28/2010]
    2. The Lost Blog Posts
    3. Plastruder! [Draft 12/25/2009]
    4. UNTITLED [Draft 12/25/2009]
    5. Preparing to print [Draft 12/27/2009]
    6. More prints [Draft 01/04/2010]
    7. Prototype Pricing [Draft 01/19/2010]
    8. MakerBot tuning [Draft 01/20/2010]
    9. Plastic Screw Anchor [Draft 02/02/2010]
    10. Magic [Draft 02/03/2010]
    11. How are you printing with PLA? [Draft 02/16/2010]
    12. Rebuilding my extruder [Draft 02/16/2010]
    13. MY robot [Draft 02/18/2010]
    14. more things i learned [Draft 02/20/2010]
    15. First commissioned piece! [Draft 02/22/2010]
    16. MakerBot: Toy or Tool? [02/25/2010]
    17. Idea for Skeinforge settings… [Draft 03/27/2010]
    18. RepRap and MakerBot alternatives [Draft 04/05/2010]
    19. RepRap Parts for Sale [Draft 04/07/2010]
    20. Where is the Othercutter? [Draft 06/08/2015]
    21. Mendel Parts – Printed, Cast, CNC’d, Lasercut or Injection Molded? [Draft 04/12/2010]
    22. MakerBot Operator’s Manual [06/04/20210]
    23. MakerBot on CBS! [07/07/2010]
    24. New Print: Soft-Pawed Albino Stoat of South Wales Cookie Cutter [07/07/2010]
    25. House calls [07/11/2010]
    26. Digital assistant? [08/05/2010]
    27. MakerBot + Junk = Stuff! [08/06/2010]
    28. Design choices in RepRap, Goals of RepRap [08/14/2010]
    29. Upgrades and obsolescence [08/25/2010]
    30. Dear Anonymous [08/25/2010]
    31. The ultimate in customer service [08/26/2010]
    32. Open Source Makes You Smarter [08/27/2010]
    33. Getting my Plastruder MK5 running [09/06/2010]
    34. Weird new kind of spam [09/19/2010]
    35. An open letter to Ms. Word [10/18/2010]
    36. Printing with PLA again! [10/18/2010]
    37. Halloween costume too [10/27/2010]
    38. Dream jobs [10/29/2010]
    39. The nuances of time travel [10/31/2010]
    40. Printed Pink Panther Person [11/22/2010]
    41. Skein them all and let ‘Bot sort them all out [11/24/2010]
    42. The Patents for disc shooters [12/10/2010]
    43. Princess Bride with Lightsabers [12/13/2010]
    44. Dilbert comic [12/13/2010]
    45. Ultimachine PLA review [12/15/2010]
    46. Mendel to the power of 101 [12/21/2010]
    47. Potential improvements for Leonardo Voltron [12/27/20210]
    48. You can keep your filthy money [12/28/2010]
    49. I watched Primer the other night [12/30/2010]

    OtherLabs OtherCutter
    1. Where is the Othercutter? [Draft 06/08/2015]
    2. OtherCutter Epilog
    1. Gotta collect them all. []
    Test