Instructables

How to Make a Raspberry Pi Media Panel (fka Digital Photo Frame)

Featured
Picture of How to Make a Raspberry Pi Media Panel (fka Digital Photo Frame)
IMG_2491.JPG
IMG_2496.jpg

The goal of this project was to create a low cost Raspberry Pi Media Panel--a nice looking screen that could stand in the living room or attach to the refrigerator with the primary purpose of streaming personal photo and video content full time, but also be able to do some other cool things when needed...like show the weather, play a movie, play music, or receive AirPlay content.

Read this blog post if you want to learn more about what a media panel is and why you might want one.

Success criteria were:
-Low cost: a full blown computing device and screen for between $100 and $200 all in
-Attractive: meaning my wife finds it aesthetically acceptable for the living room
-Light: no more than a few pounds
-Thin: no more than an inch thick, including frame
-Quick: can be built in a few hours or less
-Simple: requiring mainly assembly, versus construction or manufacturing

Update:

Several people have asked me about an integrated product/service like this that is off-the-shelf. I've been working on one for more than a year, and we'll be launching very soon. If you're interested in learning more, you can add your email address here: https://www.fireside.co/

 
Remove these adsRemove these ads by Signing Up

Step 1: Select the right LCD Screen

Picture of Select the right LCD Screen
photo 1.JPG
photo 2-3.JPG
photo 2-5.JPG
There is a lot to picking the right LCD screen...so much that I wrote a completely separate blog post on how to select the right LCD screen for your media panel. If you want the full details and/or are thinking of doing something different, read that post.

To keep things short and simple, I recommend using a 15" or 17" screen similar to the screens used in the MacBook or MacBook Pro. You can, of course, also use a screen from an old laptop you already own, but you need to make sure you can find an LCD controller board that can operate it.

We bought our screens from Laptopscreen.com, and the exact models we chose were the LG & Philips LP154WP1-TLA1 and the LG & Philips LP171WU3-TLA2. They were about $75 each brand new. Both screens were matte finish, though the next time I think we'll opt for glossy.

Don't worry so much about the numbers after the dash...they don't have a large impact on the screen. The critical numbers that determine whether an LCD Controller will support your panel and how to program it are the LP154WP1 and LP171WU3.

If you have questions, or are thinking about getting a different screen, read this blog post first.

Step 2: Order an LCD Controller Board

Picture of Order an LCD Controller Board
IMG_2549.JPG
IMG_2550.JPG
IMG_2551.JPG
IMG_2513.JPG
As you may have read in the blog post on picking LCD screens, there are a number of places you can buy an LCD controller board. However, I think the best is a company called NJYTouch based in China. For the LP154WP1 or LP171WU3 screen, order Model 5451 (audio) from their eBay Store. It costs about $40, and includes the inverter, a control switch (so you can turn your screen on and off) and the correct LVDS connector cable for your LCD screen...plus the programming so that when it arrives it is plug and play.

Shipping for the item is currently free, but takes about a month to get to the US. Instead, ask to upgrade to DHL after you've purchased and for about $20 more the unit will arrive in under a week.

You will need to buy a 12 volt 4 amp power adapter--you can use any standard 2.5mm internal diameter 5.5mm outer diameter. We used this one from Amazon rather than having NJYTouch ship one specially from China.

You'll also need to buy an HDMI A to DVI 24+1 cable, since the controller board has DVI and VGA input but no direct HDMI. We used this one from amazon.

If you want to have audio, you need a device that can take the audio track off HDMI and deliver it via 3.5mm analog. You can find these on Amazon for between $30 and $99, depending on options. We've used this $43 product from J-Tech Digital with the X-mini II speaker via 3.5mm jack and had a good experience.

Unfortunately, there is a problem with the 3.5mm analog out on the Raspberry Pi board itself, and if you try to use it you will get a lot of popping and background noise. Similarly, if you try to add a USB sound card and take audio off via software, you'll find relatively poor performance and audio/video delay and syncing issues in our experience. Currently, the only reliable way is to take audio off HDMI.

Step 3: Order a Frame

Picture of Order a Frame
IMG_2424.JPG
IMG_2504.JPG
Once your LCD screen arrives, it's time to get out the tape measure and get the exact dimensions so you can order a frame for it. American Frame provides nice looking and low cost cut-to-order metal frames to your exact specification. Unfortunately, they do not cut metric sizes. Since LCD panels are made to metric specifications, you will have to calculate the size using 16ths of an inch as best you can. If you can't get a perfect match, round up to make sure the panel will fit inside the frame.

I recommend the Radius Colorcast line since the slightly larger rabbet depth fits the depth of the LCD panel a little better and the rounded bevel makes a slightly more attractive package. The Standard line works fine too if you want something simpler. Colors worth checking out include Black, Bright White, Right Red and Natural Steel. The frames you see in the photos of this tutorial are all Natural Steel.

Make sure you order the standard white mounting board and that you remove the matting and the acrylic that are automatically added to the order. You don't need them. Total cost should be around $10-15 plus shipping, which will take up to about a week depending on where you're located.

Step 4: Magnetic Mount vs Stand vs Hanging

Picture of Magnetic Mount vs Stand vs Hanging
IMG_2430.JPG
IMG_2432.JPG
IMG_2433.JPG
IMG_2529.JPG
IMG_2531.jpg
Now you need to decide where you want to put your frame so you can get the correct mounting hardware. If you're going to hang it, your frame will ship with everything you need.

If you want to mount it on the refrigerator, we recommend getting four extremely strong magnets. We used MMR-A-X8 Neodymium mounting magnets from K&J Magnetics for about $5 each. In retrospect, this may have been overkill, but the good news is there is no chance that our Media Panel is going to accidentally come off the refrigerator. To attach the magnets to the frame, you will need a 2" x 1/2" mending brace (sold at Ace Hardware or similar) and four 1/6" wide x 1/2" long machine nuts and bolts.

If you want to stand your Media Panel on a desk or a table, the $5 Easel Mate by Albin Products is a great solution. Do not order directly from Albin like we did. Albin is the designer of the Easel Mate and wholesales it. Unfortunately, the Easel Mate they sell on their web site is the wood screw version, and will not work for our metal frame. Many picture frame stores seem to carry the Easel Mate, and we ended up buying it at University Art in Palo Alto. A quick Google search will turn up many other suppliers you can order from online.

Step 5: Order a Raspberry Pi and Accessories

With the longer lead time items out of the way, it's time to buy the brains of your Media Panel, the Raspberry Pi. We bought our Raspberry Pi Model B for $35 from Element14. To round it out, you'll also need a few more things:

-USB WiFi (unless you plan to use ethernet). We use this product from Edimax which is about $9.
-A case for your Pi: We like this one you can buy on Amazon in a variety of colors for about $12.
-An SD Card for your operating system. We like this 8 GB one from Amazon for about $7.
-A cable to power your Raspberry Pi, either a Micro B AC adapter ($5) or a USB A to USB Micro B ($5) if you plan to backpower your Raspberry Pi from a powered USB hub (more on this later). Backpowering is recommended, as connecting all your USB peripherals to the USB hub offloads the power draw from the Raspberry Pi and results in more stable Raspberry Pi operation.
-(Recommended) Powered USB hub. We use this model from Belkin which was about $17.
-(Recommended) USB Mouse and Keyboard. If anything goes wrong during your setup, it can be convenient to just plug a mouse and keyboard in to address the problem vs using SSH or your XBMC remote control. You probably already have them, and if you don't you can get them pretty cheap from Amazon. Make sure you pick one from the RPi Verified Peripherals list.

If you decide to deviate at all from this specific set of items, be sure you check the Rasperry Pi Verified Peripherals list first to see if it works with Raspberry Pi. Do not assume something will just work.

Step 6: Prepare your Raspberry Pi

Picture of Prepare your Raspberry Pi
IMG_2516.JPG
IMG_2525.jpg
IMG_2523.JPG
The next step is to load the operating system on your Raspberry Pi. There are lots of operating systems you could use, but our experience has been best with Raspbmc. It's a minimal Linux distribution based on Debian specifically tuned for running XBMC on Raspberry Pi. The system auto-updates, and it boots directly into XBMC.

Follow these directions to download and install Raspbmc. Be sure to set up your install so that your Raspberry Pi has network access. This means you need to configure WiFi.

Power up your USB hub and connect it to one of the Raspberry Pi USB A jacks. Then from one of the 4 ports on the hub, connect your USB A to USB Micro B Cable from the hub to the USB Micro B jack on the Raspberry Pi. This is called backpowering, and will be how your Raspberry Pi receives power. Finally, connect your USB WiFi module and testing keyboard/mouse (if you like--not essential).

To verify your install worked, connect your Raspberry Pi to a TV via HDMI and make sure it boots into XBMC. Also, make sure that you can see the weather and RSS feeds so you know Internet access is working on the device. Navigate into the System: Info section and write down your device's IP address in case you need it in the future for SSH access or to set up your remote control.

Also, I recommend enabling "Allow control of XBMC via HTTP" in System: Settings: Web Server (so you can use the remote control app for your smartphone) and "Allow XBMC to receive AirPlay content" in System: Settings: Airplay.

Finally, download and install the free XBMC app for your iPhone or Android phone so you have a remote control for your system.

Step 7: Assemble the LCD Controller Board

Picture of Assemble the LCD Controller Board
photo 4.JPG
photo 5.JPG
photo 3.JPG
Here is a video that shows you how to put together the LCD Controller Board and accessories you have received. Assemble as described in the video, but do not attach the LVDS cable to the LCD panel yet. We'll do this in the next step because the cable must pass through the hole we need to cut in the mounting board.

Step 8: Assemble the Frame

This step is for putting together all the pieces. Assemble your frame and insert the LCD panel and LCD Controller Board as per the video. Provided everything goes right, it shouldn't take more than about 10 minutes.



Once your frame is assembled, connect power to your LCD controller board, plug in the HDMI cable to your Raspberry Pi and then power up your Raspberry Pi to get the first glimpse of your Media Panel in action.
 

Step 9: Adding Your Media and Operating Your Media Panel

Two (among many) ways to add personal media to your Media Panel are as follows:

The first method is easy and requires no technical abilities, but requires buying a USB flash drive. Buy a USB Flash Drive (like this 64 GB SanDisk for $38) and create two folders on it using the computer that stores your media. One for videos, and one for photos. Copy your personal photos and videos into the correct folder. Unplug your flash drive and plug it into the USB hub connected to your Raspberry Pi. Now you just need to tell XBMC where to find the media (see below).

The second method is to copy the files directly to the SD card on the Raspberry Pi, which requires using SCP / SSH. SSH to your Raspberry Pi and create folders for your media in /home/pi. Open a terminal window on another computer on your network and type 'ssh pi@ipaddress' and then enter raspberry for the default password. ipaddress should be replaced with the IP address of your device, like 192.168.1.2 as an example. You will now be in the /home/pi directory. Type two commands: "mkdir pics" and "mkdir videos" followed by "exit" to log out. Now navigate to the directory containing your photos and type this command "scp * pi@ipaddress:/home/pi/pics". Enter your password again, and make sure you don't have anything else in the folder other than photos because everything in the folder is now being copied to your Raspberry Pi. Do the same for videos using "scp * pi@ipaddress:/home/pi/videos".

Now that your media is accessible locally to your Media Panel, you need to make XBMC aware of it. Under Pictures, go to "Add Source" and select your pics folder. Do the same under Videos for your videos folder.

To set up XBMC to do a photo slide show, follow these directions to add the Slideshow Screensaver and configure it to use your pics folder.

To run a video loop, use the following steps (kludgy, I know...):
-In System, Settings, Video, Playback, select "Play the next video automatically" play next item in a folder
-Navigate to your video folder under Videos, Files
-Using your remote control, change the mode to gesture.
-Select and hold down on the video folder. From the pop-up menu, click Queue Item.
-Select and hold down on the video folder again. From the pop-up menu, click Now Playing.
-You should be presented with a list of all the videos in your folder.
-Gesture left to get the right menu and select Shuffle (unless you want to play videos in order).
-Click once on a video to start your infinite video loop playing.

In addition, of course, you can configure your Media Panel to have all the standard video and audio services of XBMC, including Amazon Instant Video, Hulu, Youtube, and countless others.

Enjoy!

1-40 of 44Next »
andyjagoe (author) 3 months ago

Several people have asked me about an integrated product/service like this that is off-the-shelf. I've been working on one for more than a year, and we'll be launching very soon. If you're interested in learning more, you can add your email address here: https://www.fireside.co/

jagguli21 days ago

I may not be totally in the topic, but it would be nice to do it with the TV, to have the pictures display randomly when in standby. Just an idea though, I'm almost a noob in this, and don't know if it is doable...

brettsalyer2 months ago

How would I do that? Over USB that is? Would a replacement tablet screen be better? Or Laptop touch screens?

andyjagoe (author)  brettsalyer2 months ago
The touch screen (whether tablet or laptop) will have a separate data interface for touch input. You'll need to make sure the Raspberry PI can recognize it and use it as a touch interface. The level of difficulty of what you're describing is certanly higher than just getting an lcd panel to work. Some providers will sell all in one kits. Google NJYTouch (same provider I recommend in the instructable) and see if they offer anything.

I have seen kits for the rpi for touchscreen, though only 7 inch. I want a 12 inch. I found a laptop screen (touch) that I could use. I found a controller board from njytouch and it was listed as supporting hdmi, dvi, vga, audio LCD/LED lvds. I'm hoping those 2 things are all I need to get it going. is there any way to make sure my pi will support it? or is it just trial and error?

andyjagoe (author)  brettsalyer2 months ago

You first need to check with NJYTouch (or on the controller board listing in eBay) that your exact LCD model number is supported by the board. For example, this number might be something like LP156WF4-SLBA. Then when you buy it from NJYTouch, they need to program your LCD controller so it will support your screen (they do this for free when you buy your controller). However, none of this addressed the touchscreen issue. The touch screen needs drivers and will need to be configured for your device. Using it in X-Windows will be different than if you want to use it with a standalone XBMC, etc. You might be able to get a kit from NJYTouch that also supports touch. I'd talk to them and explore that if you're serious about touch.

Will do, thanks for your help!

brettsalyer2 months ago

Touch screen panels would work just as good, right? And do you think it would be bad to use a smaller screen, such as a 7-10 inch?

andyjagoe (author)  brettsalyer2 months ago
Hi Brett. Yes, smaller/touchscreen should be fine. The most important part is being able to find an LCD controller board that can convert HDMI to LVDS so the Pi can send video to the screen. Also, with a touchscreen, you will need to carry touch input from the screen back to the Pi over something like USB.
har_it5 months ago

I find this project very interesting and would like to work on it soon. I was wondering can i buy an led monitor instead of buying a lcd screen + controller board? I would like to get rid of its factory frame and frame it just like you did.

Does the monitor include a contoller board inside or would i have buy one separately? Your advise would be appreciated.

andyjagoe (author)  har_it5 months ago
Thanks for the message. If you're looking at bare panels...they all need a controller since none of them accept HDMI. Most are LVDS, though some of the newer ones use DisplayPort. The biggest challenge is finding the controller card for whatever screen you're considering. Also important to know is that LVDS is a fairly generic term...ther are actually many different settings and considerations to make sure your controller can correctly connect to your screen. I'd corss-reference the panels you're interested in with a provider like NJYTouch to see if they have any matches for you.
har_it andyjagoe5 months ago

Andy- Great info!! However, what i meant by LED monitor was something like this. Can i buy this instead of a LCD screen and its corresponding controller? I wanted to understand, if i rip this LED monitor open, can i get a screen and a controller out of it, which I can use for this project? or would I still have to buy a controller to power this screen.

andyjagoe (author)  har_it5 months ago

Looks like this monitor may only support VGA input? Pi really only supports HDMI output. You'd need to find a monitor that accepts HDMI as input. I've never tried something like this and there are likely some other issues to work through...but I can't think why it wouldn't be possible.

Were you able to find a HDMI screen? I've wanted to do something like this for our kitchen
har_it andyjagoe5 months ago

The monitor above is not my first choice, I can definitely find one with HDMI input. I would like to go this way as I can get the perfect size of the screen and I would not have to buy a separate controller board. I think this will be interesting project and again I appreciate you putting up this tutorial here for us. I hope I can get your support as I work on this project.

VanillaXtract4 months ago

I am going to look into doing this, but it seems the cost may has gone up quite a bit. I totalled it to be about $275. That didn't include any of the optional kb, mouse, audio, etc. If you did this for $100-$200, can you help me source the components?

andyjagoe (author)  VanillaXtract3 months ago

Yes, in particular, the screens I used in this instructable have increased in price. Newer screens are cheaper, but it can be challenging to find an LCD controller to drive them. This is one of the many reasons I'm working on creating a unit like this that can be bought off the shelf.

mattantonio6 months ago
This is something I'd really like to do, but was curious if you or anyone here had any experience or recommendations on how to make this work like a Kodak Pulse. The main feature I would like to implement is the ability to email pictures directly to the photo frame. Don't really care about showing photos from Facebook or other social networks since I don't want to mess with an API. I'm sure I could create a slideshow using PHP and jQuery, but emailing the photos to the frame would be the tricky part I would think. The Kodak Pulse is way too small (and ugly) for the price so I'd rather design this myself. I've come across many other tutorials for a DIY digital frame, but haven't found anything with the capabilities of the Kodak Pulse.

can you just use a file synch util such as Dropbox or google drive? I think there are Linux installs for those. Just synch photos instead of emailing. But I think they support uploading photos by email too.

dan30087 months ago
minor improvement since you wrote this indestructible, there is now an openELEC distro for the pi. The general opinion is that it seems to run cleaner than raspbmc, but is still just an OS written arround xbmc :)

just thought i'd share

http://openelec.tv/get-openelec/download/viewcategory/10-raspberry-pi-builds
andyjagoe (author)  dan30087 months ago
Thanks dan3008. That's a good recommendation for people to consider. I have found that Raspbmc can be so bleeding edge sometimes that its auto-updates go out and break certain things...and rolling back is non-trivial. My experience with the OpenELEC build is very good and it's probably what I would use if I were to start again today.
inotnrml7 months ago
would a retired laptop screen work with a project like this I have been wanting to do a project like this for a while with an old laptop just looking for a less power consuming way to do it some I'm wondering about using a retired laptop screen and if it would work or not
andyjagoe (author)  inotnrml7 months ago
The critical thing is whether you can find an LCD controller card that can drive the laptop screen. Read the articles linked in the instructable on picking an LCD screen and read the NJYTouch product specs on their eBay page or web site to see whether your model of screen is supported.
jabel37 months ago
I found your description of how to build a media panel for the Raspberry Pi really useful, thank you.

I've got one working using an LP171WU1 (TL) (A1) panel and the NJYTouch 5451 controller and I'm very happy with it.
However, I am running into some problems trying build some more and I was wondering if you had encountered the same and might be able to suggest a solution.

The problem is that when I try to order further LP171WU1 panels what I actually get delivered is another model number e.g. LTN170U1-L02 which the supplier claims is 100% compatible. I've ordered and returned 3 so far and none of them has worked. I've got a programmer from NJYTouch and tried all the programs of the same resolution but none work.

It seems that panels that are compatible in a laptop don't necessarily work with the controller.

I am trying to get some help from NJYTouch but so far no joy.

I'd be really interested to hear if you've encountered the same problem and/or have any insight.
andyjagoe (author)  jabel37 months ago
Hi jabel3. Glad I could help. I've had the same problem with LTN panels. Because of this and others, I'm looking at getting a new controller board made that can drive newer, better and cheaper panels (like LEDs, which NJYTouch seems to have no support for). Let me know if you might be interested. Out of curiosity...can I ask how you're using the panels?
jabel3 andyjagoe7 months ago
Andy, yes that would be very interesting. The significantly lower power usage of LED panels would be great. Being able to source large quantities of panels that are guaranteed to work with the controller would be the big thing though. I am working on two ideas. One is a minimalist linux computer using a raspberry pi and a panel with a simple lightweight stand. Another idea is internet connected picture frames - classical frames with an lcd panel,
xinman1 year ago
Has anyone found a way to have 1 power cord running to this and split it to supply the lcd controller as well as the raspberry pi? I don't have a usb hub so I don't need that but it would be really nice to have just 1 cord running to the device.
jabel3 xinman7 months ago
I soldered some header pins to the NJYTouch 5451 controller board - the 5V one just to the right of the jumper switch in the centre of the board and the ground to the right hand hole in the group of 5 holes immediately below (it's labelled ground on the reverse of the board). Best to check with a multimeter of course. I then connected these to the GPIO pins on the Rpi. It works very well. The pins are powered up when you connect the controller to power - even when the power to the panel is off.
There is a risk the this might damage your RPI as there's no surge protection through the GPIO pins but it has worked well so far for me. If anyone is interested I'll post a photo. I'll need to do a bit of disassembly.
andyjagoe (author)  xinman1 year ago
The way to do this would be to have power delivered to the LCD via the controller board in the same way it is now and to take power off the board and run it back to the Raspberry Pi. There are a number of different ways to do this, but I haven't seen anyone providing a ready-made solution yet. If people are interested, I may have something similar in the near future.
xinman andyjagoe9 months ago
Have you gotten anywhere with this? Just wondering!
andyjagoe (author)  xinman9 months ago
Hi xinman. Thanks for checking in. I have a device/service up and running now with a small beta group of families.

I've written a brand new slideshow app for the pi that can properly do hardware accelerated photos and video for large quantities of images. What I found is that I was having to modify XBMC to make it do what's needed and personal content is low priority among the XBMC team. I then built a cloud service on top of Amazon EC2/S3 to ingest the content and index all of it in search to create realtime contextually relevant playlists across your entire collection of images and deliver the content back to your device.

It won't be long before I announce something publicly. I'm always open to ideas / suggestions for features. ;-)
I am very interested... I currently have the Pi (mostly setup), the frame is on order, I have a 17-inch screen, and the lcd controller. The main thing I still need to do on the Pi is figure out why fbi is not displaying the images full screen (there is a black bar going around the entire image?). Once I have the frame I will be ready to work on this more but to get it living room approved or Wife Approved I need to have it only taking one plug with all other wiring hidden. Any help you could give would be greatly appreciated and thank you very much for the write up you did here, it has been a great resource.
andyjagoe (author)  xinman1 year ago
I'm not sure regarding fbi...I haven't looked at it because I didn't think it has a hardware accelerated backend?

Hardware acceleration on the Raspberry Pi is a definite must for any kind of reasonable performance...you may want to consider Pygame because it does a hardware accelerated surface you can use to blit images.

This is exactly the stuff I've been working on--and will have something very interesting to share soon. I'll post to the instructable thread soon with the developments.
I'm using mine strictly as a picture frame for the time being, so I don't think Pygame will work for that. But I am very interested in what you've been working on.... I can't wait to see it.
andyjagoe (author) 7 months ago
This is a great question and I definitely agree. It's been some time since I updated the Instructable. What I did was design a plastic case for the LCD controller using Autodesk Inventor (as shown in the attached image). I'm working on a version that I may offer for sale that is fully integrated as you describe...it will have a new custom PCB board. If anyone is interested in that or in my sharing the LCD controller case via Shapeways so you can create one, please let me know.
IMG_3256.JPG
CescoAiel8 months ago
Not to criticize, but I'd like to know where you put all the other stuff related to the rPi? If I have a mediapanel like this, I'd expect it to be self contained, only exposing the bare minimum in connections (a USB port perhaps, and a power connector)...
captainkerr8 months ago
I can't wait to try this out. However, I was reading up on the audio issues and some said it was solved with a firmware update. I was wondering if anyone can confirm this.
janborkowski10 months ago
Wow this is a great post! I would love to make one for my fridge. But does anyone know how to add a touch screen component to this project?
someone1421 year ago
Could you modify this so that you could control it with a WeMo?
1-40 of 44Next »