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