How to install Broadcom Crystal HD driver on Ubuntu?

The Broadcom Crystal HD cards (BCM70012 and BCM70015) bring 1080p HD video decoding capability to low powered media centers and netbooks. Software decoding HD video strains the CPU and many cases causes stutters and skips during video playback. In this post, I will explain how to install Broadcom Crystal HD driver on Ubuntu systems. You only need the Broadcom Crystal HD Card if you do not have a dedicated video card or a on-board video card capable of HD decoding. If you are like me, running a media/file server on an Atom 330 processor or using a netbook, you may want to install Broadcom Crystal HD card to add HD capability. This is an updated version of my previous post on how to install XBMC on Ubuntu Server with Broadcom Crystal HD card. Broadcom Crystal HD works on all three major platforms: Windows, Linux, and OSX.

BCM70012 and BCM70015

Although you may install Broadcom Crystal HD BCM70012 or BCM70015, the latter is newer and supports more formats. But it is also slight more expensive than its predecessor.

Install Broadcom Crystal Hd
Broadcom Crystal Hd Bcm70012 And Bcm70015

Note that the BCM70012 is full-height and BCM70015 is half-height MiniPCIe card (may come with an adapter).

Install Broadcom Crystal HD Driver on Linux

Installing Linux drivers is complex compared to installing Windows drivers. The procedure described below (based on this) is for Ubuntu but it may also work on other Linux distributions.

Step 1: Install Required Packages

Before you install Broadcom Crystal HD driver, you will have to install the packages necessary for compiling source codes and others:

sudo apt-get update
sudo apt-get install autoconf g++ subversion linux-source linux-headers-`uname -r` build-essential tofrodos git-core subversion dos2unix make gcc automake cmake checkinstall git-core dpkg-dev fakeroot pbuilder dh-make debhelper devscripts patchutils quilt git-buildpackage pristine-tar git yasm zlib1g-dev zlib-bin libzip-dev libx11-dev libx11-dev libxv-dev vstream-client-dev libgtk2.0-dev libpulse-dev libxxf86dga-dev x11proto-xf86dga-dev libgstreamermm-0.10-dev libgstreamer0.10-dev

Note that you may have many of the above packages already installed if this is not the first time you are compiling packages from source code.

Step 2: Download Crystal HD Driver

Clone the Crystal HD Drivers using the following command:

git clone git://git.linuxtv.org/jarod/crystalhd.git

This should download the required files to a folder called crystalhd within the active folder.

Step 3: Fix Code for Ubuntu 11.10 and Later

For Ubuntu 11.10 and later, the following edit needs to be made. Navigate to crystalhd/driver/linux and edit crystalhd_flea_ddr.c:

cd crystalhd/driver/linux
nano crystalhd_flea_ddr.c

Add the #include <linux/delay.h> as shown below (the first two lines will already be present):

#include "crystalhd_hw.h"
#include "crystalhd_flea_ddr.h"
#include <linux/delay.h>

Save and exit.

Compile and Install Broadcom Crystal HD Driver

Navigate to crystalhd/driver/linux folder:

cd crystalhd/driver/linux

Then, execute the following commands in order:

autoconf
./configure
make 
sudo make install

If you have a multicore processor then you can increase the speed of compilation by using make -j4 (where 4 is the number of cores) instead of make. You may get CONFIG_DEBUG_SECTION_MISMATCH=y warnings during the build process. These are "generally" harmless so ignore them.

Then install Broadcom Crystal HD libraries. Navigate to crystalhd/linux_lib/libcrystalhd and execute the following commands:

make
sudo make install

Again, you may replace make with make -j4 (replace 4 with the number of cores in your system).

After installation, load the driver using the following command:

sudo modprobe crystalhd

Finally, check if the installation was successful using the following command:

lsmod

You should see something like this in the output:

.....
.....
crystalhd     73644   0
.....
.....

Do not worry if no application is using it currently (you may see "used by 0").

Although you may not have to reboot I prefer rebooting. So reboot your server. Then check if CrystalHD is listed in the output of the following command.

Ubuntu Kernel Updates

In my case, I have disabled all automatic updates including kernel. But if you update your Ubuntu kernel then you will have to do the following:

cd crystalhd/driver/linux
sudo make install

Broadcom Crystal HD brings the advantages of high definition H.264 and VC-1 video compression to netbooks providing near flawless playback of streaming media and Blu-ray Disc®, file-based content and broadcast (and other TV sources). Go ahead, install Broadcom Crystal HD Card and enjoy HD videos on your netbook, Intel Atom powered HTPCs or Apple TV.

Be the 1 in 200,000. Help us sustain what we do.
25 / 150 by Dec 31, 2024
Join Us (starting from just $1.67/month)

Anand

Anand is a self-learned computer enthusiast, hopeless tinkerer (if it ain't broke, fix it), a part-time blogger, and a Scientist during the day. He has been blogging since 2010 on Linux, Ubuntu, Home/Media/File Servers, Smart Home Automation, and related HOW-TOs.