DEC2000-T Install Guide

From MythTV Official Wiki
Jump to: navigation, search

DEC2000-T Install Guide

Don't plug in the USB yet!

Before you Start

As the DEC is a set-top-box (STB), you can test it out by attaching it to a TV, autotuning it, and checking signal levels onscreen. This eliminates poor signal as a potential cause of problems later on and is well worth the effort.

Write down your FEC settings

When you've got the box auto-tuned, while you are checking signal levels, write down the multiplex settings ; if you are checking signal levels, you should have these up on screen. You're particularly interested in the Forward Error Correction level (FEC). This isn't labelled ; it's the fractional value after the QAM/

Kernel (2.6+)

You'll need to enable "Technotrend/Hauppauge USB DEC Devices" as a MODULE, not inbuilt. The module needs to load firmware on startup, and if it can't access the filesystem because it isn't mounted yet, you have an error or even a kernel panic on your hands.

Device Setup

You'll find a script in your Kernel sources (you might have to chmod +x it)

/usr/src/linux/Documentation/dvb/get_dvb_firmware dec2000t

This fetches and unpacks the PC mode firmware (2.17) from the windows driver package. Or you can get the latest (2.18c) from the German pages at and unpack it manually with unzip. Both versions seem to be equally functional. If you unpack manually, both STB_PC_T.ban and STB_PC_T2.bin seem to work, but the script uses the former.

Copy the file to the hotplug firmware directory as directed. Newer versions of hotplug use /lib/firmware and don't check older folders.

cp STB_PC_T.bin /lib/firmware/dvb-ttusb-dec-2000t.fw

You'll also want hotplug and udev working.

udev scripts

in /etc/udev/rules.d/<any file>

# DVB Support
KERNEL="dvb*", PROGRAM="/etc/udev/scripts/ %k", NAME="%c"

in /etc/udev/scripts/

/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,'

Plug it in!

You'll want to pop open another tty and run

tail -f /var/log/kernel/current

This lets you watch the driver messages.

  • Your STB won't be recognised in standby mode (red LED)
      • So power it on (hope you haven't lost the remote!)
  • If your STB is in "normal" STB mode, it will load the PC mode firmware and reboot.
  • It will then connect and the frontend will be available.

Here's my dmesg log from a fresh boot from STB mode

ohci_hcd 0000:00:02.1: wakeup
usb 3-3: new full speed USB device using ohci_hcd and address 2
ttusb_dec: Firmware 1.11de
ttusb_dec: found DSP code "DEC2540-t".
usbcore: registered new driver ttusb-dec
usb 3-3: USB disconnect, address 2
ohci_hcd 0000:00:02.1: wakeup
usb 3-3: new full speed USB device using ohci_hcd and address 3
DVB: registering new adapter (DEC2000-t).
DVB: registering frontend 1 ([[Techno Trend]]/Hauppauge DEC2000-t Frontend)...

The last line is the crucial step. You should now have a new adapter device under /dev/dvb


You'll want the dvb-utils distribution from ; more on another page later.

After getting your channels.conf sorted out, you can test the box with

tzap -aN -r "BBC ONE"  # where N is your adapter number

Leave this running in a tty (you should see the box LED go orange, and get a rolling log of table lines ending in "FE_HAS_LOCK"). Now go to another tty and

cat /dev/dvb/adapterN/dvr0 > myvideo.mpg

The file should fill up with data fairly fast. This file should play just fine in mplayer ; it's the raw MPEG2 stream from the box.

MythTV (not broken, just obscure)

At first I thought this was broken...

As it turns out, it does work. When setting up the card in MythTV, the card setup (if the frontend is registered) is almost as easy as any other DVB card.

Go to the "Capture Cards" section in mythtv-setup, pick "DVB" and your card number. You should see your card described as "Hauppauge DEC2000-t Frontend". Now, exit setup to save your settings, and go back in. Enter the "Advanced" menu and enable "Hardware Decoder".

This mislead me at first, because although the box *does* have a hardware decoder, there's no way a decoded video stream is crossing a USB 1.1 connection, so even when I had problems, I ignored it. After posting a bug for it, I was pointed to another bug where this option is described as enabling a fix for the DEC2000-t. I think of this as more of a "Hardware Demux" option ; the box demuxes the Program Stream (PS) out of the Transport Stream (TS) - there's no way a full TS is crossing USB 1.1 either! It also wraps it up in a custom format called PES.

Setting this option enabled my DEC2000-t ; I no longer just got timeouts when using it.

Alas, I'm still getting very jumpy video when recording from it, which is why I tried the following.... more on whether it works or not later.

Set your FEC levels manually

  • If you've not performed a scan to produce a channels.conf, do so. (you do have dvb-utils, don't you?)
  • You'll also want the FEC values you wrote down from the information screen on the STB mode of the DEC.

Now, since 0.17, a lot of the DVB parameters are hidden away from the user. I've been having problems ; I've adopted this as a part of the solution I'm testing. I'll talk about the problems on the main DEC2000-t page.

I used phpmyadmin to change my channel settings ; you can do it from the basic mysql command line console if you like.

The table the most recent build stores this information in is [dtv_multiplex]. Most of the values in this table are correct (but you might want to check them from the channels.conf file). The one we are really interested in is fec (and lp_code_rate and hp_code_rate). In the channels.conf file, hp_code_rate is the first FEC_ value (write it as 1/2, not 1_2), lp_code_rate is the second. For fec, use the value from your DEC2000-t information menu.

Your mileage may vary ; the Nova-T card I have lived quite happily with the default scanned values of "auto" ; but I find on the mailing list that this value is used regardless. I shall see whether there are improvements or not.


Just zap to a channel via tzap -r [CHANNEL], exit the program with STRG-C, and then use: mplayer dvb://[CHANNEL] works just fine.