Digital Devices DuoFlex C&T

From LinuxTVWiki
Revision as of 19:48, 11 November 2013 by Wild Penguin (talk | contribs) (→‎Scanning for Channels)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview/Features

* PCI-e x1 (Bridge)
* Recieve  Dual DVB-C/DVB-T in high definition simultaneously
* Independent descrambling of two transponders
* DVB-C HDTV H264 decoding
* DVB-T SD Mpeg2 decoding
* Mixed Mode feature (2x DVB-C / 2x DVB-T / DVB-C & DVB-T)

Identification

PCI id: Multimedia controller: Device dd01:0003

and an extra PCI Bridge: PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02)

Making it work

Update July 2013: Kernel driver support is a mess! After the driver author (Oliver Endriss aka UFO) submitted to mainline, mainline was refactored in a way which broke the drivers for many devices. For now, the author does not want to work on fixing this, and instead provides instructions on patching in the dev version. This does not always work for the latest kernels. If you are contemplating buying this hardware, prepare for extra frustration before everything works.

[UPDATE May 2013: AFAICT, recent(-ish - after 3.6.x at least) kernels have support for DuoFlex C/T out-of-the box, but if you have a CI you will need the media_build_experimental drivers below. Also a more recent card (miniPCIe, or Cine C/T/S2 card) might require it. So, unless you have a CI, test in-kernel drivers first, then please report here!]

copied from VDR Portal (See Link below)

This uses Sources from: http://linuxtv.org/hg/~endriss/ngene-octopus-test: - ngene: cineS2(v3/v4/v5), SatixS2, PCIe-Bridge, mini PCIe-Bridge - ddbridge: Octopus, Octopus LE, cineS2(v6) - DuoFlex-S2, DuoFlex-CT, CI

and from http://powarman.dyndns.org/hgwebdir.cgi/v4l-dvb-saa716x: - TT S2-6400

Compilable with Kernel 2.6.35 and higher (2.6.30 and below doesn't work for sure).

How to Compile:

1. Download modified media_build:

hg clone http://linuxtv.org/hg/~endriss/media_build_experimental


2. Download Drivers and Compile:

cd media_build_experimental
make download
make untar

3. optional: deselect unused modules:

make menuconfig

4. Build Drivers

make

5. install modules

make install
modprobe ddbridge
modprobe ngene

Scanning for Channels

DVB-C:

w_scan -fc -c DE -t 3 -F > channels.dvb

DVB-T:

w_scan -ft -c DE -t 3 -F > channels.dvb

The C/T card has two frontends, frontend0 is QAM for DVB-C and frontend1 is OFDM for DVB-T.

The above incorrect for at least my card, DD Octopus dual C/T card. Both tuners can receive both dvb-c and dvb-t, selectable via software, e.x. dvb-fe-tool. Only one frontend node is created per tuner, residing in /dev/dvb/adapterX depending on which adapter_alloc options was used - by default every tuner will get their own directory, otherwise they will share it with other tuners according to the option and their connection to the bridge (as frontendX, and demuxX).

Adding CI

There's experimental (i.e. might be buggy, annoying and difficult to set up) support for Flex CI in the experimental drivers above. Also, the module needed - cxd2099 - is in staging drivers in current kernels (at least >=3.9.x), but that one seems to not be usable at all since it has not redirect method support.

Copied from vdrportal.de (link below) and from [1]

Redirection of TS streams through CI modules is now supported through /sys/class/ddbridge/ddbridge0/redirect. It only works with cards based on the ddbridge PCIe bridge, not with nGene based cards.

It is set up in such a way that you can write "AB CD" to a "redirect" attribute and data from input B of card A is then piped through port D (meaning TAB (D+1) which uses output D and input 2*D for CI io) of card C and then shows up in the demux device belonging to input B (input (B&1) of TAB (B/2+1)) of card A.

                           OCTOPUS BRIDGE

                        +----------------+
  Tuner 0 -> Input 0 -> |                |
                        | Port 0 - TAB 1 | -> Output 0
  Tuner 1 -> Input 1 -> |                |
                        +----------------+
  Tuner 0 -> Input 2 -> |                |
                        | Port 1 - TAB 2 | -> Output 1
  Tuner 1 -> Input 3 -> |                |
                        +----------------+
  Tuner 0 -> Input 4 -> |                |
                        | Port 2 - TAB 3 | -> Output 2
  Tuner 1 -> Input 5 -> |                |
                        +----------------+
  Tuner 0 -> Input 6 -> |                |
                        | Port 3 - TAB 4 | -> Output 3
  Tuner 1 -> Input 7 -> |                |
                        +----------------+


One can redirect currently one input to the CAM (or other, if several are installed) by:

echo "00 01" > /sys/class/ddbridge/ddbridge0/redirect

This will work for Input 0 if there's a CAM in Output 1 (TAB2). Note:: (Currently) you need to do this right after loading modules after reboot, before using the tuners in any way.

To find out your Input and Output numbers, look for this in dmesg:

DDBridge driver detected: Digital Devices Octopus DVB adapter
HW 00010004 REG 00010001
DDBridge 0000:02:00.0: irq 44 for MSI/MSI-X
Port 0 (TAB 1): DUAL DVB-C/T
Port 1 (TAB 2): NO MODULE
Port 2 (TAB 3): CI
Port 3 (TAB 4): NO MODULE

To have device nodes in a usable configuration for software, see adapter_alloc parameter. For example, put this in modprobe.d/ddbridge.conf:

options ddbridge adapter_alloc=3

See also