TechniSat CableStar Combo HD CI: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(Availability in Debian)
 
(13 intermediate revisions by 2 users not shown)
Line 22: Line 22:


===Firmware===
===Firmware===
<strike>dvb-usb-terratec-h7-drxk.fw</strike> dvb-usb-terratec-h5-drxk.fw from [http://linuxtv.org/downloads/firmware/ http://linuxtv.org/downloads/firmware/ 0]
<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 file to your hotplug directory (e.g. /lib/firmware/) and (when applied the patches from below) rename it to dvb-usb-technisat-cablestar-hdci-drxk.fw
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===
Line 31: Line 31:
Log from initialization on kernel 3.9.2:
Log from initialization on kernel 3.9.2:
<pre>
<pre>
[ 5846.524448] usb 1-1.1: dvb_usb_v2: found a 'Technisat Combo HD CI' in cold state
[ 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
[ 5846.524477] usb 1-1.1: dvb_usb_v2: downloading firmware from file 'dvb-usb-terratec-h7-az6007.fw'
[ 6076.545772] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5846.542443] usb 1-1.1: dvb_usb_v2: found a 'Technisat Combo HD CI' in warm state
[ 6076.545776] usb 7-1: Product: CableStar Combo HD CI
[ 5847.759051] usb 1-1.1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[ 6076.545779] usb 7-1: Manufacturer: TechniSat Digital S.A.
[ 5847.759077] DVB: registering new adapter (Technisat Combo HD CI)
[ 5847.761918] usb 1-1.1: dvb_usb_v2: MAC address: c2:f7:14:03:00:00
[ 6076.545782] usb 7-1: SerialNumber: 0008C9D90E19
[ 6076.546385] usb read operation failed. (-32)
[ 5847.763861] drxk: frontend initialized.
[ 6076.546883] usb write operation failed. (-32)
[ 5847.763975] usb 1-1.1: DVB: registering adapter 0 frontend 0 (DRXK)...
[ 6076.547257] usb write operation failed. (-32)
[ 5847.764816] drxk: Could not load firmware file dvb-usb-terratec-h7-drxk.fw.
[ 6076.547262] usb 7-1: dvb_usb_v2: found a 'Technisat CableStar Combo HD CI' in cold state
[ 5847.764819] drxk: Copy dvb-usb-terratec-h7-drxk.fw to your hotplug directory!
[ 6076.547310] usb 7-1: firmware: agent loaded dvb-usb-terratec-h7-az6007.fw into memory
[ 5847.765331] mt2063_attach: Attaching MT2063
[ 5847.765339] usb 1-1.1: dvb_usb_v2: 'Technisat Combo HD CI' successfully initialized and connected
[ 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
[ 5847.813453] drxk: status = 0x639130d9
[ 6077.808988] usb 7-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[ 5847.813458] drxk: detected a drx-3913k, spin A3, xtal 27.000 MHz
[ 6077.809041] DVB: registering new adapter (Technisat CableStar Combo HD CI)
[ 5847.975123] DRXK driver version 0.9.4300
[ 6077.811886] usb 7-1: dvb_usb_v2: MAC address: c2:f7:14:03:00:00
[ 6062.180856] mt2063: detected a mt2063 B3
[ 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>
</pre>


Line 118: Line 126:
Device Status: 0x0001
Device Status: 0x0001
Self Powered
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>
</pre>


===Patch===
===Patch===
These are the needed patchs for the kernel 3.9.2 to get the device working.
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
dvb-usb-ids.h
Line 232: Line 245:
};
};
</pre>
</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==
==External Links==
* [https://www.technisat.com/en_XX/CableStar-Combo-HD-CI/352-2664-1657/ TechniSat CableStar Combo HD CI product page]
* [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://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