summaryrefslogtreecommitdiff
path: root/recipes-core
diff options
context:
space:
mode:
authorJesse Gilles <jgilles@multitech.com>2014-11-04 11:51:34 -0600
committerJesse Gilles <jgilles@multitech.com>2014-11-04 11:51:34 -0600
commite243c30f04c18722dc65effe6d4f275a3f35de46 (patch)
tree807610ce8af0ead02681d6c3cc89d902ec941652 /recipes-core
downloadmeta-mlinux-e243c30f04c18722dc65effe6d4f275a3f35de46.tar.gz
meta-mlinux-e243c30f04c18722dc65effe6d4f275a3f35de46.tar.bz2
meta-mlinux-e243c30f04c18722dc65effe6d4f275a3f35de46.zip
initial commit of mLinux layer
Diffstat (limited to 'recipes-core')
-rw-r--r--recipes-core/base-files/base-files/mlinux/issue7
-rw-r--r--recipes-core/base-files/base-files/mlinux/issue.net7
-rw-r--r--recipes-core/base-files/base-files/mtcdt/fstab12
-rw-r--r--recipes-core/base-files/base-files_3.0.14.bbappend4
-rw-r--r--recipes-core/busybox/busybox-1.22.1/defconfig1020
-rw-r--r--recipes-core/busybox/busybox_1.22.1.bbappend8
-rw-r--r--recipes-core/busybox/files/udhcpd.conf.example6
-rw-r--r--recipes-core/images/mlinux-base-image.bb57
-rw-r--r--recipes-core/images/mlinux-factory-image.bb61
-rw-r--r--recipes-core/images/mlinux-minimal-image.bb40
-rw-r--r--recipes-core/images/mlinux-mono-image.bb3
-rw-r--r--recipes-core/initscripts/initscripts-1.0/umountfs158
-rw-r--r--recipes-core/initscripts/initscripts_1.0.bbappend4
-rw-r--r--recipes-core/multitech/config/config.init105
-rw-r--r--recipes-core/multitech/config/network/interfaces29
-rw-r--r--recipes-core/multitech/config/ppp/chap-secrets3
-rw-r--r--recipes-core/multitech/config/ppp/options22
-rw-r--r--recipes-core/multitech/config/ppp/pap-secrets3
-rw-r--r--recipes-core/multitech/config/ppp/peers/cdma9
-rw-r--r--recipes-core/multitech/config/ppp/peers/cdma_chat18
-rw-r--r--recipes-core/multitech/config/ppp/peers/gsm11
-rw-r--r--recipes-core/multitech/config/ppp/peers/gsm_chat26
-rw-r--r--recipes-core/multitech/config_1.0.bb40
-rw-r--r--recipes-core/multitech/mlinux-version.bb22
-rw-r--r--recipes-core/multitech/reset-handler/reset-handler.default2
-rw-r--r--recipes-core/multitech/reset-handler/reset-handler.init30
-rwxr-xr-xrecipes-core/multitech/reset-handler/reset-handler.sh72
-rw-r--r--recipes-core/multitech/reset-handler_1.0.bb29
-rw-r--r--recipes-core/multitech/upgrade-reboot_1.0.0.bb17
-rw-r--r--recipes-core/ocg-scripts/ocg-scripts-1.0.inc18
-rwxr-xr-xrecipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router147
-rwxr-xr-xrecipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd65
-rwxr-xr-xrecipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn40
-rwxr-xr-xrecipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap165
-rw-r--r--recipes-core/ocg-scripts/ocg-scripts_1.0.bb7
-rw-r--r--recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend2
-rw-r--r--recipes-core/udev/udev-182/cellular_radios.rules47
-rw-r--r--recipes-core/udev/udev-182/init138
-rw-r--r--recipes-core/udev/udev-182/mtcdt/mtcdt.rules12
-rw-r--r--recipes-core/udev/udev-extraconf/automount.rules24
-rw-r--r--recipes-core/udev/udev-extraconf_1.0.bbappend2
-rw-r--r--recipes-core/udev/udev_182.bbappend11
42 files changed, 2503 insertions, 0 deletions
diff --git a/recipes-core/base-files/base-files/mlinux/issue b/recipes-core/base-files/base-files/mlinux/issue
new file mode 100644
index 0000000..9de31d4
--- /dev/null
+++ b/recipes-core/base-files/base-files/mlinux/issue
@@ -0,0 +1,7 @@
+ _ _
+ _ __ ___ | | (_)_ __ _ ___ __
+ | '_ ` _ \\| | | | '_ \\| | | \\ \\/ /
+ | | | | | | |___| | | | | |_| |> <
+ |_| |_| |_|_____|_|_| |_|\\__,_/_/\\_\\
+
+MultiTech Systems mLinux GNU/Linux
diff --git a/recipes-core/base-files/base-files/mlinux/issue.net b/recipes-core/base-files/base-files/mlinux/issue.net
new file mode 100644
index 0000000..efd075c
--- /dev/null
+++ b/recipes-core/base-files/base-files/mlinux/issue.net
@@ -0,0 +1,7 @@
+ _ _
+ _ __ ___ | | (_)_ __ _ ___ __
+ | '_ ` _ \| | | | '_ \| | | \ \/ /
+ | | | | | | |___| | | | | |_| |> <
+ |_| |_| |_|_____|_|_| |_|\__,_/_/\_\
+
+Multi-Tech Systems mLinux GNU/Linux
diff --git a/recipes-core/base-files/base-files/mtcdt/fstab b/recipes-core/base-files/base-files/mtcdt/fstab
new file mode 100644
index 0000000..ed71d2f
--- /dev/null
+++ b/recipes-core/base-files/base-files/mtcdt/fstab
@@ -0,0 +1,12 @@
+rootfs / auto defaults 1 1
+proc /proc proc defaults 0 0
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+usbdevfs /proc/bus/usb usbdevfs noauto 0 0
+tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0
+tmpfs /var/volatile tmpfs defaults 0 0
+
+/dev/mtdblock6 /var/config jffs2 defaults 0 0
+/dev/mtdblock7 /var/oem jffs2 defaults,ro 0 0
+
+# SD card
+/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0
diff --git a/recipes-core/base-files/base-files_3.0.14.bbappend b/recipes-core/base-files/base-files_3.0.14.bbappend
new file mode 100644
index 0000000..461f869
--- /dev/null
+++ b/recipes-core/base-files/base-files_3.0.14.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}"
+
+# add SD card dir
+dirs755_append = " /media/card"
diff --git a/recipes-core/busybox/busybox-1.22.1/defconfig b/recipes-core/busybox/busybox-1.22.1/defconfig
new file mode 100644
index 0000000..0387a9d
--- /dev/null
+++ b/recipes-core/busybox/busybox-1.22.1/defconfig
@@ -0,0 +1,1020 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.20.2
+# Mon Aug 20 17:01:45 2012
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_DESKTOP is not set
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_INCLUDE_SUSv2 is not set
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_PLATFORM_LINUX=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_INSTALL_NO_USR is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_UNICODE_SUPPORT is not set
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=0
+CONFIG_LAST_SUPPORTED_WCHAR=0
+# CONFIG_UNICODE_COMBINING_WCHARS is not set
+# CONFIG_UNICODE_WIDE_WCHARS is not set
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+CONFIG_LONG_OPTS=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_UTMP=y
+# CONFIG_FEATURE_WTMP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+# CONFIG_CROSS_COMPILER_PREFIX is not set
+CONFIG_SYSROOT=""
+# CONFIG_EXTRA_CFLAGS is not set
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Installation Options ("make install" behavior)
+#
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_FEATURE_SYSTEMD=y
+CONFIG_FEATURE_RTMINMAX=y
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=1
+CONFIG_FEATURE_FAST_TOP=y
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+# CONFIG_FEATURE_EDITING_VI is not set
+CONFIG_FEATURE_EDITING_HISTORY=64
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+# CONFIG_FEATURE_REVERSE_SEARCH is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+CONFIG_FEATURE_USERNAME_COMPLETION=y
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_FEATURE_SKIP_ROOTFS=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+CONFIG_FEATURE_HWIB=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_FEATURE_SEAMLESS_XZ=y
+CONFIG_FEATURE_SEAMLESS_LZMA=y
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_FEATURE_AR_CREATE=y
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+CONFIG_CPIO=y
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_GZIP=y
+CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+CONFIG_GZIP_FAST=0
+CONFIG_LZOP=y
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_TO_COMMAND=y
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
+# CONFIG_FEATURE_TAR_SELINUX is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+# CONFIG_LZMA is not set
+CONFIG_UNXZ=y
+CONFIG_XZ=y
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+# CONFIG_FEATURE_DATE_NANO is not set
+CONFIG_FEATURE_DATE_COMPAT=y
+# CONFIG_HOSTID is not set
+CONFIG_ID=y
+CONFIG_GROUPS=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_FEATURE_TOUCH_SUSV3=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_BASE64=y
+CONFIG_WHO=y
+CONFIG_USERS=y
+# CONFIG_CAL is not set
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+CONFIG_CHROOT=y
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_FEATURE_CP_LONG_OPTIONS=y
+CONFIG_CUT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_DF=y
+CONFIG_FEATURE_DF_FANCY=y
+CONFIG_DIRNAME=y
+# CONFIG_DOS2UNIX is not set
+# CONFIG_UNIX2DOS is not set
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+# CONFIG_EXPAND is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+CONFIG_FSYNC=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+# CONFIG_PRINTENV is not set
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y
+CONFIG_SEQ=y
+# CONFIG_SHA1SUM is not set
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_FEATURE_FLOAT_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+# CONFIG_TAC is not set
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+# CONFIG_UUDECODE is not set
+# CONFIG_UUENCODE is not set
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum, sha256sum, sha512sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+# CONFIG_FGCONSOLE is not set
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+# CONFIG_KBD_MODE is not set
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+# CONFIG_SETKEYCODES is not set
+# CONFIG_SETLOGCONS is not set
+# CONFIG_SHOWKEY is not set
+
+#
+# Common options for loadfont and setfont
+#
+# CONFIG_FEATURE_LOADFONT_PSF2 is not set
+# CONFIG_FEATURE_LOADFONT_RAW is not set
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+# CONFIG_PIPE_PROGRESS is not set
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_PATCH=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_REGEX_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+# CONFIG_FEATURE_VI_READONLY is not set
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_ASK_TERMINAL=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_LIBM=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_ED is not set
+CONFIG_SED=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+CONFIG_FEATURE_FIND_DELETE=y
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_FEATURE_FIND_LINKS=y
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+CONFIG_HALT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+# CONFIG_INIT is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_KILL_REMOVED is not set
+CONFIG_FEATURE_KILL_DELAY=0
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_INIT_TERMINAL_TYPE=""
+# CONFIG_MESG is not set
+# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_ADD_SHELL is not set
+# CONFIG_REMOVE_SHELL is not set
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+# CONFIG_USE_BB_CRYPT_SHA is not set
+# CONFIG_ADDUSER is not set
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+# CONFIG_ADDGROUP is not set
+# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+# CONFIG_DELUSER is not set
+# CONFIG_DELGROUP is not set
+# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
+# CONFIG_GETTY is not set
+# CONFIG_LOGIN is not set
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+# CONFIG_PAM is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+# CONFIG_FEATURE_NOLOGIN is not set
+# CONFIG_FEATURE_SECURETTY is not set
+# CONFIG_PASSWD is not set
+# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
+# CONFIG_CRYPTPW is not set
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
+# CONFIG_SU is not set
+# CONFIG_FEATURE_SU_SYSLOG is not set
+# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+# CONFIG_LSATTR is not set
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODINFO is not set
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_INSMOD=y
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+CONFIG_MODPROBE=y
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+CONFIG_DEPMOD=y
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+# CONFIG_BLOCKDEV is not set
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_RENAME is not set
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_REV is not set
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKID is not set
+# CONFIG_FEATURE_BLKID_TYPE is not set
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_GPT_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FINDFS is not set
+CONFIG_FLOCK=y
+# CONFIG_FREERAMDISK is not set
+CONFIG_FSCK_MINIX=y
+# CONFIG_MKFS_EXT2 is not set
+CONFIG_MKFS_MINIX=y
+CONFIG_FEATURE_MINIX2=y
+# CONFIG_MKFS_REISER is not set
+# CONFIG_MKFS_VFAT is not set
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
+CONFIG_HEXDUMP=y
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+CONFIG_LOSETUP=y
+# CONFIG_LSPCI is not set
+# CONFIG_LSUSB is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+CONFIG_MORE=y
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_FEATURE_MOUNT_CIFS is not set
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_RDEV is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+CONFIG_FEATURE_SWAPON_PRI=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+# CONFIG_VOLUMEID is not set
+# CONFIG_FEATURE_VOLUMEID_EXT is not set
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_FAT is not set
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_CONSPY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+# CONFIG_SETSERIAL is not set
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+# CONFIG_CHRT is not set
+# CONFIG_CROND is not set
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR=""
+# CONFIG_CRONTAB is not set
+CONFIG_DC=y
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+# CONFIG_EJECT is not set
+# CONFIG_FEATURE_EJECT_SCSI is not set
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASHCP is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_IONICE is not set
+# CONFIG_INOTIFYD is not set
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_SMALL is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MAN is not set
+CONFIG_MICROCOM=y
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+CONFIG_RFKILL=y
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+# CONFIG_SETSID is not set
+CONFIG_STRINGS=y
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_TIME=y
+# CONFIG_TIMEOUT is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_VOLNAME is not set
+# CONFIG_WALL is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+# CONFIG_NAMEIF is not set
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+# CONFIG_NBDCLIENT is not set
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+# CONFIG_NC_110_COMPAT is not set
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+# CONFIG_WHOIS is not set
+CONFIG_FEATURE_IPV6=y
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+# CONFIG_ARPING is not set
+# CONFIG_BRCTL is not set
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+# CONFIG_DNSD is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTP_WRITE is not set
+# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+# CONFIG_FEATURE_HTTPD_GZIP is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+# CONFIG_FEATURE_IP_RULE is not set
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPRULE is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+CONFIG_NETSTAT=y
+CONFIG_FEATURE_NETSTAT_WIDE=y
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+# CONFIG_NTPD is not set
+# CONFIG_FEATURE_NTPD_SERVER is not set
+# CONFIG_PSCAN is not set
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+# CONFIG_TCPSVD is not set
+CONFIG_TELNET=y
+# CONFIG_FEATURE_TELNET_TTYPE is not set
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
+CONFIG_TFTP=y
+# CONFIG_TFTPD is not set
+
+#
+# Common options for tftp/tftpd
+#
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
+# CONFIG_TFTP_DEBUG is not set
+CONFIG_TRACEROUTE=y
+CONFIG_TRACEROUTE6=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
+CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
+# CONFIG_UDHCPC6 is not set
+CONFIG_UDHCPD=y
+# CONFIG_DHCPRELAY is not set
+CONFIG_DUMPLEASES=y
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases"
+CONFIG_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+# CONFIG_FEATURE_UDHCP_8021Q is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+# CONFIG_UDPSVD is not set
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+# CONFIG_ZCIP is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+
+#
+# Process Utilities
+#
+# CONFIG_IOSTAT is not set
+# CONFIG_LSOF is not set
+# CONFIG_MPSTAT is not set
+# CONFIG_NMETER is not set
+# CONFIG_PMAP is not set
+# CONFIG_POWERTOP is not set
+# CONFIG_PSTREE is not set
+# CONFIG_PWDX is not set
+# CONFIG_SMEMCAP is not set
+CONFIG_UPTIME=y
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_KILLALL5 is not set
+# CONFIG_PGREP is not set
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+# CONFIG_PKILL is not set
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_FEATURE_PS_LONG=y
+# CONFIG_FEATURE_PS_TIME is not set
+CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+# CONFIG_FEATURE_SHOW_THREADS is not set
+CONFIG_WATCH=y
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Shells
+#
+CONFIG_ASH=y
+CONFIG_ASH_BASH_COMPAT=y
+# CONFIG_ASH_IDLE_TIMEOUT is not set
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_MSH is not set
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+# CONFIG_FEATURE_BASH_IS_ASH is not set
+# CONFIG_FEATURE_BASH_IS_HUSH is not set
+CONFIG_FEATURE_BASH_IS_NONE=y
+CONFIG_SH_MATH_SUPPORT=y
+CONFIG_SH_MATH_SUPPORT_64=y
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_FEATURE_SH_HISTFILESIZE=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_SYSLOGD_DUP=y
+CONFIG_FEATURE_SYSLOGD_CFG=y
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_FEATURE_KLOGD_KLOGCTL=y
+CONFIG_LOGGER=y
diff --git a/recipes-core/busybox/busybox_1.22.1.bbappend b/recipes-core/busybox/busybox_1.22.1.bbappend
new file mode 100644
index 0000000..b6f475d
--- /dev/null
+++ b/recipes-core/busybox/busybox_1.22.1.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:${THISDIR}/files:"
+
+SRC_URI += "file://udhcpd.conf.example"
+
+do_install_append () {
+ install -m 600 ${WORKDIR}/udhcpd.conf.example ${D}${sysconfdir}/udhcpd.conf.example
+ install -m 600 ${WORKDIR}/udhcpd.conf.example ${D}${sysconfdir}/udhcpd.conf
+}
diff --git a/recipes-core/busybox/files/udhcpd.conf.example b/recipes-core/busybox/files/udhcpd.conf.example
new file mode 100644
index 0000000..f72d672
--- /dev/null
+++ b/recipes-core/busybox/files/udhcpd.conf.example
@@ -0,0 +1,6 @@
+start 192.168.2.100
+end 192.168.2.254
+interface eth0
+option subnet 255.255.255.0
+option router 192.168.2.1
+option dns 8.8.8.8 # google's DNS server
diff --git a/recipes-core/images/mlinux-base-image.bb b/recipes-core/images/mlinux-base-image.bb
new file mode 100644
index 0000000..939b309
--- /dev/null
+++ b/recipes-core/images/mlinux-base-image.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "mLinux base image"
+LICENSE = "MIT"
+
+require mlinux-minimal-image.bb
+
+FILESYSTEM_FEATURES = "dosfstools \
+ cifs-utils \
+ lsof \
+ "
+
+NETWORKING_FEATURES += "bridge-utils \
+ inetutils-ftp \
+ openssl \
+ rsync \
+ iperf \
+ mii-diag \
+ tcpdump \
+ "
+
+WIFI_FEATURES = " \
+ libnl \
+ wpa-supplicant \
+ wireless-tools \
+ iw \
+ hostap-daemon hostap-utils \
+ "
+
+BLUETOOTH_FEATURES = "bluez4"
+
+# Add all timezones available
+# ntpdate will sync time every 30 min by default via cron
+TIME_FEATURES = "tzdata tzdata-africa tzdata-americas tzdata-antarctica tzdata-arctic \
+ tzdata-asia tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific \
+ tzdata-misc \
+ cronie \
+ ntpdate \
+ "
+
+# u-boot-linux-utils: U-Boot environment access from Linux
+# ocg-scripts: sample scripts for setting up OCG for various tasks
+# reset-handler: default reset button handler
+MULTITECH_FEATURES += " \
+ u-boot-linux-utils \
+ ocg-scripts \
+ reset-handler \
+ "
+
+MISC_FEATURES = "minicom lrzsz nano"
+
+# Extra stuff to install
+IMAGE_INSTALL += " \
+ ${WIFI_FEATURES} \
+ ${BLUETOOTH_FEATURES} \
+ ${FILESYSTEM_FEATURES} \
+ ${TIME_FEATURES} \
+ ${MISC_FEATURES} \
+ "
diff --git a/recipes-core/images/mlinux-factory-image.bb b/recipes-core/images/mlinux-factory-image.bb
new file mode 100644
index 0000000..a0d1ef4
--- /dev/null
+++ b/recipes-core/images/mlinux-factory-image.bb
@@ -0,0 +1,61 @@
+require mlinux-base-image.bb
+
+LIGHTTPD = "lighttpd \
+ lighttpd-module-cgi lighttpd-module-indexfile \
+ lighttpd-module-redirect lighttpd-module-auth \
+ lighttpd-module-access lighttpd-module-accesslog \
+ lighttpd-module-rewrite lighttpd-module-proxy lighttpd-module-fastcgi \
+ lighttpd-module-scgi lighttpd-module-alias \
+ lighttpd-module-dirlisting lighttpd-module-staticfile \
+ "
+
+# Lighttpd web server
+IMAGE_INSTALL += "${LIGHTTPD}"
+
+IMAGE_INSTALL += "sqlite3"
+
+IMAGE_INSTALL += "autossh"
+
+# Perl support
+IMAGE_INSTALL += "perl"
+IMAGE_INSTALL += "perl-module-io perl-module-fcntl"
+# not in meta-oe or oe-core...
+#IMAGE_INSTALL += "libdevice-serialport-perl"
+#IMAGE_INSTALL += "libexpect-perl"
+
+# Python support
+IMAGE_INSTALL += "python"
+IMAGE_INSTALL += "python-pyserial"
+IMAGE_INSTALL += "python-simplejson"
+IMAGE_INSTALL += "python-unixadmin"
+IMAGE_INSTALL += "python-textutils"
+IMAGE_INSTALL += "python-html"
+IMAGE_INSTALL += "python-sqlite3"
+
+# Ruby support
+IMAGE_INSTALL += "ruby"
+IMAGE_INSTALL += "ruby-sqlite3"
+IMAGE_INSTALL += "ruby-serialport"
+
+# OpenJDK Java runtime
+IMAGE_INSTALL += "openjdk-7-jre"
+# OpenJDK with JamVM VM (Multi-Tech default)
+IMAGE_INSTALL += "openjdk-7-vm-jamvm"
+# OpenJDK with CACAO VM (run with 'java -cacao')
+IMAGE_INSTALL += "openjdk-7-vm-cacao"
+# OpenJDK Zero VM (run with 'java -zero')
+IMAGE_INSTALL += "openjdk-7-vm-zero"
+
+# PHP support
+IMAGE_INSTALL += "php php-cli php-cgi"
+
+# Node.js support
+IMAGE_INSTALL += "nodejs"
+
+# Multi-Tech SMS Utility (see http://git.multitech.net)
+IMAGE_INSTALL += "sms-utils"
+# Multi-Tech GPS Utility
+IMAGE_INSTALL += "venus-gps"
+
+IMAGE_INSTALL += "uvccapture"
+
diff --git a/recipes-core/images/mlinux-minimal-image.bb b/recipes-core/images/mlinux-minimal-image.bb
new file mode 100644
index 0000000..522ee2a
--- /dev/null
+++ b/recipes-core/images/mlinux-minimal-image.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "mLinux minimal image"
+LICENSE = "MIT"
+
+inherit core-image
+inherit mlinux-image
+
+IMAGE_LINGUAS = ""
+IMAGE_FEATURES += "ssh-server-openssh package-management"
+
+CORE_FEATURES = "packagegroup-core-boot packagegroup-distro-base \
+ packagegroup-base-ext2 \
+ packagegroup-base-usbhost packagegroup-base-usbgadget \
+ udev-extraconf usb-gadget-mode \
+ sysfsutils module-init-tools kernel-modules \
+ bash procps mtd-utils mtd-utils-jffs2 \
+ openssh-sftp-server \
+ util-linux-mount util-linux-umount \
+ ${CORE_IMAGE_EXTRA_INSTALL} \
+ "
+
+NETWORKING_FEATURES = "ppp curl iproute2 \
+ iptables iputils \
+ "
+
+# mts-io: IO Controller for Multi-Tech hardware.
+# (LEDs, temp sensor, serial lines, and more)
+#
+# config: Handles default config files stored in /var/config.
+# /var/config is mounted on a separate flash partition so that config
+# files survive flashing of rootfs. See recipe for details.
+MULTITECH_FEATURES = "mts-io config mts-id-eeprom"
+
+UPGRADE_FEATURES = "upgrade-reboot mtd-utils-static"
+
+IMAGE_INSTALL = "${CORE_FEATURES} \
+ ${NETWORKING_FEATURES} \
+ ${UPGRADE_FEATURES} \
+ ${MULTITECH_FEATURES} \
+ "
+
diff --git a/recipes-core/images/mlinux-mono-image.bb b/recipes-core/images/mlinux-mono-image.bb
new file mode 100644
index 0000000..f15d7d2
--- /dev/null
+++ b/recipes-core/images/mlinux-mono-image.bb
@@ -0,0 +1,3 @@
+require mlinux-base-image.bb
+
+IMAGE_INSTALL += "mono mono-helloworld"
diff --git a/recipes-core/initscripts/initscripts-1.0/umountfs b/recipes-core/initscripts/initscripts-1.0/umountfs
new file mode 100644
index 0000000..1c9a9ce
--- /dev/null
+++ b/recipes-core/initscripts/initscripts-1.0/umountfs
@@ -0,0 +1,158 @@
+#!/bin/bash
+### BEGIN INIT INFO
+# Provides: umountfs
+# Required-Start:
+# Required-Stop:
+# Default-Start:
+# Default-Stop: 0 6
+# Short-Description: Turn off swap and unmount all local file systems.
+# Description:
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+umount_all() {
+ echo "Deactivating swap..."
+ swapoff -a
+
+ # We leave /proc mounted.
+ echo "Unmounting local filesystems..."
+ grep -q /mnt/ram /proc/mounts && mount -o remount,ro /mnt/ram
+ umount -f -a -r > /dev/null 2>&1
+
+ mount -o remount,ro /
+}
+
+blink_leds() {
+ leds=/sys/class/leds/*
+ nleds=$(echo $leds | wc -w)
+
+ # turn LEDs off
+ for led in $leds; do
+ echo "timer" > $led/trigger
+ echo 0 > $led/delay_off
+ done
+
+ int=200
+ total=$(( int * (nleds+1) ))
+ on=$(( total - int ))
+ off=$(( total - on ))
+
+ # make a pattern
+ for led in $leds; do
+ echo "$on" > $led/delay_on
+ echo "$off" > $led/delay_off
+ on=$(( on - int ))
+ off=$(( total - on ))
+ done
+}
+
+flash_upgrade() {
+ if [ $# -ne 1 ]; then
+ echo "need to specify flash-root"
+ return
+ fi
+ # flash_root must be a mountpoint that is not the rootfs and be mounted rw
+ local flash_root=${1}
+
+ local flash_dir=${flash_root}/flash-upgrade
+ local uImage_file=${flash_dir}/uImage.bin
+ local rootfs_file=${flash_dir}/rootfs.jffs2
+
+ local reboot_cmd=/usr/sbin/upgrade-reboot
+ local nandwrite_cmd=/usr/bin/nandwrite.static
+ local mode=
+ local uImage_mtd=
+ local rootfs_mtd=
+
+ if [ ! -d "${flash_dir}" ]; then
+ echo "${flash_dir} not present, skipping"
+ return
+ fi
+
+ if ! mountpoint -q "${flash_root}"; then
+ echo "${flash_root} is not a mountpoint"
+ return
+ fi
+
+ mode=$(grep "${flash_root}" /proc/mounts | cut -d ' ' -f 4 | cut -d ',' -f 1)
+ if [ "${mode}" != "rw" ]; then
+ echo "${flash_root} is not mounted rw"
+ return
+ fi
+
+ if [ ! -x "${reboot_cmd}" ]; then
+ echo "${reboot_cmd} is not installed"
+ return
+ fi
+
+ if [ ! -x "${nandwrite_cmd}" ]; then
+ echo "${nandwrite_cmd} is not installed"
+ return
+ fi
+
+ uImage_mtd="/dev/$(cat /proc/mtd | grep uImage | cut -d : -f 1)"
+ if [ ! -c "${uImage_mtd}" ]; then
+ echo "No valid MTD partition is labeled uImage"
+ return
+ fi
+
+ rootfs_mtd="/dev/$(cat /proc/mtd | grep Rootfs | cut -d : -f 1)"
+ if [ ! -c "${rootfs_mtd}" ]; then
+ echo "No valid MTD partition is labeled Rootfs"
+ return
+ fi
+
+ echo ""
+ echo "Starting flash upgrade from ${flash_dir}..."
+
+ blink_leds
+
+ if [ -f ${uImage_file} ]; then
+ echo "Flashing ${uImage_mtd} (uImage) with ${uImage_file}..."
+
+ flash_erase ${uImage_mtd} 0 0
+ nandwrite -p ${uImage_mtd} ${uImage_file}
+ else
+ echo "uImage file ${uImage_file} not found"
+ fi
+
+ if [ -f ${rootfs_file} ]; then
+ echo "Flashing ${rootfs_mtd} (rootfs) with ${rootfs_file}..."
+
+ cp ${reboot_cmd} ${flash_dir}/upgrade-reboot
+ cp ${nandwrite_cmd} ${flash_dir}/nandwrite.static
+
+ sync
+ sleep 2
+ mount -o remount,ro ${flash_root}
+
+ # flash_root is not going to be umounted
+ sed -i -e "\\|${flash_root}| d" /etc/mtab
+
+ umount_all
+
+ flash_erase -j ${rootfs_mtd} 0 0
+ ${flash_dir}/nandwrite.static -p ${rootfs_mtd} ${rootfs_file}
+
+ echo "Rebooting..."
+
+ ${flash_dir}/upgrade-reboot
+
+ # Should not get here normally
+ echo "upgrade-reboot failed"
+ exit 1
+ else
+ echo "rootfs file ${rootfs_file} not found"
+ fi
+}
+
+# do flash on reboot if do_flash_upgrade exists
+if [ -f /var/volatile/do_flash_upgrade ]; then
+ flash_upgrade /var/volatile
+ flash_upgrade /media/card
+fi
+
+umount_all
+
+: exit 0
diff --git a/recipes-core/initscripts/initscripts_1.0.bbappend b/recipes-core/initscripts/initscripts_1.0.bbappend
new file mode 100644
index 0000000..d00d5f5
--- /dev/null
+++ b/recipes-core/initscripts/initscripts_1.0.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
+
+# flash on reboot/umountfs needs regular umount (not busybox)
+RDEPENDS_${PN} += "util-linux-umount util-linux-mount bash"
diff --git a/recipes-core/multitech/config/config.init b/recipes-core/multitech/config/config.init
new file mode 100644
index 0000000..874416c
--- /dev/null
+++ b/recipes-core/multitech/config/config.init
@@ -0,0 +1,105 @@
+#!/bin/sh
+
+CONFIG_MTDC=/dev/mtd6
+CONFIG_MTDB=/dev/mtdblock6
+CONFIG_DIR=/var/config
+
+OEM_MTDC=/dev/mtd7
+OEM_MTDB=/dev/mtdblock7
+OEM_DIR=/var/oem
+
+FILES="network/interfaces \
+ppp/options \
+ppp/pap-secrets \
+ppp/chap-secrets \
+ppp/peers \
+"
+
+mount_config() {
+ echo "Mounting ${CONFIG_DIR}"
+ mkdir -p ${CONFIG_DIR}
+ mount ${CONFIG_DIR}
+
+ # Prepare flash for JFFS2 if mount fails
+ if [ $? -ne 0 ]; then
+ echo "Creating ${CONFIG_DIR}"
+ flash_erase -j ${CONFIG_MTDC} 0 0
+ mount ${CONFIG_DIR}
+ fi
+}
+
+mount_oem() {
+ echo "Mounting ${OEM_DIR}"
+ mkdir -p ${OEM_DIR}
+ mount ${OEM_DIR}
+
+ # Prepare flash for JFFS2 if mount fails
+ if [ $? -ne 0 ]; then
+ echo "Creating ${OEM_DIR}"
+ flash_erase -j ${OEM_MTDC} 0 0
+ mount ${OEM_DIR}
+ fi
+}
+
+case $1 in
+ start)
+ # mount config if not already mounted
+ if ! grep -q "^${CONFIG_MTDB} " /proc/mounts; then
+ mount_config
+ else
+ echo "$CONFIG_DIR already mounted"
+ fi
+
+ # mount oem if specified in /etc/fstab and it isn't already mounted
+ if grep -qE "^${OEM_MTDB}\s+${OEM_DIR}\s+" /etc/fstab; then
+ if ! grep -q "^${OEM_MTDB} " /proc/mounts; then
+ mount_oem
+ else
+ echo "$OEM_DIR already mounted"
+ fi
+ fi
+
+ # Default all config files if requested
+ cd ${CONFIG_DIR}
+ if [ -f force_defaults ]; then
+ echo "Extracting default config files"
+ tar -xvf /etc/defaults.tar.gz
+
+ if [ -f /etc/default_pass ]; then
+ echo "Defaulting root password"
+ PASSHASH=`cat /etc/default_pass`
+ PASSFILE=/etc/shadow
+ if [ ! -e /etc/shadow ]; then
+ PASSFILE=/etc/passwd
+ fi
+ sed -i "s%^root:[^:]*:%root:${PASSHASH}:%" $PASSFILE
+ fi
+
+ rm -f force_defaults
+ fi
+
+ # Extract any missing files
+ TARFILES=`tar -tf /etc/defaults.tar.gz`
+ for file in $TARFILES; do
+ if [ ! -e $file ]; then
+ tar -xvf /etc/defaults.tar.gz $file
+ fi
+ done
+
+ # Create links in /etc
+ for file in $FILES; do
+ if [ ! -L /etc/$file ]; then
+ echo "Creating link to ${CONFIG_DIR}/$file"
+ rm -rf /etc/$file
+ ln -sf ${CONFIG_DIR}/$file /etc/$file
+ fi
+ done
+
+ ;;
+
+ *)
+ echo "Usage: $0 {start}"
+ exit 2
+ ;;
+
+esac
diff --git a/recipes-core/multitech/config/network/interfaces b/recipes-core/multitech/config/network/interfaces
new file mode 100644
index 0000000..546fd29
--- /dev/null
+++ b/recipes-core/multitech/config/network/interfaces
@@ -0,0 +1,29 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Wired interface
+auto eth0
+iface eth0 inet static
+address 192.168.2.1
+netmask 255.255.255.0
+
+# Bridge interface with eth0 (comment out eth0 lines above to use with bridge)
+# iface eth0 inet manual
+#
+# auto br0
+# iface br0 inet static
+# bridge_ports eth0
+# address 192.168.2.1
+# netmask 255.255.255.0
+
+# Wifi client
+# NOTE: udev rules will bring up wlan0 automatically if a wifi device is detected
+# and the wlan0 interface is defined, therefore an "auto wlan0" line is not needed.
+# If "auto wlan0" is also specified, startup conflicts may result.
+#iface wlan0 inet dhcp
+#wpa-conf /var/config/wpa_supplicant.conf
+#wpa-driver nl80211
+
diff --git a/recipes-core/multitech/config/ppp/chap-secrets b/recipes-core/multitech/config/ppp/chap-secrets
new file mode 100644
index 0000000..60efe8f
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/chap-secrets
@@ -0,0 +1,3 @@
+# Secrets for authentication using CHAP
+# client server secret IP addresses
+* * "" *
diff --git a/recipes-core/multitech/config/ppp/options b/recipes-core/multitech/config/ppp/options
new file mode 100644
index 0000000..34654c1
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/options
@@ -0,0 +1,22 @@
+# Select tty device
+#
+# First modem AT command port (symlink to actual device)
+/dev/modem_at0
+
+# Uncomment below to run in foreground
+#nodetach
+
+# Uncomment below to emit debug
+#debug
+
+# Uncomment to keep pppd up if the connection terminates
+#persist
+# Uncomment for unlimited connection attempts
+#maxfail 0
+
+# disable logging to /etc/ppp/connect-errors
+# and only log to syslog
+logfile /dev/null
+
+lock
+
diff --git a/recipes-core/multitech/config/ppp/pap-secrets b/recipes-core/multitech/config/ppp/pap-secrets
new file mode 100644
index 0000000..f782b4a
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/pap-secrets
@@ -0,0 +1,3 @@
+# Secrets for authentication using PAP
+# client server secret IP addresses
+* * "" *
diff --git a/recipes-core/multitech/config/ppp/peers/cdma b/recipes-core/multitech/config/ppp/peers/cdma
new file mode 100644
index 0000000..3fc231f
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/peers/cdma
@@ -0,0 +1,9 @@
+linkname ppp0
+230400
+defaultroute
+replacedefaultroute
+usepeerdns
+noauth
+crtscts
+novj
+connect '/usr/sbin/chat -v -t 90 -f /etc/ppp/peers/cdma_chat'
diff --git a/recipes-core/multitech/config/ppp/peers/cdma_chat b/recipes-core/multitech/config/ppp/peers/cdma_chat
new file mode 100644
index 0000000..6ff750e
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/peers/cdma_chat
@@ -0,0 +1,18 @@
+SAY "CDMA chat\n"
+ECHO OFF
+ABORT 'NO DIAL TONE'
+ABORT 'NO DIALTONE'
+ABORT 'NO ANSWER'
+ABORT 'NO CARRIER'
+ABORT 'DELAYED'
+ABORT 'VOICE'
+ABORT 'BUSY'
+'' 'AT'
+OK 'ATZ'
+OK 'AT+CSQ'
+SAY "Dialing...\n"
+OK 'ATD#777'
+SAY "Waiting for CONNECT...\n"
+TIMEOUT 120
+CONNECT ''
+SAY "Connected\n"
diff --git a/recipes-core/multitech/config/ppp/peers/gsm b/recipes-core/multitech/config/ppp/peers/gsm
new file mode 100644
index 0000000..d23957e
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/peers/gsm
@@ -0,0 +1,11 @@
+linkname ppp0
+230400
+defaultroute
+replacedefaultroute
+usepeerdns
+ipcp-max-failure 10
+ipcp-restart 10
+noauth
+crtscts
+novj
+connect '/usr/sbin/chat -v -t 90 -f /etc/ppp/peers/gsm_chat'
diff --git a/recipes-core/multitech/config/ppp/peers/gsm_chat b/recipes-core/multitech/config/ppp/peers/gsm_chat
new file mode 100644
index 0000000..5e18e05
--- /dev/null
+++ b/recipes-core/multitech/config/ppp/peers/gsm_chat
@@ -0,0 +1,26 @@
+SAY "GSM chat\n"
+ECHO OFF
+ABORT 'NO DIAL TONE'
+ABORT 'NO DIALTONE'
+ABORT 'NO ANSWER'
+ABORT 'NO CARRIER'
+ABORT 'DELAYED'
+ABORT 'VOICE'
+ABORT 'BUSY'
+'' 'AT'
+OK 'ATZ'
+OK 'AT+CSQ'
+# ----------------------------------
+# Set the APN for your provider here
+# ----------------------------------
+#OK 'AT+CGDCONT=1,"IP","proxy"'
+#OK 'AT+CGDCONT=1,"IP","ISP.CINGULAR"'
+#OK 'AT+CGDCONT=1,"IP","internet2.voicestream.com"'
+OK 'AT+CGDCONT=1,"IP","internet"'
+SAY "Dialing...\n"
+#OK 'ATD*99#'
+OK 'ATD*99***1#'
+SAY "Waiting for CONNECT...\n"
+TIMEOUT 120
+CONNECT ''
+SAY "Connected\n"
diff --git a/recipes-core/multitech/config_1.0.bb b/recipes-core/multitech/config_1.0.bb
new file mode 100644
index 0000000..149946d
--- /dev/null
+++ b/recipes-core/multitech/config_1.0.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Provides default system config files and /var/config fs"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+PR = "r4"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "config"
+INITSCRIPT_PARAMS = "start 31 S ."
+
+SRC_URI = "\
+ file://network \
+ file://ppp \
+ file://config.init \
+"
+
+CONFIGFILES = "network ppp"
+
+fakeroot do_install () {
+ cd ${WORKDIR}
+
+ # default config files
+ rm -f defaults.tar.gz
+ chown root:root -R ${CONFIGFILES}
+ tar czf defaults.tar.gz ${CONFIGFILES}
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/defaults.tar.gz ${D}${sysconfdir}/defaults.tar.gz
+
+ # save root password for resetting to defaults
+ echo -n "${ROOT_PASSWORD_HASH}" > ${D}${sysconfdir}/default_pass
+ chmod 400 ${D}${sysconfdir}/default_pass
+
+ # init script
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/config.init ${D}${sysconfdir}/init.d/config
+}
+
+FILES_${PN} = "${sysconfdir}/defaults.tar.gz ${sysconfdir}/default_pass"
+FILES_${PN} += "${sysconfdir}/init.d/config"
diff --git a/recipes-core/multitech/mlinux-version.bb b/recipes-core/multitech/mlinux-version.bb
new file mode 100644
index 0000000..f2debe1
--- /dev/null
+++ b/recipes-core/multitech/mlinux-version.bb
@@ -0,0 +1,22 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit mlinux_metadata_scm
+
+# always parse this file so PV can change automatically
+__BB_DONT_CACHE = "1"
+
+PV = "${DISTRO_VERSION}_${MLINUX_METADATA_REVISION}"
+PR = "r2"
+PE = "1"
+
+PACKAGES = "${PN}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_install() {
+ mkdir -p ${D}${sysconfdir}
+ echo "mLinux ${DISTRO_VERSION}" > ${D}${sysconfdir}/mlinux-version
+ echo "Built from branch: ${MLINUX_METADATA_BRANCH}" >> ${D}${sysconfdir}/mlinux-version
+ echo "Revision: ${MLINUX_METADATA_REVISION}" >> ${D}${sysconfdir}/mlinux-version
+ echo "${MLINUX_LAYERS}" > ${D}${sysconfdir}/mlinux-layers
+}
diff --git a/recipes-core/multitech/reset-handler/reset-handler.default b/recipes-core/multitech/reset-handler/reset-handler.default
new file mode 100644
index 0000000..71b3e24
--- /dev/null
+++ b/recipes-core/multitech/reset-handler/reset-handler.default
@@ -0,0 +1,2 @@
+# set to "no" to disable reset-handler starting on boot
+ENABLED="yes"
diff --git a/recipes-core/multitech/reset-handler/reset-handler.init b/recipes-core/multitech/reset-handler/reset-handler.init
new file mode 100644
index 0000000..b50e7b8
--- /dev/null
+++ b/recipes-core/multitech/reset-handler/reset-handler.init
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+DAEMON=/usr/sbin/reset-handler
+PIDFILE=/var/run/reset-handler.pid
+ENABLED="yes"
+
+[ -r /etc/default/reset-handler ] && . /etc/default/reset-handler
+[ -x $DAEMON ] || exit 0
+[ "$ENABLED" = "yes" ] || exit 0
+
+case "$1" in
+ start)
+ if [ -f $PIDFILE ]; then
+ echo "reset-handler pid file exists, not starting"
+ exit 1
+ else
+ echo "Starting reset-handler"
+ start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON
+ fi
+ ;;
+ stop)
+ echo "Stopping reset-handler"
+ start-stop-daemon --stop --oknodo --pidfile $PIDFILE
+ rm -f $PIDFILE
+ ;;
+ *)
+ echo "Usage: $0 {start|stop}"
+ exit 2
+ ;;
+esac
diff --git a/recipes-core/multitech/reset-handler/reset-handler.sh b/recipes-core/multitech/reset-handler/reset-handler.sh
new file mode 100755
index 0000000..62eeda8
--- /dev/null
+++ b/recipes-core/multitech/reset-handler/reset-handler.sh
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+# Copyright (C) 2014 Multi-Tech Systems
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+name="reset-handler"
+log="logger -t $name -s"
+pid="$$"
+
+short_signal=10 # SIGUSR1
+long_signal=12 # SIGUSR2
+extralong_signal=1 # SIGHUP
+
+do_reboot() {
+ $log "Rebooting on button press"
+ sleep 1
+ reboot
+}
+
+do_restore_defaults() {
+ $log "Setting restore defaults on reboot"
+ touch /var/config/force_defaults
+ $log "Rebooting"
+ sleep 1
+ reboot
+}
+
+log_exit() {
+ $log "Exiting on SIGTERM"
+ exit 0
+}
+
+idle_wait() {
+ pipe=/var/tmp/$name.fifo
+ rm -f $pipe
+ mkfifo -m 400 $pipe
+
+ # sneaky way to do nothing forever
+ while true; do
+ read < $pipe
+ done
+}
+
+trap do_reboot $short_signal
+trap do_restore_defaults $long_signal
+trap do_restore_defaults $extralong_signal
+trap log_exit TERM
+
+$log "Enabling reset-monitor for pid $pid"
+mts-io-sysfs store reset-monitor "$pid $short_signal $long_signal $extralong_signal"
+# set long press to 5 seconds for reset to defaults
+mts-io-sysfs store reset-monitor-intervals "5 30"
+
+# wait for signals
+idle_wait
diff --git a/recipes-core/multitech/reset-handler_1.0.bb b/recipes-core/multitech/reset-handler_1.0.bb
new file mode 100644
index 0000000..4342bdd
--- /dev/null
+++ b/recipes-core/multitech/reset-handler_1.0.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Default reset button handler"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+PR = "r0"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "reset-handler"
+INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."
+CONFFILES_${PN} = "${sysconfdir}/default/reset-handler"
+
+SRC_URI = "\
+ file://reset-handler.sh \
+ file://reset-handler.init \
+ file://reset-handler.default \
+"
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/reset-handler.sh ${D}${sbindir}/reset-handler
+
+ # init script
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/reset-handler.init ${D}${sysconfdir}/init.d/reset-handler
+
+ install -d ${D}${sysconfdir}/default
+ install -m 0644 ${WORKDIR}/reset-handler.default ${D}${sysconfdir}/default/reset-handler
+}
diff --git a/recipes-core/multitech/upgrade-reboot_1.0.0.bb b/recipes-core/multitech/upgrade-reboot_1.0.0.bb
new file mode 100644
index 0000000..c506db3
--- /dev/null
+++ b/recipes-core/multitech/upgrade-reboot_1.0.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Reboot command to run after firmware upgrade"
+HOMEPAGE = "http://www.multitech.net/"
+SECTION = "console/utils"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+PR = "r0"
+
+# tag 1.0.0
+SRCREV = "6b917d88f41a4694a85b86cd047e10ddbd8c691f"
+
+SRC_URI = "git://git.multitech.net/upgrade-reboot.git;protocol=git"
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PARALLEL_MAKE = ""
diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0.inc b/recipes-core/ocg-scripts/ocg-scripts-1.0.inc
new file mode 100644
index 0000000..a017f91
--- /dev/null
+++ b/recipes-core/ocg-scripts/ocg-scripts-1.0.inc
@@ -0,0 +1,18 @@
+HOMEPAGE = "www.multitech.net"
+PRIORITY = "optional"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "file://ocg-wifi-ap \
+ file://ocg-dhcpd \
+ file://ocg-set-apn \
+ file://ocg-cell-router"
+
+
+do_install() {
+ install -d ${D}${sbindir} ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-wifi-ap ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-dhcpd ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-set-apn ${D}${sbindir}
+ install -m 755 ${WORKDIR}/ocg-cell-router ${D}${sbindir}
+}
diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router
new file mode 100755
index 0000000..1607c32
--- /dev/null
+++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-cell-router
@@ -0,0 +1,147 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2014 Multi-Tech Systems
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+set -e
+
+do_start() {
+ lan_interfaces=$(echo "$lan" | sed "s/,/ /g")
+
+ echo "Configuring firewall rules..."
+ # Flush all the tables first
+ iptables -t filter -F
+ iptables -t nat -F
+ iptables -t mangle -F
+
+ # Drop all incoming packets by default
+ iptables -t filter -P INPUT DROP
+ # Accept all on local loopback
+ iptables -t filter -A INPUT -i lo -j ACCEPT
+ # Allow packets in for existing socket connections
+ iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
+
+ # Accept all from LAN interfaces
+ for i in $lan_interfaces; do
+ iptables -t filter -A INPUT -i $i -j ACCEPT
+
+ # Accept ssh from the LAN (Wired)
+ #iptables -t filter -A INPUT -i $i -p tcp --dport 22 -j ACCEPT
+ # Accept http from the LAN (Wired)
+ #iptables -t filter -A INPUT -i $i -p tcp --dport 80 -j ACCEPT
+ # Accept tftp from the LAN (Wired)
+ #iptables -t filter -A INPUT -i $i -p udp --dport 69 -j ACCEPT
+ done
+
+ # Accept ssh from the WAN (Wireless)
+ #iptables -t filter -A INPUT -i $wan -p tcp --dport 22 -j ACCEPT
+ # Accept http from the WAN (Wireless)
+ #iptables -t filter -A INPUT -i $wan -p tcp --dport 80 -j ACCEPT
+
+ # Allow packet fowarding from LAN interfaces to WAN (cell router)
+ iptables -t filter -P FORWARD DROP
+ iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
+ for i in $lan_interfaces; do
+ iptables -t filter -A FORWARD -i $i -o $wan -j ACCEPT
+ done
+
+ # Allow all output packets
+ iptables -t filter -P OUTPUT ACCEPT
+
+ # enable NAT for cell router
+ iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE
+
+ echo "Enabling packet forwarding..."
+ # turn on packet forwarding last
+ echo 1 > /proc/sys/net/ipv4/ip_forward
+ echo "Done"
+}
+
+do_stop() {
+ echo "Clearing firewall rules..."
+ # clear all tables
+ iptables -t filter -F
+ iptables -t nat -F
+ iptables -t mangle -F
+ # reset policies to ACCEPT
+ iptables -t filter -P INPUT ACCEPT
+ iptables -t filter -P OUTPUT ACCEPT
+ iptables -t filter -P FORWARD ACCEPT
+
+ # turn off packet forwarding
+ echo "Disabling packet forwarding..."
+ echo 0 > /proc/sys/net/ipv4/ip_forward
+ echo "Done"
+}
+
+usage() {
+ echo "Usage: $(basename $0) start|stop [options]"
+ echo " options:"
+ echo " -l <lan-interfaces> LAN interfaces to allow, comma-separated (defaults to \"eth0\")"
+ echo " -w <wan-interface> WAN interface to route out (defaults to \"ppp0\")"
+ exit 1
+}
+
+# main
+if [[ $# < 1 ]]; then
+ usage
+fi
+
+cmd=$1
+shift
+
+while getopts "l:w:h" opt; do
+ case "$opt" in
+ l)
+ l=$OPTARG
+ ;;
+ w)
+ w=$OPTARG
+ ;;
+ h)
+ usage
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+
+# default lan to eth0 if not specified
+lan=${l-eth0}
+# default wan to ppp0 if not specified
+wan=${w-ppp0}
+
+case $cmd in
+ start)
+ echo "LAN: $lan"
+ echo "WAN: $wan"
+ do_start
+ ;;
+ stop)
+ do_stop
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+exit 0
+
diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd
new file mode 100755
index 0000000..976b138
--- /dev/null
+++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-dhcpd
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+# Copyright (C) 2014 Multi-Tech Systems
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+do_start() {
+ echo "starting dhcp daemon"
+ udhcpd -S /etc/udhcpd.conf
+}
+
+do_stop() {
+ echo "stopping dhcp daemon"
+ killall udhcpd
+}
+
+usage() {
+ echo "Usage: $(basename $0) start|stop|restart"
+ exit 1
+}
+
+# main
+if [[ $# != 1 ]]; then
+ usage
+fi
+
+case $1 in
+ start)
+ if [[ ! -f "/etc/udhcpd.conf" ]]
+ then
+ echo "/etc/udhcpd.conf does not exist"
+ exit 1
+ fi
+ do_start
+ ;;
+ stop)
+ do_stop
+ ;;
+ restart)
+ do_stop
+ sleep 1
+ do_start
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+exit 0
diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn
new file mode 100755
index 0000000..371ba7e
--- /dev/null
+++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-set-apn
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# Copyright (C) 2014 Multi-Tech Systems
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+if [[ $# != 1 ]]; then
+ echo "Usage: $(basename $0) APN"
+ exit 1
+fi
+
+apn=$1
+chat_file=/etc/ppp/peers/gsm_chat
+
+sed -r -i "s/^OK\s+'AT\+CGDCONT=1,\"IP\",\"[^\"]*\"'$/OK 'AT\+CGDCONT=1,\"IP\",\"${apn}\"'/" $chat_file
+
+if [[ $? != 0 ]]; then
+ echo "Failed to change APN"
+ exit 1
+else
+ echo "Set APN to \"${apn}\" in $chat_file"
+fi
+
+exit 0
diff --git a/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap
new file mode 100755
index 0000000..b0bc7ec
--- /dev/null
+++ b/recipes-core/ocg-scripts/ocg-scripts-1.0/ocg-wifi-ap
@@ -0,0 +1,165 @@
+#!/bin/bash
+
+# Copyright (C) 2014 Multi-Tech Systems
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+dhcpd_file=/etc/udhcpd.conf
+hostapd_file=/etc/hostapd.conf
+interface=wlan0
+bridge_mode=0
+
+do_start() {
+ if [ "$bridge_mode" = 1 ]; then
+ interface=$b
+ if ! grep -E -q "^bridge=$interface\s*$" $hostapd_file; then
+ echo "Enabling bridge=br0 in $hostapd_file"
+ sed -r -i "s/^#?bridge=.*$/bridge=$interface/" $hostapd_file
+ fi
+ else
+ if grep -E -q "^bridge=.*$" $hostapd_file; then
+ echo "Disabling bridge in $hostapd_file"
+ sed -r -i "s/^bridge=/#bridge=/" $hostapd_file
+ fi
+ fi
+
+ echo "Starting hostap daemon"
+ /etc/init.d/hostapd start
+
+ if [ "$bridge_mode" != 1 ]; then
+ echo "Setting IP address to $ip"
+ ifconfig $interface $ip
+ # strip off end of IP address to get subnet
+ # assumes subnet of /24
+ subnet=${ip%.*}
+ # escape periods for regex
+ subnet_regex=${subnet//./\\.}
+ ip_regex=${ip//./\\.}
+ # set default address range for dhcpd
+ addr_start=100
+ addr_end=254
+ if ! grep -E -q "^start\s+$subnet_regex\." $dhcpd_file; then
+ echo "Changing dhcpd start to $subnet.$addr_start"
+ sed -r -i "s/^start\s+.*$/start $subnet.$addr_start/" $dhcpd_file
+ fi
+ if ! grep -E -q "^end\s+$subnet_regex\." $dhcpd_file; then
+ echo "Changing dhcpd end to $subnet.$addr_end"
+ sed -r -i "s/^end\s+.*$/end $subnet.$addr_end/" $dhcpd_file
+ fi
+ # update dhcpd addresses if needed
+ if ! grep -E -q "^option\s+router\s+$ip_regex" $dhcpd_file; then
+ echo "Changing dhcpd router to $ip"
+ sed -r -i "s/^option\s+router\s+.*$/option router $ip/" $dhcpd_file
+ fi
+ else
+ # unset ip address for bridge mode
+ ifconfig wlan0 0.0.0.0
+ fi
+
+ if ! grep -E -q "^interface\s+$interface" $dhcpd_file; then
+ echo "Changing dhcpd interface to $interface"
+ sed -r -i "s/^interface\s+.*$/interface $interface/" $dhcpd_file
+ fi
+ ocg-dhcpd start
+}
+
+do_stop() {
+ echo "Stopping hostap daemon"
+ /etc/init.d/hostapd stop
+ ocg-dhcpd stop
+}
+
+usage() {
+ echo "Usage: $(basename $0) start|stop|restart [options]"
+ echo " options:"
+ echo " -a <address> Sets AP IP address (defaults to 192.168.3.1)"
+ echo " -b <interface> Add AP to specified bridge interface (conflicts with -a)"
+ exit 1
+}
+
+# main
+if [[ $# < 1 ]]; then
+ usage
+fi
+
+cmd=$1
+shift
+
+while getopts "a:b:h" opt; do
+ case "$opt" in
+ a)
+ a=$OPTARG
+ ;;
+ b)
+ b=$OPTARG
+ bridge_mode=1
+ ;;
+ h)
+ usage
+ ;;
+ *)
+ usage
+ ;;
+ esac
+done
+
+# can't specify both address and bridge mode
+if [ -n "$a" ] && [ -n "$b" ]; then
+ usage
+fi
+
+if [ -n "$a" ]; then
+ ret=1
+ if [[ $a =~ ^([0-9]{1,3}\.){3,3}[0-9]{1,3}$ ]]
+ then
+ OIFS=$IFS
+ IFS='.'
+ ip=($a)
+ IFS=$OFIS
+ [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
+ ret=$?
+ fi
+ if [[ ret -ne 0 ]]
+ then
+ echo "invalid IP address"
+ exit 1
+ fi
+ ip=$a
+else
+ ip="192.168.3.1"
+fi
+
+case $cmd in
+ start)
+ do_start
+ ;;
+ stop)
+ do_stop
+ ;;
+ restart)
+ do_stop
+ sleep 1
+ do_start
+ ;;
+ *)
+ usage
+ ;;
+esac
+
+exit 0
diff --git a/recipes-core/ocg-scripts/ocg-scripts_1.0.bb b/recipes-core/ocg-scripts/ocg-scripts_1.0.bb
new file mode 100644
index 0000000..fc2fc02
--- /dev/null
+++ b/recipes-core/ocg-scripts/ocg-scripts_1.0.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "Scripts to easily get started with common OCG use cases"
+
+require ocg-scripts-1.0.inc
+
+PR = "r3"
+
+S = "${WORKDIR}/ocg-scripts-${PV}"
diff --git a/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend b/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend
new file mode 100644
index 0000000..6c79846
--- /dev/null
+++ b/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bbappend
@@ -0,0 +1,2 @@
+# enable gadget serial console for supported hardware
+SERIAL_CONSOLES_append_mtcdt = " 115200;ttyGS0"
diff --git a/recipes-core/udev/udev-182/cellular_radios.rules b/recipes-core/udev/udev-182/cellular_radios.rules
new file mode 100644
index 0000000..81271ac
--- /dev/null
+++ b/recipes-core/udev/udev-182/cellular_radios.rules
@@ -0,0 +1,47 @@
+ACTION=="remove", GOTO="mlinux_end"
+SUBSYSTEM!="tty", GOTO="mlinux_end"
+KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="mlinux_end"
+
+SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}"
+ENV{ID_IFACE}=="", GOTO="mlinux_end"
+
+# All modem ports
+# H5
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="00", SYMLINK+="modem0"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="02", SYMLINK+="modem1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="04", SYMLINK+="modem2"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="06", SYMLINK+="modem3"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="08", SYMLINK+="modem4"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="0a", SYMLINK+="modem5"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="0c", SYMLINK+="modem6"
+# EV3
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="00", SYMLINK+="modem0"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="01", SYMLINK+="modem1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="02", SYMLINK+="modem2"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="03", SYMLINK+="modem3"
+# H4
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="00", SYMLINK+="modem0"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="01", SYMLINK+="modem1"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="02", SYMLINK+="modem2"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="03", SYMLINK+="modem3"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="04", SYMLINK+="modem4"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="05", SYMLINK+="modem5"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="06", SYMLINK+="modem6"
+# EV2
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", SYMLINK+="modem$env{ID_PORT}"
+
+# AT Command ports
+# H5: ttyACM0, ttyACM3
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="00", SYMLINK+="modem_at0"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", ENV{ID_IFACE}=="06", SYMLINK+="modem_at1"
+# EV3: ttyUSB2, ttyUSB3
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="02", SYMLINK+="modem_at0"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_IFACE}=="03", SYMLINK+="modem_at1"
+# H4: ttyUSB3, ttyUSB4, ttyUSB5
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="03", SYMLINK+="modem_at0"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="04", SYMLINK+="modem_at1"
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="683c", ENV{ID_IFACE}=="05", SYMLINK+="modem_at2"
+# EV2: ttyUSB0
+ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ENV{ID_PORT}=="0", SYMLINK+="modem_at0"
+
+LABEL="mlinux_end"
diff --git a/recipes-core/udev/udev-182/init b/recipes-core/udev/udev-182/init
new file mode 100644
index 0000000..bd716b0
--- /dev/null
+++ b/recipes-core/udev/udev-182/init
@@ -0,0 +1,138 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: udev
+# Required-Start: mountvirtfs
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+export TZ=/etc/localtime
+
+[ -d /sys/class ] || exit 1
+[ -r /proc/mounts ] || exit 1
+[ -x @UDEVD@ ] || exit 1
+[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
+[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+readfiles () {
+ READDATA=""
+ for filename in $@; do
+ if [ -r $filename ]; then
+ while read line; do
+ READDATA="$READDATA$line"
+ done < $filename
+ fi
+ done
+}
+
+kill_udevd () {
+ pid=`pidof -x udevd`
+ [ -n "$pid" ] && kill $pid
+}
+
+case "$1" in
+ start)
+ export ACTION=add
+ # propagate /dev from /sys
+ echo "Starting udev"
+
+ # Check for requireed devtmpfs before trying to start udev and
+ # mount a no-existant fs.
+ if ! grep -q devtmpfs /proc/filesystems
+ then
+ echo "Missing devtmpfs, which is required for udev to run";
+ echo "Halting..."
+ halt
+ fi
+ # mount the devtmpfs on /dev, if not already done
+ LANG=C awk '$2 == "/dev" && ($3 == "devtmpfs") { exit 1 }' /proc/mounts && {
+ mount -n -o mode=0755 -t devtmpfs none "/dev"
+ }
+ [ -e /dev/pts ] || mkdir -m 0755 /dev/pts
+ [ -e /dev/shm ] || mkdir -m 1777 /dev/shm
+ # the automount rule for udev needs /tmp directory available, as /tmp is a symlink
+ # to /var/tmp which in turn is a symlink to /var/volatile/tmp, we need to make sure
+ # /var/volatile/tmp directory to be available.
+ mkdir -p /var/volatile/tmp
+
+ # Cache handling.
+ # A list of files which are used as a criteria to judge whether the udev cache could be reused.
+ CMP_FILE_LIST="/proc/version /proc/cmdline /proc/devices /proc/atags"
+ if [ "$DEVCACHE" != "" ]; then
+ if [ -e $DEVCACHE ]; then
+ readfiles $CMP_FILE_LIST
+ NEWDATA="$READDATA"
+ readfiles /etc/udev/cache.data
+ OLDDATA="$READDATA"
+ if [ "$OLDDATA" = "$NEWDATA" ]; then
+ (cd /; tar xf $DEVCACHE > /dev/null 2>&1)
+ not_first_boot=1
+ [ "$VERBOSE" != "no" ] && echo "udev: using cache file $DEVCACHE"
+ [ -e /dev/shm/udev.cache ] && rm -f /dev/shm/udev.cache
+ else
+ # Output detailed reason why the cached /dev is not used
+ if [ "$VERBOSE" != "no" ]; then
+ echo "udev: udev cache not used"
+ echo "udev: we use $CMP_FILE_LIST as criteria to judge whether the cache /dev could be resued"
+ echo "udev: olddata: $OLDDATA"
+ echo "udev: newdata: $NEWDATA"
+ fi
+ echo "$NEWDATA" > /dev/shm/udev.cache
+ fi
+ else
+ if [ "$ROOTFS_READ_ONLY" != "yes" ]; then
+ # If rootfs is not read-only, it's possible that a new udev cache would be generated;
+ # otherwise, we do not bother to read files.
+ readfiles $CMP_FILE_LIST
+ echo "$READDATA" > /dev/shm/udev.cache
+ fi
+ fi
+ fi
+
+ # make_extra_nodes
+ kill_udevd > "/dev/null" 2>&1
+
+ # trigger the sorted events
+ echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
+ @UDEVD@ -d
+
+ udevadm control --env=STARTUP=1
+ if [ "$not_first_boot" != "" ];then
+ if [ "$PROBE_PLATFORM_BUS" != "yes" ]; then
+ PLATFORM_BUS_NOMATCH="--subsystem-nomatch=platform"
+ else
+ PLATFORM_BUS_NOMATCH=""
+ fi
+ udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux $PLATFORM_BUS_NOMATCH
+ (udevadm settle --timeout=10; udevadm control --env=STARTUP=)&
+ else
+ udevadm trigger --action=add
+ udevadm settle
+ fi
+ ;;
+ stop)
+ echo "Stopping udevd"
+ start-stop-daemon --stop --name udevd --quiet
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ pid=`pidof -x udevd`
+ if [ -n "$pid" ]; then
+ echo "udevd (pid $pid) is running ..."
+ else
+ echo "udevd is stopped"
+ fi
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|status|restart}"
+ exit 1
+esac
+exit 0
diff --git a/recipes-core/udev/udev-182/mtcdt/mtcdt.rules b/recipes-core/udev/udev-182/mtcdt/mtcdt.rules
new file mode 100644
index 0000000..3bdbe5d
--- /dev/null
+++ b/recipes-core/udev/udev-182/mtcdt/mtcdt.rules
@@ -0,0 +1,12 @@
+ACTION=="remove", GOTO="mlinux_end"
+SUBSYSTEM!="tty", GOTO="mlinux_end"
+KERNEL!="ttyXRUSB[0-9]*", GOTO="mlinux_end"
+
+SUBSYSTEMS=="usb", ENV{ID_IFACE}="$attr{bInterfaceNumber}"
+ENV{ID_IFACE}=="", GOTO="mlinux_end"
+
+# Accessory Ports
+ATTRS{idVendor}=="04e2", ATTRS{idProduct}=="1412", ENV{ID_IFACE}=="00", SYMLINK+="ttyAP1"
+ATTRS{idVendor}=="04e2", ATTRS{idProduct}=="1412", ENV{ID_IFACE}=="02", SYMLINK+="ttyAP2"
+
+LABEL="mlinux_end"
diff --git a/recipes-core/udev/udev-extraconf/automount.rules b/recipes-core/udev/udev-extraconf/automount.rules
new file mode 100644
index 0000000..b4a8f22
--- /dev/null
+++ b/recipes-core/udev/udev-extraconf/automount.rules
@@ -0,0 +1,24 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+SUBSYSTEM!="block", GOTO="automount_end"
+# only mount SD cards and mass storage devices
+KERNEL!="sd[a-z][0-9]*|mmcblk[0-9]p[0-9]*", GOTO="automount_end"
+
+# Media automounting
+SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
+SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+
+LABEL="automount_end"
diff --git a/recipes-core/udev/udev-extraconf_1.0.bbappend b/recipes-core/udev/udev-extraconf_1.0.bbappend
new file mode 100644
index 0000000..6d4804d
--- /dev/null
+++ b/recipes-core/udev/udev-extraconf_1.0.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
diff --git a/recipes-core/udev/udev_182.bbappend b/recipes-core/udev/udev_182.bbappend
new file mode 100644
index 0000000..60665f9
--- /dev/null
+++ b/recipes-core/udev/udev_182.bbappend
@@ -0,0 +1,11 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
+
+# add custom rules for persistent modem device names
+SRC_URI += " file://cellular_radios.rules \
+ file://${MACHINE}.rules \
+ "
+
+do_install_append() {
+ install -m 644 ${WORKDIR}/cellular_radios.rules ${D}${sysconfdir}/udev/rules.d/
+ install -m 644 ${WORKDIR}/${MACHINE}.rules ${D}${sysconfdir}/udev/rules.d/
+}