Hallo Leute,
was lange währt, wird endlich gut. Eigentlich hatte ich dieses Thema schon fast aufgegeben, aber der Support aller Beteiligten hat mich bei Laune gehalten. Mittlerweile werkelt seit 4 Tagen eine MaxS8 in meinem Server.
Die Story:
Zunächst hatte ich mit Digital Devices Kontakt. Wir sind dann per Teamviewer und IPMI meines Supermicro X11SSH-CTF Mainboards gemeinsam sämtliche BIOS-Einstellungen durchgegangen. Aber alle vorgenommenen Veränderungen führten nicht zum Erfolg. Die Karte wurde nicht erkannt.
Dann nahm ich mit Supermicro Kontakt auf und habe ein Support-Ticket erstellt. Die zuständigen BIOS-Entwickler haben dann nochmal mit mir gemeinsam ein PCIe-dump erstellt, um herauszufinden, ob die Karte überhaupt vom Mainboard erkannt wird. Aber wie schon zu vermuten war, die Karte wurde nicht erkannt. Mir wurde dann ein Beta-BIOS für mein Mainboard bereitgestellt. Aber auch das half nichts. Zu guter Letzt war ich dann soweit die MaxS8 nach Amerika zu Supermicro in’s Labor zu schicken. Dies wurde aber dann doch noch kurzfristig von Supermicro geblockt.
Mittlerweile gibt es übrigens auch ein offizielles BIOS-Update für mein Mainboard, welches ich Anfang des Jahres installiert habe:
Firmware Revision : 01.15
Firmware Build Time : 02/19/2016
BIOS Version : 2.0
BIOS Build Time : 12/28/2016
CPLD Version : 02.b1.01
Redfish Version : 1.0.1
Die erste MaxS8 wurde damit aber auch nicht erkannt.
Während des gesamten Zeitraums hatte ich immer wieder Kontakt mit Bernhard von LINUX4MEDIA. Nach den gesammelten Erfahrungen wollte ich die MaxS8 nun durch eine DuoFlex ersetzen. Bernhard bot mir dann an, mir zusätzlich noch eine weitere MaxS8 zuzuschicken, um einfach alle Fehler ausschließen zu können.
Vor kurzem kamen dann beide Karten an. Wenn ich ehrlich bin, habe ich zu dem Zeitpunkt nicht daran geglaubt, dass die MaxS8 laufen würde, so dass ich erstmal die DuoFlex in Betrieb genommen habe. Da dieses Mainboard so viele Einstellungsmöglichkeiten bereitstellt und ggf. nur eine einzige bestimmte Konstellation an BIOS-Einstellungen funktioniert, wollte ich mir für die Tests mit der neuen MaxS8 mehr Zeit nehmen.
Der Einbau:
Nun gut, soviel zur Geschichte, der große Tag war gekommen. Ich habe die CineS2 v6.5 und die DuoFlex v4 entfernt und die neue Max S8 in den x8-PCIe-Port meines Mainboards gesteckt und den Server gestartet. In dem Moment habe ich natürlich ziemlich genau die LEDs der MaxS8 beobachtet. In dem x8-Port gibt es ein längeres Training (ca. 30sek). Alle 5 LEDs der MaxS8 blinkten im Sekundentakt. Das war mit der ersten MaxS8 auch schon so. Kurz danach veränderte sich dann das Blinken der LEDs. Die beiden äußeren und die LED in der Mitte blinkten immer abgewechselt, wenn ich mich recht entsinne. Das habe ich so zumindest bei der ersten MaxS8 noch nicht gesehen. Nach ein paar Sekunden hat mein Server dann selbständig einen Reboot durchgeführt und tadaa die beiden unteren LEDS leuchten. Als der Server dann hochgefahren war, habe ich direkt erstmal mit „lspci“ geprüft, ob die Karte nun sichtbar ist. YES, die Karte ist da!
root@omv:~# lspci | grep "Digital Devices"
02:00.0 Multimedia controller: Digital Devices GmbH Device 0007
02:00.0 Multimedia controller [0480]: Digital Devices GmbH Device [dd01:0007]
Subsystem: Digital Devices GmbH Device [dd01:0023]
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
Interrupt: pin A routed to IRQ 16
Region 0: Memory at df400000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [70] MSI: Enable- Count=1/2 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [90] Express (v2) 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, Exit Latency L0s unlimited, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range A, TimeoutDis+, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v1] Vendor Specific Information: ID=0000 Rev=0 Len=00c <?>
Kernel driver in use: ddbridge
Display More
Hier noch Angaben zur genauen Hardware-Revision:
root@omv:~# dmesg | grep "DDBridge: HW"
[ 11.795427] DDBridge: HW 0201000c REGMAP 00010002
Ich habe dann noch ein Bisschen weiter getestet, weil mir aufgefallen ist, dass die neue MaxS8 nach einem Kaltstart grundsätzlich nicht erkannt wird und somit immer ein Reboot erforderlich ist. Nachdem ich dann im BIOS „Link Speed“ auf „Gen1“ gesetzt habe, war das Problem aber gelöst, die Karte wurde nun in diesem Port auch direkt nach dem Kaltstart erkannt. Das Training (ca. 30sek.) findet in dem x8-Port übrigens bei jedem Kaltstart statt, so dass ich mich dazu entschieden habe, die Karte nochmal in den x1-Port zu setzen. Tadaa, die Karte wird ohne Training sofort direkt erkannt. Perfekt, nun konnte es mit der Installation des Treibers losgehen.
Die Installation des Treibers:
Nun habe ich mich also an die Installation des Treibers gemacht, denn unter „/dev/dvb“ war noch kein Adapter zu sehen.
Zunächst habe ich mich an die Anleitung von Digital Devices gehalten und den Treiber 0.9.28-v7a selbst kompiliert. Die Adapter0-7 waren zu sehen, alles andere sah auch gut aus. Was fehlte war allerdings das Bild und die EPG-Informationen im Live-Plugin. Habe alle möglichen Einstellungen (fmode=0, fmode=1 jeweils mit und ohne msi=0) getestet. Aber nix.
Dann habe ich den Treiber von @wolfi.m installiert, und das Bild und die EPG-Informationen waren sofort da. Warum das so war/ist, weiß ich nicht. Es handelte sich auf jeden Fall um dieselbe Treiber-Revision 0.9.28-v7a.
Das Ergebnis:
Hier die Ausgabe des geladenen ddbridge-Moduls:
root@omv:~# dmesg | grep -i ddbridge
[ 11.795232] DDBridge: Digital Devices PCIE bridge driver 0.9.28, Copyright (C) 2010-16 Digital Devices GmbH
[ 11.795399] DDBridge: device name: Digital Devices MAX S8 4/8
[ 11.795427] DDBridge: HW 0201000c REGMAP 00010002
[ 11.795433] DDBridge: link 0 vendor dd01 device 0007 subvendor dd01 subdevice 0023
[ 11.905352] DDBridge: Port 0: Link 0, Link Port 0 (TAB 1): DUAL DVB-S2 MAX
[ 11.905355] DDBridge: Port 1: Link 0, Link Port 1 (TAB 2): DUAL DVB-S2 MAX
[ 11.905356] DDBridge: Port 2: Link 0, Link Port 2 (TAB 3): DUAL DVB-S2 MAX
[ 11.905358] DDBridge: Port 3: Link 0, Link Port 3 (TAB 4): DUAL DVB-S2 MAX
[ 11.905808] DDBridge: 0 netstream channels
[ 11.905811] DVB: registering new adapter (DDBridge)
[ 11.905812] DVB: registering new adapter (DDBridge)
[ 11.905813] DVB: registering new adapter (DDBridge)
[ 11.905814] DVB: registering new adapter (DDBridge)
[ 11.905815] DVB: registering new adapter (DDBridge)
[ 11.905816] DVB: registering new adapter (DDBridge)
[ 11.905817] DVB: registering new adapter (DDBridge)
[ 11.905818] DVB: registering new adapter (DDBridge)
[ 11.935575] DDBridge: Read mxl_fw from link 0
[ 17.970981] DDBridge: Set fmode link 0 = 1
[ 17.971171] ddbridge 0000:02:00.0: DVB: registering adapter 0 frontend 0 (MXL5XX)...
[ 18.019158] ddbridge 0000:02:00.0: DVB: registering adapter 1 frontend 0 (MXL5XX)...
[ 18.067089] ddbridge 0000:02:00.0: DVB: registering adapter 2 frontend 0 (MXL5XX)...
[ 18.115393] ddbridge 0000:02:00.0: DVB: registering adapter 3 frontend 0 (MXL5XX)...
[ 18.116023] ddbridge 0000:02:00.0: DVB: registering adapter 4 frontend 0 (MXL5XX)...
[ 18.116585] ddbridge 0000:02:00.0: DVB: registering adapter 5 frontend 0 (MXL5XX)...
[ 18.117195] ddbridge 0000:02:00.0: DVB: registering adapter 6 frontend 0 (MXL5XX)...
[ 18.117556] ddbridge 0000:02:00.0: DVB: registering adapter 7 frontend 0 (MXL5XX)...
Display More
root@omv:~# lsmod | grep ddbridge ddbridge 102400 56 cxd2099 20480 1 ddbridge dvb_core 122880 1 ddbridge
root@omv:~# modinfo ddbridge filename: /lib/modules/4.4.59-1-pve/updates/dkms/ddbridge.ko version: 0.9.28 license: GPL author: Ralph and Marcus Metzler, Metzler Brothers Systementwicklung GbR description: Digital Devices PCIe Bridge srcversion: B7D0071B39C2757EF6A1654 alias: pci:v0000DD01d00000320sv*sd*bc*sc*i* alias: pci:v0000DD01d00000201sv*sd*bc*sc*i* alias: pci:v0000DD01d00000013sv*sd*bc*sc*i* alias: pci:v0000DD01d00000011sv*sd*bc*sc*i* alias: pci:v0000DD01d00000008sv*sd*bc*sc*i* alias: pci:v0000DD01d00000007sv*sd*bc*sc*i* alias: pci:v0000DD01d00000006sv*sd*bc*sc*i* alias: pci:v0000DD01d00000005sv*sd*bc*sc*i* alias: pci:v0000DD01d00000003sv*sd*bc*sc*i* alias: pci:v0000DD01d00000329sv*sd*bc*sc*i* alias: pci:v0000DD01d00000328sv*sd*bc*sc*i* alias: pci:v0000DD01d00000323sv*sd*bc*sc*i* alias: pci:v0000DD01d00000322sv*sd*bc*sc*i* alias: pci:v0000DD01d00000321sv*sd*bc*sc*i* alias: pci:v0000DD01d00000320sv*sd*bc*sc*i* alias: pci:v0000DD01d00000210sv0000DD01sd00000003bc*sc*i* alias: pci:v0000DD01d00000210sv0000DD01sd00000002bc*sc*i* alias: pci:v0000DD01d00000210sv0000DD01sd00000001bc*sc*i* alias: pci:v0000DD01d00000203sv0000DD01sd00000001bc*sc*i* alias: pci:v0000DD01d00000201sv0000DD01sd00000002bc*sc*i* alias: pci:v0000DD01d00000201sv0000DD01sd00000001bc*sc*i* alias: pci:v0000DD01d00000013sv0000DD01sd00000044bc*sc*i* alias: pci:v0000DD01d00000013sv0000DD01sd00000043bc*sc*i* alias: pci:v0000DD01d00000012sv0000DD01sd00000042bc*sc*i* alias: pci:v0000DD01d00000011sv0000DD01sd00000041bc*sc*i* alias: pci:v0000DD01d00000011sv0000DD01sd00000040bc*sc*i* alias: pci:v0000DD01d00000006sv0000DD01sd00000039bc*sc*i* alias: pci:v0000DD01d00000008sv0000DD01sd00000038bc*sc*i* alias: pci:v0000DD01d00000008sv0000DD01sd00000037bc*sc*i* alias: pci:v0000DD01d00000008sv0000DD01sd00000036bc*sc*i* alias: pci:v0000DD01d00000008sv0000DD01sd00000035bc*sc*i* alias: pci:v0000DD01d00000008sv0000DD01sd00000034bc*sc*i* alias: pci:v0000DD01d00000007sv0000DD01sd00000023bc*sc*i* alias: pci:v0000DD01d00000006sv0000DD01sd00000033bc*sc*i* alias: pci:v0000DD01d00000006sv0000DD01sd00000032bc*sc*i* alias: pci:v0000DD01d00000006sv0000DD01sd00000031bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd0000DB03bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000030bc*sc*i* alias: pci:v0000DD01d00000006sv0000DD01sd00000024bc*sc*i* alias: pci:v0000DD01d00000006sv0000DD01sd00000022bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000021bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000020bc*sc*i* alias: pci:v0000DD01d00000005sv0000DD01sd00000011bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000010bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000003bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000002bc*sc*i* alias: pci:v0000DD01d00000005sv0000DD01sd00000004bc*sc*i* alias: pci:v0000DD01d00000003sv0000DD01sd00000001bc*sc*i* alias: pci:v0000DD01d00000002sv0000DD01sd00000001bc*sc*i* depends: cxd2099,dvb-core vermagic: 4.4.59-1-pve SMP mod_unload modversions parm: adapter_alloc:0-one adapter per io, 1-one per tab with io, 2-one per tab, 3-one for all (int) parm: msi: Control MSI interrupts: 0-disable, 1-enable (default) (int) parm: ci_bitrate: Bitrate in KHz for output to CI. (int) parm: ts_loop:TS in/out test loop on port ts_loop (int) parm: vlan:VLAN and QoS IDs enabled (int) parm: tt: (int) parm: fmode:frontend emulation mode (int) parm: old_quattro:old quattro LNB input order (int) parm: xo2_speed:default transfer speed for xo2 based duoflex, 0=55,1=75,2=90,3=104 MBit/s, default=2, use attribute to change for individual cards (int) parm: alt_dma:use alternative DMA buffer handling (int) parm: stv0910_single:int parm: no_init:do not initialize most devices (int) parm: adapter_nr:DVB adapter numbers (array of short)
Ohne die Option "msi=0" in der "ddbridge.conf" gibt's bei mir kein Bild:
root@omv:~# cat /etc/modprobe.d/ddbridge.conf options ddbridge fmode=1 msi=0
Hier die Ausgabe zu den 8 Adaptern:
root@omv:~# ls /dev/dvb/adapter?/ /dev/dvb/adapter0/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter1/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter2/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter3/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter4/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter5/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter6/: demux0 dvr0 frontend0 net0 /dev/dvb/adapter7/: demux0 dvr0 frontend0 net0
Meine System-Basis sieht mittlerweile übrigens wie folgt aus. Sämtliche Pakete kommen aus etobis Repo, bis auf vnsiserver. vnsiserver habe ich direkt von github kompiliert.
root@omv:~# vdr -V vdr (2.2.0/2.2.0) - The Video Disk Recorder epgsearch (1.0.1.beta5) - search the EPG for repeats and more vnsiserver (1.5.2) - VDR-Network-Streaming-Interface (VNSI) Server epgsearchonly (0.0.1) - Direct access to epgsearch's search menu conflictcheckonly (0.0.1) - Direct access to epgsearch's conflict check menu live (0.3.0) - Live Interactive VDR Environment quickepgsearch (0.0.1) - Quick search for broadcasts
Ich setze den 4.4LTS-Kernel von Proxmox ein. Die Umgebung ist aber momentan noch nicht virtualisiert, da ich sehen möchte, dass bare metal alles läuft.
root@omv:~# uname -a Linux omv 4.4.59-1-pve #1 SMP PVE 4.4.59-87 (Tue, 25 Apr 2017 09:01:58 +0200) x86_64 GNU/Linux
Als OS setze ich openmediavault 3 in der aktuellsten Version ein, die Basis ist debian:
root@omv:~# cat /etc/debian_version 8.8
Die Erkenntnisse:
Was nun klar ist, es gibt verschiedene Revisionen der MaxS8. Neben leichten Unterschieden an Hardwarebauteilen, steht das auch unten auf dem Flügel neben den PCIe-Slot-Kontakten. Hier links, die v1.1 und rechts die v1.2:
Hier die MaxS8 (v1.1) nach der fehlgeschlagenen Initialisierung am PCIe-Port:
Hier die MaxS8 (v1.2) nach der erfolreichen Initialisierung am PCIe-Port:
Ich habe beide MaxS8 nochmal in meinen alten Asus-HTPC eingebaut, um die Firmware-Versionen zu prüfen. Die MaxS8 v1.1 habe ich in telefonischer Anwesenheit von Digital Devices auf die derzeitig aktuelle v1.12b geupdated. Laut "DD Control Center" unter Windows7 waren dann beide MaxS8 auf der aktuellen Firmware-Version 1.12b.
Außerdem gibt es wohl noch eine v1.0, die irgendwo noch einen Jumper hat. Dieser Jumper ist aber sowohl auf der v1.1, als auch auf der v1.2 nicht mehr vorhanden.
Das Fazit:
Ich will hier definitiv kein Fingerpointing auf die Hersteller machen. Denn grundsätzlich haben mich Digital Devices und Supermicro entsprechend deren Möglichkeiten gut in der Fehlereingrenzung unterstützt. Außerdem kann man nun immer noch nicht klar sagen, woran es eigentlich gelegen hat:
- Auf der einen Seite funktioniert die MaxS8 v1.1 an einem PCIe-Port eines herkömmlichen Asus-Mainboard. Die Karte ist also nicht defekt, funktioniert aber trotzdem nicht am PCIe-Port des Supermicro-Mainboards.
- Auf der anderen Seite funktioniert die MaxS8 v1.2 am PCIe-Port des Supermicro-Mainboards.
Ich will dazu hier auch keine Diskussion entfachen. Es ist, wie es ist!
Alles in allem war das eine ganze Menge Arbeit. Aber es hat sich gelohnt. Hatte gestern testweise mal 12 Aufnahmen gleichzeitig für 5min laufen. Die Aufnahmen waren alle fehlerfrei, ohne Verpixelungen. Hammer!
Vielen Dank an alle hier im Forum die mich unterstützt haben. Mein besonderer Dank geht an Bernhard von LINUX4MEDIA für die Bereitstellung des Testequipments und Andreas von Digital Devices für den Support.
Gruß Hoppel