OSCam Server mit S02 und HD02 in Smargo an Synology Diskstation mit Intel Atom Prozessor
Diese Anleitung funktioniert bei folgenden Geräten:
DS713+ DS2413+ DS1512+ DS1812+ RS812+/RS812RP+ RS2212+/RS2212RP+
DS411+ DS411+II DS1511+ DS2411+ RS2211+/RS2211RP+ DS710+ DS1010+ RS810+/RS810RP+
Bitte lest euch die Anleitung einmal komplett durch und schaut ob ihr alles verstanden habt, oder ob etwas unklar ist, bevor ihr startet.
Soooo, nach langer Recherche im Internet und zahllosen Nächten habe ich es geschafft OSCam auf meiner Diskstation 1812+ zum laufen zu bekommen.
Das möchte ich nun mit euch teilen. Die Informationen im Netz beziehen sich meist nur auf kleinere Geräte mit ARM Prozessor oder laufen völlig am Thema vorüber.
Nachfolgend also ein Tutorial um auf seiner Intel Atom Based Diskstation einen OSCam Server mit S02 und HD02 support ans laufen zu bringen.
Das ist mein erstes Tutorial, bitte seht es mir nach wenn es nicht perfekt ist.
Als erstes mal zu meinem Grundsystem:
Ich verwende eine Synology Diskstation 1812+ mit 4 x WD Red 3TB Platten. Als DSM habe ich die aktuelle 4.1 installiert.
Ziel war es einen OSCam Server mit S02 und HD02 über Smargo Reader im lokalen Netzwerk zu verteilen.
Läuft mittlerweile seit 3 Monaten ohne einen Ausfall.
Dann legen wir mal los:
Als erstes muss auf der Diskstation Telnet oder SSH freigegeben werden. Falls die Diskstation nicht hinter einer Firewall, oder sonst irgendwie zugänglich ist, rate ich euch von Telnet ab.
Falls ihr doch Telnet nutzen wollt, sollte die Firewall diesen Port auf jeden Fall von außen blocken. Also Port 23/TCP. Als nächstes verbinden wir uns über Telnet oder SSH mit der Diskstation.
Dort melden wir uns mit dem Benutzer root und dem Adminkennwort auf der Konsole an. Jetzt kopieren wir die USB-Module in den Ordner /lib/modules
Die Module sind für die Atom Cedarview CPU kompiliert und laufen bisher ohne Probleme. Im Paket sind die Treiber für ftdi_sio, pl2303 und usbseriell enthalten.
Den pl2303 benötigen wir für unser Vorhaben eigentlich nicht, man kann aber nie wissen was noch kommt…
Die Dateien müssen wir mit chmod auf 644 flaggen. Wer nicht weiß wie es funktioniert:
chmod 644 ftdi_sio.ko pl2303.ko usbseriell.ko im Ordner /lib/modules ausführen.
Als nächstes erstellen wir und im Ordner /usr/syno/etc/rc.d/ ein Script. Analog zur Namenskonvention der Diskstation habe ich mein Script S99USBModules.sh genannt.
Um das Script zu erstellen nutzen wir einfach vi. Im Ordner einfach nur vi S99USBModules.sh eingeben und das Fenster mit folgendem Inhalt füllen.
Um den Editiermodus zu starten einfach auf i wie Insert drücken.
Im die Datei abzuspeichern nutzen wird folgende Methode. CTRL + C, ESC, Doppelpunkt, wq!, Enter
CTRL + C, ESC für Editiermodus verlassen
Doppelpunkt für „Menü“ öffnen
wq!, Enter für write - quit
EDIT – Ich habe mittlerweile festgestellt, dass das Mapping in OSCam über ttyUSB nicht das wahre ist.
Wer diese trotzdem nutzen möchte, kann im Script einfach das # bei den mknods entfernen.
Das gerade erstellte Script flaggen wir nun mit 755. Anschließend kann das Script über
./usr/syno/etc/rc.d/S99USBModules.sh start gestartet werden. Soweit, so gut…
Der positive Nebeneffekt an dieser Stelle ist, dass alle Scripts aus dem Ordner /r.cd/ automatisch mit der Diskstation gestartet wird.
Hier ist also keine Anpassung mehr nötig. Nach dem manuellen Start des Scripts führen wir nur den Befehl dmesg aus.
Mit diesem Befehl (Driver Message) sollte nun folgendes im Output erkennbar sein.
Jetzt wird es Zeit die Smargos einzustecken. Sollte jetzt im Script die ttyUSB Veriante angewendet worden sein, sollte der Output von dmesg nur folgendermaßen aussehen.
Als nächstes erstellen wir uns einen Public Ordner.
mkdir /volume1/public
und wechseln per cd /volume1/public in den Ordner
Hier holen wir uns jetzt per wget das Bootstrap für unsere Synology.
Mittlerweile funktioniert das auf über das Paketzentrum mit der entsprechenden Repository.
Ich habe es bei mir nicht ausprobiert, hatte mir das Paket bereits vorher manuell installiert.
Falls Ihr diesen Weg gehen wollt, gibt es genügend Informationen dazu im Web.
Manuelle Installation:
wget
chmod +x syno-i686-bootstrap_1.2-7_i686.xsh
sh syno-i686-bootstrap_1.2-7_i686.xsh
Das Bootstrap wird nun installiert.
Per vi öffnen wir unter /etc die Datei profile Hier fügen wir beim Pfad folgendes ein.
/opt/bin:/opt/sbin:
Der Doppelpunkt dient als Trennzeichen. Die Datei wird wieder ESC : wq! Enter gespeichert.
In der Datei /root/.profile kommentieren wir per vi die Zeilen PATH und export Path mit einem # aus.
Wir speichern auch diese Datei wieder ab. In der Datei /etc/rc.local kommentieren wir per vi die Zeile [ -x /etc/rc.optware ] && /etc/rc.optware start mit einem # aus.
Datei wieder speichern.
Jetzt müssen wir unsere neue Optware noch mit dem System verknüpfen. Dazu müssen wir das alte Mount erst einmal lösen.
Das tun wir mit umount /opt Des weiteren entfernen wir den vorhandenen /opt Ordner mit rmdir /opt
Nun verlinken wir die neue Optware mit dem Linux System ln -s /volume1/@optware /opt
Damit die Optware auch automatisch gestartet wird, bauen wir das Startscript im System ein. Hierzu laden wir uns das optware Script aus dem Internet
wget
Erstellen des Startordners mkdir –p /usr/local/etc/rc.d/
Verschieben des Scripts mv optware.sh /usr/local/etc/rc.d/
Flaggen der Berechtigung chmod +x /usr/local/etc/rc.d/optware.sh
Anschließend sollte die Diskstation neu gestartet werden. Nach dem Reboot melden wir uns wieder auf der Konsole der Diskstation an.
Im nächsten Schritt richten wir uns eine chroot Umgebung ein. Wir können uns diese wieder per wget aus dem Internet.
wget
Auf der Diskstation entpacken wir jetzt die runtergeladene Datei und bringen die chroot Umgebung zum laufen.
Für “Faule” gibt es hier noch ein Script für den Start der chroot Umgebung. Es sorgt dafür, dass /dev und /proc zur Verfügung stehen, und Tools wir „df“ funktionieren.
Vielen Dank an satware.com für die Entwicklung des Scripts und die Anleitung für die chroot Umgebung. Das Script bekommen wir per
wget
Wir ändern die Berechtigung über chmod +x ~/debian-chroot.sh
Jetzt kann die chroot Umgebung einfach mit ~/debian-chroot.sh gestartet werden.
Mit exit oder CTRL+D kann die Umgebung wieder verlassen werden.
Im nächsten Schritt werden wir uns OSCam für die Diskstation neu kompilieren. Es gibt zwar mittlerweile Downloads für die Diskstation im Internet, aber leider nicht für die Intel Atom CPUs mit Cedarview.
Für das Cross compiling benötigen wir nun das DSM Tool Chain. Das Paket kann auf
Hier laden wir uns den aktuellen Tool Chain (momentan DSM 4.1) herunter. Als CPU Architektur nehmen wir Intel x86 Linux 3.2.11 (Cedarview). Es gibt eines für x86 und eines für x64.
Ich habe beide heruntergeladen. Desweiteren benötigen wir einen Linux PC. Hierfür habe ich mir das aktuelle Debian Paket als VM unter Parallels installiert.
Ubuntu oder sonstige Linux Derivate funktionieren natürlich auch. Wir installieren uns ein Minimal System. Danach installieren wir die notwendigen Pakete sofern noch nicht vorhanden.
sudo apt-get install build-essential g++ libssl-dev libusb-1.0-0-dev libpcsclite-dev
Nach der Installation erstellen wir uns die notwendigen Verzeichnisse um OSCam per SVN zu laden.
sudo mkdir /home/oscam-svn/
sudo mkdir /home/toolchain/
sudo chmod 777 /home/oscam-svn/ /home/toolchain/
Die heruntergeladenen Toolchain Dateien kopieren wir nun auf den Linux PC in den Ordner /home/toolchain und entpacken diese anschließend
tar –xvzf gcc420_glibc236_x64_cedarview-GPL.tar und
tar –xvzf gcc421_glibc236_x86_cedarview-GPL.tar
Nun wechseln wir in den Ordner /home/oscam-svn/ und führen diesen Befehl aus um das Paket zu laden.
svn co
svn up CMakeLists.txt
mkdir build
Wir erstellen uns ein neues toolchain im Ordner /home/oscam-svn/toolchains
Einfach in den Ordner wechseln und vi toolchain-i686-Diskstation.cmake eingeben.
In diese Datei tragen wir dann folgenden Inhalt ein.
Zusätzlich benötigen wir noch den Quellcode von libusb. Den gibt es hier
Wir kopieren die Datei nach /home/oscam-svn/
Wir wechseln in den Ordner cd /home/oscam-svn/
und entpacken den Inhalt mit tar –xvjf libusb-1.0.9.tar.bz2
Das Paket müssen wir jetzt noch für unsere Diskstation cross compilen.
cd /home/oscam-svn/libusb-1.0.9
CC=/home/toolchain/i686-linux-gnu/bin/i686-linux-gnu-gcc ./configure --host=i686-linux --target=i686-linux --prefix=/home/toolchain/i686-linux-gnu/ --exec-prefix=/home/toolchain/i686-linux-gnu/
make
make install
Nun sind alle Vorbereitungen abgeschlossen und es kann endlich mit dem kompilieren von OSCam losgehen.
cd /home/oscam-svn/build/
cmake -DWEBIF=1 -DLIBUSBDIR=/home/toolchain/i686-linux-gnu -DCMAKE_TOOLCHAIN_FILE=../toolchains/toolchain-i686-Diskstation.cmake DHAVE_LIBUSB=1 ..
make
Das Ergebnis in Form der oscam Datei kopieren wir auf unsere Diskstation. Ich habe mir in der Root einfach den Ordner oscam erstellt.
Die Datei wird über
chmod +x oscam noch geflagged und ist nun lauffähig.
EDIT – Falls euch das zu umständlich ist, findet ihr in der Database den fertig kompilierten OSCam Server. Ich werde auch von Zeit zu Zeit dort eine neue Version einstellen.
Nun führen wir auf der Diskstation ein Update der IPKG durch
ipkg update
ipkg list
Wir benötigen nun noch die Pakete gcc, libgcrypt und libusb
ipkg install gcc
ipkg install libgcrypt
ipkg install libusb
Der Output in der Konsole sollte dann folgendermaßen aussehen.
Als nächstes müssen die OSCam Konfigurationsdateien auf den Server kopiert werden.
Die oscam.conf Datei könnte z.B. so aussehen
oscam.server (Bei device = kann entwerder /dev/ttyUSB0 und /dev/ttyUSB1 eingetragen werden, oder die Device ID aus der Diskstation.
Diese kann mit dem folgenden Befehl aus der Diskstation ausgelesen werden)
cat /proc/bus/usb/devices | grep -E "^([TSPD]:.*|)$"
oscam.user
oscam.provid, oscam.services und oscam.srvid sollten direct aus dem Internet geladen warden.
Damit ist der OSCam Server fertig konfiguriert. Damit wir uns jetzt um den Systemstart keine Gedanken mehr machen müssen, erstellen wir uns nun noch ein Script für den automatischen Start.
Wir erstellen wieder mi vi im Ordner /usr/syno/etc/rc.d/ eine Datei S99OSCam.sh Der Inhalt der Datei sollte folgendermaßen aussehen.
Speichern über CTRL + C, ESC, wq!, Enter. Über chmod 755 S99OSCam.sh flaggen wir wieder die Berechtigung. Falls wir nun die Diskstation neu starten, wird automatisch der OSCam Server gestartet.
Falls der Ort für den OSCam nicht /oscam ist, müssen natürlich die Scripts und Configdateien angepasst werden.
Um das System jetzt noch perfekt zu machen, erstellen wir zum Schluss noch eine Script, welches regelmäßig über Crontab unseren OSCam Server überprüft.
Es sollte nicht nur schauen ob der Service gestartet ist, sondern auch Warnings und Panics aus der Log auswerten. Somit ist sichergestellt, dass unser Dienst nicht nur gestartet ist, sondern auch funktioniert.
Dazu erstellen wir uns im Ordner /oscam per vi das Script srvcheck.sh Der Inhalt der Datei sollte so aussehen.
Die Datei flaggen wir wieder per chmod auf 755. Um das Script jetzt noch automatisch ablaufen zu lassen öffnen wir mit vi die Datei /etc/crontab und tragen den Service ein.
Falls der Check z.B. alle Zehn Minuten gestartet werden soll, tragen wir vorne 10 und beim Rest einen Stern ein. Das Script liegt dann unter /oscam/srvcheck.sh
Jetzt wird unser Dienst alle Zehn Minuten überprüft und bei Bedarf abgebrochen, neu gestartet und in eine separate Logdatei mit dem Namen oscamlog.failed kopiert.
Das war es erstmal. Wer alles richtig gemacht hat kann sich über einen OSCam Server auf seiner Linkstation freuen.
EDIT – Lib Modules, Scripte und OSCam Server lege ich in der Database ab.
Diese Anleitung funktioniert bei folgenden Geräten:
DS713+ DS2413+ DS1512+ DS1812+ RS812+/RS812RP+ RS2212+/RS2212RP+
DS411+ DS411+II DS1511+ DS2411+ RS2211+/RS2211RP+ DS710+ DS1010+ RS810+/RS810RP+
Bitte lest euch die Anleitung einmal komplett durch und schaut ob ihr alles verstanden habt, oder ob etwas unklar ist, bevor ihr startet.
Soooo, nach langer Recherche im Internet und zahllosen Nächten habe ich es geschafft OSCam auf meiner Diskstation 1812+ zum laufen zu bekommen.
Das möchte ich nun mit euch teilen. Die Informationen im Netz beziehen sich meist nur auf kleinere Geräte mit ARM Prozessor oder laufen völlig am Thema vorüber.
Nachfolgend also ein Tutorial um auf seiner Intel Atom Based Diskstation einen OSCam Server mit S02 und HD02 support ans laufen zu bringen.
Das ist mein erstes Tutorial, bitte seht es mir nach wenn es nicht perfekt ist.
Als erstes mal zu meinem Grundsystem:
Ich verwende eine Synology Diskstation 1812+ mit 4 x WD Red 3TB Platten. Als DSM habe ich die aktuelle 4.1 installiert.
Ziel war es einen OSCam Server mit S02 und HD02 über Smargo Reader im lokalen Netzwerk zu verteilen.
Läuft mittlerweile seit 3 Monaten ohne einen Ausfall.
Dann legen wir mal los:
Als erstes muss auf der Diskstation Telnet oder SSH freigegeben werden. Falls die Diskstation nicht hinter einer Firewall, oder sonst irgendwie zugänglich ist, rate ich euch von Telnet ab.
Falls ihr doch Telnet nutzen wollt, sollte die Firewall diesen Port auf jeden Fall von außen blocken. Also Port 23/TCP. Als nächstes verbinden wir uns über Telnet oder SSH mit der Diskstation.
Dort melden wir uns mit dem Benutzer root und dem Adminkennwort auf der Konsole an. Jetzt kopieren wir die USB-Module in den Ordner /lib/modules
Die Module sind für die Atom Cedarview CPU kompiliert und laufen bisher ohne Probleme. Im Paket sind die Treiber für ftdi_sio, pl2303 und usbseriell enthalten.
Den pl2303 benötigen wir für unser Vorhaben eigentlich nicht, man kann aber nie wissen was noch kommt…
Die Dateien müssen wir mit chmod auf 644 flaggen. Wer nicht weiß wie es funktioniert:
chmod 644 ftdi_sio.ko pl2303.ko usbseriell.ko im Ordner /lib/modules ausführen.
Als nächstes erstellen wir und im Ordner /usr/syno/etc/rc.d/ ein Script. Analog zur Namenskonvention der Diskstation habe ich mein Script S99USBModules.sh genannt.
Um das Script zu erstellen nutzen wir einfach vi. Im Ordner einfach nur vi S99USBModules.sh eingeben und das Fenster mit folgendem Inhalt füllen.
Um den Editiermodus zu starten einfach auf i wie Insert drücken.
Code:
#!/bin/sh
MODULES_DIR="/lib/modules"
MODULES="usbserial.ko pl2303.ko ftdi_sio.ko"
[/SIZE][/FONT][COLOR=#333333]start_modules() { echo "- Load modules -"[/COLOR]
[COLOR=#333333]for i in $MODULES; do[/COLOR]
[COLOR=#333333]echo "Loading $i"[/COLOR]
[COLOR=#333333]/sbin/insmod $MODULES_DIR/$i[/COLOR]
[COLOR=#333333]done[/COLOR]
[COLOR=#333333]}
[/COLOR][FONT=arial]
[/FONT][COLOR=#333333]stop_modules(){[/COLOR]
[COLOR=#333333]echo "- Unload modules -"[/COLOR]
[COLOR=#333333]for i in $MODULES; do[/COLOR]
[COLOR=#333333]echo "Unloading $i"[/COLOR]
[COLOR=#333333]/sbin/rmmod $MODULES_DIR/$i[/COLOR]
[COLOR=#333333]done[/COLOR]
[COLOR=#333333]}
[/COLOR][FONT=arial]
case "$1" in
start)
start_modules
;;
stop)
stop_modules
;;
*)
echo "usage: $0 { start | stop }" >&2
exit 1
;;
esac
[/FONT]
Im die Datei abzuspeichern nutzen wird folgende Methode. CTRL + C, ESC, Doppelpunkt, wq!, Enter
CTRL + C, ESC für Editiermodus verlassen
Doppelpunkt für „Menü“ öffnen
wq!, Enter für write - quit
EDIT – Ich habe mittlerweile festgestellt, dass das Mapping in OSCam über ttyUSB nicht das wahre ist.
Wer diese trotzdem nutzen möchte, kann im Script einfach das # bei den mknods entfernen.
Das gerade erstellte Script flaggen wir nun mit 755. Anschließend kann das Script über
./usr/syno/etc/rc.d/S99USBModules.sh start gestartet werden. Soweit, so gut…
Der positive Nebeneffekt an dieser Stelle ist, dass alle Scripts aus dem Ordner /r.cd/ automatisch mit der Diskstation gestartet wird.
Hier ist also keine Anpassung mehr nötig. Nach dem manuellen Start des Scripts führen wir nur den Befehl dmesg aus.
Mit diesem Befehl (Driver Message) sollte nun folgendes im Output erkennbar sein.
[13452.286516] usbcore: registered new interface driver usbserial
[13452.292738] USB Serial support registered for generic
[13452.298071] usbcore: registered new interface driver usbserial_generic
[13452.304641] usbserial: USB Serial Driver core
[13452.351704] USB Serial support registered for pl2303
[13452.356948] usbcore: registered new interface driver pl2303
[13452.362545] pl2303: Prolific PL2303 USB to serial adaptor driver
[13452.385579] USB Serial support registered for FTDI USB Serial Device
[13452.392926] usbcore: registered new interface driver ftdi_sio
[13452.398795] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver
Jetzt wird es Zeit die Smargos einzustecken. Sollte jetzt im Script die ttyUSB Veriante angewendet worden sein, sollte der Output von dmesg nur folgendermaßen aussehen.
[13563.325894] usb 2-4: new high-speed USB device number 4 using ehci_hcd
[13563.468359] Got empty serial number. Generate serial number from product.
[13563.477175] hub 2-4:1.0: USB hub found
[13563.481156] hub 2-4:1.0: 4 ports detected
[13563.769746] usb 2-4.1: new full-speed USB device number 5 using ehci_hcd
[13563.875900] ftdi_sio 2-4.1:1.0: FTDI USB Serial Device converter detected
[13563.883644] usb 2-4.1: Detected FT232BM
[13563.887566] usb 2-4.1: Number of endpoints 2
[13563.891898] usb 2-4.1: Endpoint 1 MaxPacketSize 64
[13563.896824] usb 2-4.1: Endpoint 2 MaxPacketSize 64
[13563.901710] usb 2-4.1: Setting MaxPacketSize 64
[13563.906469] ftdi_sio ttyUSB0: Unable to read latency timer: -32
[13563.913773] usb 2-4.1: FTDI USB Serial Device converter now attached to ttyUSB0
[13564.006794] usb 2-4.2: new full-speed USB device number 6 using ehci_hcd
[13564.111982] ftdi_sio 2-4.2:1.0: FTDI USB Serial Device converter detected
[13564.119251] usb 2-4.2: Detected FT232BM
[13564.123181] usb 2-4.2: Number of endpoints 2
[13564.127557] usb 2-4.2: Endpoint 1 MaxPacketSize 64
[13564.132431] usb 2-4.2: Endpoint 2 MaxPacketSize 64
[13564.137320] usb 2-4.2: Setting MaxPacketSize 64
[13564.142105] ftdi_sio ttyUSB1: Unable to read latency timer: -32
[13564.148796] usb 2-4.2: FTDI USB Serial Device converter now attached to ttyUSB1
[13564.239673] usb 2-4.4: new high-speed USB device number 7 using ehci_hcd
[13564.342129] Got empty serial number. Generate serial number from product.
[13564.349350] drivers/usb/core/hub.c (2047) Same device found. Change serial to ffffffd6ffffffa3ffffffebffffffc0
[13564.362188] hub 2-4.4:1.0: USB hub found
[13564.366379] hub 2-4.4:1.0: 4 ports detected
[13580.261222] usb 2-4: USB disconnect, device number 4
[13580.266261] usb 2-4.1: USB disconnect, device number 5
[13580.272061] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[13580.280799] ftdi_sio 2-4.1:1.0: device disconnected
[13580.286605] usb 2-4.2: USB disconnect, device number 6
[13580.292413] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
[13580.302350] ftdi_sio 2-4.2:1.0: device disconnected
[13580.311001] usb 2-4.4: USB disconnect, device number 7
[13583.913455] usb 2-3: new high-speed USB device number 8 using ehci_hcd
[13584.058053] Got empty serial number. Generate serial number from product.
[13584.066212] hub 2-3:1.0: USB hub found
[13584.070193] hub 2-3:1.0: 4 ports detected
[13584.357436] usb 2-3.1: new full-speed USB device number 9 using ehci_hcd
[13584.461735] ftdi_sio 2-3.1:1.0: FTDI USB Serial Device converter detected
[13584.469382] usb 2-3.1: Detected FT232BM
[13584.473371] usb 2-3.1: Number of endpoints 2
[13584.477763] usb 2-3.1: Endpoint 1 MaxPacketSize 64
[13584.482685] usb 2-3.1: Endpoint 2 MaxPacketSize 64
[13584.487540] usb 2-3.1: Setting MaxPacketSize 64
[13584.492397] ftdi_sio ttyUSB0: Unable to read latency timer: -32
[13584.498804] usb 2-3.1: FTDI USB Serial Device converter now attached to ttyUSB0
[13584.589371] usb 2-3.2: new full-speed USB device number 10 using ehci_hcd
[13584.694923] ftdi_sio 2-3.2:1.0: FTDI USB Serial Device converter detected
[13584.702320] usb 2-3.2: Detected FT232BM
[13584.706220] usb 2-3.2: Number of endpoints 2
[13584.710527] usb 2-3.2: Endpoint 1 MaxPacketSize 64
[13584.715382] usb 2-3.2: Endpoint 2 MaxPacketSize 64
[13584.720253] usb 2-3.2: Setting MaxPacketSize 64
[13584.725019] ftdi_sio ttyUSB1: Unable to read latency timer: -32
[13584.732591] usb 2-3.2: FTDI USB Serial Device converter now attached to ttyUSB1
[13584.824262] usb 2-3.4: new high-speed USB device number 11 using ehci_hcd
[13584.926683] Got empty serial number. Generate serial number from product.
[13584.933526] drivers/usb/core/hub.c (2047) Same device found. Change serial to ffffffd6ffffffa3ffffffebffffffc0
[13584.944283] hub 2-3.4:1.0: USB hub found
[13584.948561] hub 2-3.4:1.0: 4 ports detected
[13587.010209] usb 2-3: USB disconnect, device number 8
[13587.015215] usb 2-3.1: USB disconnect, device number 9
[13587.021024] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[13587.029947] ftdi_sio 2-3.1:1.0: device disconnected
[13587.035586] usb 2-3.2: USB disconnect, device number 10
[13587.041370] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
[13587.050224] ftdi_sio 2-3.2:1.0: device disconnected
[13587.057394] usb 2-3.4: USB disconnect, device number 11
[13601.019421] usb 7-1: new full-speed USB device number 2 using uhci_hcd
[13601.214961] ftdi_sio 7-1:1.0: FTDI USB Serial Device converter detected
[13601.222379] usb 7-1: Detected FT232BM
[13601.226222] usb 7-1: Number of endpoints 2
[13601.230787] usb 7-1: Endpoint 1 MaxPacketSize 64
[13601.235813] usb 7-1: Endpoint 2 MaxPacketSize 64
[13601.240817] usb 7-1: Setting MaxPacketSize 64
[13601.248878] ftdi_sio ttyUSB0: Unable to read latency timer: -32
[13601.258534] usb 7-1: FTDI USB Serial Device converter now attached to ttyUSB0
[13630.984197] usb 7-2: new full-speed USB device number 3 using uhci_hcd
[13631.181042] ftdi_sio 7-2:1.0: FTDI USB Serial Device converter detected
[13631.188319] usb 7-2: Detected FT232BM
[13631.192307] usb 7-2: Number of endpoints 2
[13631.196802] usb 7-2: Endpoint 1 MaxPacketSize 64
[13631.201848] usb 7-2: Endpoint 2 MaxPacketSize 64
[13631.206915] usb 7-2: Setting MaxPacketSize 64
[13631.213257] ftdi_sio ttyUSB1: Unable to read latency timer: -32
[13631.220124] usb 7-2: FTDI USB Serial Device converter now attached to ttyUSB1
Als nächstes erstellen wir uns einen Public Ordner.
mkdir /volume1/public
und wechseln per cd /volume1/public in den Ordner
Hier holen wir uns jetzt per wget das Bootstrap für unsere Synology.
Mittlerweile funktioniert das auf über das Paketzentrum mit der entsprechenden Repository.
Ich habe es bei mir nicht ausprobiert, hatte mir das Paket bereits vorher manuell installiert.
Falls Ihr diesen Weg gehen wollt, gibt es genügend Informationen dazu im Web.
Manuelle Installation:
wget
Sie müssen registriert sein, um Links zu sehen.
chmod +x syno-i686-bootstrap_1.2-7_i686.xsh
sh syno-i686-bootstrap_1.2-7_i686.xsh
Das Bootstrap wird nun installiert.
Per vi öffnen wir unter /etc die Datei profile Hier fügen wir beim Pfad folgendes ein.
/opt/bin:/opt/sbin:
Der Doppelpunkt dient als Trennzeichen. Die Datei wird wieder ESC : wq! Enter gespeichert.
In der Datei /root/.profile kommentieren wir per vi die Zeilen PATH und export Path mit einem # aus.
Wir speichern auch diese Datei wieder ab. In der Datei /etc/rc.local kommentieren wir per vi die Zeile [ -x /etc/rc.optware ] && /etc/rc.optware start mit einem # aus.
Datei wieder speichern.
Jetzt müssen wir unsere neue Optware noch mit dem System verknüpfen. Dazu müssen wir das alte Mount erst einmal lösen.
Das tun wir mit umount /opt Des weiteren entfernen wir den vorhandenen /opt Ordner mit rmdir /opt
Nun verlinken wir die neue Optware mit dem Linux System ln -s /volume1/@optware /opt
Damit die Optware auch automatisch gestartet wird, bauen wir das Startscript im System ein. Hierzu laden wir uns das optware Script aus dem Internet
wget
Sie müssen registriert sein, um Links zu sehen.
Danach führen wir folgende Befehle aus. Erstellen des Startordners mkdir –p /usr/local/etc/rc.d/
Verschieben des Scripts mv optware.sh /usr/local/etc/rc.d/
Flaggen der Berechtigung chmod +x /usr/local/etc/rc.d/optware.sh
Anschließend sollte die Diskstation neu gestartet werden. Nach dem Reboot melden wir uns wieder auf der Konsole der Diskstation an.
Im nächsten Schritt richten wir uns eine chroot Umgebung ein. Wir können uns diese wieder per wget aus dem Internet.
wget
Sie müssen registriert sein, um Links zu sehen.
Auf der Diskstation entpacken wir jetzt die runtergeladene Datei und bringen die chroot Umgebung zum laufen.
Code:
[COLOR=#323333]tar -C /volume1/public/ -xf debian.tar.gz[/COLOR]
[COLOR=#323333]mount -o bind /dev /volume1/public/debian/dev[/COLOR]
[COLOR=#323333]mount -o bind /proc /volume1/public/debian/proc[/COLOR]
[COLOR=#323333]grep -v rootfs /proc/mounts > /volume1/public/debian/etc/mtab [/COLOR]
[COLOR=#323333]chroot /volume1/public/debian/ /bin/bash [/COLOR]
[COLOR=#323333]/debootstrap/debootstrap --second-stage [/COLOR]
[COLOR=#323333]exit [/COLOR]
[COLOR=#323333]cp /etc/hosts /volume1/public/debian/etc/hosts [/COLOR]
[COLOR=#323333]cp /etc/resolv.conf /volume1/public/etc/resolv.conf[/COLOR]
[COLOR=#323333]hostname > /volume1/public/debian/etc/hostname [/COLOR]
[COLOR=#323333]mount -o bind /dev /volume1/public/debian/dev [/COLOR]
[COLOR=#323333]mount -o bind /proc /volume1/public/debian/proc [/COLOR]
[COLOR=#323333]grep -v rootfs /proc/mounts > /volume1/public/debian/etc/mtab [/COLOR]
[COLOR=#323333]chroot /volume1/public/debian/ /bin/bash [/COLOR]
[COLOR=#323333]wget http://files.satware.com/synology/chroot/sources.list -O /etc/apt/sources.list [/COLOR]
[COLOR=#323333]apt-get update -y [/COLOR]
[COLOR=#323333]apt-get upgrade -y [/COLOR]
[COLOR=#323333]apt-get dist-upgrade -y[/COLOR]
Für “Faule” gibt es hier noch ein Script für den Start der chroot Umgebung. Es sorgt dafür, dass /dev und /proc zur Verfügung stehen, und Tools wir „df“ funktionieren.
Vielen Dank an satware.com für die Entwicklung des Scripts und die Anleitung für die chroot Umgebung. Das Script bekommen wir per
wget
Sie müssen registriert sein, um Links zu sehen.
-O ~/debian-chroot.sh Wir ändern die Berechtigung über chmod +x ~/debian-chroot.sh
Jetzt kann die chroot Umgebung einfach mit ~/debian-chroot.sh gestartet werden.
Mit exit oder CTRL+D kann die Umgebung wieder verlassen werden.
Im nächsten Schritt werden wir uns OSCam für die Diskstation neu kompilieren. Es gibt zwar mittlerweile Downloads für die Diskstation im Internet, aber leider nicht für die Intel Atom CPUs mit Cedarview.
Für das Cross compiling benötigen wir nun das DSM Tool Chain. Das Paket kann auf
Sie müssen registriert sein, um Links zu sehen.
heruntergeladen werden. Hier laden wir uns den aktuellen Tool Chain (momentan DSM 4.1) herunter. Als CPU Architektur nehmen wir Intel x86 Linux 3.2.11 (Cedarview). Es gibt eines für x86 und eines für x64.
Ich habe beide heruntergeladen. Desweiteren benötigen wir einen Linux PC. Hierfür habe ich mir das aktuelle Debian Paket als VM unter Parallels installiert.
Ubuntu oder sonstige Linux Derivate funktionieren natürlich auch. Wir installieren uns ein Minimal System. Danach installieren wir die notwendigen Pakete sofern noch nicht vorhanden.
sudo apt-get install build-essential g++ libssl-dev libusb-1.0-0-dev libpcsclite-dev
Nach der Installation erstellen wir uns die notwendigen Verzeichnisse um OSCam per SVN zu laden.
sudo mkdir /home/oscam-svn/
sudo mkdir /home/toolchain/
sudo chmod 777 /home/oscam-svn/ /home/toolchain/
Die heruntergeladenen Toolchain Dateien kopieren wir nun auf den Linux PC in den Ordner /home/toolchain und entpacken diese anschließend
tar –xvzf gcc420_glibc236_x64_cedarview-GPL.tar und
tar –xvzf gcc421_glibc236_x86_cedarview-GPL.tar
Nun wechseln wir in den Ordner /home/oscam-svn/ und führen diesen Befehl aus um das Paket zu laden.
svn co
Sie müssen registriert sein, um Links zu sehen.
./svn up CMakeLists.txt
mkdir build
Wir erstellen uns ein neues toolchain im Ordner /home/oscam-svn/toolchains
Einfach in den Ordner wechseln und vi toolchain-i686-Diskstation.cmake eingeben.
In diese Datei tragen wir dann folgenden Inhalt ein.
Code:
set (OSCAM_SYSTEM_NAME none)
set (CMAKE_SYSTEM_NAME linux)
set (CMANKE_C_COMPILER /home/toolchain/i686-linux-gnu/bin/i686-linux-gnu-gcc)
set (CMAKE_SYSTEM_PROCESSOR i686)
Zusätzlich benötigen wir noch den Quellcode von libusb. Den gibt es hier
Sie müssen registriert sein, um Links zu sehen.
Wir kopieren die Datei nach /home/oscam-svn/
Wir wechseln in den Ordner cd /home/oscam-svn/
und entpacken den Inhalt mit tar –xvjf libusb-1.0.9.tar.bz2
Das Paket müssen wir jetzt noch für unsere Diskstation cross compilen.
cd /home/oscam-svn/libusb-1.0.9
CC=/home/toolchain/i686-linux-gnu/bin/i686-linux-gnu-gcc ./configure --host=i686-linux --target=i686-linux --prefix=/home/toolchain/i686-linux-gnu/ --exec-prefix=/home/toolchain/i686-linux-gnu/
make
make install
Nun sind alle Vorbereitungen abgeschlossen und es kann endlich mit dem kompilieren von OSCam losgehen.
cd /home/oscam-svn/build/
cmake -DWEBIF=1 -DLIBUSBDIR=/home/toolchain/i686-linux-gnu -DCMAKE_TOOLCHAIN_FILE=../toolchains/toolchain-i686-Diskstation.cmake DHAVE_LIBUSB=1 ..
make
Das Ergebnis in Form der oscam Datei kopieren wir auf unsere Diskstation. Ich habe mir in der Root einfach den Ordner oscam erstellt.
Die Datei wird über
chmod +x oscam noch geflagged und ist nun lauffähig.
EDIT – Falls euch das zu umständlich ist, findet ihr in der Database den fertig kompilierten OSCam Server. Ich werde auch von Zeit zu Zeit dort eine neue Version einstellen.
Nun führen wir auf der Diskstation ein Update der IPKG durch
ipkg update
ipkg list
Wir benötigen nun noch die Pakete gcc, libgcrypt und libusb
ipkg install gcc
ipkg install libgcrypt
ipkg install libusb
Der Output in der Konsole sollte dann folgendermaßen aussehen.
DiskStation> ipkg install gcc
Installing gcc (4.2.1-5) to root...
DownloadingSie müssen registriert sein, um Links zu sehen.
Installing binutils (2.19.1-1) to root...
DownloadingSie müssen registriert sein, um Links zu sehen.
Installing libc-dev (2.3.6-5) to root...
DownloadingSie müssen registriert sein, um Links zu sehen.
Installing libnsl (2.3.6-4) to root...
DownloadingSie müssen registriert sein, um Links zu sehen.
Configuring binutils
update-alternatives: Linking //opt/bin/strings to /opt/bin/binutils-strings
Configuring gcc
Configuring libc-dev
Configuring libnsl
Successfully terminated.
DiskStation>
Als nächstes müssen die OSCam Konfigurationsdateien auf den Server kopiert werden.
Die oscam.conf Datei könnte z.B. so aussehen
Code:
[global]
nice = -1
usrfile = /oscam/log/oscamuser.log
logfile = /oscam/log/oscam.log
cwlogdir = /oscam/log
disableuserfile = 0
maxlogsize = 1024
failbantime = 360
failbancount = 3
preferlocalcards = 1
saveinithistory = 1
dropups = 1
clienttimeout = 4700
fallbacktimeout = 2400
clientmaxidle = 300
cachedelay = 100
readerrestartseconds = 120
resolvegethostbyname = 1
#lb_mode = 1
#lb_save = 100
#lb_max_ecmcount = 400
#lb_reopen_seconds = 500
#lb_retrylimit = 700
#lb_noproviderforcaid = 0D00,1830,0500
#lb_savepath = /tmp/.oscam/stat
#lb_stat_cleanup = 72
#lb_reopen_mode = 1
#lb_auto_betatunnel = 0
[newcamd]
Key = 0102030405060708091011121314
Keepalive = 1
Port = 12000@1702:000000;12001@1833:000000;12002@1843:000000
[cccam]
port = 11999
reshare = 10
reshare_mode = 1
version = 2.1.3
stealth = 1
[monitor]
port = 987
nocrypt = 192.168.0.0-192.168.255.255
aulow = 120
hideclient_to = 30
monlevel = 1
appendchaninfo = 1
[webif]
httpport = 83
httphelplang = de
httpuser = admin
httppwd = oscam
httprefresh = 10
httpallowed = 0.0.0.0-255.255.255.255
oscam.server (Bei device = kann entwerder /dev/ttyUSB0 und /dev/ttyUSB1 eingetragen werden, oder die Device ID aus der Diskstation.
Diese kann mit dem folgenden Befehl aus der Diskstation ausgelesen werden)
cat /proc/bus/usb/devices | grep -E "^([TSPD]:.*|)$"
Code:
[reader]
label = sky1
protocol = smartreader
device = 00x:00x
services = skyall,!hdplus
smargopatch = 1
caid = 1702,1833
boxkey = 1122334455667788
ecmwhitelist = 1702:93;1833:89
detect = cd
mhz = 600
cardmhz = 600
group = 1
emmcache = 1,3,2
blockemm-unknown = 1
blockemm-g = 1
[reader]
label = hdplus1
protocol = smartreader
device = 00x:00x
services = !skyall,hdplus
smargopatch = 1
caid = 1843
rsakey =
boxkey =
ecmwhitelist = 1843:89
detect = cd
mhz = 357
cardmhz = 368
group = 2
emmcache = 1,2,2
blockemm-unknown = 1
blockemm-g = 1
oscam.user
Code:
[account]
disabled = 0
au = sky1,hdplus1
User = user
Pwd = pwd
Group = 1,2
CAID = 1702,1833,1843
oscam.provid, oscam.services und oscam.srvid sollten direct aus dem Internet geladen warden.
Damit ist der OSCam Server fertig konfiguriert. Damit wir uns jetzt um den Systemstart keine Gedanken mehr machen müssen, erstellen wir uns nun noch ein Script für den automatischen Start.
Wir erstellen wieder mi vi im Ordner /usr/syno/etc/rc.d/ eine Datei S99OSCam.sh Der Inhalt der Datei sollte folgendermaßen aussehen.
Code:
[COLOR=#008400]#!/bin/sh[/COLOR]
OSCAM_DIR=[COLOR=#D12F1B]"/oscam"[/COLOR]
OSCAM_LOG_DIR=[COLOR=#D12F1B]"/oscam/log"[/COLOR]
BIN=$OSCAM_DIR/oscam
start() {
[COLOR=#BB2CA2]if[/COLOR] [ ! -d $OSCAM_LOG_DIR ]
[COLOR=#BB2CA2]then[/COLOR]
mkdir $OSCAM_LOG_DIR
[COLOR=#BB2CA2]fi[/COLOR]
$BIN -b -c $OSCAM_DIR
}
stop() {
killall -[COLOR=#272AD8]15[/COLOR] oscam > /dev/null [COLOR=#272AD8]2[/COLOR]>&[COLOR=#272AD8]1[/COLOR]
}
[COLOR=#BB2CA2]case[COLOR=#D12F1B]"$1"[/COLOR]in[/COLOR]
start)
start
;;
stop)
stop
;;
restart)
stop
sleep [COLOR=#272AD8]1[/COLOR]
start
;;
*)
[COLOR=#D12F1B][COLOR=#000000] echo [/COLOR]"usage: $0 { start | stop }"[COLOR=#000000] >&[/COLOR][COLOR=#272AD8]2[/COLOR][/COLOR]
[COLOR=#BB2CA2]exit[/COLOR] [COLOR=#272AD8]1[/COLOR]
;;
[COLOR=#BB2CA2]esac[/COLOR]
[COLOR=#BB2CA2]exit[COLOR=#272AD8]0[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#000000]
[/COLOR]
Speichern über CTRL + C, ESC, wq!, Enter. Über chmod 755 S99OSCam.sh flaggen wir wieder die Berechtigung. Falls wir nun die Diskstation neu starten, wird automatisch der OSCam Server gestartet.
Falls der Ort für den OSCam nicht /oscam ist, müssen natürlich die Scripts und Configdateien angepasst werden.
Um das System jetzt noch perfekt zu machen, erstellen wir zum Schluss noch eine Script, welches regelmäßig über Crontab unseren OSCam Server überprüft.
Es sollte nicht nur schauen ob der Service gestartet ist, sondern auch Warnings und Panics aus der Log auswerten. Somit ist sichergestellt, dass unser Dienst nicht nur gestartet ist, sondern auch funktioniert.
Dazu erstellen wir uns im Ordner /oscam per vi das Script srvcheck.sh Der Inhalt der Datei sollte so aussehen.
Code:
[COLOR=#008400]#!/bin/sh[/COLOR]
[COLOR=#11053B]
[/COLOR]
[COLOR=#D12F1B][COLOR=#000000]oscamlog=[/COLOR]"/oscam/log/oscam.log"[/COLOR]
[COLOR=#D12F1B][COLOR=#000000]logfile=[/COLOR]"/oscam/log/oscam-check.log"[/COLOR]
[COLOR=#D12F1B][COLOR=#000000]oscampath=[/COLOR]"/oscam/oscam"[/COLOR]
[COLOR=#D12F1B][COLOR=#000000]oscamstart_cmd=[/COLOR]"/oscam/oscam -b -c /oscam"[/COLOR]
[COLOR=#11053B]warning_limit=[COLOR=#D12F1B]"50"[/COLOR][/COLOR]
[COLOR=#11053B]panic_limit=[COLOR=#D12F1B]"1"[/COLOR][/COLOR]
[COLOR=#11053B]
[/COLOR]
[COLOR=#11053B][COLOR=#BB2CA2]if[/COLOR] [ $(ps -w | grep -c oscam) = [COLOR=#272AD8]0[/COLOR] ]; [COLOR=#BB2CA2]then[/COLOR][/COLOR]
[COLOR=#D12F1B][COLOR=#000000] echo [/COLOR]"$(date) Starting OSCam..."[COLOR=#000000] >> $logfile[/COLOR][/COLOR]
[COLOR=#11053B] $oscamstart_cmd[/COLOR]
[COLOR=#BB2CA2]fi[/COLOR]
[COLOR=#11053B]
[/COLOR]
[COLOR=#11053B][COLOR=#BB2CA2]if[/COLOR] [ $(grep -c WARNING $oscamlog) -gt $warning_limit ]; [COLOR=#BB2CA2]then[/COLOR][/COLOR]
[COLOR=#D12F1B][COLOR=#000000] echo [/COLOR]"$(date) Warning detected - Stoping OSCam..."[COLOR=#000000] >> $logfile[/COLOR][/COLOR]
[COLOR=#11053B] grep -c WARNING $oscamlog >> $logfile[/COLOR]
[COLOR=#11053B] killall -[COLOR=#272AD8]15[/COLOR] oscam[/COLOR]
[COLOR=#11053B] cp $oscamlog $oscamlog[COLOR=#D12F1B]".failed"[/COLOR][/COLOR]
[COLOR=#11053B] cat /dev/null > $oscamlog[/COLOR]
[COLOR=#11053B] sleep [COLOR=#272AD8]2[/COLOR][/COLOR]
[COLOR=#D12F1B][COLOR=#000000] echo [/COLOR]"$(date) OSCam started after WARNING"[COLOR=#000000] >> $logfile[/COLOR][/COLOR]
[COLOR=#11053B] $oscamstart_cmd[/COLOR]
[COLOR=#BB2CA2]fi[/COLOR]
[COLOR=#11053B]
[/COLOR]
[COLOR=#11053B][COLOR=#BB2CA2]if[/COLOR] [ $(grep -c PANIC $oscamlog) -gt $panic_limit ]; [COLOR=#BB2CA2]then[/COLOR][/COLOR]
[COLOR=#D12F1B][COLOR=#000000] echo [/COLOR]"$(date) PANIC detected - Stoping OSCam..."[COLOR=#000000] >> $logfile[/COLOR][/COLOR]
[COLOR=#11053B] grep -c PANIC $oscamlog >> $logfile[/COLOR]
[COLOR=#11053B] killall -[COLOR=#272AD8]15[/COLOR] oscamll[/COLOR]
[COLOR=#11053B] cp $oscamlog $oscamlog[COLOR=#D12F1B]".failed"[/COLOR][/COLOR]
[COLOR=#11053B] cat /dev/null > $oscamlog[/COLOR]
[COLOR=#11053B] sleep [COLOR=#272AD8]2[/COLOR][/COLOR]
[COLOR=#D12F1B][COLOR=#000000] echo [/COLOR]"$(date) OSCam started after PANIC"[COLOR=#000000] >> $logfile[/COLOR][/COLOR]
[COLOR=#11053B] $oscamstart_cmd[/COLOR]
[COLOR=#BB2CA2]fi[/COLOR]
[COLOR=#11053B]
[/COLOR]
Die Datei flaggen wir wieder per chmod auf 755. Um das Script jetzt noch automatisch ablaufen zu lassen öffnen wir mit vi die Datei /etc/crontab und tragen den Service ein.
Falls der Check z.B. alle Zehn Minuten gestartet werden soll, tragen wir vorne 10 und beim Rest einen Stern ein. Das Script liegt dann unter /oscam/srvcheck.sh
Jetzt wird unser Dienst alle Zehn Minuten überprüft und bei Bedarf abgebrochen, neu gestartet und in eine separate Logdatei mit dem Namen oscamlog.failed kopiert.
Das war es erstmal. Wer alles richtig gemacht hat kann sich über einen OSCam Server auf seiner Linkstation freuen.
EDIT – Lib Modules, Scripte und OSCam Server lege ich in der Database ab.
Zuletzt bearbeitet: