Raspberry Pi powered e-paper display takes months to show a movie
We loved the filmic flair of Tom Whitwell‘s super slow e-paper display, which takes months to play a film in full.
Living art
His creation plays films at about two minutes of screen time per 24 hours, taking a little under three months for a 110-minute film. Psycho played in a corner of his dining room for two months. The infamous shower scene lasted a day and a half.
Tom enjoys the opportunity for close study of iconic filmmaking, but you might like this project for the living artwork angle. How cool would this be playing your favourite film onto a plain wall somewhere you can see it throughout the day?

Four simple steps
Luckily, this is a relatively simple project – no hardcore coding, no soldering required – with just four steps to follow if you’d like to recreate it:
- Get the Raspberry Pi working in headless mode without a monitor, so you can upload files and run code
- Connect to an e-paper display via an e-paper HAT (see above image; Tom is using this one) and install the driver code on the Raspberry Pi
- Use Tom’s code to extract frames from a movie file, resize and dither those frames, display them on the screen, and keep track of progress through the film
- Find some kind of frame to keep it all together (Tom went with a trusty IKEA number)

Affordably arty
The entire build cost £120 in total. Tom chose a 2GB Raspberry Pi 4 and a NOOBS 64gb SD Card, which he bought from Pimoroni, one of our approved resellers. NOOBS included almost all the libraries he needed for this project, which made life a lot easier.
His original post is a dream of a comprehensive walkthrough, including all the aforementioned code.

Head to the comments section with your vote for the creepiest film to watch in ultra slow motion. I came over all peculiar imaging Jaws playing on my living room wall for months. Big bloody mouth opening slooooowly (pales), big bloody teeth clamping down slooooowly (heart palpitations). Yeah, not going to try that. Sorry Tom.
39 comments
Raspberry Pi Staff Ashley Whittaker — post author
I would *love* this playing living art on the big blank wall in my lounge. We usually project films onto it but that old thing overheats all the time. The bulb is slowly dying too so we have constellations twinkling over the top of whatever we play. It’s cute though.
Tom Whitwell
Thanks for posting Ashley, but yes, this is definitely NOT my idea – it was 100% inspired by Bryan Boyer
Raspberry Pi Staff Ashley Whittaker — post author
PS – with so many people at Raspberry Pi towers saying what a good idea this is, I’m reminded that Tom was inspired by Brian Boyer, who made something similar back in 2018: https://medium.com/s/story/very-slow-movie-player-499f76c48b62
Simon
This is such a great idea. Can anyone thing of a reason why the Zero WH wouldn’t work for this project? Does it need that much processing?
Raspberry Pi Staff Oliver Quinlan
+1 ! I wondered this. The 4 seems hi spec for this, it’s not like it needs to do anything quickly!
Tom Whitwell
Haven’t tried it with a Zero WH, will have a go
Raspberry Pi Staff Oliver Quinlan
Thanks Tom, let us know how it goes!
Tyler
I built this with a Pi zero and haven’t encountered any problems with it!
Tom Whitwell
Oh, that’s great to hear – using this code? Mine comes later today, I think!
Tyler
Yep, I pretty followed your Medium post word for word. Got it working with a Pi 3 Model B first. Then decided to swap it to a Zero to make a thinner 3d printed frame for it. I don’t even think I had to change anything, just swapped the SD card.
It’s been on my wall for a week and have had no issues with it. I have it updating every 5 minutes and I have it skip some frames every time. It’s currently 8 minutes into the movie Up and it looks great!
Adam
Hi Tyler, can I ask how you got this working? I’m trying on a Zero WH with a Waveshare 7.5 inch E-Ink Display. SPI on, bcm2835 libraries installed, python, pip, pil, numpy RPi.GPIO and spidev all installed. The setup.py file is completed and ffmpeg-python is installed. However as soon as I try and run the provided 7in5 test .py file, helloworld.py or slowmovie.py my device crashes, losing VNC and SSH connections. Would you have any feedback for the Pi Zero solution?
Dan
Nice project.
How about a normal speed mini movie player: https://www.raspberrypi.org/blog/raspberry-pi-retro-player/
Raspberry Pi Staff Oliver Quinlan
This is so cool! Really keen to make one of these just for 2001 alone.
Watson Neal
I use ePaper in my professional life and this is an interesting take on a use for ePaper. I am curious as to what this would do to the life of the display, since ePaper has a basic lifespan defined by the number of updates it receives coupled with its age. A two hour movie at 24 frames a second is 172,800 screen changes. I wonder how many movies you can actually get before the ePaper starts showing signs of wear.
Stuart Turner
Anyone else think that the movie for this device has to be Memento?
Marco van Wijngaarden
How about Baywatch series? ;-)
Neill
Super cool! I’m looking at e-ink screens, and they are all pretty small. Anyone have advice on how to expand on this idea by splitting the movie across 4 e-ink screens (i.e., multiple monitors)?
Tadeu
Poderia ter sido feito com um simples microcontrolador de 8bits.
Eric Hansen
“28 Days Later”
Eric Hansen
“9 1/2 Weeks”
Edgar Prada
Star Wars
Georg Bisseling
“In Time”
Dan I
Can you have a playlist of files run in sequence/loop? I’m definitely building one of these. Have around 600 movies on my Plex server, thinking I can compress a few down onto the SD card.
Ben Gilles
How about the entire MCU films in chronological order? That would take forever.
Ian
I think this is a really interestig project, both for the use of the lovely e-paper technology and for the technique, but is there a reason not to just use an offline Pi or other computer to render all the frames of a film to individual images at an appropriate resolution and then put them on an SD card or USB storage, and just do a slideshow at whatever speed you want?
Alex
I was thinking the same. I suppose giving the script access to an mp4 and letting it makes images as it goes along makes it easier to get working, but it gives less control. Making all the images in advance would not be difficult, would allow you to use something other than PIL (ImageMagick has more than one dithering method) and check results. And you could use a much lower capacity SD card in the Pi. If I make one of these, and I am seriously considering doing so, that’s the approach I’ll take. Also a Pi Zero. A Pi 4 is way over powered for this, especially if you make the images in advanced.
Ben Meroff
Haha so what is that, like 1 frame per 24 seconds? This could be like holy water to use against the ultra-high FPS gang…
Roen
Maybe not the best device to play a movie but I could see this idea being useful for some other applications.
Alex
I think you have completely missed the point of the project.
Arya
Nice Project. Can you make a video about it? I would Like to see how it shows
mathom
And then play that video on the device…
Chris
Definitely doing this with a 0W I have in a drawer and put Young Frankenstein on it.
Bernhard
Take your coke and popcorn and then watch the video :-)
*lol*
Bernhard
Dominic Adams
Try “Logistics” on this creation. It’ll last longer than the life of Earth!
M.anil
Have around 600 movies on my Plex server, thinking I can compress a few down onto the SD card.
IT Zone
Allama iqbal poetry
Definitely doing this with a 0W I have in a drawer and put Young Frankenstein on it.
Nice Project. Can you make a video about it? I would Like to see how it shows
Brian Goldberg
Neat! I would like to hook up an e-ink display to use as a reader maybe. I never considered it for the pi.
Madison Collins
I built this using the equipment Tom listed. When I played the test video and my own video (29 and some change frames/sec) I get a flash (blank white screen) between frame changes, regardless of my d- and i- values. Is that normal? I believe I followed the directions but maybe I missed something. I’d love to have a more smooth transition between frames. Any ideas? Thanks!
Karl Kevilus
Make “127 hours “ run in 127 hours?
Comments are closed