diff --git a/buildroot.elf b/buildroot.elf deleted file mode 100755 index 3e047ed..0000000 Binary files a/buildroot.elf and /dev/null differ diff --git a/buildroot.patch b/buildroot.patch deleted file mode 100644 index 1fbb367..0000000 --- a/buildroot.patch +++ /dev/null @@ -1,1285 +0,0 @@ -diff -Nur '--exclude=.git' '--exclude=output' '--exclude=dl' buildroot_clean/board/raspberrypi/usb_test/busybox.config buildroot/board/raspberrypi/usb_test/busybox.config ---- buildroot_clean/board/raspberrypi/usb_test/busybox.config 1970-01-01 01:00:00.000000000 +0100 -+++ buildroot/board/raspberrypi/usb_test/busybox.config 2014-10-28 12:02:45.137361450 +0000 -@@ -0,0 +1,1026 @@ -+# -+# Automatically generated make config: don't edit -+# Busybox version: 1.22.1 -+# Fri Sep 19 20:20:25 2014 -+# -+CONFIG_HAVE_DOT_CONFIG=y -+ -+# -+# Busybox Settings -+# -+ -+# -+# General Configuration -+# -+# CONFIG_DESKTOP is not set -+# CONFIG_EXTRA_COMPAT is not set -+CONFIG_INCLUDE_SUSv2=y -+# 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 is not set -+# CONFIG_FEATURE_COMPRESS_USAGE is not set -+CONFIG_FEATURE_INSTALLER=y -+# 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=y -+CONFIG_FEATURE_UTMP=y -+CONFIG_FEATURE_WTMP=y -+# CONFIG_FEATURE_PIDFILE is not set -+CONFIG_PID_FILE_PATH="" -+CONFIG_FEATURE_SUID=y -+# CONFIG_FEATURE_SUID_CONFIG is not set -+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -+# 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 is not set -+ -+# -+# 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="" -+CONFIG_SYSROOT="" -+CONFIG_EXTRA_CFLAGS="" -+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 is not set -+CONFIG_FEATURE_RTMINMAX=y -+CONFIG_PASSWORD_MINLEN=6 -+CONFIG_MD5_SMALL=1 -+CONFIG_SHA3_SMALL=1 -+# CONFIG_FEATURE_FAST_TOP is not set -+# 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=y -+CONFIG_FEATURE_EDITING_HISTORY=999 -+CONFIG_FEATURE_EDITING_SAVEHISTORY=y -+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set -+CONFIG_FEATURE_REVERSE_SEARCH=y -+CONFIG_FEATURE_TAB_COMPLETION=y -+# CONFIG_FEATURE_USERNAME_COMPLETION is not set -+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 is not set -+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 is not set -+# CONFIG_FEATURE_SEAMLESS_LZMA is not set -+# CONFIG_FEATURE_SEAMLESS_BZ2 is not set -+# CONFIG_FEATURE_SEAMLESS_GZ is not set -+# CONFIG_FEATURE_SEAMLESS_Z is not set -+# CONFIG_AR is not set -+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set -+# CONFIG_FEATURE_AR_CREATE is not set -+# CONFIG_UNCOMPRESS is not set -+CONFIG_GUNZIP=y -+# CONFIG_BUNZIP2 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_BZIP2 is not set -+# CONFIG_CPIO is not set -+# 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_GZIP is not set -+# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set -+CONFIG_GZIP_FAST=0 -+# CONFIG_LZOP is not set -+# CONFIG_LZOP_COMPR_HIGH is not set -+# CONFIG_RPM is not set -+# CONFIG_RPM2CPIO is not set -+CONFIG_TAR=y -+CONFIG_FEATURE_TAR_CREATE=y -+# CONFIG_FEATURE_TAR_AUTODETECT is not set -+CONFIG_FEATURE_TAR_FROM=y -+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set -+# 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 is not set -+# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set -+# CONFIG_FEATURE_TAR_SELINUX is not set -+CONFIG_UNZIP=y -+ -+# -+# Coreutils -+# -+# CONFIG_BASENAME is not set -+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 is not set -+# CONFIG_GROUPS is not set -+CONFIG_TEST=y -+CONFIG_FEATURE_TEST_64=y -+CONFIG_TOUCH=y -+# CONFIG_FEATURE_TOUCH_NODEREF is not set -+CONFIG_FEATURE_TOUCH_SUSV3=y -+# CONFIG_TR is not set -+# CONFIG_FEATURE_TR_CLASSES is not set -+# CONFIG_FEATURE_TR_EQUIV is not set -+# CONFIG_BASE64 is not set -+# CONFIG_WHO is not set -+# CONFIG_USERS is not set -+# CONFIG_CAL is not set -+# CONFIG_CATV is not set -+# CONFIG_CHGRP is not set -+# CONFIG_CHMOD is not set -+# CONFIG_CHOWN is not set -+# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set -+# CONFIG_CHROOT is not set -+# CONFIG_CKSUM is not set -+# CONFIG_COMM is not set -+CONFIG_CP=y -+# CONFIG_FEATURE_CP_LONG_OPTIONS is not set -+# CONFIG_CUT is not set -+CONFIG_DD=y -+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y -+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set -+CONFIG_FEATURE_DD_IBS_OBS=y -+# CONFIG_DF is not set -+# CONFIG_FEATURE_DF_FANCY is not set -+# CONFIG_DIRNAME is not set -+# CONFIG_DOS2UNIX is not set -+# CONFIG_UNIX2DOS is not set -+# CONFIG_DU is not set -+# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set -+CONFIG_ECHO=y -+CONFIG_FEATURE_FANCY_ECHO=y -+# CONFIG_ENV is not set -+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set -+# 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 is not set -+# CONFIG_HEAD is not set -+# CONFIG_FEATURE_FANCY_HEAD is not set -+CONFIG_INSTALL=y -+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y -+CONFIG_LN=y -+# CONFIG_LOGNAME is not set -+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=y -+CONFIG_MD5SUM=y -+CONFIG_MKDIR=y -+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y -+# CONFIG_MKFIFO is not set -+CONFIG_MKNOD=y -+CONFIG_MV=y -+CONFIG_FEATURE_MV_LONG_OPTIONS=y -+# CONFIG_NICE is not set -+# CONFIG_NOHUP is not set -+# CONFIG_OD is not set -+# CONFIG_PRINTENV is not set -+# CONFIG_PRINTF is not set -+# CONFIG_PWD is not set -+# CONFIG_READLINK is not set -+# CONFIG_FEATURE_READLINK_FOLLOW is not set -+# CONFIG_REALPATH is not set -+CONFIG_RM=y -+CONFIG_RMDIR=y -+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set -+# CONFIG_SEQ is not set -+# CONFIG_SHA1SUM is not set -+# CONFIG_SHA256SUM is not set -+# CONFIG_SHA512SUM is not set -+# CONFIG_SHA3SUM is not set -+CONFIG_SLEEP=y -+# CONFIG_FEATURE_FANCY_SLEEP is not set -+# CONFIG_FEATURE_FLOAT_SLEEP is not set -+# CONFIG_SORT is not set -+# CONFIG_FEATURE_SORT_BIG is not set -+# CONFIG_SPLIT is not set -+# CONFIG_FEATURE_SPLIT_FANCY is not set -+# CONFIG_STAT is not set -+# CONFIG_FEATURE_STAT_FORMAT is not set -+# CONFIG_STTY is not set -+# CONFIG_SUM is not set -+CONFIG_SYNC=y -+# CONFIG_TAC is not set -+# CONFIG_TAIL is not set -+# CONFIG_FEATURE_FANCY_TAIL is not set -+# CONFIG_TEE is not set -+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set -+CONFIG_TRUE=y -+# CONFIG_TTY is not set -+CONFIG_UNAME=y -+# CONFIG_UNEXPAND is not set -+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set -+# CONFIG_UNIQ is not set -+# CONFIG_USLEEP is not set -+# CONFIG_UUDECODE is not set -+# CONFIG_UUENCODE is not set -+# CONFIG_WC is not set -+# CONFIG_FEATURE_WC_LARGE is not set -+# CONFIG_WHOAMI is not set -+# CONFIG_YES is not set -+ -+# -+# Common options for cp and mv -+# -+CONFIG_FEATURE_PRESERVE_HARDLINKS=y -+ -+# -+# 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, sha3sum -+# -+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y -+ -+# -+# Console Utilities -+# -+# CONFIG_CHVT is not set -+# CONFIG_FGCONSOLE is not set -+# CONFIG_CLEAR is not set -+# CONFIG_DEALLOCVT is not set -+# CONFIG_DUMPKMAP is not set -+# CONFIG_KBD_MODE is not set -+# CONFIG_LOADFONT is not set -+# CONFIG_LOADKMAP is not set -+# CONFIG_OPENVT is not set -+CONFIG_RESET=y -+# CONFIG_RESIZE is not set -+# CONFIG_FEATURE_RESIZE_PRINT is not set -+# CONFIG_SETCONSOLE is not set -+# 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 -+# CONFIG_FEATURE_LOADFONT_PSF2 is not set -+# CONFIG_FEATURE_LOADFONT_RAW is not set -+ -+# -+# Debian Utilities -+# -+CONFIG_MKTEMP=y -+CONFIG_PIPE_PROGRESS=y -+CONFIG_RUN_PARTS=y -+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y -+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set -+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_AWK is not set -+# CONFIG_FEATURE_AWK_LIBM is not set -+# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set -+# CONFIG_CMP is not set -+CONFIG_DIFF=y -+# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set -+CONFIG_FEATURE_DIFF_DIR=y -+# CONFIG_ED is not set -+# CONFIG_PATCH is not set -+# CONFIG_SED is not set -+CONFIG_VI=y -+CONFIG_FEATURE_VI_MAX_LEN=4096 -+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 is not set -+CONFIG_FEATURE_VI_USE_SIGNALS=y -+CONFIG_FEATURE_VI_DOT_CMD=y -+CONFIG_FEATURE_VI_READONLY=y -+CONFIG_FEATURE_VI_SETOPTS=y -+CONFIG_FEATURE_VI_SET=y -+CONFIG_FEATURE_VI_WIN_RESIZE=y -+CONFIG_FEATURE_VI_ASK_TERMINAL=y -+CONFIG_FEATURE_ALLOW_EXEC=y -+ -+# -+# Finding Utilities -+# -+# CONFIG_FIND is not set -+# CONFIG_FEATURE_FIND_PRINT0 is not set -+# CONFIG_FEATURE_FIND_MTIME is not set -+# CONFIG_FEATURE_FIND_MMIN is not set -+# CONFIG_FEATURE_FIND_PERM is not set -+# CONFIG_FEATURE_FIND_TYPE is not set -+# CONFIG_FEATURE_FIND_XDEV is not set -+# CONFIG_FEATURE_FIND_MAXDEPTH is not set -+# CONFIG_FEATURE_FIND_NEWER is not set -+# CONFIG_FEATURE_FIND_INUM is not set -+# CONFIG_FEATURE_FIND_EXEC is not set -+# CONFIG_FEATURE_FIND_USER is not set -+# CONFIG_FEATURE_FIND_GROUP is not set -+# CONFIG_FEATURE_FIND_NOT is not set -+# CONFIG_FEATURE_FIND_DEPTH is not set -+# CONFIG_FEATURE_FIND_PAREN is not set -+# CONFIG_FEATURE_FIND_SIZE is not set -+# CONFIG_FEATURE_FIND_PRUNE is not set -+# CONFIG_FEATURE_FIND_DELETE is not set -+# CONFIG_FEATURE_FIND_PATH is not set -+# CONFIG_FEATURE_FIND_REGEX is not set -+# CONFIG_FEATURE_FIND_CONTEXT is not set -+# CONFIG_FEATURE_FIND_LINKS is not set -+CONFIG_GREP=y -+CONFIG_FEATURE_GREP_EGREP_ALIAS=y -+CONFIG_FEATURE_GREP_FGREP_ALIAS=y -+CONFIG_FEATURE_GREP_CONTEXT=y -+# CONFIG_XARGS is not set -+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set -+# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set -+# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set -+# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set -+ -+# -+# 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=y -+CONFIG_FEATURE_USE_INITTAB=y -+CONFIG_FEATURE_KILL_REMOVED=y -+CONFIG_FEATURE_KILL_DELAY=0 -+CONFIG_FEATURE_INIT_SCTTY=y -+CONFIG_FEATURE_INIT_SYSLOG=y -+CONFIG_FEATURE_EXTRA_QUIET=y -+# CONFIG_FEATURE_INIT_COREDUMPS is not set -+CONFIG_FEATURE_INITRD=y -+CONFIG_INIT_TERMINAL_TYPE="linux" -+CONFIG_MESG=y -+CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y -+ -+# -+# Login/Password Management Utilities -+# -+# CONFIG_ADD_SHELL is not set -+# CONFIG_REMOVE_SHELL is not set -+CONFIG_FEATURE_SHADOWPASSWDS=y -+# 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=0 -+CONFIG_LAST_SYSTEM_ID=0 -+# 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=y -+CONFIG_LOGIN=y -+# CONFIG_LOGIN_SESSION_AS_CHILD is not set -+# CONFIG_PAM is not set -+# CONFIG_LOGIN_SCRIPTS is not set -+CONFIG_FEATURE_NOLOGIN=y -+CONFIG_FEATURE_SECURETTY=y -+CONFIG_PASSWD=y -+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y -+# CONFIG_CRYPTPW is not set -+# CONFIG_CHPASSWD is not set -+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" -+# 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=y -+# 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=y -+CONFIG_MODPROBE=y -+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set -+# CONFIG_DEPMOD is not set -+ -+# -+# 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_FSTRIM is not set -+CONFIG_MDEV=y -+CONFIG_FEATURE_MDEV_CONF=y -+CONFIG_FEATURE_MDEV_RENAME=y -+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set -+CONFIG_FEATURE_MDEV_EXEC=y -+# 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=y -+# CONFIG_FEATURE_BLKID_TYPE is not set -+CONFIG_DMESG=y -+CONFIG_FEATURE_DMESG_PRETTY=y -+# CONFIG_FBSET is not set -+# CONFIG_FEATURE_FBSET_FANCY is not set -+# CONFIG_FEATURE_FBSET_READMODE is not set -+# 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=y -+CONFIG_FEATURE_FDISK_ADVANCED=y -+# CONFIG_FINDFS is not set -+# CONFIG_FLOCK is not set -+CONFIG_FREERAMDISK=y -+# CONFIG_FSCK_MINIX is not set -+# CONFIG_MKFS_EXT2 is not set -+# CONFIG_MKFS_MINIX is not set -+# CONFIG_FEATURE_MINIX2 is not set -+# 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=y -+# CONFIG_MKSWAP is not set -+# 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 is not set -+CONFIG_FEATURE_MOUNT_CIFS=y -+CONFIG_FEATURE_MOUNT_FLAGS=y -+CONFIG_FEATURE_MOUNT_FSTAB=y -+# CONFIG_PIVOT_ROOT is not set -+# CONFIG_RDATE is not set -+# 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 is not set -+# CONFIG_FEATURE_SWAPON_PRI is not set -+# CONFIG_SWITCH_ROOT is not set -+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=y -+ -+# -+# Filesystem/Volume identification -+# -+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set -+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set -+CONFIG_FEATURE_VOLUMEID_EXFAT=y -+CONFIG_FEATURE_VOLUMEID_EXT=y -+CONFIG_FEATURE_VOLUMEID_F2FS=y -+CONFIG_FEATURE_VOLUMEID_FAT=y -+# CONFIG_FEATURE_VOLUMEID_HFS is not set -+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set -+# CONFIG_FEATURE_VOLUMEID_JFS is not set -+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set -+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set -+# CONFIG_FEATURE_VOLUMEID_LUKS is not set -+# CONFIG_FEATURE_VOLUMEID_NILFS is not set -+# CONFIG_FEATURE_VOLUMEID_NTFS is not set -+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set -+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set -+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set -+# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set -+# CONFIG_FEATURE_VOLUMEID_SYSV is not set -+# CONFIG_FEATURE_VOLUMEID_UDF is not set -+# CONFIG_FEATURE_VOLUMEID_XFS 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=y -+# 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_RFKILL 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_WALL 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 is not set -+# 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=y -+# 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=y -+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y -+# 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=y -+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set -+CONFIG_FEATURE_MAKEDEVS_TABLE=y -+# CONFIG_MAN is not set -+# CONFIG_MICROCOM is not set -+# CONFIG_MOUNTPOINT is not set -+# CONFIG_MT is not set -+# CONFIG_RAIDAUTORUN is not set -+# CONFIG_READAHEAD is not set -+CONFIG_RUNLEVEL=y -+# 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_WATCHDOG is not set -+ -+# -+# Networking Utilities -+# -+CONFIG_NAMEIF=y -+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set -+# CONFIG_NBDCLIENT is not set -+# CONFIG_NC is not set -+# CONFIG_NC_SERVER is not set -+# CONFIG_NC_EXTRA is not set -+# CONFIG_NC_110_COMPAT is not set -+CONFIG_PING=y -+# CONFIG_PING6 is not set -+CONFIG_FEATURE_FANCY_PING=y -+# CONFIG_WHOIS is not set -+# CONFIG_FEATURE_IPV6 is not set -+# CONFIG_FEATURE_UNIX_LOCAL is not set -+# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set -+# 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=y -+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y -+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 is not set -+CONFIG_IFUPDOWN_IFSTATE_PATH="" -+# CONFIG_FEATURE_IFUPDOWN_IP is not set -+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set -+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set -+# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set -+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set -+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set -+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set -+CONFIG_INETD=y -+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y -+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y -+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y -+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y -+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y -+# 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=y -+CONFIG_FEATURE_IP_SHORT_FORMS=y -+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -+CONFIG_IPADDR=y -+CONFIG_IPLINK=y -+CONFIG_IPROUTE=y -+CONFIG_IPTUNNEL=y -+CONFIG_IPRULE=y -+# CONFIG_IPCALC is not set -+# CONFIG_FEATURE_IPCALC_FANCY is not set -+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set -+# CONFIG_NETSTAT is not set -+# CONFIG_FEATURE_NETSTAT_WIDE is not set -+# CONFIG_FEATURE_NETSTAT_PRG is not set -+# CONFIG_NSLOOKUP is not set -+# CONFIG_NTPD is not set -+# CONFIG_FEATURE_NTPD_SERVER is not set -+# CONFIG_PSCAN is not set -+# CONFIG_ROUTE is not set -+# CONFIG_SLATTACH is not set -+# CONFIG_TCPSVD is not set -+# CONFIG_TELNET is not set -+# CONFIG_FEATURE_TELNET_TTYPE is not set -+# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set -+# CONFIG_TELNETD is not set -+# CONFIG_FEATURE_TELNETD_STANDALONE is not set -+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set -+# CONFIG_TFTP is not set -+# CONFIG_TFTPD is not set -+# CONFIG_FEATURE_TFTP_GET is not set -+# CONFIG_FEATURE_TFTP_PUT is not set -+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set -+# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set -+# CONFIG_TFTP_DEBUG is not set -+# CONFIG_TRACEROUTE is not set -+# CONFIG_TRACEROUTE6 is not set -+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set -+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set -+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set -+# CONFIG_TUNCTL is not set -+# CONFIG_FEATURE_TUNCTL_UG is not set -+# CONFIG_UDHCPC6 is not set -+# CONFIG_UDHCPD is not set -+# CONFIG_DHCPRELAY is not set -+# CONFIG_DUMPLEASES is not set -+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set -+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set -+CONFIG_DHCPD_LEASES_FILE="" -+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=y -+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" -+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 -+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" -+# 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_TOP is not set -+# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set -+# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set -+# 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_UPTIME=y -+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set -+CONFIG_FREE=y -+# CONFIG_FUSER is not set -+CONFIG_KILL=y -+CONFIG_KILLALL=y -+CONFIG_KILLALL5=y -+# CONFIG_PGREP is not set -+# CONFIG_PIDOF is not set -+# CONFIG_FEATURE_PIDOF_SINGLE is not set -+# CONFIG_FEATURE_PIDOF_OMIT is not set -+# 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 is not set -+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set -+# CONFIG_RENICE is not set -+# CONFIG_BB_SYSCTL is not set -+# CONFIG_FEATURE_SHOW_THREADS is not set -+# CONFIG_WATCH is not set -+ -+# -+# 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=y -+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=y -+# CONFIG_ASH_MAIL is not set -+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y -+CONFIG_ASH_RANDOM_SUPPORT=y -+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 is not set -+CONFIG_FEATURE_SH_EXTRA_QUIET=y -+# CONFIG_FEATURE_SH_STANDALONE is not set -+# CONFIG_FEATURE_SH_NOFORK is not set -+# CONFIG_FEATURE_SH_HISTFILESIZE is not set -+ -+# -+# System Logging Utilities -+# -+CONFIG_SYSLOGD=y -+CONFIG_FEATURE_ROTATE_LOGFILE=y -+CONFIG_FEATURE_REMOTE_LOG=y -+# CONFIG_FEATURE_SYSLOGD_DUP is not set -+# CONFIG_FEATURE_SYSLOGD_CFG is not set -+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 -+# CONFIG_FEATURE_IPC_SYSLOG is not set -+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 -+# CONFIG_LOGREAD is not set -+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -+# CONFIG_FEATURE_KMSG_SYSLOG is not set -+CONFIG_KLOGD=y -+CONFIG_FEATURE_KLOGD_KLOGCTL=y -+CONFIG_LOGGER=y -diff -Nur '--exclude=.git' '--exclude=output' '--exclude=dl' buildroot_clean/board/raspberrypi/usb_test/linux.config buildroot/board/raspberrypi/usb_test/linux.config ---- buildroot_clean/board/raspberrypi/usb_test/linux.config 1970-01-01 01:00:00.000000000 +0100 -+++ buildroot/board/raspberrypi/usb_test/linux.config 2014-10-28 12:03:03.969362013 +0000 -@@ -0,0 +1,200 @@ -+# CONFIG_ARM_PATCH_PHYS_VIRT is not set -+CONFIG_LOCALVERSION="-quick" -+# CONFIG_LOCALVERSION_AUTO is not set -+# CONFIG_SWAP is not set -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_NO_HZ=y -+CONFIG_HIGH_RES_TIMERS=y -+CONFIG_IKCONFIG=y -+CONFIG_IKCONFIG_PROC=y -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_RD_LZO=y -+CONFIG_KALLSYMS_ALL=y -+CONFIG_EMBEDDED=y -+CONFIG_PERF_EVENTS=y -+# CONFIG_COMPAT_BRK is not set -+CONFIG_SLAB=y -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODVERSIONS=y -+CONFIG_MODULE_SRCVERSION_ALL=y -+# CONFIG_BLK_DEV_BSG is not set -+CONFIG_ARCH_BCM2708=y -+CONFIG_PREEMPT=y -+CONFIG_AEABI=y -+CONFIG_UACCESS_WITH_MEMCPY=y -+CONFIG_ZBOOT_ROM_TEXT=0x0 -+CONFIG_ZBOOT_ROM_BSS=0x0 -+CONFIG_CMDLINE="dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -+CONFIG_CPU_IDLE=y -+CONFIG_VFP=y -+CONFIG_BINFMT_MISC=y -+CONFIG_NET=y -+CONFIG_PACKET=y -+CONFIG_UNIX=y -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_RARP=y -+CONFIG_SYN_COOKIES=y -+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set -+# CONFIG_INET_XFRM_MODE_TUNNEL is not set -+# CONFIG_INET_XFRM_MODE_BEET is not set -+# CONFIG_INET_LRO is not set -+# CONFIG_INET_DIAG is not set -+# CONFIG_IPV6 is not set -+# CONFIG_WIRELESS is not set -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y -+CONFIG_BLK_DEV_LOOP=y -+CONFIG_BLK_DEV_RAM=y -+CONFIG_SCSI=y -+# CONFIG_SCSI_PROC_FS is not set -+# CONFIG_SCSI_LOWLEVEL is not set -+CONFIG_NETDEVICES=y -+# CONFIG_NET_VENDOR_BROADCOM is not set -+# CONFIG_NET_VENDOR_CIRRUS is not set -+# CONFIG_NET_VENDOR_FARADAY is not set -+# CONFIG_NET_VENDOR_INTEL is not set -+# CONFIG_NET_VENDOR_MARVELL is not set -+# CONFIG_NET_VENDOR_MICREL is not set -+# CONFIG_NET_VENDOR_NATSEMI is not set -+# CONFIG_NET_VENDOR_SEEQ is not set -+# CONFIG_NET_VENDOR_STMICRO is not set -+# CONFIG_NET_VENDOR_WIZNET is not set -+CONFIG_USB_USBNET=y -+# CONFIG_USB_NET_AX8817X is not set -+# CONFIG_USB_NET_CDCETHER is not set -+# CONFIG_USB_NET_CDC_NCM is not set -+CONFIG_USB_NET_SMSC95XX=y -+# CONFIG_USB_NET_NET1080 is not set -+# CONFIG_USB_NET_CDC_SUBSET is not set -+# CONFIG_USB_NET_ZAURUS is not set -+# CONFIG_WLAN is not set -+# CONFIG_INPUT_MOUSEDEV is not set -+CONFIG_INPUT_EVDEV=y -+# CONFIG_INPUT_KEYBOARD is not set -+# CONFIG_INPUT_MOUSE is not set -+# CONFIG_SERIO is not set -+# CONFIG_LEGACY_PTYS is not set -+# CONFIG_DEVKMEM is not set -+CONFIG_SERIAL_AMBA_PL011=y -+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_TTY_PRINTK=y -+CONFIG_HW_RANDOM=y -+CONFIG_HW_RANDOM_BCM2708=y -+CONFIG_RAW_DRIVER=y -+CONFIG_THERMAL=y -+CONFIG_THERMAL_BCM2835=y -+CONFIG_WATCHDOG=y -+CONFIG_BCM2708_WDT=y -+CONFIG_REGULATOR=y -+CONFIG_REGULATOR_DEBUG=y -+CONFIG_REGULATOR_FIXED_VOLTAGE=y -+CONFIG_REGULATOR_VIRTUAL_CONSUMER=y -+CONFIG_REGULATOR_USERSPACE_CONSUMER=y -+CONFIG_FB=y -+CONFIG_FB_BCM2708=y -+CONFIG_FRAMEBUFFER_CONSOLE=y -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_SOUND=y -+CONFIG_SND=y -+CONFIG_SND_BCM2835=y -+# CONFIG_SND_USB is not set -+CONFIG_USB=y -+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -+CONFIG_USB_DWCOTG=y -+CONFIG_MMC=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y -+CONFIG_MMC_SDHCI_BCM2708=y -+CONFIG_MMC_SDHCI_BCM2708_DMA=y -+CONFIG_MMC_BCM2835=y -+CONFIG_MMC_BCM2835_DMA=y -+CONFIG_NEW_LEDS=y -+CONFIG_LEDS_CLASS=y -+CONFIG_LEDS_TRIGGERS=y -+# CONFIG_IOMMU_SUPPORT is not set -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_FS_POSIX_ACL=y -+CONFIG_EXT4_FS_SECURITY=y -+CONFIG_AUTOFS4_FS=y -+CONFIG_FSCACHE=y -+CONFIG_CACHEFILES=y -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -+CONFIG_TMPFS=y -+CONFIG_TMPFS_POSIX_ACL=y -+CONFIG_CONFIGFS_FS=y -+# CONFIG_MISC_FILESYSTEMS is not set -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3_ACL=y -+CONFIG_NFS_V4=y -+CONFIG_ROOT_NFS=y -+CONFIG_NFS_FSCACHE=y -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=y -+CONFIG_NLS_CODEPAGE_737=y -+CONFIG_NLS_CODEPAGE_775=y -+CONFIG_NLS_CODEPAGE_850=y -+CONFIG_NLS_CODEPAGE_852=y -+CONFIG_NLS_CODEPAGE_855=y -+CONFIG_NLS_CODEPAGE_857=y -+CONFIG_NLS_CODEPAGE_860=y -+CONFIG_NLS_CODEPAGE_861=y -+CONFIG_NLS_CODEPAGE_862=y -+CONFIG_NLS_CODEPAGE_863=y -+CONFIG_NLS_CODEPAGE_864=y -+CONFIG_NLS_CODEPAGE_865=y -+CONFIG_NLS_CODEPAGE_866=y -+CONFIG_NLS_CODEPAGE_869=y -+CONFIG_NLS_CODEPAGE_936=y -+CONFIG_NLS_CODEPAGE_950=y -+CONFIG_NLS_CODEPAGE_932=y -+CONFIG_NLS_CODEPAGE_949=y -+CONFIG_NLS_CODEPAGE_874=y -+CONFIG_NLS_ISO8859_8=y -+CONFIG_NLS_CODEPAGE_1250=y -+CONFIG_NLS_CODEPAGE_1251=y -+CONFIG_NLS_ASCII=y -+CONFIG_NLS_ISO8859_1=y -+CONFIG_NLS_ISO8859_2=y -+CONFIG_NLS_ISO8859_3=y -+CONFIG_NLS_ISO8859_4=y -+CONFIG_NLS_ISO8859_5=y -+CONFIG_NLS_ISO8859_6=y -+CONFIG_NLS_ISO8859_7=y -+CONFIG_NLS_ISO8859_9=y -+CONFIG_NLS_ISO8859_13=y -+CONFIG_NLS_ISO8859_14=y -+CONFIG_NLS_ISO8859_15=y -+CONFIG_NLS_UTF8=y -+CONFIG_PRINTK_TIME=y -+CONFIG_DEBUG_FS=y -+CONFIG_DETECT_HUNG_TASK=y -+# CONFIG_DEBUG_PREEMPT is not set -+# CONFIG_DEBUG_BUGVERBOSE is not set -+# CONFIG_FTRACE is not set -+CONFIG_KGDB=y -+CONFIG_KGDB_KDB=y -+# CONFIG_ARM_UNWIND is not set -+CONFIG_CRYPTO_CBC=y -+CONFIG_CRYPTO_HMAC=y -+CONFIG_CRYPTO_MD5=y -+CONFIG_CRYPTO_SHA1=y -+CONFIG_CRYPTO_DES=y -+# CONFIG_CRYPTO_ANSI_CPRNG is not set -+# CONFIG_CRYPTO_HW is not set -+CONFIG_CRC_ITU_T=y -+CONFIG_LIBCRC32C=y -diff -Nur '--exclude=.git' '--exclude=output' '--exclude=dl' buildroot_clean/board/raspberrypi/usb_test/post_build.sh buildroot/board/raspberrypi/usb_test/post_build.sh ---- buildroot_clean/board/raspberrypi/usb_test/post_build.sh 1970-01-01 01:00:00.000000000 +0100 -+++ buildroot/board/raspberrypi/usb_test/post_build.sh 2014-10-09 12:39:36.112227340 +0100 -@@ -0,0 +1,21 @@ -+#!/bin/bash -+ -+mkdir -p output/sd_card -+cp output/build/rpi-firmware-*/boot/start_cd.elf output/sd_card/start.elf -+cp output/build/rpi-firmware-*/boot/bootcode.bin output/sd_card/ -+echo "ramfsfile=rootfs" > output/sd_card/config.txt -+echo "ramfsaddr=0xffffffff" >> output/sd_card/config.txt -+cp output/images/zImage output/sd_card/kernel.img -+cp output/images/rootfs.cpio.lzo output/sd_card/rootfs -+ -+FSIZE=`du output/sd_card/ | cut -f 1` -+dd if=/dev/zero of=output/images/fatimage bs=1KiB count=$(($FSIZE+20)) -+sudo losetup /dev/loop0 output/images/fatimage -+sudo mkfs.vfat /dev/loop0 -+mkdir -p output/tmp -+sudo mount /dev/loop0 output/tmp -+sudo cp output/sd_card/kernel.img output/tmp -+sudo cp output/sd_card/rootfs output/tmp -+sudo cp output/sd_card/config.txt output/tmp -+sudo umount /dev/loop0 -+sudo losetup -d /dev/loop0 -diff --git buildroot_clean/configs/raspberrypi_defconfig buildroot/configs/raspberrypi_defconfig -index 835657c..9b7175c 100644 ---- buildroot_clean/configs/raspberrypi_defconfig -+++ buildroot/configs/raspberrypi_defconfig -@@ -4,7 +4,7 @@ BR2_arm1176jzf_s=y - BR2_TOOLCHAIN_BUILDROOT_LARGEFILE=y - BR2_TOOLCHAIN_BUILDROOT_CXX=y - --BR2_TARGET_GENERIC_GETTY_PORT="tty1" -+BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" - - BR2_PACKAGE_RPI_FIRMWARE=y - -@@ -20,3 +20,12 @@ BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="c256eb9968c8997dce47350d2075e42f1b3991d3" - BR2_LINUX_KERNEL_USE_DEFCONFIG=y - BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi_quick" - BR2_LINUX_KERNEL_ZIMAGE=y -+ -+# Changes to do USB buildroot booting -+BR2_TARGET_GENERIC_ROOT_PASSWD="raspberry" -+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/usb_test/post_build.sh" -+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/raspberrypi/usb_test/linux.config" -+BR2_PACKAGE_BUSYBOX_CONFIG="board/raspberrypi/usb_test/busybox.config" -+BR2_TARGET_ROOTFS_CPIO=y -+BR2_TARGET_ROOTFS_CPIO_LZO=y diff --git a/main.c b/main.c index 1b4e042..7c25c8f 100755 --- a/main.c +++ b/main.c @@ -1,4 +1,4 @@ -#include "libusb-1.0/libusb.h" +#include #include #include #include @@ -6,28 +6,34 @@ #include int verbose = 0; -int out_ep = 1; -int in_ep = 2; +int loop = 1; +char * directory = NULL; + +int out_ep; +int in_ep; + +typedef struct MESSAGE_S { + int length; + unsigned char signature[20]; +} boot_message_t; void usage(int error) { FILE * dest = error ? stderr : stdout; fprintf(dest, "Usage: rpiboot\n"); - fprintf(dest, " or: rpiboot -b fatimage\n"); - fprintf(dest, "Boot a Raspberry Pi Model A or Compute Module through USB\n"); - fprintf(dest, "\n"); - fprintf(dest, "rpiboot : Boot the device into Mass Storage Device mode\n"); - fprintf(dest, "rpiboot -b fatimage : Boot the device into a buildroot linux image\n"); - fprintf(dest, "\n"); + fprintf(dest, " or: rpiboot -d [directory]\n"); + fprintf(dest, "Boot a Raspberry Pi in device mode either directly into a mass storage device\n"); + fprintf(dest, "or provide a set of boot files in a directory from which to boot. This can\n"); + fprintf(dest, "then contain a initramfs to boot through to linux kernel\n\n"); + fprintf(dest, "rpiboot : Boot the device into mass storage device\n"); + fprintf(dest, "rpiboot -d [directory] : Boot the device using the boot files in 'directory'\n"); fprintf(dest, "Further options:\n"); - fprintf(dest, " -x executable : Autoexecute function\n"); - fprintf(dest, " This option is used to trigger the execution of a\n"); - fprintf(dest, " script after finishing the USB boot process\n"); - fprintf(dest, " -l : Sit in a loop permanently\n"); - fprintf(dest, " -v : Verbose output"); - fprintf(dest, " -h : This help\n"); - exit(-1); + fprintf(dest, " -l : Loop forever\n"); + fprintf(dest, " -v : Verbose\n"); + fprintf(dest, " -h : This help\n"); + + exit(error ? -1 : 0); } libusb_device_handle * LIBUSB_CALL open_device_with_vid( @@ -49,7 +55,7 @@ libusb_device_handle * LIBUSB_CALL open_device_with_vid( if (r < 0) goto out; if(verbose) - printf("Found device %d idVendor=0x%04x idProduct=0x%04x\n", i, desc.idVendor, desc.idProduct); + printf("Found device %zu idVendor=0x%04x idProduct=0x%04x\n", i, desc.idVendor, desc.idProduct); if (desc.idVendor == vendor_id) { if(desc.idProduct == 0x2763 || desc.idProduct == 0x2764) @@ -85,11 +91,14 @@ int Initialize_Device(libusb_context ** ctx, libusb_device_handle ** usb_device) *usb_device = open_device_with_vid(*ctx, 0x0a5c); if (*usb_device == NULL) { + sleep(1); return -1; } libusb_get_active_config_descriptor(libusb_get_device(*usb_device), &config); + // Handle 2837 where it can start with two interfaces, the first is mass storage + // the second is the vendor interface for programming if(config->bNumInterfaces == 1) { interface = 0; @@ -106,16 +115,17 @@ int Initialize_Device(libusb_context ** ctx, libusb_device_handle ** usb_device) ret = libusb_claim_interface(*usb_device, interface); if (ret) { + libusb_close(*usb_device); printf("Failed to claim interface\n"); return ret; } - printf("Initialised device correctly\n"); + if(verbose) printf("Initialised device correctly\n"); return ret; } -int ep_write(unsigned char *buf, int len, libusb_device_handle * usb_device) +int ep_write(void *buf, int len, libusb_device_handle * usb_device) { int a_len; int ret = @@ -128,14 +138,17 @@ int ep_write(unsigned char *buf, int len, libusb_device_handle * usb_device) return ret; } - ret = libusb_bulk_transfer(usb_device, out_ep, buf, len, &a_len, 100000); - if(verbose) - printf("libusb_bulk_transfer returned %d\n", ret); + if(len > 0) + { + ret = libusb_bulk_transfer(usb_device, out_ep, buf, len, &a_len, 100000); + if(verbose) + printf("libusb_bulk_transfer returned %d\n", ret); + } return a_len; } -int ep_read(unsigned char *buf, int len, libusb_device_handle * usb_device) +int ep_read(void *buf, int len, libusb_device_handle * usb_device) { int ret = libusb_control_transfer(usb_device, @@ -146,44 +159,8 @@ int ep_read(unsigned char *buf, int len, libusb_device_handle * usb_device) return len; } -int main(int argc, char *argv[]) +void get_options(int argc, char *argv[]) { - int result; - libusb_context *ctx; - libusb_device_handle *usb_device; - unsigned char *txbuf; - int size; - int retcode; - int last_serial = -1; - FILE *fp1, *fp2, *fp; - - char def1_inst[] = "/usr/share/rpiboot/usbbootcode.bin"; - char def2_inst[] = "/usr/share/rpiboot/msd.elf"; - char def3_inst[] = "/usr/share/rpiboot/buildroot.elf"; - - char def1_loc[] = "./usbbootcode.bin"; - char def2_loc[] = "./msd.elf"; - char def3_loc[] = "./buildroot.elf"; - - char *def1, *def2, *def3; - - char *stage1 = NULL, *stage2 = NULL; - char *fatimage = NULL, *executable = NULL; - int loop = 0; - -// if local file version exists use it else use installed - if( access( def1_loc, F_OK ) != -1 ) { def1 = def1_loc; } else { def1 = def1_inst; } - if( access( def2_loc, F_OK ) != -1 ) { def2 = def2_loc; } else { def2 = def2_inst; } - if( access( def3_loc, F_OK ) != -1 ) { def3 = def3_loc; } else { def3 = def3_inst; } - - stage1 = def1; - stage2 = def2; - - struct MESSAGE_S { - int length; - unsigned char signature[20]; - } message; - #if defined (__CYGWIN__) //printf("Running under Cygwin\n"); #else @@ -199,24 +176,17 @@ int main(int argc, char *argv[]) argv++; argc--; while(*argv) { - if(strcmp(*argv, "-b") == 0) + if(strcmp(*argv, "-d") == 0) { argv++; argc--; if(argc < 1) usage(1); - stage1 = def1; - stage2 = def3; - fatimage = *argv; + directory = *argv; } else if(strcmp(*argv, "-h") == 0 || strcmp(*argv, "--help") == 0) { usage(0); } - else if(strcmp(*argv, "-x") == 0) - { - argv++; argc--; - executable = *argv; - } else if(strcmp(*argv, "-l") == 0) { loop = 1; @@ -229,26 +199,219 @@ int main(int argc, char *argv[]) { usage(1); } - + argv++; argc--; } +} - fp1 = fopen(stage1, "rb"); - if (fp1 == NULL) +boot_message_t boot_message; +void *second_stage_txbuf; + +int second_stage_prep(FILE *fp) +{ + int size; + + fseek(fp, 0, SEEK_END); + boot_message.length = ftell(fp); + fseek(fp, 0, SEEK_SET); + + second_stage_txbuf = (uint8_t *) malloc(boot_message.length); + if (second_stage_txbuf == NULL) { - printf("Cannot open file %s\n", stage1); - exit(-1); + printf("Failed to allocate memory\n"); + return -1; } - fp2 = fopen(stage2, "rb"); - if (fp2 == NULL) + size = fread(second_stage_txbuf, 1, boot_message.length, fp); + if(size != boot_message.length) { - printf("Cannot open file %s\n", stage2); - exit(-1); + printf("Failed to read second stage\n"); + return -1; } - if(strcmp(stage2 + strlen(stage2) - 4, ".elf")) + + return 0; +} + +int second_stage_boot(libusb_device_handle *usb_device) +{ + int size, retcode = 0; + + size = ep_write(&boot_message, sizeof(boot_message), usb_device); + if (size != sizeof(boot_message)) { - printf("Third stage needs to be .elf format\n"); + printf("Failed to write correct length, returned %d\n", size); + return -1; + } + + if(verbose) printf("Writing %d bytes\n", boot_message.length); + size = ep_write(second_stage_txbuf, boot_message.length, usb_device); + if (size != boot_message.length) + { + printf("Failed to read correct length, returned %d\n", size); + return -1; + } + + sleep(1); + size = ep_read((unsigned char *)&retcode, sizeof(retcode), usb_device); + + if (retcode == 0) + { + printf("Successful read %d bytes \n", size); + } + else + { + printf("Failed : 0x%x", retcode); + } + + return retcode; + +} + + +FILE * check_file(char * dir, char *fname) +{ + FILE * fp = NULL; + char path[256]; + + // Check directory first then /usr/share/rpiboot + if(dir) + { + strcpy(path, dir); + strcat(path, "/"); + strcat(path, fname); + fp = fopen(path, "rb"); + } + + if(fp == NULL) + { + strcpy(path, "/usr/share/rpiboot/"); + strcat(path, fname); + fp = fopen(path, "rb"); + } + + return fp; +} + +int file_server(libusb_device_handle * usb_device) +{ + int going = 1; + struct file_message { + int command; + char fname[256]; + } message; + static FILE * fp = NULL; + + while(going) + { + ep_read(&message, sizeof(message), usb_device); + if(verbose) printf("Received message %d: %s\n", message.command, message.fname); + switch(message.command) + { + case 0: // Get file size + if(fp) + fclose(fp); + fp = check_file(directory, message.fname); + if(fp != NULL) + { + int file_size; + void *buf; + + fseek(fp, 0, SEEK_END); + file_size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + int sz = libusb_control_transfer(usb_device, LIBUSB_REQUEST_TYPE_VENDOR, 0, + file_size & 0xffff, file_size >> 16, NULL, 0, 1000); + + if(sz < 0) + return -1; + } + else + { + ep_write(NULL, 0, usb_device); + if(verbose) printf("Cannot open file %s\n", message.fname); + break; + } + break; + + case 1: // Read file + if(fp != NULL) + { + int file_size; + void *buf; + + printf("File read: %s\n", message.fname); + + fseek(fp, 0, SEEK_END); + file_size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + buf = malloc(file_size); + if(buf == NULL) + { + printf("Failed to allocate buffer for file %s\n", message.fname); + return -1; + } + int read = fread(buf, 1, file_size, fp); + if(read != file_size) + { + printf("Failed to read from input file\n"); + return -1; + } + + int sz = ep_write(buf, file_size, usb_device); + + fclose(fp); + + if(sz != file_size) + { + printf("Failed to write complete file to USB device\n"); + return -1; + } + } + else + { + if(verbose) printf("No file %s found\n", message.fname); + ep_write(NULL, 0, usb_device); + } + break; + + case 2: // Done, exit file server + going = 0; + break; + + default: + printf("Unknown message\n"); + return -1; + } + } + + return 0; +} + +int main(int argc, char *argv[]) +{ + FILE * second_stage; + libusb_context *ctx; + libusb_device_handle *usb_device; + struct libusb_device_descriptor desc; + struct libusb_config_descriptor *config; + + get_options(argc, argv); + + // Default to standard msd directory + if(directory == NULL) + directory = "msd"; + + second_stage = check_file(directory, "bootcode.bin"); + if(second_stage == NULL) + { + fprintf(stderr, "Unable to open 'bootcode.bin' from /usr/share/rpiboot or supplied directory\n"); + usage(1); + } + if(second_stage_prep(second_stage) != 0) + { + fprintf(stderr, "Failed to prepare the second stage bootcode\n"); exit(-1); } @@ -263,117 +426,56 @@ int main(int argc, char *argv[]) do { - FILE *fp_img = NULL; - struct libusb_device_descriptor desc; - struct libusb_config_descriptor *config; + int last_serial = -1; - printf("Waiting for BCM2835 ...\n"); + printf("Waiting for BCM2835/6/7\n"); // Wait for a device to get plugged in do { - result = Initialize_Device(&ctx, &usb_device); - if(result == 0) + ret = Initialize_Device(&ctx, &usb_device); + if(ret == 0) { - libusb_get_device_descriptor(libusb_get_device - (usb_device), &desc); - printf("Found serial number %d\n", desc.iSerialNumber); + libusb_get_device_descriptor(libusb_get_device(usb_device), &desc); + + if(verbose) + printf("Found serial number %d\n", desc.iSerialNumber); + // Make sure we've re-enumerated since the last time if(desc.iSerialNumber == last_serial) { - result = -1; + ret = -1; libusb_close(usb_device); - } + } libusb_get_active_config_descriptor(libusb_get_device(usb_device), &config); } - if (result) + if (ret) { - usleep(100); + usleep(500); } } - while (result); + while (ret); last_serial = desc.iSerialNumber; - printf("Found serial = %d: writing file %s\n", - desc.iSerialNumber, - desc.iSerialNumber == 0 ? stage1 : stage2); - fp = desc.iSerialNumber == 0 ? fp1 : fp2; - - fseek(fp, 0, SEEK_END); - message.length = ftell(fp); - fseek(fp, 0, SEEK_SET); - - if(desc.iSerialNumber == 1 && fatimage != NULL) + if(desc.iSerialNumber == 0) { - // Been given a filesystem image - fp_img = fopen(fatimage, "rb"); - if(fp_img == NULL) - { - printf("Failed to open image %s\n", fatimage); - exit(-1); - } - fseek(fp_img, 0, SEEK_END); - message.length += ftell(fp_img); - if(verbose) printf("Adding %ld bytes of binary to end of elf\n", ftell(fp_img)); - fseek(fp_img, 0, SEEK_SET); - } - - txbuf = (unsigned char *)malloc(message.length); - if (txbuf == NULL) - { - printf("Failed to allocate memory\n"); - exit(-1); - } - - size = fread(txbuf, 1, message.length, fp); - if(fp_img) - { - size += fread(txbuf + size, 1, message.length - size, fp_img); - } - - size = - ep_write((unsigned char *)&message, sizeof(message), - usb_device); - if (size != sizeof(message)) - { - printf("Failed to write correct length, returned %d\n", - size); - exit(-1); - } - if(verbose) printf("Writing %d bytes\n", message.length); - size = ep_write(txbuf, message.length, usb_device); - if (size != message.length) - { - printf("Failed to read correct length, returned %d\n", - size); - exit(-1); - } - - sleep(1); - size = - ep_read((unsigned char *)&retcode, sizeof(retcode), - usb_device); - - if (retcode == 0) - { - printf("Successful read %d bytes \n", size); - - if(fp == fp2 && executable) - { - system(executable); - } + printf("Sending bootcode.bin\n"); + second_stage_boot(usb_device); } else - printf("Failed : 0x%x", retcode); + { + printf("Second stage boot server\n"); + file_server(usb_device); + } libusb_close(usb_device); - sleep(1); } - while(fp == fp1 || loop); + while(loop); libusb_exit(ctx); return 0; } + diff --git a/msd/bootcode.bin b/msd/bootcode.bin new file mode 100644 index 0000000..4645785 Binary files /dev/null and b/msd/bootcode.bin differ diff --git a/msd.elf b/msd/start.elf similarity index 100% rename from msd.elf rename to msd/start.elf