55inches, 4K Digital Photo Frame Display for Around $400




Introduction: 55inches, 4K Digital Photo Frame Display for Around $400

there are a lot of tutorials on how to make an awesome digital photo frame with a raspberry pi. sadly the rpi does not support 4K resolution. the Odroid C2 can easily handle 4K resolution but none of those rpi tutorials work for the C2 unit. it took me 30+ hours to get where i am today. by the time you are done, yours will look like this:

or you can buy one from Memento. a 35 inches 4K frame costs $900. or a Samsung frame TV for around $1300.


Step 1: Find an Empty Wall to Install the 55inches TV.

this wall has been empty for 3 years. i wanted to have a nice poster or backlit display but those are costly and can only display 1 photo!

finally a 55inches 4K TV was selling at walmart for $260. add $26 for 3 years warranty and taxes. out the door was $306.

Step 2: Add an Outlet Near the TV for a Clean Look

i was able to fish a Romex 12 gauge wire from a nearby outlet. be sure to turn off electricity before doing this work!!! then intall an outlet. you can find more detailed tutorial of this on youtube. i forgot to take photos and videos when i was doing this. sorry!

Step 3: Gather All the Materials You Will Need

Materials used


1. 4K TV 55inches Sceptre from Walmart for $260, as of April 30th, 2018

2. Odroid C2 with barrel plug power adapter, $65 with 4 day shipping in USA. do not use the micro USB cable to power, it is not good enough. I bought my unit and power cable from ameridroid.com.

3. high speed HDMI cable from monoprice.com, $5. certified to work with 4K 60hz 4:4:4 chroma

4. 32gb flash drive to hold photos, $15

5. 8gb microSD card, $4.

6. wireless usb and keyboard combo, $30. i use this one

7. optional usb wifi adapter, $10. i use this one

all prices subject to change! mine are actually even cheaper because i got them used or had them from years before for other projects.

Step 4: Time to Start Programming!

1. install ubuntu mate. download the image here: https://wiki.odroid.com/odroid-c2/os_images/ubunt...

2. burn your downloaded iso image onto the micro sd card using win32disk imager.

3. insert your microSD card into the odroid C2. connect hdmi cord from the c2 to the TV. turn everything on. make sure all the materials are connected to the odroid c2, you can skip connecting usb drive and usb wifi for now.

4. let ubuntu initialize and finish everything. once all done, it will ask you to login.

id= odroid

pw= odroid

5. enable auto login so you dont have to manually login each time. go to menu Applications/System Tools/Mate Terminal type in:

sudo nano /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf

if it asks for a password, type: odroid

type in the autologin line. so the final file should look like this:

[Seat:*] greeter-session=lightdm-gtk-greeter


now, press control x, to exit, type y to save file.

6. install FEH to view photos, in same terminal window, type:

sudo apt-get install feh

type y to confirm, if it asks.

7. my photos are edited to be 4K resolution at 3840 x 2160 pixels. put your photos into a usb drive and insert into the odroid c2.

8. use your mouse to navigate to this directory:

9. right click to create Create Document/empty file. i named it pixx.sh (you name it whatever you want) open pixx.sh, add these codes in:

sleep 15

feh --quiet --fullscreen --borderless --hide-pointer --randomize --slideshow-delay 30 /media/odroid/38C1-602E/*

(your usb drive name will be different from mine! in my case, it's named "38C1-602E." to find your usb name, just navigate to media/odroid and you will see. change slideshow delay value of 30 seconds to whatever you want.)

save file.

close it.

right click on pixx.sh to view its properties. make it "executable" in one of the options.

10. add pixx.sh to autostart menu. go to menu System/Preferences/Personal/Startup Applications. click on Add. name= slideshow

command= (choose the pixx.sh file wherever you saved it)

comment= slideshow autostart click on Add and close.

11. disable screensaver. go to menu System/Control Center. choose Look and Feel, ScreenSaver.

disable the "activate screensaver" and anything else that would trigger idle mode. i forgot all the settings, but they are all here.

12. go back to the terminal window. type in:

sudo reboot

this will reboot the C2. once rebooted, it should auto login, wait for 15 seconds, and start playing photos from your usb drive. hit ESC on keyboard to exit FEH if you need. i leave mine running nonstop 24/7. i only turn off the TV as needed.

Step 5: Optional Stuff

13. add more photos to the usb flash drive by copying and pasting into the usb drive manually or via FTP. to upload via FTP, so you dont have to physically disconnect the usb drive, make sure you got the usb wifi adapter plugged in. go to the upper right hand corner of ubuntu menu and connect to your wifi network.

14. download filezilla. connect to the odroid via SFTP protocol, not FTP protocol.

enter your C2 IP address in host field

user= odroid

pw= odroid

logon type= normal

upload to your media/odroid/usb drive name

reboot the C2 for FEH to load the new photos into memory.

15. optional to rotate the display screen into portrait mode. go to terminal. type in:

sudo nano /etc/X11/xorg.conf

add in this line: Option "Rotate" "CCW"

so the end result looks like this:

Section "Device"

Identifier "Mali FBDEV"

Driver "fbturbo"

Option "fbdev" "/dev/fb0"

Option "Rotate" "CCW"

Option "SwapbuffersWait" "true"


exit and save.

type in: sudo reboot

to reboot your TV. once loaded up again, the display should be rotated into portrait mode.

Step 6: Things to Do

1. install Home Assistant, for home automation. https://www.home-assistant.io/

i could not install it because it requires Python 3.5.3 or later. BUT i have version 3.6.x and it refuses to go further. very weird. could someone please help me with this?

2. install hdmi CEC on C2.

type in terminal: sudo apt-get install cec-utils

after CEC is installed, check CEC is working, type: echo scan | cec-client -s -d 1

it should start listing what type of TV the C2 is connected to.

3. enable HDMI CEC in HA. so once motion is detected, C2 will issue the CEC protocol to turn on the TV. once motion is not detected, C2 turns TV off via CEC.

Step 7: Troubleshooting

1. ubuntu rebooting itself. not enough power. dont power up the C2 unit via the micro usb port. power the C2 unit via the barrel plug that ameridroid.com sells for around $7. i spent at least 20 hours on troubleshooting this.

2. TV shows blank screen or no signal. try another HDMI cable. try another power cable for the C2.

3. TV shows so signal. did you turn off ubuntu sleep or screensaver mode?

Be the First to Share


    • Clocks Contest

      Clocks Contest
    • Game Design: Student Design Challenge

      Game Design: Student Design Challenge
    • Make it Glow Contest

      Make it Glow Contest



    2 years ago

    This is great. I have been trying to figure out a
    cheap way to do this for a while. I think a more
    ideal solution would be to use a TV that runs
    on Android TV but I'm not sure if anyone has
    figured out a way to do that. One of the probems
    with that though is that there aren't that many
    brands out there using Android TV so that would
    limit your options unless a set top box could be
    used. I am curious about the TV you used.
    Why does it look so bulky? Seems kind of
    strange for a TV that is only 2 years old.

    Ok, I watched some of the video. I guess its just some
    sort of an optical illusion in that photo I was looking at
    that makes it look so thick. Although 3 inches is pretty
    thick to begin with.


    Reply 2 years ago

    i have Nvidia Shield box and Mi S box. they dont work because i want it to auto start after a power down or reset. maybe using another app such as Tasker can force slideshow app to start. then again i cant force it to play a playlist remotely as well.


    3 years ago

    was anyone able to install HomeAssistant on Ubuntu?
    i still cannot do it with Ubuntu 16 nor 18. if you did, please post a tutorial or video on how. thanks!


    4 years ago

    my auto run command to start feh uses the 'reload' switch so when I add new pics or change out old pics via ssh/sftp/scp/, feh will reload the picture directory every 10mins. My cmd looks like this:

    feh --quiet --fullscreen --hide-pointer --randomize --reload 600 --slideshow-delay 1800 /media/myMedia_128G_usb/myArt/my4kart/

    also I wanted my pics to be scaled for the 2180p display (ie 4k) and be matted.

    my display is landscape as I use it for movies/netflix/etc.

    I'm lazy and don't want to do it manually on each photo, so I use imagemagik's 'convert' on a whole directory of photos via this command:

    ls -1 /media/me/128GB-myLocal/pics-temp-new/ | xargs -I{} convert /media/me/128GB-myLocal/pics-temp-new/{} -resize 3840x2160 -bordercolor snow3 -mattecolor snow2 -frame 77x77+0+33 -frame 33x33+0+33 -border 20%x10% /media/me/128GB-myLocal/pics-temp/3840x2160_20x10perct_border_matte_frame77x77+0+33_frame33x33+0+33_snow2_{}

    the attached photos are an example of the rescaling and matting 'convert' does via the above command. Even though my display/tv is in landscape the 'convert' and scaling works on portrait or landscape pictures and displays correctly on my 4k tv.

    these photos are by Damon Lam and Antonio Grosz that I got from the 'free to download and use' site:



    4 years ago

    thank you. you made this easy for me.

    I recently got a 4k tv and was looking for it to do something while it's not being watched.

    if it helps others, I had the display blank, ie go black on me after 2 hours or so.

    what solved it for me was creating a file with this in it for my 'autoboot' user of 'feh'.

    $ cat /home/my4k/.xsessionrc
    # added by tom to try and stop screen blanking.
    xset s off && xset s noblank && xset -dpms

    8.17.2018 update

    I have a samsung nu8000 4k tv

    I also had an issue when I turned the tv off then on, the odroid c2 hdmi output would not turn back on. IE the display was blank. To fix that I edited the file:

    sudo vi /usr/share/bootini/boot.ini.default

    and inserted this line:


    I then ran the command

    sudo bootini

    so the changes would be picked up.

    rebooted the odroid and things have been good for the last couple of days.


    4 years ago on Step 3

    This is a nice tutorial!
    You mentioned that your photos were converted for 4k portrait. Did you do this manually or with a script (e.g. with imagemagik?)


    Reply 4 years ago

    all of our images were taken horizontally. hence i add to manually edit the photos. sometimes 1 picture per file. or sometimes i am lazy and squeezed 4 pictures into 1 jpg file.


    4 years ago

    Very nice results! I appreciate the time and effort on this, very nice to see how you did it. Thank you!