I'm using framebuffer image viewer fbi to display an image on a TV. Everything works fine for one image, if I don't refresh it. But when I need to refresh it, there is ~2 seconds of black screen (I presume while the process takes over the interface and clears it out). It is annoying. How can I refresh the image (it's the same file) immediately, without this transition?

If I specify 2 files to display in the loop, it is working just fine, and I get no black screen between images. Here are the things that I tried so far:

  • Provide 2 paths (same file) in the fbi command line. It loops through those 2 files, but image gets cached. When I update the file, fbi does not pick up the new one.
  • Make a copy of the original file, and provide 2 distinct file paths to fbi. Same as above - it loops through them, but when I overwrite one, it does not reflect on screen.
  • Tried using -noreadahead, -cachemem 0, and -cachemem 1 in command line arguments with 2 distinct files. Same behavior - it caches both images, and does not pick up new one.
  • Installed and tried fbi-improved (fim). Still same behavior (although it does not have readahead or cachemem parameters).

I'm not married to fbi, but that's the only one I found working on Raspberry. Ideally, I'd like to send an image form another computer and have it displayed on the screen pixel-to-pixel. I have the process of sending nailed down. Just need some process that shows the image using framebuffer (I don't want an overhead of X) that I could send SIGUSR1 to and it would re-read the same file would be perfect. Or that would just do it on a timer. Or with a trick like slideshow without pre-caching all files.

1 Answer 1


Ok, I figured out the approach! Turns out there is a catch with just 2 files that makes it cache regardless.

I created 2 symlinks to the original image file, and specified -cachemem 0. This triggered it to re-read the file on every refresh. So this allows me to update the image every 60 seconds:

fbi -T 1 -d /dev/fb0 -a -noverbose -t 60 -cachemem 0 /tmp/display-image.png /tmp/image-alias-1.png /tmp/image-alias-2.png
  • Legend! This was exactly what I was after too. Thank you for sharing your solution.
    – Mint
    Nov 12, 2023 at 4:06

Not the answer you're looking for? Browse other questions tagged or ask your own question.