From: schon Date: Mon, 17 Dec 2012 12:28:35 +0000 (+0900) Subject: Official release solo2 driver. X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_openembedded;a=commitdiff_plain;h=c87aa10b26104d54a160037abbfaf4d87092f160 Official release solo2 driver. - Fix instability issue(needs kernel update) - Fix PIP problem - Fix module init problem. - Support Transcoding(Beta, needs Image Update) Add trasnscoding streaming plugin(e2), and client(transtreamproxy) Adjust kernel config --- diff --git a/recipes/enigma2/enigma2-plugin-extensions-openwebif.bb b/recipes/enigma2/enigma2-plugin-extensions-openwebif.bb index c386055..12aedc0 100644 --- a/recipes/enigma2/enigma2-plugin-extensions-openwebif.bb +++ b/recipes/enigma2/enigma2-plugin-extensions-openwebif.bb @@ -13,6 +13,8 @@ PR = "r0.73" require openplugins.inc +SRC_URI += "file://openwebif_8001_8002.patch;patch=1;pnum=1" + # Just a quick hack to "compile" it do_compile() { cheetah-compile -R --nobackup ${S}/plugin diff --git a/recipes/enigma2/enigma2-plugin-extensions-openwebif/openwebif_8001_8002.patch b/recipes/enigma2/enigma2-plugin-extensions-openwebif/openwebif_8001_8002.patch new file mode 100644 index 0000000..909a9ae --- /dev/null +++ b/recipes/enigma2/enigma2-plugin-extensions-openwebif/openwebif_8001_8002.patch @@ -0,0 +1,143 @@ +diff --git a/plugin/controllers/models/stream.py b/plugin/controllers/models/stream.py +index fe4ddd4..71b1eaa 100644 +--- a/plugin/controllers/models/stream.py ++++ b/plugin/controllers/models/stream.py +@@ -25,11 +25,21 @@ def getStream(session, request, m3ufile): + if "name" in request.args: + name = request.args["name"][0] + # #EXTINF:-1,%s\n remove not compatiple with old api +- if sRef != '': ++ ++ if "device" in request.args : ++ if request.args["device"][0] == "phone" : ++ portNumber = 8002; ++ else : ++ portNumber = config.OpenWebif.streamport.value ++ else : ++ portNumber = config.OpenWebif.streamport.value ++ ++ if sRef != '' : + progopt="#EXTVLCOPT:program=%d\n" % (int(sRef.split(':')[3],16)) + else: + progopt="" +- response = "#EXTM3U \n#EXTVLCOPT--http-reconnect=true \n%shttp://%s:%s/%s\n" % (progopt,request.getRequestHostname(),config.OpenWebif.streamport.value, sRef) ++ response = "#EXTM3U \n#EXTVLCOPT--http-reconnect=true \n%shttp://%s:%s/%s\n" % (progopt,request.getRequestHostname(), portNumber, sRef) ++ + request.setHeader('Content-Type', 'application/text') + return response + +diff --git a/plugin/controllers/views/ajax/channels.tmpl b/plugin/controllers/views/ajax/channels.tmpl +index 5975ce8..2915c5b 100755 +--- a/plugin/controllers/views/ajax/channels.tmpl ++++ b/plugin/controllers/views/ajax/channels.tmpl +@@ -12,9 +12,12 @@ + + + +- ++ + + ++ ++ ++ + + + #if $channel.has_key('now_title') +diff --git a/plugin/controllers/views/main.tmpl b/plugin/controllers/views/main.tmpl +index 1844226..6dcfb66 100755 +--- a/plugin/controllers/views/main.tmpl ++++ b/plugin/controllers/views/main.tmpl +@@ -9,6 +9,79 @@ + + + ++ ++ ++ + Open Webif + + +@@ -195,5 +268,12 @@ + + + ++ ++
++ ++ ++ ++
++ + + diff --git a/recipes/enigma2/enigma2-transtreamproxy.bb b/recipes/enigma2/enigma2-transtreamproxy.bb new file mode 100644 index 0000000..135b0ee --- /dev/null +++ b/recipes/enigma2/enigma2-transtreamproxy.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "streamproxy manages streaming data to a Mobile device using enigma2" + +SRCDATE = "20101014" +PV = "1.0cvs${SRCDATE}" + +SRC_URI = "cvs://anonymous@cvs.schwerkraft.elitedvb.net/cvsroot/streamproxy;module=enigma2-streamproxy;method=pserver \ + file://transcoding.patch;patch=1;pnum=1 \ + " + + +inherit autotools + +S = "${WORKDIR}/enigma2-streamproxy" + +do_install() { + install -d ${D}/usr/bin + install -m 0755 ${S}/src/streamproxy ${D}/usr/bin/transtreamproxy +} + diff --git a/recipes/enigma2/enigma2-transtreamproxy/transcoding.patch b/recipes/enigma2/enigma2-transtreamproxy/transcoding.patch new file mode 100644 index 0000000..80890f5 --- /dev/null +++ b/recipes/enigma2/enigma2-transtreamproxy/transcoding.patch @@ -0,0 +1,332 @@ +diff --git a/src/streamproxy.c b/src/streamproxy.c +index 03d1fac..60ddddc 100644 +--- a/src/streamproxy.c ++++ b/src/streamproxy.c +@@ -8,6 +8,7 @@ + #include + #include + #include ++#include + + #define MAX_PIDS 32 + #define MAX_LINE_LENGTH 512 +@@ -41,6 +42,25 @@ char *reason = ""; + + int active_pids[MAX_PIDS]; + ++int g_video_pid = 0; ++int g_audio_pid = 0; ++int g_pcr_pid = 0; ++int g_pmt_pid = 0; ++ ++struct proc_dmx_pid ++{ ++ char *proc_path; ++ char *str_match; ++ int pid; ++}; ++ ++struct proc_dmx_pid proc_dmx_setup[] = { ++ {"/proc/stb/encoder/0/video_pid", "video", 0}, ++ {"/proc/stb/encoder/0/audio_pid", "audio", 0}, ++ {"/proc/stb/encoder/0/pcr_pid", "pcr", 0}, ++ {"/proc/stb/encoder/0/pmt_pid", "pmt", 0}, ++}; ++ + int handle_upstream(void); + int handle_upstream_line(void); + +@@ -70,7 +90,8 @@ int main(int argc, char **argv) + int i; + for (i=0; i 0 && FD_ISSET(demux_fd, &r)) + { + static unsigned char buffer[BSIZE]; + int r = read(demux_fd, buffer, BSIZE); +- if (r < 0) ++ if (r < 0 ) ++ { + break; ++ } + write(1, buffer, r); + } + } +@@ -153,6 +187,7 @@ bad_gateway: + int handle_upstream(void) + { + char buffer[MAX_LINE_LENGTH]; ++ memset(buffer, 0, MAX_LINE_LENGTH); + int n = read(upstream, buffer, MAX_LINE_LENGTH); + if (n == 0) + return 1; +@@ -165,6 +200,7 @@ int handle_upstream(void) + + char *c = buffer; + ++ + while (n) + { + char *next_line; +@@ -203,6 +239,9 @@ int handle_upstream(void) + + int handle_upstream_line(void) + { ++ int i; ++ const char *str; ++ + switch (upstream_state) + { + case 0: +@@ -229,104 +268,137 @@ int handle_upstream_line(void) + if (response_line[0] == '+') { + /* parse (and possibly open) demux */ + int demux = atoi(response_line + 1); +- ++ { ++ FILE *f = fopen("/proc/stb/encoder/0/demux", "w"); ++ if(f) ++ { ++ fprintf(f, "%d\n", demux); ++ fclose(f); ++ } ++ } + +- /* parse new pids */ +- const char *p = strchr(response_line, ':'); +- int old_active_pids[MAX_PIDS]; +- +- memcpy(old_active_pids, active_pids, sizeof(active_pids)); +- +- int nr_pids = 0, i, j; +- while (p) ++ for(i = 0 ; i < sizeof(proc_dmx_setup)/sizeof(proc_dmx_setup[0]) ; i++) + { +- ++p; +- int pid = strtoul(p, 0, 0x10); +- p = strchr(p, ','); ++ str = strstr(response_line, proc_dmx_setup[i].str_match); ++ if(str) ++ { ++ while(*str != ',') str--; ++ proc_dmx_setup[i].pid = strtoul(str+1, 0, 0x10); ++ FILE *f = fopen(proc_dmx_setup[i].proc_path, "w"); ++ if(f) ++ { ++ fprintf(f, "%d\n", proc_dmx_setup[i].pid); ++ fclose(f); ++ } ++ } + +- /* do not add pids twice */ +- for (i = 0; i < nr_pids; ++i) +- if (active_pids[i] == pid) +- break; ++ } + +- if (i != nr_pids) +- continue; + +- active_pids[nr_pids++] = pid; ++ if(proc_dmx_setup[3].pid && ( (g_video_pid != proc_dmx_setup[0].pid) || (g_audio_pid != proc_dmx_setup[1].pid) || (g_pcr_pid != proc_dmx_setup[2].pid)) ) ++ { ++ g_video_pid = proc_dmx_setup[0].pid; ++ g_audio_pid = proc_dmx_setup[1].pid; ++ g_pcr_pid = proc_dmx_setup[2].pid; ++ ++ ++ /* parse new pids */ ++ const char *p = strchr(response_line, ':'); ++ int old_active_pids[MAX_PIDS]; + +- if (nr_pids == MAX_PIDS) +- break; +- } +- +- for (i = nr_pids; i < MAX_PIDS; ++i) +- active_pids[i] = -1; ++ memcpy(old_active_pids, active_pids, sizeof(active_pids)); + +- /* check for added pids */ +- for (i = 0; i < nr_pids; ++i) +- { +- for (j = 0; j < MAX_PIDS; ++j) +- if (active_pids[i] == old_active_pids[j]) ++ int nr_pids = 0, i, j; ++ while (p) ++ { ++ ++p; ++ int pid = strtoul(p, 0, 0x10); ++ p = strchr(p, ','); ++ ++ /* do not add pids twice */ ++ for (i = 0; i < nr_pids; ++i) ++ if (active_pids[i] == pid) ++ break; ++ ++ if (i != nr_pids) ++ continue; ++ ++ active_pids[nr_pids++] = pid; ++ ++ if (nr_pids == MAX_PIDS) + break; +- if (j == MAX_PIDS) { +- if (demux_fd < 0) { +- struct dmx_pes_filter_params flt; +- char demuxfn[32]; +- sprintf(demuxfn, "/dev/dvb/adapter0/demux%d", demux); +- demux_fd = open(demuxfn, O_RDWR | O_NONBLOCK); ++ } ++ ++ for (i = nr_pids; i < MAX_PIDS; ++i) ++ active_pids[i] = -1; ++ ++ /* check for added pids */ ++ for (i = 0; i < nr_pids; ++i) ++ { ++ for (j = 0; j < MAX_PIDS; ++j) ++ if (active_pids[i] == old_active_pids[j]) ++ break; ++ if (j == MAX_PIDS) { + if (demux_fd < 0) { +- reason = "DEMUX OPEN FAILED"; +- return 2; +- } ++ struct dmx_pes_filter_params flt; ++ char demuxfn[32]; ++ sprintf(demuxfn, "/dev/dvb/adapter0/demux%d", demux); ++ demux_fd = open(demuxfn, O_RDWR | O_NONBLOCK); ++ if (demux_fd < 0) { ++ reason = "DEMUX OPEN FAILED"; ++ return 2; ++ } + +- ioctl(demux_fd, DMX_SET_BUFFER_SIZE, 1024*1024); ++ ioctl(demux_fd, DMX_SET_BUFFER_SIZE, 1024*1024); + +- flt.pid = active_pids[i]; +- flt.input = DMX_IN_FRONTEND; ++ flt.pid = active_pids[i]; ++ flt.input = DMX_IN_FRONTEND; + #if DVB_API_VERSION > 3 +- flt.output = DMX_OUT_TSDEMUX_TAP; +- flt.pes_type = DMX_PES_OTHER; ++ flt.output = DMX_OUT_TSDEMUX_TAP; ++ flt.pes_type = DMX_PES_OTHER; + #else +- flt.output = DMX_OUT_TAP; +- flt.pes_type = DMX_TAP_TS; ++ flt.output = DMX_OUT_TAP; ++ flt.pes_type = DMX_TAP_TS; + #endif +- flt.flags = DMX_IMMEDIATE_START; ++ flt.flags = DMX_IMMEDIATE_START; + +- if (ioctl(demux_fd, DMX_SET_PES_FILTER, &flt) < 0) { +- reason = "DEMUX PES FILTER SET FAILED"; +- return 2; ++ if (ioctl(demux_fd, DMX_SET_PES_FILTER, &flt) < 0) { ++ reason = "DEMUX PES FILTER SET FAILED"; ++ return 2; ++ } + } +- } +- else { +- uint16_t pid = active_pids[i]; +- int ret; ++ else { ++ uint16_t pid = active_pids[i]; ++ int ret; + #if DVB_API_VERSION > 3 +- ret = ioctl(demux_fd, DMX_ADD_PID, &pid); ++ ret = ioctl(demux_fd, DMX_ADD_PID, &pid); + #else +- ret = ioctl(demux_fd, DMX_ADD_PID, pid); ++ ret = ioctl(demux_fd, DMX_ADD_PID, pid); + #endif +- if (ret < 0) { +- reason = "DMX_ADD_PID FAILED"; +- return 2; ++ if (ret < 0) { ++ reason = "DMX_ADD_PID FAILED"; ++ return 2; ++ } + } + } + } +- } +- +- /* check for removed pids */ +- for (i = 0; i < MAX_PIDS; ++i) +- { +- if (old_active_pids[i] == -1) +- continue; +- for (j = 0; j < nr_pids; ++j) +- if (old_active_pids[i] == active_pids[j]) +- break; +- if (j == nr_pids) { ++ ++ /* check for removed pids */ ++ for (i = 0; i < MAX_PIDS; ++i) ++ { ++ if (old_active_pids[i] == -1) ++ continue; ++ for (j = 0; j < nr_pids; ++j) ++ if (old_active_pids[i] == active_pids[j]) ++ break; ++ if (j == nr_pids) { + #if DVB_API_VERSION > 3 +- uint16_t pid = old_active_pids[i]; +- ioctl(demux_fd, DMX_REMOVE_PID, &pid); ++ uint16_t pid = old_active_pids[i]; ++ ioctl(demux_fd, DMX_REMOVE_PID, &pid); + #else +- ioctl(demux_fd, DMX_REMOVE_PID, old_active_pids[i]); ++ ioctl(demux_fd, DMX_REMOVE_PID, old_active_pids[i]); + #endif ++ } + } + } + if (upstream_state == 2) { diff --git a/recipes/enigma2/enigma2.bb b/recipes/enigma2/enigma2.bb index d938c5e..91ecda9 100644 --- a/recipes/enigma2/enigma2.bb +++ b/recipes/enigma2/enigma2.bb @@ -77,7 +77,7 @@ RDEPENDS_enigma2-plugin-extensions-hbbtv = "tslib-conf libts-1.0-0 libsysfs2 lib RDEPENDS_enigma2-plugin-systemplugins-devicemanager = "util-linux-ng-blkid ntfs-3g dosfstools" PN = "enigma2" -PR = "r62" +PR = "r63" SRCDATE = "20110922" SRCREV = "5e19a3f8a5e8ce8a4e2cb2b601a1b8ef3554e4be" diff --git a/recipes/linux/linux-vusolo2-3.3.6/vusolo2_defconfig b/recipes/linux/linux-vusolo2-3.3.6/vusolo2_defconfig index b1715f8..e063224 100644 --- a/recipes/linux/linux-vusolo2-3.3.6/vusolo2_defconfig +++ b/recipes/linux/linux-vusolo2-3.3.6/vusolo2_defconfig @@ -242,7 +242,7 @@ CONFIG_SMP=y CONFIG_SYS_SUPPORTS_SMP=y CONFIG_NR_CPUS=2 CONFIG_TICK_ONESHOT=y -# CONFIG_NO_HZ is not set +CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y # CONFIG_HZ_48 is not set @@ -301,6 +301,7 @@ CONFIG_TREE_RCU=y # CONFIG_RCU_TRACE is not set CONFIG_RCU_FANOUT=32 # CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set # CONFIG_TREE_RCU_TRACE is not set # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=14 @@ -2340,7 +2341,7 @@ CONFIG_DEBUG_KERNEL=y # CONFIG_LOCKUP_DETECTOR is not set # CONFIG_HARDLOCKUP_DETECTOR is not set # CONFIG_DETECT_HUNG_TASK is not set -# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHED_DEBUG=y # CONFIG_SCHEDSTATS is not set # CONFIG_TIMER_STATS is not set # CONFIG_DEBUG_OBJECTS is not set diff --git a/recipes/linux/linux-vusolo2_3.3.6.bb b/recipes/linux/linux-vusolo2_3.3.6.bb index 0962333..748d6d7 100644 --- a/recipes/linux/linux-vusolo2_3.3.6.bb +++ b/recipes/linux/linux-vusolo2_3.3.6.bb @@ -1,18 +1,19 @@ DESCRIPTION = "Linux kernel for vuplus solo2" LICENSE = "GPL" -KV = "2.6.37" +KV = "3.3.6" -PR = "r3" +PR = "r4" SRCREV = "" -MODULE = "linux-2.6.37" +MODULE = "linux-3.3.6" SRC_URI += "http://archive.vuplus.com/download/kernel/stblinux-3.3.6-1.2.tar.bz2 \ file://brcm_3.3.patch;patch=1;pnum=1 \ file://fix_cpu_proc.patch;patch=1;pnum=1 \ file://brcm_mtd_mac.patch;patch=1;pnum=1 \ file://dvb_core_5.5.patch;patch=1;pnum=1 \ + file://brcm_remove_entire_mtd.patch;patch=1;pnum=1 \ file://${MACHINE}_defconfig \ " diff --git a/recipes/netkit-base/netkit-base-0.17/vuduo2/inetd.conf b/recipes/netkit-base/netkit-base-0.17/vuduo2/inetd.conf new file mode 100755 index 0000000..3895175 --- /dev/null +++ b/recipes/netkit-base/netkit-base-0.17/vuduo2/inetd.conf @@ -0,0 +1,32 @@ +# /etc/inetd.conf: see inetd(8) for further informations. +# +# Internet server configuration database +# +# If you want to disable an entry so it isn't touched during +# package updates just comment it out with a single '#' character. +# +# +# +#:INTERNAL: Internal services +#echo stream tcp nowait root internal +#echo dgram udp wait root internal +#chargen stream tcp nowait root internal +#chargen dgram udp wait root internal +#discard stream tcp nowait root internal +#discard dgram udp wait root internal +#daytime stream tcp nowait root internal +#daytime dgram udp wait root internal +#time stream tcp nowait root internal +#time dgram udp wait root internal +ftp stream tcp nowait root /usr/sbin/vsftpd vsftpd +telnet stream tcp nowait root /usr/sbin/telnetd telnetd +31335 stream tcp nowait root /usr/sbin/streamsec streamsec +31337 stream tcp nowait root /usr/sbin/streamts streamts -ps +31338 stream tcp nowait root /usr/sbin/streampes streampes +31339 stream tcp nowait root /usr/sbin/streamts streamts -ts +31340 stream tcp nowait root /usr/sbin/udpstreampes udpstreampes +31341 stream udp nowait root /usr/sbin/udpstreampes udpstreampes +31342 stream tcp nowait root /usr/sbin/streamts streamts -tsfile +31343 stream tcp nowait root /usr/sbin/streampes streames +8001 stream tcp nowait root /usr/bin/streamproxy streamproxy +8002 stream tcp nowait root /usr/bin/transtreamproxy transtreamproxy diff --git a/recipes/netkit-base/netkit-base-0.17/vusolo2/inetd.conf b/recipes/netkit-base/netkit-base-0.17/vusolo2/inetd.conf new file mode 100755 index 0000000..3895175 --- /dev/null +++ b/recipes/netkit-base/netkit-base-0.17/vusolo2/inetd.conf @@ -0,0 +1,32 @@ +# /etc/inetd.conf: see inetd(8) for further informations. +# +# Internet server configuration database +# +# If you want to disable an entry so it isn't touched during +# package updates just comment it out with a single '#' character. +# +# +# +#:INTERNAL: Internal services +#echo stream tcp nowait root internal +#echo dgram udp wait root internal +#chargen stream tcp nowait root internal +#chargen dgram udp wait root internal +#discard stream tcp nowait root internal +#discard dgram udp wait root internal +#daytime stream tcp nowait root internal +#daytime dgram udp wait root internal +#time stream tcp nowait root internal +#time dgram udp wait root internal +ftp stream tcp nowait root /usr/sbin/vsftpd vsftpd +telnet stream tcp nowait root /usr/sbin/telnetd telnetd +31335 stream tcp nowait root /usr/sbin/streamsec streamsec +31337 stream tcp nowait root /usr/sbin/streamts streamts -ps +31338 stream tcp nowait root /usr/sbin/streampes streampes +31339 stream tcp nowait root /usr/sbin/streamts streamts -ts +31340 stream tcp nowait root /usr/sbin/udpstreampes udpstreampes +31341 stream udp nowait root /usr/sbin/udpstreampes udpstreampes +31342 stream tcp nowait root /usr/sbin/streamts streamts -tsfile +31343 stream tcp nowait root /usr/sbin/streampes streames +8001 stream tcp nowait root /usr/bin/streamproxy streamproxy +8002 stream tcp nowait root /usr/bin/transtreamproxy transtreamproxy diff --git a/recipes/netkit-base/netkit-base_0.17.bb b/recipes/netkit-base/netkit-base_0.17.bb index f58ad4d..18a10b6 100755 --- a/recipes/netkit-base/netkit-base_0.17.bb +++ b/recipes/netkit-base/netkit-base_0.17.bb @@ -1,7 +1,7 @@ SECTION = "base" DESCRIPTION = "netkit-base includes the inetd daemon." LICENSE = "BSD" -PR = "r1" +PR = "r2" SRC_URI = "ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/netkit-base-${PV}.tar.gz \ file://configure.patch;patch=1 \ diff --git a/recipes/tasks/task-vuplus-enigma2.bb b/recipes/tasks/task-vuplus-enigma2.bb index e5a70dd..5d7be2e 100644 --- a/recipes/tasks/task-vuplus-enigma2.bb +++ b/recipes/tasks/task-vuplus-enigma2.bb @@ -72,6 +72,9 @@ RDEPENDS_task-vuplus-enigma2_append_vuduo2 = "\ vuplus-blindscan-utils \ enigma2-plugin-systemplugins-firmwareupgrade \ enigma2-plugin-systemplugins-manualfancontrol \ + enigma2-plugin-systemplugins-autoshutdown \ + enigma2-plugin-systemplugins-transcodingsetup \ + enigma2-transtreamproxy \ " RDEPENDS_task-vuplus-enigma2_append_vusolo2 = "\ @@ -82,6 +85,8 @@ RDEPENDS_task-vuplus-enigma2_append_vusolo2 = "\ enigma2-plugin-systemplugins-firmwareupgrade \ enigma2-plugin-systemplugins-manualfancontrol \ enigma2-plugin-systemplugins-autoshutdown \ + enigma2-plugin-systemplugins-transcodingsetup \ + enigma2-transtreamproxy \ " RDEPENDS_task-vuplus-enigma2_append_vuuno = "\ diff --git a/recipes/vuplus/vuplus-dvb-modules.bb b/recipes/vuplus/vuplus-dvb-modules.bb index 5c02def..a095287 100755 --- a/recipes/vuplus/vuplus-dvb-modules.bb +++ b/recipes/vuplus/vuplus-dvb-modules.bb @@ -16,7 +16,7 @@ SRCDATE_vusolo = "20121025" SRCDATE_vuuno = "20121025" SRCDATE_vuultimo = "20121025" SRCDATE_vuduo2 = "20121116" -SRCDATE_vusolo2 = "20121109" +SRCDATE_vusolo2 = "20121217" MODULES_NAME_bm750 = "procmk\ndvb-bcm7335\nbrcmfb" MODULES_NAME_vusolo = "procmk\ndvb-bcm7325\nbrcmfb" @@ -41,7 +41,6 @@ DEPENDS_append_duo2 = " virtual/kernel" RDEPENDS_append_vuplus = " module-init-tools-depmod" SRC_URI = "http://archive.vuplus.com/download/drivers/vuplus-dvb-modules-${MACHINE}-${PV}-${PREFERRED_GCC_VERSION}-${SRCDATE}.tar.gz " -SRC_URI_vusolo2 = "http://archive.vuplus.com/download/drivers/beta/private/vuplus-dvb-modules-${MACHINE}-${PV}-${PREFERRED_GCC_VERSION}-${SRCDATE}.tar.gz " SRC_URI_vuduo2 = "http://archive.vuplus.com/download/drivers/beta/private/vuplus-dvb-modules-${MACHINE}-${PV}-${PREFERRED_GCC_VERSION}-${SRCDATE}.tar.gz " S = "${WORKDIR}"