In order to enjoy more diverse media playback on your Raspberry Pi micro computer, you need to manually enable the MPEG-2 and VC-1 codecs. Read on to see how to do so and enjoy DVD playback and more on your Pi.
Why Do I Need To Do This?
The Raspberry Pi was designed to be an educational computer. As part of that educational mission, the Raspberry Pi Foundation has gone out of their way to minimize the manufacturing and licensing costs in order to keep the final cost of the device down. Part of their cost cutting measures included not purchasing a pricey blanket license to use the MPEG-2 and VC-1 video codecs.
This doesn’t mean the Raspberry Pi is not capable of decoding media encoded in MPEG-2 or VC-1, but that by default the codecs cannot run on the Raspberry Pi hardware for want of a proper license. Fortunately the Raspberry Pi Foundation was able to make arrangements to sell individual licenses for each codec very inexpensively.
If you’re wondering whether or not you’re the target audience for this license sale program and this tutorial, check to see if any of the following statements apply to you:
I’m using my Raspberry Pi as a media center and/or general purpose device and I wish to:
- Watch DVDs (either straight from an attached DVD drive or from ripped .ISO files). In this case you need an MPEG-2 license to decode the video on the DVDs.
- Watch my collection of AVI files. While AVI is technically a container format, not a codec, the vast majority of AVI files are encoded using MPEG-2 and as such you’ll need an MPEG-2 license.
- Watch content I’ve ripped or recorded using Windows Media Center (such as movies or television shows in the WMV container format). For this you’ll need the VC-1 license.
If you’re unsure if you have the files types in question there are two simple ways to check. First, you can try to load the file in your Raspberry Pi media center. If the file is, for example, an MPEG-2 encoded video file there is a very high chance that the audio track will play just fine but the video track will fail to render, leaving the screen black.
The more precise way to check is to examine the file itself using a tool like MediaInfo—you can follow along with our MediaInfo tutorial here. MediaInfo will tell you the specific video codec for any video file you examine.
What Do I Need?
For this tutorial we’re assuming you’ve already got your hands on a Raspberry Pi unit and installed your operating system of choice on it. Further, we’ll be using a copy of Raspbmc for this tutorial under the assumption that many of our readers followed our Raspbmc guide and would now like to add in DVD/WMV support to their build.
Even if you are using another Raspberry Pi distribution, the command line instructions and the manual configuration are still applicable to you and your Pi unit.
We’ll be covering two methods: adding the license code manually and via Raspbmc—a popular Raspberry Pi-enabled distribution of XBMC.
To follow along you’ll need the following things:
- An MPEG-2 (~$4)and/or VC-1 license(~$2) purchased from the Raspberry Pi store.
- Access to the command prompt on the Raspberry Pi (either at the physical device or via SSH).
First, we will walk you through getting the serial number off the board and purchasing the licenses you need. After that, we’ll show you how to manually add the licenses to your Pi or use the built-in tool within Raspbmc.
Purchasing the Licenses
In order to purchase the licenses you need, you will have to retrieve the unique serial number for your Raspberry Pi board. This number is not printed anywhere on the circuit board but is instead stored in the hardware; it must be retrieved using the command prompt.
Retrieving the Serial Number: First, visit the command prompt either at the actual terminal or remotely connected to the terminal via an SSH tool such as PuTTY. If you have a keyboard attached to your Raspbmc machine, simply select “Exit” out of the Raspbmc interface via the power button in the lower left hand side of the GUI. Press ESC to load the command prompt instead of booting back into the Raspbmc GUI. This will deposit you at the command prompt.
Alternatively, if you would like to access the command prompt remotely, fire up your SSH client (such as PuTTY) and enter the IP address of your Rasperry Pi unit.
Whether you have pulled up the command prompt directly at the machine or via SSH you will be prompted to login. The default login/password combination for Raspbmc is pi / raspberry.
Once at the command prompt enter the following command: cat /proc/cpuinfo
Your Pi will spit back 11 lines of text, but the only one of interest to us is the last line labeled Serial. Copy the unique 16 digital serial number (partially obfuscated in the screenshot here).
Because the license is granted to each specific Raspberry Pi board, repeat the above process for all Raspberry Pi boards you wish to purchase a license for.
Once you have the the serial number for each individual unit, it’s time to purchase the licenses from the Raspberry Pi foundation.
Purchasing the License: Visit the Raspberry Pi foundation’s purchase page for the MPEG-2 license and/or VC-1 license. Enter your Raspberry Pi serial number in the appropriate blank beneath the price. Add the license to your cart. Repeat this process for all the licenses on all the units you wish to add the codecs to.
Although the foundation indicates that it could take up to 72 hours for your license to arrive via email, we received ours in about 24 hours. When your email arrives it will include a code for each license formatted like such:
The 0000000000 portion of the license is your unique 10-digit alphanumeric license code.
Installing the Licenses
Now that we have the license codes, it’s time to add them to your Raspberry Pi and get to enjoying enhanced media playback.
Manually installing the licenses: The manual installation technique works for any installation on the Raspberry Pi, including Raspbmc.
To manually install the codecs, you need to power down your Raspberry Pi device, remove the SD card, and mount the SD card on a computer with access to a simple text editor.
Raspberry Pi SD cards include a FAT formatted mini partition that holds startup tools including an easily edited configuration file labeled config.txt. [Note: Some operating systems builds may not automatically create a config.txt file; if there is no config.txt simply create your own.]
Locate the file and make a copy, renaming it config.old—this version will serve as a backup in case anything goes wrong during the editing process. Open up the original config.txt in your text editor of choice (we’re using Notepad++).
Depending on what operating system you’re running on your Pi, the configuration file may look slightly different. Leave the existing entries alone. Cut and paste the formatted license entries you received in your email, like so:
Save the config.txt file and safely eject the SD card from your computer. Return the SD card to the Raspberry Pi and power up the device.
Adding the licenses via the built-in Raspbmc tool: If you’re running Raspbmc, you can skip the whole manually editing the config.txt step and take advantage of the built-in tool right inside Raspbmc.
To do so, head over to your Raspbmc device and navigate from the main interface to Programs –> Raspbmc Settings. Once you are inside Raspbmc Settings, navigate to the System Configuration Tab and scroll down to the the Advanced System Settings section:
There you can click on MPEG2 and VC1 and input your license number. Don’t type in the entire string provided for you by Raspberry Pi, leave off the leading decode_MPG2= and decode_WVC1= portion. Only input the 10-digit string after the equal sign into each codec’s respective slot.
Once you have added the appropriate codec licenses, head back to the main interface and reboot your device via the power selection menu in the lower left hand corner.
Testing the codecs: The most enjoyable way to test your new codecs is to fire up a media file you know wouldn’t play without it, sit back, and watch it play perfectly.
The more technical way to check, should you run into any hiccups and wish to confirm that your license is recognized by the device, is to head to the command prompt and enter the following commands:
vcgencmd codec_enabled MPG2
vcgencmd codec_enabled WVC1
The Pi should immediately return that the codec is enabled. Here’s the output for the MPG2 check on our test machine, for reference:
Everything looks good at the command prompt and the previously audio-only files now play both their audio and video channels. For a few bucks and a few minutes of our time, we’re ready to enjoy the wide variety of videos encoded in MPEG-2 and VC-1 codecs.
Have a pressing Raspberry Pi-related topic you’d love to see us address? Sound off in the comments or write in to firstname.lastname@example.org with your suggestions.