Mystique SaTiX-S2 Dual

From LinuxTVWiki
Revision as of 07:44, 3 March 2011 by FabriceMG (talk | contribs) (→‎Multiple Frontends)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

A nGene based DVB-S2 PCIe card from Mystique. It is identical to the Linux4Media cineS2 DVB-S2 Twin Tuner.


  • PCI-e x1
  • Dual Tuner DVB-S/S2 card
  • Ultra-Low Profile

Components Used


$ 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!!!


$ wget
$ cp ngene_15.fw /lib/firmware/


$ hg clone
$ 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:

 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.

Another way for create multiple adapter:

The option "one_adapter" in module ngene create one or two apdater.

For ubuntu, create one file in "/etc/modprobe.d/dvb.conf" and add "options ngene one_adapter=0" or "options ngene one_adapter=1".

For one adapter:

options ngene one_adapter=1

For two adapter:

options ngene one_adapter=0

External Links