TerraTec Cinergy T Stick: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(the stick may be identified as AA , and then the code must be edited before recompiling the kernel)
(add a new, simplified method)
Line 13: Line 13:


=== Method A ===
=== Method A ===

This method install the same drivers as in section B, with some small patches
and a Makefile that directly creates the kernel modules,
without compiling a whole kernel. The patches are (as in method B): to support the
alternative USB code of the stick; to correct the frequency calculations.

* Download kernel source and headers equal to the ones you are using (check with 'uname -a'); e.g., for a Debian or Ubuntu distribution,
<pre>
apt-get install linux-source-2.6.30 linux-headers-2.6.30-1-686 kernel-package
</pre>
* and unpack the kernel source
<pre>
cd /usr/src ; tar xjf linux-source-2.6.30.tar.bz2
</pre>
* Download the pre-patched drivers from http://tonelli.sns.it/pub/mennucc1/terratec_af9035-a_m.tar.gz and unpack it
* Edit the Makefile to point to the correct kernel directories
* compile
make
* install (as root)
make install
* Copy firmware (dvb-usb-af9035-01.fw) to /lib/firmware.

=== Method B ===


* Download the driver from Terratec http://linux.terratec.de/files/terratec_af9035.zip.
* Download the driver from Terratec http://linux.terratec.de/files/terratec_af9035.zip.
Line 72: Line 95:
Tested with 2.6.30.1, in case the patches fail just work them in by hand. Don't give up!
Tested with 2.6.30.1, in case the patches fail just work them in by hand. Don't give up!


=== Method B ===
=== Method C ===
'''Patch for adding device USB IDs to the manufacturer's driver.'''
'''Patch for adding device USB IDs to the manufacturer's driver.'''



Revision as of 19:45, 26 September 2009

TerraTec Cinergy T Stick is a USB 2.0 DVB-T device.

Currently not supported by LinuxTV. The manufacturer's Linux page links to vendor driver.

Based on:

  • Afatech AF9035
  • Infineon TUA9001


Install instructions for manufacturer driver

Method A

This method install the same drivers as in section B, with some small patches and a Makefile that directly creates the kernel modules, without compiling a whole kernel. The patches are (as in method B): to support the alternative USB code of the stick; to correct the frequency calculations.

  • Download kernel source and headers equal to the ones you are using (check with 'uname -a'); e.g., for a Debian or Ubuntu distribution,
apt-get install linux-source-2.6.30 linux-headers-2.6.30-1-686 kernel-package
  • and unpack the kernel source
 cd /usr/src ; tar xjf linux-source-2.6.30.tar.bz2
make
  • install (as root)
make install
  • Copy firmware (dvb-usb-af9035-01.fw) to /lib/firmware.

Method B

  • Download the driver from Terratec http://linux.terratec.de/files/terratec_af9035.zip.
  • Apply patch (AF9035-AF9033-TUA9001_DRIVER.patch) to kernel source, ignore the other files.
  • Copy firmware (dvb-usb-af9035-01.fw) to /lib/firmware.
  • The stick come with two different identifications, either 93 or AA . Check the USB identifier of the stick using 'lsusb' ; if you see 'AA' in a line such as
ID 0ccd:00aa TerraTec Electronic GmbH 

then you should edit the file drivers/media/dvb/dvb-usb/dvb-usb-ids.h and change the line from

#define USB_PID_TERRATEC_CINERGY_T_STICK		0x0093 

to

#define USB_PID_TERRATEC_CINERGY_T_STICK		0x00AA
  • Apply the following patch to the tuner code.
--- a/linux/drivers/media/common/tuners/tua9001.c	2009-07-03 04:04:40.000000000 +0200
+++ b/linux/drivers/media/common/tuners/tua9001.c	2009-07-18 20:41:32.000000000 +0200
@@ -93,6 +93,7 @@
 	struct tua9001_priv *priv = fe->tuner_priv;
 	int ret;
 	u16 val;
+	u32 freq;
 	u8 i;
 	struct regdesc data[2];
 
@@ -117,12 +118,19 @@
 	data[0].reg = 0x04;
 	data[0].val = val;
 
+freq = params->frequency;
+
 #define OFFSET 150000000
-	val = 0.000048 * (params->frequency - OFFSET);
+freq = freq - OFFSET;
+freq  = freq/1000;
+freq  = 48 * freq;
+freq  = freq/1000;
+
+val = freq;
+
 	data[1].reg = 0x1f;
 	data[1].val = val;
 
-	priv->frequency = (val * 20833.33334) + OFFSET;
 
 	deb_info("%s: freq:%d bw:%d freq tuner:%d val:%d\n", __func__,
 		params->frequency, params->u.ofdm.bandwidth, priv->frequency,

  • Configure and compile your kernel
  • Have a beer

Tested with 2.6.30.1, in case the patches fail just work them in by hand. Don't give up!

Method C

Patch for adding device USB IDs to the manufacturer's driver.

72a73
> #define USB_PID_TERRATEC_CINERGY_T			0x0093
78a80
> 		{USB_DEVICE(USB_VID_TERRATEC,  USB_PID_TERRATEC_CINERGY_T)},
146c148
< 		.num_device_descs =1,
---
> 		.num_device_descs =2,
152a155,159
> 			{
> 				.name = "TerraTec Cinergy T-Stick",
> 				.cold_ids = {&af903x_usb_id_table[5], NULL},
> 				.warm_ids = {NULL},
> 			},

Install instructions

  • copy above patch to file (e.g. TerraTec_Cinergy_T-Stick.patch) and save it your home directory
  • download driver from TerraTec support site
wget http://linux.terratec.de/files/Linux-Driver-for-T-Stick.rar
  • extract driver package
unrar x Linux-Driver-for-T-Stick.rar
  • enter driver directory
cd Linux_PC_AF9035_Afatech_2008.12.17/
  • enter driver directory according to your Kernel architecture
    • for 32 bit
cd Linux-32bit_AF9035_20081217/
    • for 64 bit
cd Linux-64bit_AF9035_20081217/
  • extract driver package
tar zxvf AF903x_SRC.tar.gz
  • enter driver directory
cd AF903x_SRC/
  • apply patch (from home directory)
patch af903x-devices.c ~/TerraTec_Cinergy_T-Stick.patch
  • compile
make
  • install (as root)
make install

Device should work if everything goes correctly. Few distribution specific install commands you may wish use:

Fedora:

su -c "make install"

Ubuntu:

sudo make install

Driver does support Kernels from 2.6.16 to 2.6.27. If you have newer Kernel then you could try compile it against 2.6.27 headers (cp v4l/kernel-2.6.27/* ./). In that case there is big risk it doesn't work and crashes your Kernel when device is plugged.