Terratec T6: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(Contents deleted because new device page with same contents created.)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
now under [[TerraTec_T6_Dual_DVB-T_Stick]].
= TerraTec T6 Dual DVB-T stick =

It consists of
* Afatech AF9035B-N2 USB Interface with included AF9033 Demodulator
* Afatech AF9033B-N2 second Demodulator
* Fitipower FC0012 Tuner (2 off)

[[File:terratec-t6-internals-front.jpg|200px|left|top side of PCB with all major chips and IR receiver]]
[[File:terratec-t6-internals-rear.jpg|200px|right|bottom side of PCB]]

This device is currently not officially supported by Linux, however it is possible to get this device working using a slightly patched version of the AF9035 driver as used in [[EzCap_DVB_T_Stick]].

== Instructions how to get the stick working ==

Follow the instruction to get the AF903x source code archive '''AF903x.tar.gz''' in [[EzCap_DVB_T_Stick]].

I run kernel 3.0.1 and therefore I needed a few patched just to get the source code compiled (you may not need all of them, but they shouldn't hurt either).

--- a/src/af903x.h 2009-08-14 16:17:10.000000000 +0200
+++ b/src/af903x.h 2011-08-13 16:49:49.799506005 +0200
@@ -9,7 +9,6 @@
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/kref.h>
-#include <linux/smp_lock.h>
#include <linux/usb.h>
#include <asm/uaccess.h>
#include "dvb-usb.h"
--- a/src/userdef.h 2009-08-14 16:17:10.000000000 +0200
+++ b/src/userdef.h 2011-08-01 22:56:02.626583791 +0200
@@ -8,7 +8,9 @@
typedef int INT; // 4 bytes
//typedef void * HANDLE;
+#ifndef NULL
#define NULL 0
+#endif
#ifdef IN
#undef IN
--- a/api/type.h 2009-08-14 16:17:10.000000000 +0200
+++ b/api/type.h 2011-08-01 22:54:38.197342415 +0200
@@ -3,6 +3,15 @@
#include "userdef.h"// for Linux
+#ifdef IN
+#undef IN
+#endif
+#ifdef OUT
+#undef OUT
+#endif
+#ifdef INOUT
+#undef INOUT
+#endif
#define IN
#define OUT
#define INOUT
--- a/api/usb2impl.c 2011-02-15 11:12:59.000000000 +0100
+++ b/api/usb2impl.c 2011-08-01 21:59:17.635389432 +0200
@@ -6,7 +6,6 @@
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/kref.h>
-#include <linux/smp_lock.h>
#include <linux/usb.h>
#include <asm/uaccess.h>
#include <linux/device.h>

Then, here are some bug fixes to prevent deadlocks of the mutexes:

--- a/src/af903x-drv.c 2009-08-14 16:17:10.000000000 +0200
+++ b/src/af903x-drv.c 2011-08-12 21:26:10.610770606 +0200
@@ -1075,7 +1075,7 @@ DWORD DL_ApCtrl (
if(PDC->architecture != Architecture_PIP)
{
- if ( PDC->Demodulator.chipNumber == 2 && bOn) dwError = DL_NIMSuspend(PDC, false);
+ if ( PDC->Demodulator.chipNumber == 2 && bOn) dwError = DRV_NIMSuspend(PDC, false);
for (i=0; i<PDC->Demodulator.chipNumber; i++)
{
@@ -1091,7 +1091,7 @@ DWORD DL_ApCtrl (
}
}
- if(PDC->Demodulator.chipNumber == 2 && !bOn) dwError = DL_NIMSuspend(PDC, true);
+ if(PDC->Demodulator.chipNumber == 2 && !bOn) dwError = DRV_NIMSuspend(PDC, true);
}
else
{
@@ -1100,7 +1100,7 @@ DWORD DL_ApCtrl (
PDC->fc[ucSlaveDemod].GraphBuilt = 1;
if (PDC->fc[0].GraphBuilt == 0 || PDC->fc[1].GraphBuilt == 0)
- dwError = DL_NIMSuspend(PDC, false);
+ dwError = DRV_NIMSuspend(PDC, false);
dwError = DRV_ApCtrl (PDC, ucSlaveDemod, bOn);
}
@@ -1112,7 +1112,7 @@ DWORD DL_ApCtrl (
if (PDC->bTunerPowerOff != true) dwError = DRV_ApCtrl (PDC, ucSlaveDemod, bOn);
if (PDC->fc[0].GraphBuilt == 0 && PDC->fc[1].GraphBuilt == 0 && PDC->bTunerPowerOff == true)
- dwError = DL_NIMSuspend(PDC, true);
+ dwError = DRV_NIMSuspend(PDC, true);
}
}
And finally, the patches to support the TerraTec T6 Dual DVB-T stick:

--- a/src/af903x-devices.c 2009-08-14 16:17:10.000000000 +0200
+++ b/src/af903x-devices.c 2011-08-01 22:06:08.118919600 +0200
@@ -127,6 +127,7 @@ struct usb_device_id af903x_usb_id_table
{ USB_DEVICE(0x15A4,0x1002) },
{ USB_DEVICE(0x15A4,0x1003) },
{ USB_DEVICE(0x15A4,0x9035) },
+ { USB_DEVICE(0x0ccd,0x10b3) }, /* Terratec T6 */
{ 0}, /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, af903x_usb_id_table);
@@ -156,7 +157,7 @@ struct dvb_usb_device_properties af903x_
}
},
#else
- .num_adapters = 1,
+ .num_adapters = 2,
.adapter = {
{
.caps = DVB_USB_ADAP_HAS_PID_FILTER | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
@@ -198,13 +199,17 @@ struct dvb_usb_device_properties af903x_
},
},
#endif
- .num_device_descs =1,
+ .num_device_descs =2,
.devices = {
{ "ITEtech USB2.0 DVB-T Recevier",
{ &af903x_usb_id_table[0], &af903x_usb_id_table[1],&af903x_usb_id_table[2],
&af903x_usb_id_table[3], &af903x_usb_id_table[4], NULL},
{ NULL },
},
+ { "Terratec T6",
+ { &af903x_usb_id_table[5], NULL},
+ { NULL },
+ },
{NULL},
}
--- a/api/Fitipower_FC0012.c 2009-08-14 16:17:10.000000000 +0200
+++ b/api/Fitipower_FC0012.c 2011-08-11 22:54:23.390763425 +0200
@@ -35,6 +35,12 @@ Dword FC0012_open (
IN Byte chip
) {
Dword error = Error_NO_ERROR;
+ int i;
+ Byte reg[] = {
+ 0x05, 0x10, 0x00, 0x00, 0x0a, 0x00, 0x0f, 0xff,
+ 0x6e, 0xb8, 0x83, 0xfe, 0x02, 0x00, 0x00, 0x0d,
+ 0x00, 0x1f, 0x90, 0x00, 0x04,
+ };
/** Control tuner enable */
error = Standard_writeRegisterBits (demodulator, chip, Processor_LINK, p_reg_top_gpiot2_o, reg_top_gpiot2_o_pos, reg_top_gpiot2_o_len, 1);
@@ -47,11 +53,16 @@ Dword FC0012_open (
if (error) goto exit;
/** Control pin diode **/
- error = Standard_writeRegister (demodulator, chip, Processor_LINK, p_reg_top_gpioh8_on, 1);
+ error = Standard_writeRegister (demodulator, chip, Processor_LINK, p_reg_top_gpioh8_en, 1);
if (error) goto exit;
- error = Standard_writeRegister (demodulator, chip, Processor_LINK, p_reg_top_gpioh8_en, 1);
+ error = Standard_writeRegister (demodulator, chip, Processor_LINK, p_reg_top_gpioh8_on, 1);
if (error) goto exit;
+
+ for (i=0; i<sizeof(reg)/sizeof(reg[0]); i++) {
+ error = Standard_writeTunerRegisters (demodulator, chip, i+1, 1, &reg[i]);
+ if (error) goto exit;
+ }
exit:
return (error);
}
--- a/api/Fitipower_FC0012_Script.h 2009-08-14 16:17:10.000000000 +0200
+++ b/api/Fitipower_FC0012_Script.h 2011-08-13 16:53:41.984092888 +0200
@@ -15,7 +15,7 @@
#define VERSION4 0
-#define FC0012_ADDRESS 0xC0
+#define FC0012_ADDRESS 0xC6
#define FC0012_SCRIPTSETLENGTH 0x00000001
Word FC0012_scriptSets[] = {
--- a/api/user.h 2009-08-14 16:17:10.000000000 +0200
+++ b/api/user.h 2011-08-10 22:21:31.192856393 +0200
@@ -22,7 +22,7 @@
#define User_I2C_SPEED 0x07
/** Define I2C address of secondary chip when Diversity mode or PIP mode is active. */
-#define User_I2C_ADDRESS 0x38
+#define User_I2C_ADDRESS 0x3a
/** Define USB frame size */
#define User_USB20_MAX_PACKET_SIZE 512

After that, continue with the instructions in [[EzCap_DVB_T_Stick]].

[[Category:DVB-T USB Devices]]

Latest revision as of 16:07, 13 August 2011