diff --git a/packages/addons/driver/sundtek/changelog.txt b/packages/addons/driver/sundtek/changelog.txt index 7043ca6cb5..be4e096e2a 100644 --- a/packages/addons/driver/sundtek/changelog.txt +++ b/packages/addons/driver/sundtek/changelog.txt @@ -1,25 +1,27 @@ +3.0.3 + new addon settings: + enable HW PID filter (enabled for RPi by default) + enable IR receiver + allow sharing local tuner over network + use network tuners +3.0.2 + special version 3.0.1 addon renamed to just sundtek added addon settings sundtek's binaries are downloaded on first run automatically download new version of the binaries if available added preload library to .profile (to run mediaclient, w_scan, ... from console) - 2.1.4 support for Raspberry Pi - 2.1.3 support for network tuner - 2.1.2 support for multiple Sundtek tuners support for working with other tuners (kernel drivers) - 2.1.1 -- update to addon version 2.1 - + update to addon version 2.1 2.0.5 -- starting userspace DVB drivers from Tvheadend/VDR - + starting userspace DVB drivers from Tvheadend/VDR 1.90.0 -- initial version of Sundtek MediaTV DVB driver + initial version of Sundtek MediaTV DVB driver diff --git a/packages/addons/driver/sundtek/config/sundtek.conf b/packages/addons/driver/sundtek/config/sundtek.conf index 103a7ab60b..15a81288a6 100644 --- a/packages/addons/driver/sundtek/config/sundtek.conf +++ b/packages/addons/driver/sundtek/config/sundtek.conf @@ -5,15 +5,21 @@ # Do not change this line (OpenElec addon require this) ! device_attach=/storage/.xbmc/addons/driver.dvb.sundtek/bin/device-attached.sh +# enable HW PID filter (default on for RPi) +use_hwpidfilter=off + +# enable listening on network +enablenetwork=off + +# Lowest adapter number to start with, e.g. /dev/dvb/adapter5/frontend0 +first_adapter=0 + # Infrared Control Support is disabled/enabled ir_disabled=1 # trigger device_attach only once if more devices is used bulk_notification=on -# Lowest adapter number to start with, e.g. /dev/dvb/adapter5/frontend0 -#first_adapter=5 - # Get adapter serial number with mediaclient -e # or look into file adapter_serial_number.txt #[SERIALNUMBER] @@ -24,3 +30,7 @@ bulk_notification=on #[U123456789012] #initial_dvb_mode=DVBT + +#[NETWORK] +#device=192.168.1.1:0 +#device=192.168.1.1:1 diff --git a/packages/addons/driver/sundtek/meta b/packages/addons/driver/sundtek/meta index ce0440aacb..afeb13dab2 100644 --- a/packages/addons/driver/sundtek/meta +++ b/packages/addons/driver/sundtek/meta @@ -20,7 +20,7 @@ PKG_NAME="sundtek" PKG_VERSION="3.0" -PKG_REV="1" +PKG_REV="3" PKG_ARCH="any" PKG_LICENSE="nonfree" PKG_SITE="http://support.sundtek.com/" diff --git a/packages/addons/driver/sundtek/settings-default.xml b/packages/addons/driver/sundtek/settings-default.xml old mode 100755 new mode 100644 index 5de6cb8a02..dff044590f --- a/packages/addons/driver/sundtek/settings-default.xml +++ b/packages/addons/driver/sundtek/settings-default.xml @@ -1,7 +1,21 @@ - - + + + + + + + + + + + + + + + + diff --git a/packages/addons/driver/sundtek/source/bin/userspace-driver.sh b/packages/addons/driver/sundtek/source/bin/userspace-driver.sh index 0ec17a5389..40b93317f9 100644 --- a/packages/addons/driver/sundtek/source/bin/userspace-driver.sh +++ b/packages/addons/driver/sundtek/source/bin/userspace-driver.sh @@ -22,6 +22,16 @@ . /etc/profile +net_tuner_num_fix() { + local num=$1 + + [ -z "$num" ] && num=1 + num=$(( $num *1 )) + [ $num -lt 1 ] && num=1 + num=$(( $num -1 )) + echo $num +} + ADDON_DIR="$HOME/.xbmc/addons/driver.dvb.sundtek" ADDON_HOME="$HOME/.xbmc/userdata/addon_data/driver.dvb.sundtek" ADDON_SETTINGS="$ADDON_HOME/settings.xml" @@ -31,6 +41,14 @@ mkdir -p $ADDON_HOME if [ ! -f "$ADDON_HOME/sundtek.conf" ]; then cp $ADDON_DIR/config/* $ADDON_HOME/ +else + # in case of missing entries in addon home's sundtek.conf + entry_set="$(grep use_hwpidfilter $ADDON_HOME/sundtek.conf 2>/dev/null)" + if [ -z "$entry_set" ]; then + sed -i 's|\(^device_attach=.*\)|\1\n# enable listening on network\nenablenetwork=off|g' $ADDON_HOME/sundtek.conf + sed -i 's|\(^device_attach=.*\)|\1\n\n# enable HW PID filter\nuse_hwpidfilter=off\n|g' $ADDON_HOME/sundtek.conf + sed -i 's|^#first_adapter=.*|first_adapter=0|g' $ADDON_HOME/sundtek.conf + fi fi if [ ! -f "$ADDON_SETTINGS" ]; then @@ -68,6 +86,11 @@ if [ ! -f $ADDON_DIR/bin/mediasrv ]; then INSTALLER_URL="http://sundtek.de/media/netinst/32bit/installer.tar.gz" elif [ "$ARCH" = "arm" ]; then INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz" + + # enable HW PID filter on RPi by default + sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $ADDON_DIR/config/sundtek.conf + sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $ADDON_HOME/sundtek.conf + sed -i 's|.*id="ENABLE_HW_PID_FILTER" value=.*||' $ADDON_SETTINGS else logger -t Sundtek "### Unsupported architecture ###" cd .. @@ -75,9 +98,6 @@ if [ ! -f $ADDON_DIR/bin/mediasrv ]; then exit 1 fi - # test only !!! - #INSTALLER_URL="http://sundtek.de/support/installer.tar.gz" - wget -O installer.tar.gz $INSTALLER_URL wget -O ../driver-version.txt http://sundtek.de/media/latest.phtml logger -t Sundtek "### Extracting installer ###" @@ -95,21 +115,22 @@ if [ ! -f $ADDON_DIR/bin/mediasrv ]; then cd .. rm -fr tmp/ logger -t Sundtek "### Installer finished ###" + + cat "$ADDON_SETTINGS" | awk -F\" '{print $2"=\""$4"\""}' | sed '/^=/d' > /var/config/sundtek-addon.conf + . /var/config/sundtek-addon.conf fi if [ ! -f $ADDON_HOME/driver-version.txt ]; then cp $ADDON_DIR/driver-version.txt $ADDON_HOME/ fi -# enable to install same version again +# enable to install same addon version again rm -f /storage/.xbmc/addons/packages/driver.dvb.sundtek-* # add alias for /opt/bin/mediaclient -#alias_set="$(grep /opt/bin/mediaclient /storage/.profile 2>/dev/null)" alias_set="$(grep libmediaclient.so /storage/.profile 2>/dev/null)" if [ -z "$alias_set" ]; then echo "" >>/storage/.profile - #echo "alias /opt/bin/mediaclient=/storage/.xbmc/addons/driver.dvb.sundtek/bin/mediaclient" >>/storage/.profile echo "[ -f /storage/.xbmc/addons/driver.dvb.sundtek/lib/libmediaclient.so ] && export LD_PRELOAD=/storage/.xbmc/addons/driver.dvb.sundtek/lib/libmediaclient.so" >>/storage/.profile echo "" >>/storage/.profile fi @@ -117,45 +138,121 @@ fi export LD_PRELOAD=$ADDON_DIR/lib/libmediaclient.so if [ "$ANALOG_TV" = "true" -a ! -f "$ADDON_DIR/bin/plugins/lib/libavcodec.so.54.12.100" ]; then - logger -t Sundtek "### Downloading missing ffmpeg libraries ###" - cd $ADDON_DIR/bin - mkdir -p plugins/ - cd plugins/ + logger -t Sundtek "### Downloading missing ffmpeg libraries ###" + cd $ADDON_DIR/bin + mkdir -p plugins/ + cd plugins/ - ARCH=$(sed -n 's|.*\.\([^-]*\)-.*|\1|p' /etc/release | tr -d '\n') + ARCH=$(sed -n 's|.*\.\([^-]*\)-.*|\1|p' /etc/release | tr -d '\n') wget -O sundtek-ffmpeg-analog_tv-lib.tgz http://dl.dropbox.com/u/8224157/public/sundtek/sundtek-ffmpeg-analog_tv-lib-$ARCH.tgz - logger -t Sundtek "### Extracting ffmpeg libraries ###" - tar -xzf sundtek-ffmpeg-analog_tv-lib.tgz - if [ $? -ne 0 ]; then - logger -t Sundtek "### Ffmpeg library archive damaged ###" - rm -f sundtek-ffmpeg-analog_tv-lib.tgz - exit 2 - fi + logger -t Sundtek "### Extracting ffmpeg libraries ###" + tar -xzf sundtek-ffmpeg-analog_tv-lib.tgz + if [ $? -ne 0 ]; then + logger -t Sundtek "### Ffmpeg library archive damaged ###" + rm -f sundtek-ffmpeg-analog_tv-lib.tgz + exit 2 + fi - rm -f sundtek-ffmpeg-analog_tv-lib.tgz + rm -f sundtek-ffmpeg-analog_tv-lib.tgz fi - + if [ -z "$(pidof mediasrv)" ]; then rm -f /var/log/mediasrv.log rm -f /var/log/mediaclient.log rm -f $SUNDTEK_READY - mediasrv --wait-for-devices -p $ADDON_DIR/bin -c $ADDON_HOME/sundtek.conf -d + SUNDTEK_CONF_TMP=/tmp/sundtek.conf + cp $ADDON_HOME/sundtek.conf $SUNDTEK_CONF_TMP - if [ -n "$NETWORK_TUNER_IP" -a "$NETWORK_TUNER_IP" != "0.0.0.0" ]; then - logger -t Sundtek "### Trying to connect to Sundtek network device IP $NETWORK_TUNER_IP ###" - mediaclient --mount=$NETWORK_TUNER_IP + [ -z "$LOWEST_ADAPTER_NUM" ] && LOWEST_ADAPTER_NUM=0 + sed -i "s|^first_adapter=.*|first_adapter=$LOWEST_ADAPTER_NUM|g" $SUNDTEK_CONF_TMP + + # enable HW PID filter + if [ "$ENABLE_HW_PID_FILTER" = "true" ]; then + sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=on|g' $SUNDTEK_CONF_TMP else - logger -t Sundtek "### Trying to attach Sundtek device ###" + sed -i 's|^use_hwpidfilter=.*|use_hwpidfilter=off|g' $SUNDTEK_CONF_TMP fi + # enable IR receiver + if [ "$ENABLE_IR_RECEIVER" = "true" ]; then + sed -i 's|^ir_disabled=.*|ir_disabled=0|g' $SUNDTEK_CONF_TMP + else + sed -i 's|^ir_disabled=.*|ir_disabled=1|g' $SUNDTEK_CONF_TMP + fi + + if [ "$ALLOW_NET_USE" = "true" ]; then + sed -i 's|^enablenetwork=.*|enablenetwork=on|g' $SUNDTEK_CONF_TMP + else + sed -i 's|^enablenetwork=.*|enablenetwork=off|g' $SUNDTEK_CONF_TMP + fi + + [ "$DEVICE1_IP" = "0.0.0.0" ] && DEVICE1_IP="" + [ "$DEVICE2_IP" = "0.0.0.0" ] && DEVICE2_IP="" + [ "$DEVICE3_IP" = "0.0.0.0" ] && DEVICE3_IP="" + [ "$DEVICE4_IP" = "0.0.0.0" ] && DEVICE4_IP="" + [ "$DEVICE5_IP" = "0.0.0.0" ] && DEVICE5_IP="" + DEVICE1_NUM=$(net_tuner_num_fix $DEVICE1_NUM) + DEVICE2_NUM=$(net_tuner_num_fix $DEVICE2_NUM) + DEVICE3_NUM=$(net_tuner_num_fix $DEVICE3_NUM) + DEVICE4_NUM=$(net_tuner_num_fix $DEVICE4_NUM) + DEVICE5_NUM=$(net_tuner_num_fix $DEVICE5_NUM) + + if [ "$USE_NET_TUNERS" = "true" -a -n "$DEVICE1_IP" ]; then + # delete all network tuner entries + awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net + mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP + echo "" >>$SUNDTEK_CONF_TMP + # remove empty lines at the end of file + sed -i '${/^$/d;}' $SUNDTEK_CONF_TMP + # add entries + echo "[NETWORK]" >>$SUNDTEK_CONF_TMP + for dev in $(seq 0 $DEVICE1_NUM); do + echo "device=$DEVICE1_IP:$dev" >>$SUNDTEK_CONF_TMP + done + if [ -n "$DEVICE2_IP" ]; then + for dev in $(seq 0 $DEVICE2_NUM); do + echo "device=$DEVICE2_IP:$dev" >>$SUNDTEK_CONF_TMP + done + if [ -n "$DEVICE3_IP" ]; then + for dev in $(seq 0 $DEVICE3_NUM); do + echo "device=$DEVICE3_IP:$dev" >>$SUNDTEK_CONF_TMP + done + if [ -n "$DEVICE4_IP" ]; then + for dev in $(seq 0 $DEVICE4_NUM); do + echo "device=$DEVICE4_IP:$dev" >>$SUNDTEK_CONF_TMP + done + if [ -n "$DEVICE5_IP" ]; then + for dev in $(seq 0 $DEVICE5_NUM); do + echo "device=$DEVICE5_IP:$dev" >>$SUNDTEK_CONF_TMP + done + fi + fi + fi + fi + else + # delete all network tuner entries + awk '/^\[NETWORK\]/{flag=1; next} /^device=|^#|^$/{if (flag==1) next} /.*/{flag=0; print}' $SUNDTEK_CONF_TMP >${SUNDTEK_CONF_TMP}-net + mv ${SUNDTEK_CONF_TMP}-net $SUNDTEK_CONF_TMP + echo "" >>$SUNDTEK_CONF_TMP + # remove empty lines at the end of file + sed -i '${/^$/d;}' $SUNDTEK_CONF_TMP + fi + + md5_1=$(md5sum -b $SUNDTEK_CONF_TMP | awk '{print $1}') + md5_2=$(md5sum -b $ADDON_HOME/sundtek.conf | awk '{print $1}') + if [ "$md5_1" != "$md5_2" ]; then + # file changed - copy to addon home + cp $SUNDTEK_CONF_TMP $ADDON_HOME/sundtek.conf + fi + + #rm "$SUNDTEK_CONF_TMP" + + mediasrv --wait-for-devices -p $ADDON_DIR/bin -c $ADDON_HOME/sundtek.conf -d + # wait for device to get attached or connected for i in $(seq 1 240); do - if [ -n "$NETWORK_TUNER_IP" -a -e /dev/dvb/adapter*/frontend* ]; then - sh $ADDON_DIR/bin/device-attached.sh - fi - if [ -f $SUNDTEK_READY ]; then rm -f $SUNDTEK_READY logger -t Sundtek "### Sundtek ready ###" @@ -173,9 +270,9 @@ if [ -z "$(pidof mediasrv)" ]; then usleep 500000 fi done - + if [ "$ANALOG_TV" = "true" ]; then - logger -t Sundtek "### Switching to analog TV mode ###" + logger -t Sundtek "### Switching to analog TV mode ###" #rm -fr /dev/dvb/ mediaclient --disable-dvb=/dev/dvb/adapter0 fi diff --git a/packages/addons/driver/sundtek/source/resources/language/English/strings.xml b/packages/addons/driver/sundtek/source/resources/language/English/strings.xml index fe9a39f090..a76c6fd8d5 100644 --- a/packages/addons/driver/sundtek/source/resources/language/English/strings.xml +++ b/packages/addons/driver/sundtek/source/resources/language/English/strings.xml @@ -2,8 +2,23 @@ General Auto update binary driver - Analog TV - Network tuner IP + Enable analog TV Extra settle time Run user script + Enable hardware PID filter + Enable IR receiver + Lowest adapter number (/dev/dvb/adapterX/) + Networking + Share local tuner over network + Use network shared tuners + Server 1 IP address + # of tuners + Server 2 IP address + # of tuners + Server 3 IP address + # of tuners + Server 4 IP address + # of tuners + Server 5 IP address + # of tuners diff --git a/packages/addons/driver/sundtek/source/resources/settings.xml b/packages/addons/driver/sundtek/source/resources/settings.xml index 13c4605753..cd2d13eedd 100644 --- a/packages/addons/driver/sundtek/source/resources/settings.xml +++ b/packages/addons/driver/sundtek/source/resources/settings.xml @@ -1,12 +1,30 @@ - - + + - + + + + + + + + + + + + + + + + + + +