A buddy of mine bought 2 HDHomeRun HD3-4DC and wanted to use this on a Ubuntu 12.04 Server
the problem with Ubuntu 12.04 is that the DVB kernel headers was removed from the normal header packages.
first make sure that your network has a working DHCP server, and that the HDhomeRun is connected to the network and that the antenna cable is connected.
first we need to add the ppa repository from
https://launchpad.net/~tfylliv/+archive/dvbhdhomerun
Adding the PPA repository:
$ add-apt-repository ppa:tfylliv/dvbhdhomerun
$ apt-get update
Kernel driver:
Next we need the kernel headers and the missing headers:
i my case the server was using the following kernel, linux-image-3.8.0-39-generic
the missing DVB headers i grapped from Kernel.org
# apt-get install linux-headers-3.8.0-39-generic
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.8.tar.gz
Unpack the headers:
$ tar zxfv linux-3.8.tar.gz
Next copy the missing headers to the Ubuntu headers:
$ cp -R /linux-3.8/drivers/media/dvb-core/* /usr/src/linux-headers-3.8.0-39/drivers/media/dvb-core/
$ cp -R /linux-3.8/drivers/media/dvb-frontends/* /usr/src/linux-headers-3.8.0-39/drivers/media/dvb-frontends/
Installing the hdhomerun dkms and utils:
$ apt-get install dvbhdhomerun-dkms dvbhdhomerun-utils
This should build the dvb_hdhomerun kernel driver and the userhdhomerun userspace and the necessary script to run the userspace service,
try initialize the kernel driver:
$ modprobe dvb_hdhomerun
this should give something like this when looking at dmesg
[ 17.893873] HDHomeRun: Begin init, version 0.0.16
[ 17.897220] HDHomeRun: Waiting for userspace to connect
[ 17.897228] HDHomeRun: End init
Setup Tuners:
We need to locate the names of the tuner in my case we actually have 2 of them :).
$ hdhomerun_config discover
hdhomerun device 141001A7 found at 192.168.1.136
hdhomerun device 14101464 found at 192.168.1.130
make a note of the name of the tuners i my case they are named: 141001A7 and 14101464.
next edit /etc/dvbhdhomerun
$ nano /etc/dvbhdhomerun
my config file looks like this:
# Remember to exchange the XXXXYYYY-Z with the serial number of your HDHomeRun
# tuner:
# Auto detect tuner type is not possible in all cases, so you can force it
# DVB-C
# DVB-T
# ATSC
[141001A7-0]
tuner_type=DVB-C
[141001A7-1]
tuner_type=DVB-C
[141001A7-2]
tuner_type=DVB-C
[141001A7-3]
tuner_type=DVB-C
[14101464-0]
tuner_type=DVB-C
[14101464-1]
tuner_type=DVB-C
[14101464-2]
tuner_type=DVB-C
[14101464-3]
tuner_type=DVB-C
# You can use a full name including tuner ID. Meaning the tuner will appear as
# "HDHomeRun DVB-C 1234EA3D-0" instead of just "HDHomeRun DVB-C" in for example
# TVHeadend.
[141001A7-0]
use_full_name=true
[141001A7-1]
use_full_name=true
[141001A7-2]
use_full_name=true
[141001A7-3]
use_full_name=true
[14101464-0]
use_full_name=true
[14101464-1]
use_full_name=true
[14101464-2]
use_full_name=true
[14101464-3]
use_full_name=true
# You can disable certain tuners. As default all detected hdhomeruns are used
#[XXXXYYYY-2]
#disable=true
# Enable additional logging from libhdhomerun itself
[libhdhomerun]
enable=true
enable=true
logfile=/var/log/dvbhdhomerun_libhdhomerun.log
Now restart the dvbhdhomerun-utils
$ service dvbhdhomerun-utils restart
dmesg should show something like this:
[ 19.050534] hdhomerun: userhdhomerun connected
[ 19.050574] hdhomerun: userhdhomerun connected
[ 19.050588] hdhomerun: creating dvb device for 141001A7-0
[ 19.050688] DVB: registering new adapter (HDHomeRun)
[ 19.110568] HDHomeRun HDHomeRun.0: DVB: registering adapter 0 frontend 0 (HDHomeRun DVB-C 141001A7-0)...
[ 19.110685] HDHomeRun0: DVB Frontend registered
[ 19.110688] HDHomeRun0: Registered DVB adapter0
[ 19.110728] hdhomerun: device /dev/hdhomerun_data0 created
[ 19.110971] hdhomerun: userhdhomerun connected
[ 19.110984] hdhomerun: creating dvb device for 141001A7-1
[ 19.111065] DVB: registering new adapter (HDHomeRun)
[ 19.112681] HDHomeRun HDHomeRun.1: DVB: registering adapter 1 frontend 0 (HDHomeRun DVB-C 141001A7-1)...
[ 19.112722] HDHomeRun1: DVB Frontend registered
[ 19.112724] HDHomeRun1: Registered DVB adapter1
[ 19.112762] hdhomerun: device /dev/hdhomerun_data1 created
[ 19.112959] hdhomerun: userhdhomerun connected
[ 19.112969] hdhomerun: creating dvb device for 141001A7-2
[ 19.113058] DVB: registering new adapter (HDHomeRun)
[ 19.115142] HDHomeRun HDHomeRun.2: DVB: registering adapter 2 frontend 0 (HDHomeRun DVB-C 141001A7-2)...
[ 19.115221] HDHomeRun2: DVB Frontend registered
[ 19.115223] HDHomeRun2: Registered DVB adapter2
[ 19.115264] hdhomerun: device /dev/hdhomerun_data2 created
[ 19.115456] hdhomerun: userhdhomerun connected
[ 19.115467] hdhomerun: creating dvb device for 141001A7-3
[ 19.115558] DVB: registering new adapter (HDHomeRun)
[ 19.115904] HDHomeRun HDHomeRun.3: DVB: registering adapter 3 frontend 0 (HDHomeRun DVB-C 141001A7-3)...
[ 19.115951] HDHomeRun3: DVB Frontend registered
[ 19.115953] HDHomeRun3: Registered DVB adapter3
[ 19.115985] hdhomerun: device /dev/hdhomerun_data3 created
The hdhomerun is now connected.
Scanning for DVB-C channels:
As i live in Denmark, the most common DVB-C providers are Yousee and Stofa
for Yousee use the following setup:
$ hdhomerun_config XXXXXXXX set /sys/dvbc_modulation a8qam64-6875
for Stofa use the following setup:
$ hdhomerun_config XXXXXXXX set /sys/dvbc_modulation a8qam64-6900
Next we need to setup the tuners:
$ hdhomerun_config XXXXXXXX set /tuner0/channelmap eu-cable
$ hdhomerun_config XXXXXXXX set /tuner1/channelmap eu-cable
$ hdhomerun_config XXXXXXXX set /tuner2/channelmap eu-cable
$ hdhomerun_config XXXXXXXX set /tuner3/channelmap eu-cable
finally we can scan the muxes for channels:
$ hdhomerun_config XXXXXXXX scan 0 hdhomerun.log
the scan takes some time so be patience
if you are going to install TVheadend you should do the following to the log file:
For Yousee:
awk '{if ($1 ~ /SCANNING/) print "\n" $2; else print $0}' hdhomerun.log | awk 'BEGIN { RS = "" ; FS = "\n" } { if (length($4) > 0) print "C " $1 " 6875000 NONE QAM64" }' > dk-YouSee
For Stofa:
awk '{if ($1 ~ /SCANNING/) print "\n" $2; else print $0}' hdhomerun.log | awk 'BEGIN { RS = "" ; FS = "\n" } { if (length($4) > 0) print "C " $1 " 6875000 NONE QAM64" }' > dk-Stofa
the generated file is readable by TVheadend and should make it more easy to find the channels.
Notes:
If you wanne update the firmware for the hdhomerun you can do this with the hdhomerun_config tool by doing:
(check Silicondust’s homepage for newer releases)
$ wget http://download.silicondust.com/hdhomerun/hdhomerun3_dvbc_firmware_20140121.bin
$ hdhomerun_config 14101464 upgrade hdhomerun3_dvbc_firmware_20140121.bin
References:
http://tommy.winther.nu/wordpress/2013/06/21/opsaetning-af-hdhomerun-dual/
https://launchpad.net/~tfylliv/+archive/dvbhdhomerun
http://sourceforge.net/apps/trac/dvbhdhomerun/wiki/FAQ#RebuildkernelmodulesinUbuntu
http://sourceforge.net/apps/trac/dvbhdhomerun/wiki/UbuntuPackages