sigmoid.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A social space for people researching, working with, or just interested in AI!

Server stats:

612
active users

#eink

8 posts6 participants0 posts today

My #cycling statistics dashboard on a#raspberrypi is automatically updating again! By using #Strava 's #Python package stravalib my code is now quite a bit simpler. It also works on different @pimoroni #eink display sizes. Can't wait to try it on the new Inky Impressions 13.3 inch version.
youtu.be/VaQaUWjsY4A

You can find my code here:
github.com/Marcel-Jan/StravaIn

An eInk, Wrist-Mounted, TOTP Generator

shkspr.mobi/blog/2023/07/an-ei

Behold! Thanks to the power of the Watchy development platform, I now have all my 2FA codes available at the flick of my wrist!

HOWTO

This uses Luca Dentella's TOTP-Arduino library.

You will need a pre-shared secret which is then converted into a Hex array. Use the OTP Tool for Arduino TOTP Library to get the Hex array, Base32 Encoded Key, and a QR Code to scan into your normal TOTP generator.

Add the Hex array into the code below.

To check that it is functioning correctly, either scan the QR code from the OTP Tool above, or use the Base32 Encoded Key with an online TOTP generator.

Here's how the code interfaces with the Watchy:

#include <Watchy.h> //include the Watchy library#include "settings.h"#include "sha1.h"#include "TOTP.h"class MyFirstWatchFace : public Watchy{ //inherit and extend Watchy class    public:        MyFirstWatchFace(const watchySettings& s) : Watchy(s) {}        void drawWatchFace(){          ...          RTC.read(currentTime);          time_t epoch = makeTime(currentTime) - 3600; // BST offset          // The shared secret - convert at https://www.lucadentella.it/OTP/          uint8_t hmacKey[] = {}; // e.g. {0x4d, 0x79, 0x4c, 0x65, 0x67, 0x6f, 0x44, 0x6f, 0x6f, 0x72};          int hmacKeyLength = sizeof(hmacKey) / sizeof(hmacKey[0]);          TOTP totp = TOTP(hmacKey, hmacKeyLength);          char* epochCode = totp.getCode( epoch );          display.print(  "TOTP Code Twitter: ");          display.println( epochCode );          ...

You can grab the full code from GitLab.

I'm not very good at C++ - so please let me know what terrible mistakes I've made.

Is this a good idea?

Well... Yes and no.

TOTP is a strong-ish form of Multi-Factor Authentication. It helps prevent attacks where someone already knows your username and password. Having a convenient way to get your TOTP codes may make you more likely to use them. It also prevents you from getting locked out of your accounts if your phone dies or is stolen.

Convenient security is good security.

But... Having them on your wrist for everyone to see? I've deliberately made the font as small as I can so it is only readable up close. However, if someone is shoulder-surfing your details, they may well see your wrist. The watch isn't encrypted - so even if you hid the codes behind a button press, anyone who steals your watch will have your codes. If they steal your phone, they need to get through your PIN / biometrics.

Who are your adversaries? If you are trying to evade state-level actors, thieves specifically targeting you for your crypto-holdings, or an untrustworthy spouse - this probably isn't a great idea. If you don't use 2FA because you don't keep your phone with you - this will probably increase your security posture.

Ultimately, all security measures are a trade-off between convenience and control.

A chunky wristwatch showing the time and a selection of 6 digit codes and their corresponding entities.
Terence Eden’s Blog · An eInk, Wrist-Mounted, TOTP Generator
More from Terence Eden
#2fa#arduino#eink

@blog thx for the #HonestWords.

To me that touchscreen sounds awful.

Most 3rd party products that aim to compete with any established brand at least get the #price lower than the established players if they can't be assed to at least have the same level of #documentation, #quality or #support than i.e. #RaspberryPi.

  • At that insultingly high price I can get a #Pi0W2, an #HDMI + #GPIO / #USB touchscreen of the same resolution and still have change for a decent microSD and Power Supply, and that can display anything.

For €100 I can get some 1080p screen if not a decent #touchscreen if I snipe the right corners and ain't afraid of returns and refurbished parts.

  • At that price point it's absolutely not acceptable that they didn't put even a DSI connector on and included a HDMI driver board in the box. Espechally when it's not an #eInk screen!
Replied to Tron

@tron I.mean, I'd love to build "BigChungus" a 122+ ISO-Terminal board with such keys, but AFAICT those micro - OLED-Panels ain't cheap nor does the #SteamDeck support a useage akin to a real #Keyboard...

  • Plus the flex cables needed to turn them into like Keycaps and subsequent boards would be finnicky af - even if we could get away with two-wires & RS-485 alike bus and #eInk-Screens...

It's rather cheaper to just take a giant touchscreen and slap a Raspberry Pi 0 W below to turn it into a USB+Bluetooth touch "keyboard"...

Hackaday: Converting An E-Paper Photo Frame Into Weather Map. “Beyond the Inky Frame 5.7″ hardware this particular hack is mostly a software job. The first program, written in python, collects weather data from the UK Met Office. Once that image data is available a BASH script is run to process the image files with imagemagick. Finally a Micro Python script runs on the Pico to download the […]

https://rbfirehose.com/2025/06/24/hackaday-converting-an-e-paper-photo-frame-into-weather-map/