Zum Glück habe ich bereits eine voll eingerichtete OpenWRT Build-Umgebung und irgendwo in den Verzeichnissen muss ja auch die Crosscompiler Toolchain liegen. Bei den ganzen Build- und Staging-Verzeichnissen musste ich ein bischen suchen, bis ich die funktionierenden Parameter gefunden hatte. Etwas hilfreich waren die Analogien im Streamboard Wiki für andere Architekturen.
So habe ich es letztendlich hinbekommen:
Zunächst werden die Environment Variablen gesetzt (OpenWRT liegt in meinem Home-Verzeichnis)
export STAGING_DIR=~/openwrt/attitude_adjustment/staging_dir export TOOLCHAIN=~/openwrt/attitude_adjustment/staging_dir/toolchain-arm_v5te_gcc-4.6-linaro_uClibc-0.9.33.2_eabi export PATH="$TOOLCHAIN/bin:/usr/local/bin:/usr/bin:/bin"
Dann werden die aktuellen OSCAM Sourcen ausgecheckt.
svn co http://www.streamboard.tv/svn/oscam/trunk oscam-svn cd oscam-svn
Da ich die USB-Kartenleser benutze, benötige ich die USB-Library - evtl. hätte man auch die in OpenWRT vorhandene Bibliothek verwenden können... Ich hab mich hier ans Wiki gehalten, da mein PogoPlug sowieso ausreichend Platz (Flash) hat.
wget http://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2 tar xfj libusb-1.0.9.tar.bz2 cd libusb-1.0.9 CC=arm-openwrt-linux-gcc ./configure --host=arm-openwrt-linux-uclibcgnueabi \ --prefix=$TOOLCHAIN/arm-openwrt-linux/sys-root/usr/ --enable-shared=no make make install cd ..
Nun geht's an das eigentliche OSCAM
./config.sh --disable all --enable \ WEBIF \ MODULE_NEWCAMD \ CS_ANTICASC \ IRDETO_GUESSING \ MODULE_CAMD35 \ MODULE_NEWCAMD \ READER_NAGRA READER_IRDETO \ CARDREADER_PHOENIX make CROSS=$TOOLCHAIN/bin/arm-openwrt-linux- USE_LIBUSB=1 \ USE_SSL=1 CONF_DIR=/etc EXTRA_FLAGS="\ -I$STAGING_DIR/target-arm_v5te_uClibc-0.9.33.2_eabi/usr/include \ -I$TOOLCHAIN/arm-openwrt-linux/sys-root/usr/include" \ LIBUSB_LIB="$TOOLCHAIN/arm-openwrt-linux/sys-root/usr/lib/libusb-1.0.a \ -L$STAGING_DIR/target-arm_v5te_uClibc-0.9.33.2_eabi/usr/lib"
Das fertige Binary sollte nun im Ordner "Distribution" liegen und muss nur noch auf den PogoPlug kopiert werden - fertig!
Wenn man mehrere Kartenleser einsetzt, sollte natürlich auch immer der richtige Leser der - in der OSCAM Konfiguration eingetragenen Karte - entsprechen. Dazu habe ich die Hotplug-Scripts von OpenWRT verbogen...
#/etc/hotplug.d/usb/99-cardreader # ProductID der Reader CARDREADER="403/6001/600" # Seriennummern der Reader - Leerzeichen getrennt READERSERIAL="AH01234A AH01234B" case "$ACTION" in add) if [ $PRODUCT == $CARDREADER ] ; then SERIAL=`cat /proc/bus/usb/devices | \ grep -A 8 "Dev#=.*${DEVICE##*0}" | \ grep "SerialNumber"` SERIAL=${SERIAL##*SerialNumber=} DEV=`ls -la /sys/bus/usb/devices/${DEVICENAME}/ | \ grep ttyUSB` DEV=${DEV##* } C=0 for I in $READERSERIAL ; do if [ $I == $SERIAL ] ; then ln -s $DEV /dev/cardreader${C} fi let C=C+1 done fi ;; remove) if [ $PRODUCT == $CARDREADER ] ; then for I in 0 1 2 3 ; do if [ ! -e /dev/cardreader${I} -a \ -h /dev/cardreader${I} ] ; then rm -f /dev/cardreader${I} fi done fi ;; esac
Keine Kommentare:
Kommentar veröffentlichen