Mystique SaTiX-S2 Dual
A nGene based DVB-S2 PCIe card from Mystique. It is identical to the Linux4Media cineS2 DVB-S2 Twin Tuner.
Overview/Features
- PCI-e x1
- Dual Tuner DVB-S/S2 card
- Ultra-Low Profile
Components Used
- PCIe bridge MICRONAS APB 7202A B2
- Dual demodulator STM STV0900B
- Tuner STM STV6110A
- Dual LNB STM LNBH24
Identification
$ lspci -vvvnn 03:00.0 Multimedia video controller [0400]: Micronas Semiconductor Holding AG Device [18c3:0720] Subsystem: Micronas Semiconductor Holding AG Device [18c3:db01] Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR+ <PERR- INTx+ Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 19 Region 0: Memory at feaf0000 (32-bit, non-prefetchable) [size=64K] Region 1: Memory at feae0000 (64-bit, non-prefetchable) [size=64K] Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [48] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [58] Express (v1) Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 unlimited, L1 unlimited ClockPM- Suprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- Capabilities: [100] Device Serial Number 00-11-3c-20-07-00-00-00 Capabilities: [400] Virtual Channel <?> Kernel driver in use: ngene Kernel modules: ngene
Making it Work
Make sure that the external power supply is connected!!!
Firmware
$ wget http://www.digitaldevices.de/download/ngene_15.fw $ cp ngene_15.fw /lib/firmware/
Driver
$ hg clone http://linuxtv.org/hg/v4l-dvb/ $ cd v4l-dvb $ make $ make install
Note (2010-03-09): v4l-dvb Requires at least kernel 2.6.31
Note (2010-08-26): kernel 2.6.34/35 (maybe 2.6.33 too) has a driver (CONFIG_DVB_NGENE=m) included. Haven't tried yet since my mainboard is dead currently but it looks like that building it manually isn't needed any more.
Multiple Frontends
This device shows as one adapter with multiple frontends. If you want to use software that doesn't support it you can create symlinks. I use the following UDEV rule to ensure that each card keeps the same device number, and each frontend appears as its own adapter:
/etc/udev/rules.d/10-persistent-dvb.rules SUBSYSTEM=="dvb", ATTRS{device}=="0x0374", PROGRAM="/bin/sh -c ' K=%k; K=$${K#dvb}; A=$(echo -n $K | tail -c -1); A=$(echo 100+$A | bc); N=$${K#*.}; N=$(echo -n $N | head -c -1); printf dvb/adapter%%s/%%s0 $A $N; exit 0'", SYMLINK+="%c" SUBSYSTEM=="dvb", ATTRS{device}=="0x0376", PROGRAM="/bin/sh -c ' K=%k; K=$${K#dvb}; A=$(echo -n $K | tail -c -1); A=$(echo 102+$A | bc); N=$${K#*.}; N=$(echo -n $N | head -c -1); printf dvb/adapter%%s/%%s0 $A $N; exit 0'", SYMLINK+="%c" SUBSYSTEM=="dvb", ATTRS{device}=="0x0377", PROGRAM="/bin/sh -c ' K=%k; K=$${K#dvb}; A=$(echo -n $K | tail -c -1); A=$(echo 104+$A | bc); N=$${K#*.}; N=$(echo -n $N | head -c -1); printf dvb/adapter%%s/%%s0 $A $N; exit 0'", SYMLINK+="%c"
The ATTRS{device}=="0x0374" part is the unique identifier of the slot the card is plugged into. The cards cannot be identified uniquely from each other as I have 3 identical cards. The 100, 102, and 104 are the adapter numbers I am using for each card, the +$A adds the frontend number so that the two frontends will appear as adapters 100 and 101.