TerraTec Cinergy DT USB XS Diversity: Difference between revisions
mNo edit summary |
m (Reverted edits by Domtheo (talk) to last revision by PaulePanter) |
||
(20 intermediate revisions by 10 users not shown) | |||
Line 5: | Line 5: | ||
==Overview/Features== |
==Overview/Features== |
||
⚫ | |||
⚫ | The ''Diversity'' option is a hardware based feature that allows for the device’s two receivers to be configured in a combined use mode to achieve better reception on a single channel. The diversity feature of the [[DiBcom]] demodulators is currently not implemented in the Linux-DVB drivers, so only the dual tuner configuration is presently supported on such devices [http://www.linuxtv.org/pipermail/linux-dvb/2007-July/019419.html]. |
||
⚫ | |||
⚫ | The |
||
It seems that either this tuner stick does not have a very sensitive tuner, or the small antennas that come with it are simply insufficient for real-life use, unless one lives next door to a broadcast tower and has a direct line-of-sight to it. It is thus likely that an external antenna with a builtin amplifier is needed when this tuner is used. |
It seems that either this tuner stick does not have a very sensitive tuner, or the small antennas that come with it are simply insufficient for real-life use, unless one lives next door to a broadcast tower and has a direct line-of-sight to it. It is thus likely that an external antenna with a builtin amplifier is needed when this tuner is used. |
||
===Components Used=== |
|||
===Identification=== |
===Identification=== |
||
Two identical looking devices are known. They can be distinguished by their USB ID: |
|||
* The first device has USB ID 0ccd:005a. It is supported by the official sources (see below). |
|||
* The second device has USB ID 0ccd:0081. It is supported by the official sources since 14.01.2009 – make sure your sources are up to date. |
|||
Note: 0ccd is the Vendor USB ID (VID) of TerraTec, while 005a and 0081 are the Product USB ID (PID) of the sticks. |
|||
This device's USB ID is 005a:0ccd. |
|||
(The device shown here is: Bus 001 Device 002: ID 0ccd:005a TerraTec Electronic GmbH, don't know if the ID has to be swapped to be read correctly, though) |
|||
===Other Images=== |
===Other Images=== |
||
<gallery perrow=5> |
<gallery perrow=5> |
||
Image:TerraTec_Cinergy_DT_USB_XS_Diversity-front.jpg|front |
Image:TerraTec_Cinergy_DT_USB_XS_Diversity-front.jpg|front |
||
Line 26: | Line 28: | ||
</gallery> |
</gallery> |
||
== Making it work == |
|||
{{ |
{{Making-it-work:dvb-usb-dib0700}} |
||
=== Drivers === |
|||
⚫ | |||
Use drivers from Mercurial following the [[How to install DVB device drivers]] instructions. |
|||
==== Specific Remote control support ==== |
|||
The remote is supported at least in the Mercurial repository (see '''Drivers''' section above). |
|||
⚫ | |||
[[Image:TerraTec_Cinergy_DT_USB_XS_Diversity-remote.jpg|thumb|50px|TerraTec-DT-USB-XS-Diversity-Remote]] |
|||
{{RemoteControlSupport:TerraTecGrayOrange}} |
|||
The remote does not seem to be supported right now, even if the IR-receiver is registered and all devices are set up correctly. There seems to be a problem with the toggle bit [http://www.linuxtv.org/pipermail/linux-dvb/2008-February/023507.html]. |
|||
The dcb-usb-dib0700 module needs to be loaded with the option ''dvb_usb_dib0700_ir_proto=0'' to set the IR protocol to NEC. |
|||
To force loading the modul with this option create/edit the file /etc/modprobe.d/dvb and add the line |
|||
options dvb-usb-dib0700 dvb_usb_dib0700_ir_proto=0 |
|||
Then run the command ''update-modules'' (as root) to rebuild the file /etc/modprobe.conf. This file is used by modprobe when loading modules. |
|||
⚫ | |||
⚫ | |||
From 2.6.23-tuxonice-r6 (gentoo) with drivers compiled from repository 11th Feb 08: |
From 2.6.23-tuxonice-r6 (gentoo) with drivers compiled from repository 11th Feb 08: |
||
Line 67: | Line 58: | ||
usbcore: registered new interface driver dvb_usb_dib0700 |
usbcore: registered new interface driver dvb_usb_dib0700 |
||
===User Experiences=== |
|||
See the [[Talk:TerraTec Cinergy DT USB XS Diversity|talk page]]. |
|||
== |
== External Links == |
||
'''Date: 22.8. 2007''' |
|||
Distro: Ubuntu Feisty, AMD64 |
|||
Kernel: 2.6.20-16-generic |
|||
The drivers shipping with Feisty are not recent enough, so installed the current v4l-dvb distribution ([http://linuxtv.org/hg/v4l-dvb/]. It can be downloaded through [http://linuxtv.org/hg/v4l-dvb Mercurial's web interface] (see 'bz2' & 'gz'). Otherwise, you'd have to install & use Mercurial to fetch the source. |
|||
Downloaded the new dvb-usb-dib0700-03-pre1.fw firmware from [http://www.wi-bw.tfh-wildau.de/~pboettch/home/linux-dvb-firmware/dvb-usb-dib0700-03-pre1.fw] & copied it to /lib/firmware (if that does not work, flash the stick with the latest firmware from Terratec on a Windows PC). |
|||
After these steps, the stick works - I was able to find channels & get TV out of them. |
|||
'''Update: 19.11. 2007''' |
|||
Tuners using the dvb-usb-dib0700 module may be unable to tune to a particular channel multiplex while receiving others just fine. This appears to be a fairly common problem that is caused by some sort of amplifier setting not getting used when it should; look for lines with "filter timeout" when running 'scan', if you are missing all channels of a particular multiplex. |
|||
In short, if experiencing this problem, try setting the following (in /etc/modprobe.d/options or /etc/modules.conf): |
|||
<nowiki> |
|||
dvb_usb_dib0700.force_lna_activation=1 |
|||
</nowiki> |
|||
After the module has been reloaded, you might be able to find and view the missing channels :-) You can check /sys/module/dvb_usb_dib0700/parameters/force_lna_activation on your system to make sure the parameter has been set. |
|||
Finally, this stick works just fine on 32-bit Ubuntu Gutsy as well. |
|||
---- |
|||
(note: the following is likely dated by now) |
|||
openSUSE 10.2 (i586) |
|||
Kernel 2.6.22.1-ccj51-default |
|||
Compiling the driver vv4.tgz from |
|||
http://www.chez.com/treza/mt2266.htm |
|||
(on my system a netdevice.h was needed in /lib/modules/2.6.22.1-ccj51-default/build/include/linux) |
|||
Copying the firmware dvb-usb-dib0700-01.fw to /lib/firmware |
|||
Reboot, connect the stick, kaffeine, enjoy. |
|||
'''Update: 3.2.2008''' |
|||
Tuner works partially fine with Kernel 2.6.24-gentoo + xorg-server-1.4 + kaffeine 0.8.6 with xine-lib-1.1.10 |
|||
In 2.6.24 (vanilla) kernel you need to load "mt2266" module manually. The "dvb_usb_dib0700" module is usually autoloaded when you put the stick in place. "mt2266" must be loaded first. |
|||
Unfortunatly the Diversity Mode (two tuners running as one for better receive) doesn't work. Furthermore the Windows receiver has a mucher better receive quality :-(. I.e. in Windows Im getting all 23(24) channels, in Linux only 19(20). |
|||
== External links == |
|||
* [http://tven.terratec.net/modules.php?op=modload&name=News&file=article&sid=251 TerraTec product page] |
* [http://tven.terratec.net/modules.php?op=modload&name=News&file=article&sid=251 TerraTec product page] |
||
* [http://linux.terratec.de/ TerraTec Linux “support” page] |
|||
[[Category:DVB-T USB Devices]] |
Latest revision as of 06:26, 10 September 2013
A DVB-T USB device from TerraTec.
It is supported under Linux.
Overview/Features
Features two tuners, and have two antennas. You’ll have adapter0 and adapter1 in /dev/dvb, which you can use separately.
The Diversity option is a hardware based feature that allows for the device’s two receivers to be configured in a combined use mode to achieve better reception on a single channel. The diversity feature of the DiBcom demodulators is currently not implemented in the Linux-DVB drivers, so only the dual tuner configuration is presently supported on such devices [1].
It seems that either this tuner stick does not have a very sensitive tuner, or the small antennas that come with it are simply insufficient for real-life use, unless one lives next door to a broadcast tower and has a direct line-of-sight to it. It is thus likely that an external antenna with a builtin amplifier is needed when this tuner is used.
Components Used
Identification
Two identical looking devices are known. They can be distinguished by their USB ID:
- The first device has USB ID 0ccd:005a. It is supported by the official sources (see below).
- The second device has USB ID 0ccd:0081. It is supported by the official sources since 14.01.2009 – make sure your sources are up to date.
Note: 0ccd is the Vendor USB ID (VID) of TerraTec, while 005a and 0081 are the Product USB ID (PID) of the sticks.
Other Images
Making it Work (generic for all dib0700)
Firmware
August 21, 2008 - New firmware file fixing the last cause for i2c errors and disconnects and providing a new, more modular i2c request formatting.
You will need the dvb-usb-dib0700-1.20.fw firmware file in /lib/firmware or the relevant place for your distribution.
You may need to change the name of the file to dvb-usb-dib0700-1.10.fw or create a link until the driver code reflects that change.
For archival purposes: dvb-usb-dib0700-1.10.fw firmware file
August 29,2008 - Issues with Firmware 1.20. Some issues have been found with the latest version of the firmware. Users may wish to continue to use 1.10 unless they have patched their v4l-dvb code with dib0700_new_i2c_api.patch.
November 15,2008 - Issues with Firmware 1.20.
- The above mentioned dib0700_new_12c_api.patch is not available discretely but is now rolled into the mercurial drivers
dvb-usb-dib0700-1.20.fw firmware fileis now stable for reception, but remote control functionality is broken; any key press is repeated until the next key is pressed. The only way to get remote control functionality presently is to roll back to 1.10 firmware and suffer the occasional disconnect.- The mercurial drivers have been changed so they now load 1.20 firmware. To revert to 1.10 firmware you need to rename your firmware file to dvb-usb-dib0700-1.20.fw or provide a link of that name.
- To avoid spurious remote control signals with 1.20 firmware, you need to edit /etc/modprobe.d/options or from Ubuntu onwards /etc/modprobe.d/options.confand add:
options dvb_usb disable-rc-polling=1
November 28,2008 - i2c errors. Changes were made to the remote control drivers on November 16,2008 to correct the repeat key problem. The card is generally stable for dual tuner reception and remote control function with Firmware 1.20.
November 10,2009 - mt2060 I2C write failed. Possible regression of a driver bug raised against Ubuntu running 2.6.27-14 and 2.6.31-2.17 causing mt2060 I2C errors in MythTV useage with firmware 1.20. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/397696 Recommend check the kernel extensions listed here for Low Noise Activation and rc_polling are loaded with correct config file name for your distribution, EIT listings information is turned off until a suitable delay (500ms-1000ms)is added to a single card (not both) and the card has correctly been added to the database as two tuners (no additional NULL entries) in the mythtv recordcard table.
Drivers
It requires the dib0700 driver. Just use Mercurial by following the How to Obtain, Build and Install V4L-DVB Device Drivers instructions.
Forcing the activation of LNAs (Low Noise Amplifier)
You may have to force LNA to get this card working:
In /etc/modprobe.d/options add:
options dvb_usb_dib0700 force_lna_activation=1
Disabling the remote control sensor
You may want to disable the remote control sensor if you are using another one and want to avoid error messages in the logs:
In /etc/modprobe.d/options add:
options dvb_usb disable_rc_polling=1
All relevant kernel modules options
In /etc/modprobe.d/options add:
options [module name] [option name]=[setting]
Get the parameters list using
modinfo [name of kernel module]
The debug values are bit fields, with each bit representing a different category. Add values to turn on multiple debugging categories.
dib3000mc
- debug
- Turn on debugging
- Values: integer
- Default: 0 (off)
- buggy_sfn_workaround
- Enable work-around for buggy SFNs
- Values: integer
- Default: 0 (disabled)
mt2060
- debug
- Turn on debugging
- Values: integer
- Default: 0 (off)
dvb_usb_dib0700
- force_lna_activation
- Force the activation of LNAs (Low Noise Amplifier), if applicable for the device
- Values: integer
- Default: 0 (automatic/off)
- dvb_usb_dib0700_ir_proto
- Set IR protocol
- Values: integer 0=NEC, 1=RC5, 2=RC6
- Default: 1
- debug
- Set debugging level
- Values: integer (bitmap) 1=info, 2=fw, 4=fwdata, 8=data
- Default: 0 (none)
dvb_usb
- debug
- Set debugging level
- Values: integer (bitmap) 1=info, 2=xfer, 4=pll, 8=ts, 16=err, 32=rc, 64=fw, 128=mem, 256=uxfer
- Default: 0 (none)
- disable_rc_polling
- Disable remote control polling
- Values: integer
- Default: 0 (enabled)
- force_pid_filter_usage
- Force all DVB USB devices to use a PID filter, if any
- Values: integer
- Default: 0 (disabled)
dvb_core
- dvb_net_debug
- Enable debug messages
- Values: integer
- Default: 0 (disabled)
- frontend_debug
- Turn on frontend core debugging
- Values: integer
- Default: 0 (off)
- dvb_shutdown_timeout
- Wait n seconds after close() before suspending hardware
- Values: integer
- Default: 0
- dvb_force_auto_inversion
- Set whether INVERSION_AUTO is forced on
- Values: integer
- Default: 0 (off)
- dvb_override_tune_delay
- Wait n milliseconds for lock after a tuning attempt
- Values: integer
- Default: 0
- dvb_powerdown_on_sleep
- Turn LNB power off on sleep
- Values: integer
- Default: 1 (enabled)
- cam_debug
- Enable verbose debug messages
- Values: integer
- Default: 0 (off)
- debug
- Turn on debugging
- Values: integer
- Default: 0
- dvbdev_debug
- Turn on device debugging
- Values: integer
- Default: 0 (off)
dibx000_common
- debug
- Turn on debugging
- Values: integer
- Default: 0 (off)
Remote control support
Using evdev
As long as the evdev module is loaded, a remote that is recogniced as hid device will be treated as a usb keyboard and this means that you can avoid using lirc.
However, many of the keys on your remote may generate keycodes which are not mapped to anything, by default.
In X you can use xev to find the keycodes and xmodmap to map them to useful symbols. Unfortunately, some keys may generate keycodes that X doesn't recognize at all and the device does not support keymaps, or this would be easy to fix.
Using LIRC
Usually remote controls in linux are managed by the lirc software collection.
To get lirc up and running you need to configure some things.
- Settings for the hardware
- Where does lirc get its input from? aka. the DEVICE. E.g. /dev/input/event3
- How to handle the input? aka. the DRIVER. E.g. devinput
- Settings for mapping driver output generated by your remote (a bunch of hex numbers) to key names (something like 0..9, Volume+, Next, Record)
- Settings for mapping key presses to actions (usually located in your .lircrc)
Mythubuntu case
On mythubuntu 10.10, you just have to add this line in /etc/udev/rules.d/65-persistent-hauppauge.rules
SUBSYSTEM=="input", KERNEL=="event*", ATTRS{idVendor}=="2040", ATTRS{idProduct}=="8400", SYMLINK+="lirc0"
Device/driver settings
Find the IR receiver's device by looking in the dmesg output for a line similar to:
input: IR-receiver inside an USB DVB receiver as /class/input/input4
Additionally, the IR receiver will be listed if you execute the command:
cat /proc/bus/input/devices
For example:
I: Bus=0003 Vendor=2040 Product=9950 Version=0100 N: Name="IR-receiver inside an USB DVB receiver" P: Phys=usb-0000:07:01.2-1/ir0 S: Sysfs=/class/input/input4 U: Uniq= H: Handlers=kbd event4 B: EV=3 B: KEY=14afc336 284284d00000000 0 480058000 219040000801 9e96c000000000 90020000000ffd
In this example, the remote control gives output into /dev/input/event4.
The event number depends on your particular system and can vary.
Eventually this event number can even vary at every reboot.
You could create a new udev rule in /etc/udev/rules.d/65-persistent-hauppauge.rules.
KERNEL=="event*", ATTRS{name}=="IR-receiver inside an USB DVB receiver", SYMLINK+="input/dvb-ir"
This would make IR receivers handled by the usb_dvb framework always always be linked to /dev/input/dvb-ir.
But Linux systems running recent udev will automatically create non-varying names, a nicer and automatic way of providing a stable input event name:
$ ls -la /dev/input/by-path/ total 0 drwxr-xr-x 2 root root 140 2008-02-07 20:31 . drwxr-xr-x 4 root root 280 2008-02-07 20:31 .. lrwxrwxrwx 1 root root 9 2008-02-07 20:31 pci-0000:00:1a.1-usb-0:2:1.0-event-kbd -> ../event1 lrwxrwxrwx 1 root root 9 2008-02-07 20:31 pci-0000:00:1a.1-usb-0:2:1.1-event-mouse -> ../event2 lrwxrwxrwx 1 root root 9 2008-02-07 20:31 pci-0000:00:1a.1-usb-0:2:1.1-mouse -> ../mouse1 lrwxrwxrwx 1 root root 9 2008-02-07 20:31 pci-4-1--event-ir -> ../event4 lrwxrwxrwx 1 root root 9 2008-02-07 20:31 platform-pcspkr-event-spkr -> ../event3
LIRC will use it without needing a special kernel module. use the dev/input (or devinput. Check this with the command "lircd --device=help".) driver and specify the input event device in /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf # # Arguments which will be used when launching lircd LIRCD_ARGS="" #Don't start lircmd even if there seems to be a good config file #START_LIRCMD=false #Try to load appropriate kernel modules LOAD_MODULES=true # Run "lircd --driver=help" for a list of supported drivers. DRIVER="dev/input" # If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be # automatically used instead REMOTE_DEVICE="/dev/input/by-path/pci-4-1--event-ir" MODULES="" # Default configuration files for your hardware if any LIRCD_CONF="/etc/lirc/lircd.conf" LIRCMD_CONF=""
If you have REMOTE and TRANSMITTER sections in your hardware.conf file, they should look like this:
#Chosen Remote Control REMOTE="Terratec Cinergy DT USB XS Diversity" REMOTE_MODULES="" REMOTE_DRIVER="devinput" REMOTE_DEVICE="/dev/input/by-path/pci-1-5-event-ir" REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf" REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter TRANSMITTER="None" TRANSMITTER_MODULES="" TRANSMITTER_DRIVER="" TRANSMITTER_DEVICE="" TRANSMITTER_LIRCD_CONF="" TRANSMITTER_LIRCD_ARGS=""
Remote key setup
See device specific section below or try [2].
Sample .lircrc
A sample .lircrc can be found LircrcExample here.
Keys repeated twice
But there is still the problem of the key repeats for it, so that each keypress will be repeated twice. The patches, as mentioned above, may not work, but a workaround is possilbe. It is described in http://ubuntuforums.org/showthread.php?p=4253678
Simply add config = echo " > /dev/null before the main config in .mythtv/lircrc or .lircrc
begin prog = mythtv button = Mute config = echo " > /dev/null config = | ... end
So each 2nd keypress will be suppressed. This works in some application but not others (e.g. vlc).
Alternatively there is a patch for the kernel driver that solves it, it can be found here.
Finally if that doesn't work and you have the silver remote (A415-HPG-WE-A ) then changing the lircd.conf line as follows can prevent the duplicate key presses. This has the side-effect of disabling key repeats for the remote entirely. Change toggle_bit_mask 0x80000000 to toggle_bit_mask 0x00000000
Note: do not try to comment out (using #) any line in this file, or lirc won't work anymore.
Do NOT do this:
#toggle_bit_mask 0x80000000 toggle_bit_mask 0x00000000
Replace the original line instead.
Specific to the Model
Specific Remote control support
The remote is supported at least in the Mercurial repository (see Drivers section above).
TerraTec gray-orange remote
Apparently this remote is sold with (at least) the TerraTec Cinergy DT USB XS Diversity, TerraTec Cinergy 2400i DT, and TerraTec Cinergy T USB XXS.
The dvb-usb-dib0700 module needs to be loaded with the option dvb_usb_dib0700_ir_proto=0 to set the IR protocol to NEC (which is used by this device).
The following keycodes should work with it, specify them in /etc/lirc/lircd.conf:
# Please make this file available to others # by sending it to <lirc@bartelmus.de> # # this config file was automatically generated # using lirc-0.8.2-CVS(dev/input) on Tue May 8 23:40:09 2007 # # contributed by Heinrich Schwietering # # brand:Terratec_ # model no. of remote control: # devices being controlled by this remote: Cinergy_Hybrid_t_USB_XS # begin remote name Cinergy_Hybrid_t_USB_XS bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x1 gap 135987 toggle_bit_mask 0x80000000 begin codes onoff 0x0074 home 0x0066 dvdmenu 0x008B subtitles 0x0172 teletext 0x0184 delete 0x006F 1 0x0002 2 0x0003 3 0x0004 4 0x0005 5 0x0006 6 0x0007 7 0x0008 8 0x0009 9 0x000A 0 0x000B av 0x0182 ab 0x00A5 tv 0x0179 dvd 0x0185 video 0x0189 music 0x0188 pic 0x019A up 0x0067 down 0x006C left 0x0069 right 0x006A ok 0x0160 epg 0x016D info 0x0166 back 0x009E vol+ 0x0073 vol- 0x0072 play 0x00CF mute 0x0071 ch+ 0x0192 ch- 0x0193 red 0x018E green 0x018F yellow 0x0190 blue 0x0191 rec 0x00A7 stop 0x0080 pause 0x0077 last 0x0195 fr 0x00A8 ff 0x009F next 0x0197 end codes end remote
Note: the most recent model of this remote requires four different codes (replace them in above list).
ab 0x00AD ff 0x00D0 last 0x019C pic 0x0177
Should you need to quickly test all possible keycodes, just use this script to generate a list, which you can copy/paste to your lircd.conf file:
for (( i = 1; i < 512; i++ )); do x=`printf %#06X $i`; echo code$x $x; done
The result looks like this:
code0X0001 0X0001 code0X0002 0X0002 code0X0003 0X0003 code0X0004 0X0004 ... code0X01FC 0X01FC code0X01FD 0X01FD code0X01FE 0X01FE code0X01FF 0X01FF
Copy these keycodes just after the begin statement of your lircd.conf file. You can leave the original keycodes, duplicated values are not a problem. Once lircd is restarted, run the irw program and press your remote keys to show the missing codes:
# irw 00000000000100ad 00 code0X00AD Cinergy_Hybrid_t_USB_XS 00000000000100d0 00 code0X00D0 Cinergy_Hybrid_t_USB_XS 000000000001019c 00 code0X019C Cinergy_Hybrid_t_USB_XS 0000000000010177 00 code0X0177 Cinergy_Hybrid_t_USB_XS
Sample Kernel Output
From 2.6.23-tuxonice-r6 (gentoo) with drivers compiled from repository 11th Feb 08:
$ dmesg | grep -i dvb dvb-usb: found a 'Terratec Cinergy DT XS Diversity' in cold state, will try to load a firmware dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.10.fw' dvb-usb: found a 'Terratec Cinergy DT XS Diversity' in warm state. dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. DVB: registering new adapter (Terratec Cinergy DT XS Diversity) DVB: registering frontend 0 (DiBcom 7000PC)... dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. DVB: registering new adapter (Terratec Cinergy DT XS Diversity) DVB: registering frontend 1 (DiBcom 7000PC)... input: IR-receiver inside an USB DVB receiver as /class/input/input6 dvb-usb: schedule remote query interval to 150 msecs. dvb-usb: Terratec Cinergy DT XS Diversity successfully initialized and connected. usbcore: registered new interface driver dvb_usb_dib0700
User Experiences
See the talk page.