In this Instructable I am going to show you how to turn a cheap Portable DVD Player into a PVP (Portable Versatile Player) powered by a Raspberry Pi. This PVP also features a WiFi adapter, a 500GB Hard Drive, a powered USB Hub and an IR remote control all built into the unit.
The idea came to me when I found a DVD Player (Insignia IS-PDVD10) on the shelves of a thrift store. The device was in very good conditions and at a cheap price, too, since the player couldn't read DVDs anymore. However, what really caught my attention was the big 10'' display, the composite video in capability and, more important, a 5 volt output jack designed for connecting external peripherals to the player. I thought it was the perfect fit for an old Raspberry Pi model B second revision (512MB) I had at home stored in a drawer. To my surprise, even the battery itself was still in healthy conditions.
In the end, I was able to fit in the space previously taken by the DVD pick-up laser, a 2.5'' hard disk drive, a WiFi adapter, a 4 port USB Hub (although two of the ports are taken by the hard drive and the WiFi dongle) and, lastly, a IR receiver connected to the Raspberry Pi's GPIO header.
There are, of course, a few drawbacks about the project that I would like to explain before moving on. The first and more obvious one is the display itself: although is large and bright enough for watching a movie on it or playing an arcade game, the quality isn't even close to the one of a modern tablet. The sound, coming from the poor analog conversion of the Raspberry Pi and rendered by two tiny speakers is barely enough for listening to a movie soundtrack. Things get better if you plug in a headphone (this unit has two phone-out jacks) but the audio, being from an analog source, is not of a great quality, and is a bit like listening to a tape.
The greatest advantage of the project lies in its handiness. Two USB ports are quite accessible on the front, the SD Card can be easily removed by opening the CD slot, the Raspberry Pi and the other peripherals are powered by the player itself, the battery lasts long enough for you to watch a feature length movie, and other little things. I paid the DVD player less than ten bucks and I had all the components at hand. Taking everything into account, it was worth a try.
Before we move on, let me state the obvious:
I suppose you know what you are doing and have a bit of understaning of electronics and concepts such as voltage, current and such. I am not responsible for any damages you might cause to your devices, instruments, people or yourself. Always double check values, currents and polarities. Don't take anything for granted and google if you need extra information. I simply can't cover every single detail of what I did, and you might need different solutions for the problems you might experience.
THINGS YOU WILL NEED:
1. Portable DVD Player with a screen about 10'' and VIDEO IN capability
2. Raspberry Pi Model B Rev.2 512MB (or better)
3. Phillips Screwdrivers
4. Soldering Station
5. Wires, Shielded Wires
6. Wifi Dongle
7. Cheap unpowered USB Hub
8. Portable 2.5'' USB Hard Disk
9. IR Receiver (you can desolder the one on the DVD Player)
11. Desoldering Pump
12. Discarted USB cable
13. Utility knife
14. 8 GB SD Card (or better) and Card Reader
15. Anything else you might need on the spur of the moment :)
Step 1: Assessment
The very fist thing I did was to open up the unit and see what was working and what wasn't. The laser pick-up wasn't working anymore but the rest was. I tried to see if there was a way to power a Raspberry Pi and a Hard Disk through the unit's power supply. Luckily enough, this player comes with an outlet to power an external peripheral such as a TV tuner. The User Manual doesn't say how much current can be drawn by this outlet but the power regulator on the board can handle up to 2 amp, enough to power the USB Hub and therefore, the hard disk drive. Speaking of current, since I was going to remove the laser pick-up reader, I could get more current to power the Raspberry Pi itself. I just had to find the right spot on the board and make few tests and check the temperature with a probe to ensure I wasn't going to fry any components. Again, testing was crucial at this stage. Was the Raspberry Pi going to fit in the DVD slot? Was there enough room left for a Hard Disk Drive? Could a USB Hub be mounted with the ports facing the outside of the unit? I removed the laser pick-up and to my luck I realized that the answer was yes to all those questions. The project was worth a try.
Step 2: Disassembly
Removing the laser pick-up was easy enough since it was just screwed in. I saved the laser and motors for future projects and removed all the the remaining parts from the unit's floor that could be removed (plastic spacers, mounting plates, etc.) in order to maximize the space. Unfortunately, I also had to remove the mechanism that opens the DVD slot, but it wasn't a great loss after all.
After that I had to strip the Raspberry Pi from its ports except the HDMI so it could fit into the unit. They can be tricky to desolder and it takes a lot of effort and patience. I also trimmed the GPIO headers. Now the Raspberry Pi could be easily put inside the unit.
Be careful not to tear traces away while pulling components from the PCB or your Raspberry Pi will only be good for the trash can!!!
Next I disassembled a cheap 4 ports unpowered USB hub and removed one of the ports, where I was going to attach the hard disk drive. Again, patience is crucial since the USB port is soderered on both sides of the PCB. When picking up a USB Hub, try to get one with three ports in a row and one on the side so the wires that power the hard disk will be concealed in the unit.
Step 3: Soldering Wires
Analog audio and video signals require shielded wires that must be grounded in order to minimize the risks of electrical interference, especially the one generated by the wifi dongle that could affect severely the already crappy audio. For the same reason, I tried to keep the wires as short as possible. I soldered the wires directly on the back side of the Pi and under the ports of the unit since there was enough room for that.
Getting 5 volt to power the Pi was quite straightforward: the unit has a port specifically designed to power an external peripheral that I employed for this specific purpose. Getting the 5 volts to power the USB hub, the wifi dongle and the hard disk was somewhat trickier and since I had found no schematics on the internet, I had to figure it out for myself by trial and error. I found a good spot right on the output pin of a voltage regulator. I tested that it could support the current required by these peripherals and since there was little heating up I assumed it could withstand it.
I then cut an old USB cable and used it to hook up the USB hub to USB traces of the Pi, being careful of the right polarity. Switching the DATA + and DATA - of the USB wire won't do a thing -however your devices won't work; inverting the 5 volt polarity will surely damage either the Pi or the USB hub. So, you want to check with a multimeter where the ground wire goes before soldering it.
I wanted to use an IR remote control with OSMC, therefore I desoldered the IR receiver from the unit and connected it to the Raspberry Pi and then glued the phototransistor back in place.
The infrared phototransistor has 3 pins: Vin, Ground, and Signal. Vin must be connected to pin#1 on the Pi (3.3 vcc out.) Ground goes to pin#6 (ground.) Signal goes to pin#12 (GPIO 18.)
With everything connected, I tested the unit for some hours to ensure that it was working properly. The electronic components on the power supply were warm but never hot. The device seems to tolerate flawlewssly the extra current drawn by the Pi and the hard disk drive. Testing is crucial and the longer the test, the better.
Step 4: Assembly
I had to cut a small window with the utility knife to accomodate the USB Hub. Luckily there was enough room for that right next to the hard disk. I hot glued the PBC board in place so the three remaining USB ports could stick out from the unit.
I then made two holes on the back of the unit so that I could screw the hard disk in place. I did the same thing for installing the Raspberry Pi. I tried to minimize the use of hot glue because these parts can get warm and might loose the glue a bit over long period of use. However, I used hot glue to attach the IR receiver in front of the small remote sensor window of the unit.
At the last minute I decided to relocate the wifi dongle out of the unit since it can generate some extra heat that I didn't want to build up inside the device. It can already get quite warm and I had to make holes on the back of the unit to let the air flow.
Also, on a second though, I flipped the Raspberry Pi over so I could easily access the SD Card slot. I was concerned about having the Pi operating that way, but I found no issues online and I happily saw three movies in a row without any sudden shut down.
Step 5: Software Installation & Configuration (OSMC, WiFi, SSH, IR Remote and Samba)
Of course you can use any software designed for the Raspberry Pi with this PVP. I decided to use OSMC (the new version of Raspbmc) for my tests because it configures everything out of the box by itslef. You can find OSMC here. Be sure to download the right version built for your Raspberry Pi model. Once you download it on your computer, you will need Win 32 Disk Imager available here to write the image on the SD Card. If you are using Mac OS X or Linux, please refer to the tutorial available here or install NOOBS.
SETTING UP THE NETWORK
Plug in a keyboard and a mouse in the remaining USB ports. Everything should work right away. If not, you accidentally inverted the DATA + / DATA - wires somewhere. Turn off the system, check your connections and try again. Please note that if your power supply can't output enough current, you might experience strange phenomena, like the hard disk suddenly spinning down or the WiFi not working at all. This also happens if the battery runs out of juice, therefore it is not a defect per se.
We need Secure Shell on the Pi in order to be able to log in remotely. Luckily SSH service this is already running on OSMC by default. We just need to configure the WiFi adapter first and get a valid IP address from the router. We do this by clicking on Programs entry and selecting MyOSMC from the submenu. We then navigate to Network and enable the WiFi adapter. It should be already detected by the system. The hard disk should already be mounted by the system and you can see it by navigating to the File Manager submenu. If it's not there, there is most likely something wrong with your hardware, not with the software.
Write down the IP address given by the router since we will use it in the next step.
SETTING UP SAMBA (Windows Network Share)
If everything works fine, we can go on configuring Samba, since we want to put some movies on the PVP internal hard drive. To do so we need to to two things: enable the service on the PVP and log in remotely through SSH to configure it.
On the PVP, navigate to MyOSMC and this time select App Store submenu. Then scroll down to Samba (SMB) server, click install, then click apply to confirm the new settings. OSMC should start to download the server from the internet. The installation should take some time on a single core Pi since it might trigger an update process. When it is done, check in the Service submenu that the Samba Server is running. You can also check on the Network section of your computer that OSMC is present and the folders browsable. You might need to type in a password first. The username is osmc and the password is also osmc.
Now we need to add our beloved hard disk drive to the browsable folder list.
On your computer, if you are using Windows, you should download PuTTY from here and follow the instructions provided to open a SSH connection. If you are using Linux or Mac, just type ssh osmc@PVPIPADDRESS in a console followed by the Enter key. You will be prompted to accept the connection and to input a password. The password for logging in is simply osmc.
On the console type:
sudo nano /etc/samba/smb-shares.conf
Paste these lines of text, but make sure to change the PATH section to point to your hard disk, which is usually mounted under the /media directory:
browsable = yes
read only = no
valid users = osmc
path = /media/YOUR_HARD_DISK_LABEL
comment = OSMC Internal Disk Drive
Hit Crtl + X to save and then Enter to exit.
sudo service samba restart
Hit Enter to restart the service. Wait for a few seconds then check in the network window of your computer that the drive is visible and accessible. At this time, you should be able to create and delete files, directories, etc. Once again, you might be asked to input the password.
SETTING UP THE REMOTE CONTROL
I was going to use the same remote control that came with the Player, so I had to register it with LIRC. You can use any remote control you have at home, actually, as long as it is properly configured. Be sure to follow the instruction provided to correctly hook up the phototransistor. We don't need a pull-up resistor since we are going to enable the Raspberry Pi internal one so don't worry about that.
On the PVR, go to My OSMC, Pi Config and lastly select the Hardware Support tab. LIRC GPIO support should already be enabled. If it is not, enable it. Then make sure that - gip_in_pin is set to 18 and the - gpio_in_pull to down (note, if you experience any issue, you might need to set it to up or none depending on your IR receiver.)
Back on your PC login to the Pi and input the following commands:
sudo kill $(pidof lircd)
sudo irrecord -d /dev/lirc0 ~/lircd.conf
Follow the instructions provided to register your remote control. If it does not work, kill the program with ctrl + z and change the -gpio_in_pull settings. You might need to reboot the Pi in order to start irrecord again. Repeat the process as needed. When the program asks you for key names, you can choose between these (there are many more, though.) I kept my remote control very simple:
On your PVP, go to My OSMC, then Remote Control submenu and make sure that you select the lircd.conf file from your /home directory. Reboot the Pi and the remote control should be working properly.
Step 6: Conclusion
Although the PVP is fully working as I expected, there is surely room for improvements. I would like, for instance, being able to use the hardware buttons on the device to control OSMC. Unfortunately, I have found very little documentation online how to do so. The problem is not to write a script in Python to interface the buttons to the Pi, that's quite easy. The problem lies in making OSMC executing the script. If you have any suggestions, please share it with me.
I hope you have found inspiration from this instructable.
Keep reusing old electronics :)