diff --git a/scripts/runqemu-ifup b/scripts/runqemu-ifup
index f80538f..e4c3daf 100755
--- a/scripts/runqemu-ifup
+++ b/scripts/runqemu-ifup
@@ -34,7 +34,7 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 usage() {
-	echo "sudo $(basename $0) <gid> <native-sysroot-basedir>"
+	echo "sudo $(basename $0) <uid> <gid> <native-sysroot-basedir>"
 }
 
 if [ $EUID -ne 0 ]; then
@@ -42,13 +42,14 @@ if [ $EUID -ne 0 ]; then
 	exit 1
 fi
 
-if [ $# -ne 2 ]; then
+if [ $# -ne 3 ]; then
 	usage
 	exit 1
 fi
 
-GROUP="-g $1"
-NATIVE_SYSROOT_DIR=$2
+USERID="-u $1"
+GROUP="-g $2"
+NATIVE_SYSROOT_DIR=$3
 
 TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl
 if [ ! -x "$TUNCTL" ]; then
@@ -59,9 +60,14 @@ fi
 TAP=`$TUNCTL -b $GROUP 2>&1`
 STATUS=$?
 if [ $STATUS -ne 0 ]; then
-	echo "tunctl failed:"
-	echo $TAP
-	exit 1
+# If tunctl -g fails, try using tunctl -u, for older host kernels 
+# which do not support the TUNSETGROUP ioctl
+	TAP=`$TUNCTL -b $USERID 2>&1`
+	STATUS=$?
+	if [ $STATUS -ne 0 ]; then
+		echo "tunctl failed:"
+		exit 1
+	fi
 fi
 
 IFCONFIG=`which ifconfig 2> /dev/null`
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 1831a09..fb0d806 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -173,13 +173,14 @@ if [ "$TAP" = "" ]; then
     fi
 
     GROUPID=`id -g`
+    USERID=`id -u`
     echo "Setting up tap interface under sudo"
     # Redirect stderr since we could see a LD_PRELOAD warning here if pseudo is loaded
     # but inactive. This looks scary but is harmless
-    tap=`sudo $QEMUIFUP $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
+    tap=`sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
     if [ $? -ne 0 ]; then
         # Re-run standalone to see verbose errors
-        sudo $QEMUIFUP $GROUPID $OECORE_NATIVE_SYSROOT
+        sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT
         return
     fi
     LOCKFILE="$LOCKDIR/$tap"
