top | item 38855337

Show HN: FrameOS – operating system for single function smart frames

474 points| mariusandra | 2 years ago |frameos.net

112 comments

order
[+] smith7018|2 years ago|reply
Fun little project! I worked on a 7 color eInk Arduino-based picture frame two years ago for a gift. My biggest issue was that I had to manually crop, dither, and color index the images to get them to look _okay_ on the display. If FrameOS could handle all of that for me then it would have saved hours of manual editing and testing.

I ended up getting that same person an Aura frame this year because remotely adding photos ended up miserable

[+] samstave|2 years ago|reply
This would go a long way in Medical Kiosks, Digital Art and Signage.

The digital art thing is big in hospitals (Source: I was the technology designer for SFGH, UCSF, and the technology implementation manager for El Camino Hospital - and director of OPs for Vizio (TV))

Ive evaluated, purchased and installed systems such as this, and wayfinding in hospitals - paying hundreds of thousands for digital artwork to be looped in elevator lobbies, room screens etc - they, like you said - had rubbish software.

For the lobbies in El Camino Hospital, I had to replace some units with Mac Mini's playing an MP$ on loop via VLC because the digital signage system was so crappy.

So, having this with a piZero would be great.

However - wayfinding would also be elegant with this - so long as when you say "interactive" surely it could display a webapp/app via the PI, and "screen-saver" to your digital art loop when idle...

But - seriously, the digital art/signage/wayfinding market needs a fiesty upstart like you to ruffle their muffins - I dont have any PIs currently else, I'd be using this....

I wonder if I could install it on my shitty android TCL tablet from T-Mobile...?

(Also look at controlling Feit Electric bulbs)

EDIT:

I think the most lucrative option for a device/OS like this would be travel signage at BART, any 'regional transit' -- find the dumbest person at that organization and train them to install and configure and display something in a fool-proof manner...

Look at Sacramento (california) regional transit - they have so many screens with zero usable information...

Have you been in a train in APAC? THey have LCD screens with status maps on the upper walls...

Have you been in a train in the US? THey have pee and poo on the upper walls, and zero map status anyplace.

[+] lmz|2 years ago|reply
> Have you been in a train in APAC? THey have LCD screens with status maps on the upper walls... Have you been in a train in the US? THey have pee and poo on the upper walls, and zero map status anyplace.

It sounds like installing screens on US trains would just end up with pee and poo on the screens...

[+] niutech|2 years ago|reply
Installing Mac Mini just to play MP3 files? That's a gross waste of money. You can use a dirt-cheap portable MP3 player for $10!

It's crazy how much money is wasted in the US, where other people are begging for food on the streets.

[+] nerdbaggy|2 years ago|reply
What is your opinion on brighysigns? While the default software is kinda crap the programability of them has been great for us. But we aren’t very far in.
[+] eddieroger|2 years ago|reply
This makes me miss the Chumby, which had such untapped potential and was given up on so quickly. I have many uses for a smart, controllable and low-code screen in my house, and barely the time to figure it out myself. Very glad this project came across my page today!
[+] vosper|2 years ago|reply
> I have many uses for a smart, controllable and low-code screen in my house, and barely the time to figure it out myself.

I also don’t have time to figure it out, so I’m probably just going to buy a used iPad and put it on the wall. I’ll get a nice bright screen and anything I want to see just needs to be viewable in a web browser.

[+] malcolmosh|2 years ago|reply
Very cool ! I built a series of scripts to exchange e-ink images through Gmail last year which I baptized DispatchPi (https://github.com/malcolmosh/dispatchPi/blob/main/README.md) and a program like this would definitely have accelerated development. It was a bit fussy to always have to use a terminal to SSH into the Pi, then update the scripts through FileZilla (ftp client) + Vscode.

I've just completed a dashboard project which I'm about to release and I was also thinking of switching my frame drivers to ESP32 to run them on batteries, since they consume far less energy than even a Pi Zero. So +1 for ESP32 compatibility if time allows!

[+] brk|2 years ago|reply
How deep are you in the ESP32 dev? I've found image rendering (the display is LCD, not eInk) to be less straightforward than anticipated.

In my case, massaging images into a specific size and format prior to sending them into the ESP32/Display is easier and more reliable than trying to have the ESP libraries display any arbitrary image.

[+] omtinez|2 years ago|reply
What hardware are you using? I recently finished a project myself and I'd like to do more with e-ink but the hardware "driver" that plugs into the pi costs as much as the e-ink display.
[+] jauntywundrkind|2 years ago|reply
The first picture on the page is the editor, and dammmnnnm wowwww. From it's bullet point:

> Diagram Editor: A drag-and-drop interface to combine Nim apps into scenes. Fork and edit existing apps like "OpenAI image", and "Text overlay" to suit your needs. Overwrite all fields with inline code snippets.

This looks really slick. It feels like it must be a huge effort! I wonder what they used to build this. Is the editor written in Nim?

What do you run once you write a scene: a runtime similar-ish to the editor but with a presentation mode, or does it spit out a new Nim program to run the other nim programs? Do apps get once-off invoked or is there persistent communication for apps to keep running? What triggers a frame to start, how does composting happen?

I feel like they've built a very cool generic flow-based programming system here, that happens to be used for smart frames.

[+] NoboruWataya|2 years ago|reply
Looks really interesting. Am I right in thinking it's not actually an OS, but rather software that runs on top of an OS on the Pi?
[+] mariusandra|2 years ago|reply
You're technically right (the best kind?), but there's some nuance to the question.

FrameOS is a compiled binary that runs on top of Linux. At present you need to install the "Raspberry Pi OS Lite" (without the desktop environment) on a SD card before you can install FrameOS itself on top of that. So it's "just an application".

However, this is mostly because it's an early project, and this was the fastest way to get going. The next step is to see how much can be removed. Since FrameOS is a statically compiled single binary, it shouldn't need that much more than the Linux kernel? Will FrameOS be a true OS then? Android seems to be considered its own OS despite using the Linux kernel.

Once activated, FrameOS takes over your entire system, has its own `apps/` and `drivers/` folders, and in many ways already behaves like an Operating System. I'm also pondering about getting it running on an ESP32 (will need to add `drivers/wifi/`?). Without any OS below it, will it then be worthy of being called an OS? You all tell me. :shrug:

Thus is it an Operating System? It is to me, but you can choose to disagree.

At my actual job (PostHog), we sometimes call ourselves the "Product OS". This annoys me more, as a suite of webapps definitely isn't an "Operating System" in its traditional sense. I've seen -OS at the end of other things as well that aren't pure Operating Systems. It slightly bothers me, but mostly because I was around when "what OS you're using" was a defining question. Language is evolving, and "operating system" seems to describe more things to different people, than it does to you and me.

[+] squarefoot|2 years ago|reply
It appears so, which would mean it could probably work with only minor changes on other boards.
[+] surajrmal|2 years ago|reply
Yeah it seems more like a full screen application which can be remotely controlled.
[+] traverseda|2 years ago|reply
What is an OS? Genuine question, not being sarcastic here. "OS" is a pretty loosely defined term at the moment. Clearly Android and Ubuntu are very different operating systems, despite having roughly the same kernel.

FrameOs uses Nim, which means it can be ported to run on bare-metal with no kernel. The async dispatch means that Nim also provides some light-weight co-operative multitasking.

I'd say that FrameOs is an OS (or userpsace if you prefer) that currently only runs on top of the linux kernel, but there's no reason it couldn't be ported to run directly on a microcontroller.

[+] justusthane|2 years ago|reply
Looks cool! I've been wanting to set up an e-ink display with my HomeAssistant, so I'll be checking this out.

In your "Why FrameOS" post, you have a photo that looks like an e-ink display displaying a HomeAssistant dashboard, and under it you say "However the software side of things was rubbish." What exactly were the issues you had before writing FrameOS? It looks like it's working great in the picture at least!

I'm also curious what this actually means:

> GPT4 Support: Ask your favourite LLM to write and debug FrameOS apps for you.

[+] airspresso|2 years ago|reply
The author integrated GPT-4 into the "app builder" that FrameOS has for building custom views, so you can ask GPT to make improvements to the underlying code. See https://frameos.net/blog/gpt4-support

My first thought seeing this was that it validates that new apps from now on will be LLM-integrated from the start. Why not, right? LLMs used right are a great UX-improvement for almost any app.

[+] H8crilA|2 years ago|reply
RE ChatGPT: I think it's a clever joke highlighting that it is a product that often needs no further integration (to make blockchain powered self driving social AI clouds, or whatever sells best on private equity markets these days).
[+] whycome|2 years ago|reply
Is there a good equivalent to keep old Amazon fire tablets from being e-waste? They are Android based.
[+] daredoes|2 years ago|reply
Use Fire Toolbox to disable all the bloatware. Buy a license for Fully Kiosk to convert it into many different practical things.

Personally, I use Amazon Fire Tablets as audio drivers around my house for Snapcast. Each tablet has USB, wifi, 3.5mm Aux, and a built in battery, which make them great for this task, especially on sale at $45 a tablet

[+] paxys|2 years ago|reply
What's the problem there? I believe you can just install and display any Android app on it right?
[+] gjsman-1000|2 years ago|reply
The bootloaders have been locked; and the 2015 models (iirc) were the last ones where a bug allowed unlocking them by shorting some pins. Without an unlocked bootloader, you might be able to root Android, but you can't replace Android or the ROM.

Not that it matters anyway - it's MediaTek. Their partition layout and driver model from those eras is generally a disaster. There's no way you'd be able to make FrameOS in a reasonably elegant way work on that hardware.

[+] eightysixfour|2 years ago|reply
This is awesome! There are a lot of projects trying to duplicate this but very few have the polish, especially on the creation side.

Selfishly, I’d love support for the lower power eINK devices, like the InkPlate series which has a built in ESP32, but this is making me consider swapping them to a Pi.

[+] mariusandra|2 years ago|reply
I'd love for FrameOS to support ESP32. Two days ago FrameOS was a slow and interpreted Python app. Today it's a 3MB statically linked binary. The margins are tight, and I'll likely need to cut out some features (e.g. threading), but theoretically it should be possible to get it to run. However I'm not planning on taking this on any time soon, as there's still a lot of work left to make the Raspberry version great. :)
[+] greendude29|2 years ago|reply
Thanks for posting, this is a fun space to see more software in.

Indirectly related, but I'm in the market for a 32inch+ screen which can be used for a photo frame. With the exception of Samsung's Frame, I haven't been able to find other products which is surprising to me because it seems like such a simple use case. Here's what I've found so far:

- TVs and monitors: downside is keeping these on 24-hours isn't great for energy consumption

- color e-ink: these are of course usually a maximum of 13 or so inches

- Samsung the frame - alas, has good features and a good look, but downsides are expensive(!) and Samsung(!!)

Do you have any recommendations?

[+] mikepurvis|2 years ago|reply
How does a dedicated frame device save power over a generic TV display? Doesn't it boil down to the same underlying parts?
[+] sydbarrett74|2 years ago|reply
Reaaallly cool project. These are the innovative OS stories I like to see, not the latest useless marketing department driven 'feature' that some Microsoft PM thought was a good idea.
[+] bitwrangler|2 years ago|reply
I was imagining something like MotionEYE OS https://github.com/motioneye-project/motioneyeos/wiki

Where I would download the sdram binary image and flash with Balena then boot on the Pi.

Great work anyway! It was a nice opportunity to read up on Nim language too.

[+] mariusandra|2 years ago|reply
Very interesting. As replied here [1], I do eventually want to investigate "slimming down" the Linux distro below FrameOS.

However for now, the RPi imager, with its built in "enter your wifi credentials and SSH key" dialog was the best and easiest way to get started.

[1] https://news.ycombinator.com/item?id=38859572

[+] cryptozeus|2 years ago|reply
Worked on a similar product 10 years ago at Pandigital. They used some custom os from china and the way you send photos to the frame is by giving guid email id. It was doing good in those days until they got ddos on holidays season and lost all the business.
[+] niutech|2 years ago|reply
Why do we need full-blown RPi to run FrameOS? There are many cheap ESP32-based e-paper displays like LILYGO T5-4.7", so please add support for ESP32.
[+] mariusandra|2 years ago|reply
I apologize for the confusion, but you do not need to run FrameOS at all. You can just go about your merry day, and either just not use FrameOS, not post this comment, or, if you prefer, not read any of the comments addressing this question before posting yours.

On a serious note, yes, it's planned. The ESP is a very limited chip. If you want to display a BMP from a HTTP source, or a quick calendar, it's great. Try doing HTTPS, image downscaling or any serious processing though. Forget about things like browser screenshots, which you can't even do on 32bit linux anymore. Forget the 60fps mode over HDMI we can now do.

I'll try to get it working regardless, but it's but not a personal priority today over the other items in the todo list. You're free to lend a helping hand of course.

[+] m463|2 years ago|reply
pretty cool

Seems to require a pi. Wonder if it can work with this: https://amazon.com/dp/B0C4TS1NMS

[+] mariusandra|2 years ago|reply
I'd love it to work on the RP2040, and perhaps even an ESP32, but we're not there yet. Just yesterday I converted FrameOS from being an interpreted python app to a 3MB compiled binary, so we're half of the way there. I'm not sure what changes I must do to get it working (e.g. integrate a wifi driver, remove GC and threads, etc), but it's in the realm of the possible.
[+] Gys|2 years ago|reply
The frame you referenced has a Pi Pico build in. FrameOS needs at least a Pi Zero.
[+] djazzz|2 years ago|reply
I have that device, it has no wireless connectivity (built on rp2040). The only IO is usb and microsd card (hijack for spi?). I have Nim drivers for a similar rp2040 based product (Inky Frame) which works great and has wifi/bluetooth (Pico W). As of now FrameOS doesn't run on rp2040.
[+] fudged71|2 years ago|reply
for dashboard software like this are there any reliable techniques to prevent burn-in? I'd like to set up a large screen with a dashboard but I don't want to wreck the screen
[+] linuxdude314|2 years ago|reply
This is specifically about eInk displays. They do not suffer from the problem you are describing.

Generally this is solved by displaying more than one image and rotating between images on a time interval.

[+] mariusandra|2 years ago|reply
There's nothing built in now, but a common technique would be to make the image e.g. ~10px larger in each direction, and then choose a random crop every other second.

It should be really easy to build a FrameOS app that does this. Add one node at the start of the render loop to increase the image accordingly, and one at the end to crop it back down. I was planning to use a similar technique to display smooth scrolling animations/slideshows, but it can definitely be used to prevent burnin.

[+] BHSPitMonkey|2 years ago|reply
They will generally transpose everything on the screen by a small randomized difference every minute or so.
[+] samstave|2 years ago|reply
If your site's always flapping, don't worry about burn in?
[+] 12th|2 years ago|reply
This looks really good. I can see it's not listed in your list of devices but I'm wondering if there is anyway to get this running with an old kindle.
[+] isoprophlex|2 years ago|reply
Those circular color displays look incredible! I had no idea these things were available, but outlets like adafruit have them in stock. Amazing.
[+] gotwalt|2 years ago|reply
Would be amazing if this could be adapted to replace the Tidbyt OS. Such a promising device with such terrible software.