Running an eInk Display with Elixir, Scenic and Nerves
underjord.io
underjord.io
eInk's have nice readability for "around the lab" type equipment. Having a nice Nerves compatible wrapper lowers that barrier of entry even more. Sure you can do it with Python and a RPi Zero and perhaps some Ansible scripts or PiBakery, but there's something great about being able to make a custom (e.g. < 50 MB) embedded Linux sd-card image with proper SSH network/credentialing, all in around as long as it takes to download a full Raspbian distro on a busy network... I am planning on building a custom weighing station for simple chemical titration next week and have a nice unused eInk display sitting around.
Yeah, my firmware image weighs in at 20Mb for the sample_inky repo. I like Nerves a lot for all the sanity it provides for the process.
It works brilliantly for music scoring, though the downscaling by about 10% over standard A4 sizing takes a second to get used to.
It is also noteworthy that they are very friendly to open source development as shown by their CTO coming in and answering an issue created on the libremarkable repo. :)
Here is something I did in Rust: https://github.com/canselcik/libremarkable
Findings regarding the hardware/software stack: https://github.com/canselcik/libremarkable/wiki/Framebuffer-...
And here is a fork of plato e-reader that uses libremarkable to run on Remarkable: https://github.com/darvin/plato
Color palette demo: https://camo.githubusercontent.com/dfe0fa57b14dd8f2c452bfada...
Partial refresh support demo: https://gfycat.com/scholarlyshadyelk
I honestly wouldn't mind if there was a second option, bulkier (maybe even with an of-the-shelf raspberry as a motherboard), maybe with a smaller screen, and less polish (no custom-made injection molds, maybe a case I 3D-print myself).
Actually, I went to the website again, and it is €500, down from what I remembered was €750 (though it looks like it was "only" €600). I might consider buying one, but for a fraction of the price I could have a nice android tablet with a stylus, support for external displays, etc.
I would appreciate the opportunity to try it first, but I don't think it's being sold in any retail stores, and I don't know anyone with one.
There are lots of people getting rid of theirs, normally in favour of an iPad. You can often find some for 350-400 euros.
One downside is I dig in extremely hard to the screen and the replacement nibs are on the pricey side, so one thing to consider if you are getting one - there is an extended up-keep cost if, like me, you can't help but dig into the screen a little.
For me the reMarkable feels like tech that came from the heavens, a digital piece of paper that I can carry around and hack on (it has an SSH interface!). Which is weird considering eInk isn't new. I really hope they can release a smaller, cheaper version to keep the company ticking over so they can release hardware updates to the larger models.
1. Using the LiveShare feature to mirror it to the screen to show diagrams and drawings to my team mates, useful when designing a piece of code I am going to write.
2. Reading and annotating PDFs (which I send to my device using a command line util called rmapi).
3. General scribbles throughout the day.
4. Book notes which I write, then convert to text using the inbuilt OCR and email to myself.
I've found with most of the homebrew-y stuff you need to create a launcher that draws the application to the screen of the reMarkable, by default its running a program called xochitl which handles the user interface, file system, etc.
So to sum up, doable but not done...yet!
Currently considering seeing how far I can push the Inky towards a decent refresh rate. It is incredibly slow with color, but a nice device all the same.
Could I get more info on the "wHAT"? I tried googling for it, but there are a ton of false positives (due to "wHAT" being the same word as "what").
This thing. Not cheap. Slow refresh. But pretty neat. https://shop.pimoroni.com/products/inky-what
It is insufficient to display a page of sheet music.
Smaller 7-10" eink display tablets are even cheaper
In my mind, you should be able to buy a dual eink display for <$500
It's waaaayyyy to slow to truly function. It can take several seconds for it to process a page turn, and their official fix for it is to change so that it only turns one page at a time.
I make it work when I'm practicing, but I will not use it for a performance, or ensemble work. I recommend staying far away until they can turn out faster devices.
It turns out that the Kindle runs an embedded version of Java without a GC. This seems to have stifled the development quite a bit, so it's really cool to see how Raspberry-Pi/Inky homebrew is becoming a thing.
Original repo: https://github.com/baskerville/plato
libremarkable fork: https://github.com/darvin/plato
1) It took a lot longer to load than Koreader (so much so that I thought the reader had frozen)
2) I couldn't figure out how to have it trim PDF whitespace as tightly as Koreader does, which is important for being able to reasonably read pdf files.
3) I added additional fonts into its font directory (and I noticed that some other fonts were already there), but for epubs I couldn't figure out how to change the font from Libertinus Serif.
4) It's not clear that it has all of the advanced font features regarding kerning & ligatures that Koreader has added. (I'm not sure what's enabled by default in terms of kerning/ligatures since I couldn't change to a font that I'm more familiar with.)
5) It generally seems to have fewer features than Koreader.
But:
6) Visually, the interface is cleaner-looking than Koreader's. And it's a simpler (and perhaps easier/more intuitive) interface than Koreader's.
So perhaps I'd recommend it for someone who wanted something more basic/easier, but at this point I'll stick with Koreader.
I tested it too! It was actually really good as an NTP client clock attached to a Pi Wireless Zero. I had it update every minute, then every 15 minutes it would get the time from my Pi NTPD clock server and display the offset in red. Longevity was excellent: it did 763,200 updates in its lifetime.
The Pi actually died following an attempt at an update but the display seems to still be operational.
I had to customize colors in vim as well, since you lose all the colors when you use eink, but that's only a marginal drawback.
They wrote their own software so that the display isn't doing a hard refresh every time the display changes, the downside is there is some ghosting, which is what the hard refresh on kindles will remove.
I use keyboard shortcuts extensively to the point where I rarely use a mouse so I can work with the low framerate of the first gen. It even forced me to get better with using keyboard shortcuts and now I have little to no problems with it.
I've wanted a Lightphone2 [0] but it seems like it might be vapourware.
It's still crowdfunding, but it seems they started mass production already and it will be for real.
That's particularly disadvantaging with eInk, because if you drive the display directly instead of using a pre-packaged controller, you can achieve effects like partial redraws without flickering, and even theoretically infinite levels of grayscale; here's a previous HN discussion of an article where someone did just that:
https://news.ycombinator.com/item?id=16140284
The ED060SC4 seems to be one of the best for this; you can drive them directly, they're reasonably large (800x600, 6") and cheap, and there's plenty of information on them.
Scenic is a new graphics framework for Elixir released over the last year.
The author is trying out new Elixir based technologies on an eInk display. And having fun with it.
This post was not particularly about those frameworks but rather about supporting the release of a library me and a friend just put out there. I don't expect that library to have any real business use for me. I tried to cover the full range of what I've intended for people to do with the base library and the extras we created.
Me and a guy I met in the Elixir Slack put in the work to port the Inky library to Elixir from Python. Mostly because I wanted to be able to use it with Nerves and he got involved to scratch some itches. The post works as a bit of extra documentation for people to get started. I want it to be out there so when wants to know if Inky works with Nerves they'll find guidance.
Anyway, the Inky display as a product is made to be driven by GPIO and SPI. From what I gather we could do a lot weird stuff to try and run it faster (tried some today, but no dice), partial updates, etc. Our library does basic pixel-pushing, nothing fancy, but no huge layering on top either. We kept the level of abstraction from the library we ported.
Scenic was a fairly logical choice for rendering more advanced things than straight pixels in my estimate. A minimal-dependency UI framework on top of OpenGL. It does add a few layers of abstraction and we end up working from a framebuffer since I couldn't be bothered to re-implement all the draw calls. The framework I'd say is the goto for embedded UI rendering in Elixir and Nerves.
I really like the Nerves platform. Embedded is still a hobby for me but the platform seems sound. I think Farmbot is a neat example. I think the Nerves site covers a fair bit of what it does and tries to get to the point. But it isn't the easiest thing to explain briefly either. An embedded runtime that uses the BEAM VM to try and provide better reliability. So then you need to go into what Erlang is and why the BEAM is a good idea.
I'd be interested in driving something a bit more directly but I'm also very new with most of the nitty gritty in hardware. And I think I'm largely done with eInk for a bit. Aside from maintaining the library.
I hope that clarifies my intentions. I'm not sure I care if it changes your mind about the post :)
To be quite clear, if I intend to pad my CV I'd be writing React posts, maybe some GraphQL, sprinkle some devops on there. No recruiter will be beating down my door because I know about Nerves and Scenic. Even Elixir is still early days. This was for fun. I'll be mercenary some other day.