TechniSat CableStar Combo HD CI: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(Availability in Debian)
 
(25 intermediate revisions by 3 users not shown)
Line 5: Line 5:
A combined [[DVB-C]] and [[DVB-T]] [[USB|USB 2.0]] box (standard definition and high definition). The device contains a common interface slot and an integrated infrared receiver. A remote control is included.
A combined [[DVB-C]] and [[DVB-T]] [[USB|USB 2.0]] box (standard definition and high definition). The device contains a common interface slot and an integrated infrared receiver. A remote control is included.


It is currently not supported in current releases of Linux.
It is supported by parching the device ids into the current releases of Linux.


===Components Used===
===Components Used===
Line 11: Line 11:
http://www.tridentmicro.com/producttree/tv/dtv/drx/drx-39xyk/
http://www.tridentmicro.com/producttree/tv/dtv/drx/drx-39xyk/
====CY7C68013A====
====CY7C68013A====

http://www.cypress.com/?rid=38801
====EPM3128ATC144-10N====
====EPM3128ATC144-10N====
http://www.altera.com/cgi-bin/devsearch.pl?col=corp&qt=EPM3128
http://www.altera.com/cgi-bin/devsearch.pl?col=corp&qt=EPM3128
Line 22: Line 22:


===Firmware===
===Firmware===
<strike>dvb-usb-terratec-h7-drxk.fw</strike> dvb-usb-terratec-h5-drxk.fw and dvb-usb-terratec-h7-az6007.fw from [http://linuxtv.org/downloads/firmware/ http://linuxtv.org/downloads/firmware/ 0]

Copy the firmware files to your hotplug directory (e.g. /lib/firmware/) and (when applied the patches from below) rename dvb-usb-terratec-h5-drxk.fw to dvb-usb-technisat-cablestar-hdci-drxk.fw


===Drivers===
===Drivers===
As the TechniSat CableStar Combo HD CI is a clone of the Terratec T7 card which is supported in the kernel v3.9.2 some small patches are needed to get the card working.


Log from initialization on kernel 3.9.2:
==External Links==
<pre>
* [http://www.technisat.com/index9332.html TechniSat CableStar Combo HD CI product page]
[ 6076.115751] usb 7-1: new high-speed USB device number 6 using ehci-pci
* [http://www.mail-archive.com/linux-media@vger.kernel.org/msg19473.html Discussion on Linux support on linux-media mailing list]
[ 6076.545764] usb 7-1: New USB device found, idVendor=14f7, idProduct=0003
[ 6076.545772] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6076.545776] usb 7-1: Product: CableStar Combo HD CI
[ 6076.545779] usb 7-1: Manufacturer: TechniSat Digital S.A.
[ 6076.545782] usb 7-1: SerialNumber: 0008C9D90E19
[ 6076.546385] usb read operation failed. (-32)
[ 6076.546883] usb write operation failed. (-32)
[ 6076.547257] usb write operation failed. (-32)
[ 6076.547262] usb 7-1: dvb_usb_v2: found a 'Technisat CableStar Combo HD CI' in cold state
[ 6076.547310] usb 7-1: firmware: agent loaded dvb-usb-terratec-h7-az6007.fw into memory
[ 6076.547315] usb 7-1: dvb_usb_v2: downloading firmware from file 'dvb-usb-terratec-h7-az6007.fw'
[ 6076.571917] usb 7-1: dvb_usb_v2: found a 'Technisat CableStar Combo HD CI' in warm state
[ 6077.808988] usb 7-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[ 6077.809041] DVB: registering new adapter (Technisat CableStar Combo HD CI)
[ 6077.811886] usb 7-1: dvb_usb_v2: MAC address: c2:f7:14:03:00:00
[ 6077.812706] drxk: frontend initialized.
[ 6077.812886] usb 7-1: firmware: agent loaded dvb-usb-technisat-cablestar-hdci-drxk.fw into memory
[ 6077.813180] usb 7-1: DVB: registering adapter 0 frontend 0 (DRXK)...
[ 6077.813282] mt2063_attach: Attaching MT2063
[ 6077.813291] usb 7-1: dvb_usb_v2: 'Technisat CableStar Combo HD CI' successfully initialized and connected
[ 6077.868253] drxk: status = 0x439130d9
[ 6077.868259] drxk: detected a drx-3913k, spin A2, xtal 27.000 MHz
[ 6092.490906] drxk: DRXK driver version 0.9.4300
</pre>


lsusb:
<pre>
Bus 001 Device 006: ID 14f7:0003 TechniSat Digital GmbH CableStar Combo HD CI
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x14f7 TechniSat Digital GmbH
idProduct 0x0003 CableStar Combo HD CI
bcdDevice 0.03
iManufacturer 1 TechniSat Digital S.A.
iProduct 2 CableStar Combo HD CI
iSerial 3 0008C9D91C8F
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 100
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0001
Self Powered
</pre>

When tuning, the dmesg shows two errors, which can safely be ignored:
<pre>
usb 7-1: dvb_frontend_ioctl_legacy: doesn't know how to handle a DVBv3 call to delivery system 0
</pre>

===Patch===
These are the needed patches for the kernel 3.9.2 to get the device working. Also tested on Linux debian wheezy 3.10-0.bpo.2-686-pae

dvb-usb-ids.h
<pre>
diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
index 419a2d6..4a53454 100644
--- a/drivers/media/dvb-core/dvb-usb-ids.h
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
@@ -365,6 +365,7 @@
#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac
#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001
#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002
+#define USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI 0x0003
#define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004
#define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500
#define USB_PID_CPYTO_REDI_PC50A 0xa803
</pre>

az6007.c
<pre>
diff --git a/drivers/media/usb/dvb-usb-v2/az6007.c b/drivers/media/usb/dvb-usb-v2/az6007.c
index 44c64ef3..c1051c3 100644
--- a/drivers/media/usb/dvb-usb-v2/az6007.c
+++ b/drivers/media/usb/dvb-usb-v2/az6007.c
@@ -68,6 +68,19 @@ static struct drxk_config terratec_h7_drxk = {
.microcode_name = "dvb-usb-terratec-h7-drxk.fw",
};
+static struct drxk_config cablestar_hdci_drxk = {
+ .adr = 0x29,
+ .parallel_ts = true,
+ .dynamic_clk = true,
+ .single_master = true,
+ .enable_merr_cfg = true,
+ .no_i2c_bridge = false,
+ .chunk_size = 64,
+ .mpeg_out_clk_strength = 0x02,
+ .qam_demod_parameter_count = 2,
+ .microcode_name = "dvb-usb-technisat-cablestar-hdci-drxk.fw",
+};
+
static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
{
struct az6007_device_state *st = fe_to_priv(fe);
@@ -630,6 +643,27 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
return 0;
}
+static int az6007_cablestar_hdci_frontend_attach(struct dvb_usb_adapter *adap)
+{
+ struct az6007_device_state *st = adap_to_priv(adap);
+ struct dvb_usb_device *d = adap_to_d(adap);
+
+ pr_debug("attaching demod drxk\n");
+
+ adap->fe[0] = dvb_attach(drxk_attach, &cablestar_hdci_drxk,
+ &d->i2c_adap);
+ if (!adap->fe[0])
+ return -EINVAL;
+
+ adap->fe[0]->sec_priv = adap;
+ st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
+ adap->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
+
+ az6007_ci_init(adap);
+
+ return 0;
+}
+
static int az6007_tuner_attach(struct dvb_usb_adapter *adap)
{
struct dvb_usb_device *d = adap_to_d(adap);
@@ -868,6 +902,29 @@ static struct dvb_usb_device_properties az6007_props = {
}
};
+static struct dvb_usb_device_properties az6007_cablestar_hdci_props = {
+ .driver_name = KBUILD_MODNAME,
+ .owner = THIS_MODULE,
+ .firmware = AZ6007_FIRMWARE,
+
+ .adapter_nr = adapter_nr,
+ .size_of_priv = sizeof(struct az6007_device_state),
+ .i2c_algo = &az6007_i2c_algo,
+ .tuner_attach = az6007_tuner_attach,
+ .frontend_attach = az6007_cablestar_hdci_frontend_attach,
+ .streaming_ctrl = az6007_streaming_ctrl,
+/* ditch get_rc_config as it can't work (TS35 remote, I believe it's rc5) */
+ .get_rc_config = NULL,
+ .read_mac_address = az6007_read_mac_addr,
+ .download_firmware = az6007_download_firmware,
+ .identify_state = az6007_identify_state,
+ .power_ctrl = az6007_power_ctrl,
+ .num_adapters = 1,
+ .adapter = {
+ { .stream = DVB_USB_STREAM_BULK(0x02, 10, 4096), }
+ }
+};
+
static struct usb_device_id az6007_usb_table[] = {
{DVB_USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_6007,
&az6007_props, "Azurewave 6007", RC_MAP_EMPTY)},
@@ -875,6 +932,8 @@ static struct usb_device_id az6007_usb_table[] = {
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2,
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
+ {DVB_USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI,
+ &az6007_cablestar_hdci_props, "Technisat CableStar Combo HD CI", RC_MAP_EMPTY)},
{0},
};
</pre>


===Step-by-step instructions===

In this section I will provide step-by-step instructions how to patch and compile media_build for the TechniSat CableStar Combo HD CI. Though I compiled it on a debian wheezy system with backported kernel v3.10 it might probably also run on different systems (i.e. lower kernel versions) with very similar steps.

Commands preceeded by # are to be run with root privileges, whereas $ only requires user previliges.

First, you need to get the tools for building media_build by installing the packages git, build-essential, libproc-processtable-perl and patchutils. E.g. in debian, you want to run the command
<pre>
# apt-get install linux-headers-$(uname -r) git build-essential patchutils libproc-processtable-perl
</pre>

After that, you have to obtain the current media_build stack:
<pre>
$ git clone git://linuxtv.org/media_build.git
$ cd media_build
$ make download untar
</pre>

Next step is to apply the patches. Therefore, download the patch from [https://patchwork.linuxtv.org/patch/20558/ here] , save it to your media_build/linux directory (e.g naming it media-az6007-support-Technisat-Cablestar-Combo-HDCI-minus-remote.patch) and run:
<pre>
$ cd linux
$ patch -p1 < media-az6007-support-Technisat-Cablestar-Combo-HDCI-minus-remote.patch
</pre>

Now you are ready to make and install media_build, by first switching back to the media_build root directory and then using make and make install to complete installation:
<pre>
$ cd ..
$ make
# make install
</pre>

Finally, you need the above mentioned firmware to get the device working:
<pre>
# wget http://linuxtv.org/downloads/firmware/dvb-usb-terratec-h5-drxk.fw -O /lib/firmware/dvb-usb-technisat-cablestar-hdci-drxk.fw
# wget http://linuxtv.org/downloads/firmware/dvb-usb-terratec-h7-az6007.fw -O /lib/firmware/dvb-usb-terratec-h7-az6007.fw
</pre>

Credits for this workaround go to the Ubuntuusers.de forum (especially to the users hakunamatata and mczak) as well as Roland Scheidegger for providing the patch.

==Linuxtv.org media_build==

The patch is included now in the Linuxtv.org build system allowing to use the latest experimental drivers/patches without needing to replace the entire kernel.

The system is available at http://git.linuxtv.org/media_build.git .

==Debian==

The patch is available in the kernel since version 3.12.6-1, cf. [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=732106 the closed bug (wishlist) report.]


==External Links==
* [https://www.technisat.com/en_XX/CableStar-Combo-HD-CI/352-2664-1657/ TechniSat CableStar Combo HD CI product page (no longer available)]
* [https://web.archive.org/web/20130612085633/https://www.technisat.com/en_XX/Cable-%28DVB-C%29/352-2664/ TechniSat CableStar Combo HD CI product page (Internet Archive)]
* [http://www.mail-archive.com/linux-media@vger.kernel.org/msg67962.html Roland Scheidegger's patch on linux-media mailing list]
* [http://forum.ubuntuusers.de/topic/technisat-cablestar-combo-hd-benutzen/ A discussion of the device on a German Ubuntu forum]
[[Category:DVB-C USB Devices]]
[[Category:DVB-C USB Devices]]

Latest revision as of 16:28, 21 December 2013

A DVB-C USB device from TechniSat.

Overview/Features

A combined DVB-C and DVB-T USB 2.0 box (standard definition and high definition). The device contains a common interface slot and an integrated infrared receiver. A remote control is included.

It is supported by parching the device ids into the current releases of Linux.

Components Used

DRX 3913 JKA 2

http://www.tridentmicro.com/producttree/tv/dtv/drx/drx-39xyk/

CY7C68013A

EPM3128ATC144-10N

http://www.altera.com/cgi-bin/devsearch.pl?col=corp&qt=EPM3128

Identification

The USB id of this device is 14f7:0003

Making it Work

The Window drivers for this devices from TechniSat is named UDST7000Bda.sys, the same as the driver for the Technisat SkyStar USB 2 HD CI and TerraTec S7 DVB-S devices. These devices are supported by Linux with the az6027 driver. This gives some hope towards future Linux support for this device.

Firmware

dvb-usb-terratec-h7-drxk.fw dvb-usb-terratec-h5-drxk.fw and dvb-usb-terratec-h7-az6007.fw from http://linuxtv.org/downloads/firmware/ 0

Copy the firmware files to your hotplug directory (e.g. /lib/firmware/) and (when applied the patches from below) rename dvb-usb-terratec-h5-drxk.fw to dvb-usb-technisat-cablestar-hdci-drxk.fw

Drivers

As the TechniSat CableStar Combo HD CI is a clone of the Terratec T7 card which is supported in the kernel v3.9.2 some small patches are needed to get the card working.

Log from initialization on kernel 3.9.2:

[ 6076.115751] usb 7-1: new high-speed USB device number 6 using ehci-pci
[ 6076.545764] usb 7-1: New USB device found, idVendor=14f7, idProduct=0003
[ 6076.545772] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6076.545776] usb 7-1: Product: CableStar Combo HD CI
[ 6076.545779] usb 7-1: Manufacturer: TechniSat Digital S.A.
[ 6076.545782] usb 7-1: SerialNumber: 0008C9D90E19
[ 6076.546385] usb read operation failed. (-32)
[ 6076.546883] usb write operation failed. (-32)
[ 6076.547257] usb write operation failed. (-32)
[ 6076.547262] usb 7-1: dvb_usb_v2: found a 'Technisat CableStar Combo HD CI' in cold state
[ 6076.547310] usb 7-1: firmware: agent loaded dvb-usb-terratec-h7-az6007.fw into memory
[ 6076.547315] usb 7-1: dvb_usb_v2: downloading firmware from file 'dvb-usb-terratec-h7-az6007.fw'
[ 6076.571917] usb 7-1: dvb_usb_v2: found a 'Technisat CableStar Combo HD CI' in warm state
[ 6077.808988] usb 7-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[ 6077.809041] DVB: registering new adapter (Technisat CableStar Combo HD CI)
[ 6077.811886] usb 7-1: dvb_usb_v2: MAC address: c2:f7:14:03:00:00
[ 6077.812706] drxk: frontend initialized.
[ 6077.812886] usb 7-1: firmware: agent loaded dvb-usb-technisat-cablestar-hdci-drxk.fw into memory
[ 6077.813180] usb 7-1: DVB: registering adapter 0 frontend 0 (DRXK)...
[ 6077.813282] mt2063_attach: Attaching MT2063
[ 6077.813291] usb 7-1: dvb_usb_v2: 'Technisat CableStar Combo HD CI' successfully initialized and connected
[ 6077.868253] drxk: status = 0x439130d9
[ 6077.868259] drxk: detected a drx-3913k, spin A2, xtal 27.000 MHz
[ 6092.490906] drxk: DRXK driver version 0.9.4300

lsusb:

Bus 001 Device 006: ID 14f7:0003 TechniSat Digital GmbH CableStar Combo HD CI
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x14f7 TechniSat Digital GmbH
  idProduct          0x0003 CableStar Combo HD CI
  bcdDevice            0.03
  iManufacturer           1 TechniSat Digital S.A.
  iProduct                2 CableStar Combo HD CI
  iSerial                 3 0008C9D91C8F
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval             100
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

When tuning, the dmesg shows two errors, which can safely be ignored:

usb 7-1: dvb_frontend_ioctl_legacy: doesn't know how to handle a DVBv3 call to delivery system 0

Patch

These are the needed patches for the kernel 3.9.2 to get the device working. Also tested on Linux debian wheezy 3.10-0.bpo.2-686-pae

dvb-usb-ids.h

diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
index 419a2d6..4a53454 100644
--- a/drivers/media/dvb-core/dvb-usb-ids.h
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
@@ -365,6 +365,7 @@
 #define USB_PID_TERRATEC_DVBS2CI_V2			0x10ac
 #define USB_PID_TECHNISAT_USB2_HDCI_V1			0x0001
 #define USB_PID_TECHNISAT_USB2_HDCI_V2			0x0002
+#define USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI		0x0003
 #define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2		0x0004
 #define USB_PID_TECHNISAT_USB2_DVB_S2			0x0500
 #define USB_PID_CPYTO_REDI_PC50A			0xa803

az6007.c

diff --git a/drivers/media/usb/dvb-usb-v2/az6007.c b/drivers/media/usb/dvb-usb-v2/az6007.c
index 44c64ef3..c1051c3 100644
--- a/drivers/media/usb/dvb-usb-v2/az6007.c
+++ b/drivers/media/usb/dvb-usb-v2/az6007.c
@@ -68,6 +68,19 @@ static struct drxk_config terratec_h7_drxk = {
 	.microcode_name = "dvb-usb-terratec-h7-drxk.fw",
 };
 
+static struct drxk_config cablestar_hdci_drxk = {
+	.adr = 0x29,
+	.parallel_ts = true,
+	.dynamic_clk = true,
+	.single_master = true,
+	.enable_merr_cfg = true,
+	.no_i2c_bridge = false,
+	.chunk_size = 64,
+	.mpeg_out_clk_strength = 0x02,
+	.qam_demod_parameter_count = 2,
+	.microcode_name = "dvb-usb-technisat-cablestar-hdci-drxk.fw",
+};
+
 static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
 {
 	struct az6007_device_state *st = fe_to_priv(fe);
@@ -630,6 +643,27 @@ static int az6007_frontend_attach(struct dvb_usb_adapter *adap)
 	return 0;
 }
 
+static int az6007_cablestar_hdci_frontend_attach(struct dvb_usb_adapter *adap)
+{
+	struct az6007_device_state *st = adap_to_priv(adap);
+	struct dvb_usb_device *d = adap_to_d(adap);
+
+	pr_debug("attaching demod drxk\n");
+
+	adap->fe[0] = dvb_attach(drxk_attach, &cablestar_hdci_drxk,
+				 &d->i2c_adap);
+	if (!adap->fe[0])
+		return -EINVAL;
+
+	adap->fe[0]->sec_priv = adap;
+	st->gate_ctrl = adap->fe[0]->ops.i2c_gate_ctrl;
+	adap->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
+
+	az6007_ci_init(adap);
+
+	return 0;
+}
+
 static int az6007_tuner_attach(struct dvb_usb_adapter *adap)
 {
 	struct dvb_usb_device *d = adap_to_d(adap);
@@ -868,6 +902,29 @@ static struct dvb_usb_device_properties az6007_props = {
 	}
 };
 
+static struct dvb_usb_device_properties az6007_cablestar_hdci_props = {
+	.driver_name         = KBUILD_MODNAME,
+	.owner               = THIS_MODULE,
+	.firmware            = AZ6007_FIRMWARE,
+
+	.adapter_nr          = adapter_nr,
+	.size_of_priv        = sizeof(struct az6007_device_state),
+	.i2c_algo            = &az6007_i2c_algo,
+	.tuner_attach        = az6007_tuner_attach,
+	.frontend_attach     = az6007_cablestar_hdci_frontend_attach,
+	.streaming_ctrl      = az6007_streaming_ctrl,
+/* ditch get_rc_config as it can't work (TS35 remote, I believe it's rc5) */
+	.get_rc_config       = NULL,
+	.read_mac_address    = az6007_read_mac_addr,
+	.download_firmware   = az6007_download_firmware,
+	.identify_state	     = az6007_identify_state,
+	.power_ctrl          = az6007_power_ctrl,
+	.num_adapters        = 1,
+	.adapter             = {
+		{ .stream = DVB_USB_STREAM_BULK(0x02, 10, 4096), }
+	}
+};
+
 static struct usb_device_id az6007_usb_table[] = {
 	{DVB_USB_DEVICE(USB_VID_AZUREWAVE, USB_PID_AZUREWAVE_6007,
 		&az6007_props, "Azurewave 6007", RC_MAP_EMPTY)},
@@ -875,6 +932,8 @@ static struct usb_device_id az6007_usb_table[] = {
 		&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
 	{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2,
 		&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)},
+	{DVB_USB_DEVICE(USB_VID_TECHNISAT, USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI,
+		&az6007_cablestar_hdci_props, "Technisat CableStar Combo HD CI", RC_MAP_EMPTY)},
 	{0},
 };


Step-by-step instructions

In this section I will provide step-by-step instructions how to patch and compile media_build for the TechniSat CableStar Combo HD CI. Though I compiled it on a debian wheezy system with backported kernel v3.10 it might probably also run on different systems (i.e. lower kernel versions) with very similar steps.

Commands preceeded by # are to be run with root privileges, whereas $ only requires user previliges.

First, you need to get the tools for building media_build by installing the packages git, build-essential, libproc-processtable-perl and patchutils. E.g. in debian, you want to run the command

# apt-get install linux-headers-$(uname -r) git build-essential patchutils libproc-processtable-perl

After that, you have to obtain the current media_build stack:

$ git clone git://linuxtv.org/media_build.git
$ cd media_build
$ make download untar

Next step is to apply the patches. Therefore, download the patch from here , save it to your media_build/linux directory (e.g naming it media-az6007-support-Technisat-Cablestar-Combo-HDCI-minus-remote.patch) and run:

$ cd linux
$ patch -p1 < media-az6007-support-Technisat-Cablestar-Combo-HDCI-minus-remote.patch

Now you are ready to make and install media_build, by first switching back to the media_build root directory and then using make and make install to complete installation:

$ cd ..
$ make
# make install

Finally, you need the above mentioned firmware to get the device working:

# wget http://linuxtv.org/downloads/firmware/dvb-usb-terratec-h5-drxk.fw -O /lib/firmware/dvb-usb-technisat-cablestar-hdci-drxk.fw
# wget http://linuxtv.org/downloads/firmware/dvb-usb-terratec-h7-az6007.fw -O /lib/firmware/dvb-usb-terratec-h7-az6007.fw

Credits for this workaround go to the Ubuntuusers.de forum (especially to the users hakunamatata and mczak) as well as Roland Scheidegger for providing the patch.

Linuxtv.org media_build

The patch is included now in the Linuxtv.org build system allowing to use the latest experimental drivers/patches without needing to replace the entire kernel.

The system is available at http://git.linuxtv.org/media_build.git .

Debian

The patch is available in the kernel since version 3.12.6-1, cf. the closed bug (wishlist) report.


External Links