TechniSat CableStar Combo HD CI: Difference between revisions
(Availability in Debian) |
|||
(18 intermediate revisions by 2 users not shown) | |||
Line 22: | Line 22: | ||
===Firmware=== |
===Firmware=== |
||
dvb-usb-terratec-h7-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 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 29: | Line 31: | ||
Log from initialization on kernel 3.9.2: |
Log from initialization on kernel 3.9.2: |
||
<pre> |
<pre> |
||
[ |
[ 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) |
|||
[ |
[ 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 |
|||
[ |
[ 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 116: | 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 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 |
||
<pre> |
<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 |
|||
+++ dvb-usb-ids.h 2013-05-16 22:57:24.040221334 +0200 |
|||
--- a/drivers/media/dvb-core/dvb-usb-ids.h |
|||
@@ -366,6 +366,7 @@ |
|||
+++ b/drivers/media/dvb-core/dvb-usb-ids.h |
|||
@@ -365,6 +365,7 @@ |
|||
#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac |
#define USB_PID_TERRATEC_DVBS2CI_V2 0x10ac |
||
#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001 |
#define USB_PID_TECHNISAT_USB2_HDCI_V1 0x0001 |
||
#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002 |
#define USB_PID_TECHNISAT_USB2_HDCI_V2 0x0002 |
||
+#define |
+#define USB_PID_TECHNISAT_USB2_CABLESTAR_HDCI 0x0003 |
||
#define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004 |
#define USB_PID_TECHNISAT_AIRSTAR_TELESTICK_2 0x0004 |
||
#define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500 |
#define USB_PID_TECHNISAT_USB2_DVB_S2 0x0500 |
||
#define USB_PID_CPYTO_REDI_PC50A 0xa803 |
|||
#endif |
|||
</pre> |
</pre> |
||
az6007.c |
az6007.c |
||
<pre> |
<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 |
|||
+++ az6007.c 2013-05-16 22:54:43.145236251 +0200 |
|||
--- a/drivers/media/usb/dvb-usb-v2/az6007.c |
|||
@@ -875,6 +875,8 @@ |
|||
+++ 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)}, |
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)}, |
||
{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2, |
{DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_H7_2, |
||
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)}, |
&az6007_props, "Terratec H7", RC_MAP_NEC_TERRATEC_CINERGY_XS)}, |
||
+ {DVB_USB_DEVICE(USB_VID_TECHNISAT, |
+ {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}, |
{0}, |
||
}; |
}; |
||
</pre> |
</pre> |
||
==External Links== |
|||
* [http://www.technisat.com/index9332.html TechniSat CableStar Combo HD CI product page] |
|||
* [http://www.mail-archive.com/linux-media@vger.kernel.org/msg19473.html Discussion on Linux support on linux-media mailing list] |
|||
===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.