From db1263b6695fd3d4d761d864fc5413e2cfda6aa3 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 4 Dec 2012 15:33:27 +0000 Subject: [PATCH 01/65] insert amlogic_f16ref-xbmc_defconfig --- configs/amlogic_f16ref-xbmc_defconfig | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 configs/amlogic_f16ref-xbmc_defconfig diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig new file mode 100644 index 0000000000..a7f3bd5faa --- /dev/null +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -0,0 +1,52 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_KERNEL_MIRROR="git@github.com:j1nx/buildroot-amlogic-kernel.git" +BR2_OPTIMIZE_3=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_GDB_SERVER=y +BR2_GDB_VERSION_7_1=y +BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" +# BR2_SOFT_FLOAT is not set +BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" +BR2_TARGET_GENERIC_GETTY=y +BR2_BUSYBOX_VERSION_1_17_X=y +BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_LIRC=y +BR2_PACKAGE_XBMC=y +BR2_PACKAGE_XIOS=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_NTFS_3G=y +BR2_PACKAGE_NTFSPROGS=y +# BR2_PACKAGE_UDEV_MTD_PROBE is not set +BR2_PACKAGE_USBMOUNT=y +BR2_PACKAGE_MYSQL_CLIENT_LIB_ONLY=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_NTP=y +BR2_PACKAGE_NTP_NTPDATE=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y +BR2_PACKAGE_NANO=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV=y +BR2_ROOTFS_SKELETON_CUSTOM=y +BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_RECOVERY_AML=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2fdd70b20a7df58a51b719be655a5023a3feb2d0" +BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_defconfig" From b2e60225f3d3a59f38dcfaa82f1de5eb08b479b4 Mon Sep 17 00:00:00 2001 From: Peter Steenbergen Date: Tue, 4 Dec 2012 20:38:23 +0100 Subject: [PATCH 02/65] Update configs/amlogic_f16ref-xbmc_defconfig --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index a7f3bd5faa..8b56c2123d 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -49,4 +49,4 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2fdd70b20a7df58a51b719be655a5023a3feb2d0" -BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_defconfig" +BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 1b648ac6b37a20403e2a712e59602ad4da1c7585 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 4 Dec 2012 20:37:29 +0000 Subject: [PATCH 03/65] Pull in f16ref kernel instead of the Pivos kernel --- configs/amlogic_f16ref-xbmc_defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index a7f3bd5faa..e118cd2bb6 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a9=y -BR2_KERNEL_MIRROR="git@github.com:j1nx/buildroot-amlogic-kernel.git" +BR2_KERNEL_MIRROR="git@github.com:j1nx/buildroot-amlogic-reff16-kernel.git" BR2_OPTIMIZE_3=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y @@ -48,5 +48,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2fdd70b20a7df58a51b719be655a5023a3feb2d0" -BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_defconfig" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="9304ea5172bdfa545fa89f0688ed123983b3f2b2" +BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 11c8d0a441f52028f8f5e2a3b354e3f62e043838 Mon Sep 17 00:00:00 2001 From: Peter Steenbergen Date: Wed, 5 Dec 2012 11:26:09 +0100 Subject: [PATCH 04/65] Remove xios skin + bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 84ca6a67fb..d56355accc 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -17,7 +17,6 @@ BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_UBOOTAML=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y -BR2_PACKAGE_XIOS=y BR2_PACKAGE_DOSFSTOOLS=y BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y @@ -48,5 +47,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="b2e60225f3d3a59f38dcfaa82f1de5eb08b479b4" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="89c7c0c9c449926f3247f53235f496aabdf17305" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 4bfba35789809bb2e05ba1b6510210b31cde9142 Mon Sep 17 00:00:00 2001 From: Peter Steenbergen Date: Wed, 5 Dec 2012 11:31:58 +0100 Subject: [PATCH 05/65] Update kernel location --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index d56355accc..f338a2cf1f 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a9=y -BR2_KERNEL_MIRROR="git@github.com:j1nx/buildroot-amlogic-reff16-kernel.git" +BR2_KERNEL_MIRROR="git@github.com:j1nx/Amlogic-reff16-kernel.git" BR2_OPTIMIZE_3=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y From ee4a534fe1cdc09dc0b94bffc1a431c1d8306d99 Mon Sep 17 00:00:00 2001 From: Peter Steenbergen Date: Wed, 5 Dec 2012 12:03:29 +0100 Subject: [PATCH 06/65] Pull in reff16 uboot sources instead of pivos --- package/amlogic/ubootaml/ubootaml.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index a8747281fc..720d49000e 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -1,5 +1,5 @@ -UBOOTAML_VERSION:=50dba3182b40ff71a68ddae1ba88a53cdab93935 -UBOOTAML_SITE=git@github.com:Pivosgroup/buildroot-uboot.git +UBOOTAML_VERSION:=4d4fb67bda53e407d705d891134759deb8e1f41b +UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git UBOOTAML_SITE_METHOD=git UBOOTAML_INSTALL_STAGING=YES UBOOTAML_DEPENDENCIES=ubootamltoolchain @@ -8,7 +8,7 @@ define UBOOTAML_BUILD_CMDS rm -f $(@D)/tools/ucl/libucl_linux.lib $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ cp -f $(@D)/tools/ucl/ucl_cygwin_prj/objs/libucl.a $(@D)/tools/ucl/libucl_linux.lib - $(MAKE) -C $(@D) stv_mbx_m3_512_config + $(MAKE) -C $(@D) m3_mbox_config PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) endef From 6568392687abc5c96579b8e1f86ad5bb15ac769f Mon Sep 17 00:00:00 2001 From: J1nx Date: Wed, 5 Dec 2012 12:47:59 +0000 Subject: [PATCH 07/65] update ubootaml makefile --- package/amlogic/ubootaml/ubootaml.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index 720d49000e..82c6f68dc2 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -5,9 +5,9 @@ UBOOTAML_INSTALL_STAGING=YES UBOOTAML_DEPENDENCIES=ubootamltoolchain define UBOOTAML_BUILD_CMDS - rm -f $(@D)/tools/ucl/libucl_linux.lib + rm -rf $(@D)/tools/ucl/libucl_linux $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ - cp -f $(@D)/tools/ucl/ucl_cygwin_prj/objs/libucl.a $(@D)/tools/ucl/libucl_linux.lib + cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib $(MAKE) -C $(@D) m3_mbox_config PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) endef From a3d5782e962ab686e076b2406a0f0f22f9c001a7 Mon Sep 17 00:00:00 2001 From: J1nx Date: Thu, 6 Dec 2012 15:27:58 +0000 Subject: [PATCH 08/65] Small changes - forgot which ;) --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- package/amlogic/ubootaml/ubootaml.mk | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index f338a2cf1f..f6c8922c0a 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -47,5 +47,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="89c7c0c9c449926f3247f53235f496aabdf17305" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4eb904a0e3563ff870c0b469328fba0cd1db4e51" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index 82c6f68dc2..4813579607 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -5,7 +5,8 @@ UBOOTAML_INSTALL_STAGING=YES UBOOTAML_DEPENDENCIES=ubootamltoolchain define UBOOTAML_BUILD_CMDS - rm -rf $(@D)/tools/ucl/libucl_linux + rm -f $(@D)/tools/ucl/libucl_linux.lib + rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib $(MAKE) -C $(@D) m3_mbox_config From ec46689e6fff9475d0215f8a4384fa367dea62e2 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 8 Dec 2012 14:04:27 +0000 Subject: [PATCH 09/65] Various tweaks to make it flashable on f16ref + start on arc toolchain --- fs/recovery_aml/aml_logo.img | Bin 0 -> 1036856 bytes fs/recovery_aml/android_scriptgen | 8 ++++---- fs/recovery_aml/recovery_aml.mk | 4 ++-- .../ubootarctoolchain/ubootarctoolchain.mk | 13 +++++++++++++ 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 fs/recovery_aml/aml_logo.img create mode 100644 package/amlogic/ubootarctoolchain/ubootarctoolchain.mk diff --git a/fs/recovery_aml/aml_logo.img b/fs/recovery_aml/aml_logo.img new file mode 100644 index 0000000000000000000000000000000000000000..c7d393106bb079028e3d066bbb075b58c17d7af7 GIT binary patch literal 1036856 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 "{}"/.empty' \; && \ pushd $(BINARIES_DIR)/aml_recovery/ >/dev/null && \ - zip -m -q -r -y $(BINARIES_DIR)/aml_recovery/update-unsigned.img logo.img uImage-2.6.34-m1 uImage-2.6.34-m3 META-INF system && \ + zip -m -q -r -y $(BINARIES_DIR)/aml_recovery/update-unsigned.img aml_logo.img uImage-2.6.34-m1 uImage-2.6.34-m3 META-INF system && \ popd >/dev/null && \ echo "Signing update.img..." && \ pushd fs/recovery_aml/ >/dev/null; java -Xmx1024m -jar signapk.jar -w testkey.x509.pem testkey.pk8 $(BINARIES_DIR)/aml_recovery/update-unsigned.img $(BINARIES_DIR)/update.img && \ diff --git a/package/amlogic/ubootarctoolchain/ubootarctoolchain.mk b/package/amlogic/ubootarctoolchain/ubootarctoolchain.mk new file mode 100644 index 0000000000..f41b77a7a8 --- /dev/null +++ b/package/amlogic/ubootarctoolchain/ubootarctoolchain.mk @@ -0,0 +1,13 @@ +UBOOTARCTOOLCHAIN_SITE=http://www.codesourcery.com/sgpp/lite/arm/portal/package6493/public/arm-none-eabi/ +UBOOTARCTOOLCHAIN_VERSION:=arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu +UBOOTARCTOOLCHAIN_SOURCE:=$(UBOOTARCTOOLCHAIN_VERSION).tar.bz2 + +define UBOOTARCTOOLCHAIN_BUILD_CMDS + cp -rf $(@D)/arm-none-eabi $(TOOLCHAIN_EXTERNAL_DIR) + cp -rf $(@D)/bin $(TOOLCHAIN_EXTERNAL_DIR) + cp -rf $(@D)/lib $(TOOLCHAIN_EXTERNAL_DIR) + cp -rf $(@D)/libexec $(TOOLCHAIN_EXTERNAL_DIR) + cp -rf $(@D)/share $(TOOLCHAIN_EXTERNAL_DIR) +endef + +$(eval $(call GENTARGETS,package/amlogic,ubootarctoolchain)) From a393f713150a215cd1e5b9052fb65d5df2a3f189 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 8 Dec 2012 21:10:47 +0000 Subject: [PATCH 10/65] bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index f6c8922c0a..958bccf95a 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -47,5 +47,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4eb904a0e3563ff870c0b469328fba0cd1db4e51" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="93d5860c7429086fc19d9dcb3a6c3ef0776f4b65" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From a068ef1d041f7d2006e06806f4d5e652d846dd1c Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 8 Dec 2012 22:49:24 +0000 Subject: [PATCH 11/65] bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 958bccf95a..70c54c83cb 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -47,5 +47,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="93d5860c7429086fc19d9dcb3a6c3ef0776f4b65" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ad78e2aa8d4c839f58e816e132dd55eabdd1ba90" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 9ed8ebd3a7ebd42edc56a450a7067596cea17bfa Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 9 Dec 2012 23:36:54 +0000 Subject: [PATCH 12/65] bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 70c54c83cb..4ce2715467 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -47,5 +47,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ad78e2aa8d4c839f58e816e132dd55eabdd1ba90" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="9233e959020f11926f27d56bbfbb709b712a769a" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 33d1156e86a5c95f9e9c129757b2b326a9fee634 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 11 Dec 2012 21:16:11 +0000 Subject: [PATCH 13/65] bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 4ce2715467..684b821db8 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -47,5 +47,5 @@ BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="9233e959020f11926f27d56bbfbb709b712a769a" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="e9e2528a61af6c45993d3c014127d3a93b36fd30" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 2141bd74a0cf2916157a482c17fc8f1ba7e48138 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 15 Dec 2012 20:55:03 +0000 Subject: [PATCH 14/65] sync with pivos --- fs/recovery_aml/android_scriptgen | 244 ++++++++++++++++++++++++++++++ fs/recovery_aml/recovery_aml.mk | 36 +++++ 2 files changed, 280 insertions(+) create mode 100644 fs/recovery_aml/android_scriptgen create mode 100644 fs/recovery_aml/recovery_aml.mk diff --git a/fs/recovery_aml/android_scriptgen b/fs/recovery_aml/android_scriptgen new file mode 100644 index 0000000000..2b9618df17 --- /dev/null +++ b/fs/recovery_aml/android_scriptgen @@ -0,0 +1,244 @@ +#!/usr/bin/python +import edify_generator +import os +import subprocess +import string +from optparse import OptionParser + +def MostPopularKey(d, default): + """Given a dict, return the key corresponding to the largest + value. Returns 'default' if the dict is empty.""" + x = [(v, k) for (k, v) in d.iteritems()] + if not x: return default + x.sort() + return x[-1][1] + +class Options(object): pass +OPTIONS = Options() +OPTIONS.info_dict = None + +class Item: + """Items represent the metadata (user, group, mode) of files and + directories in the system image.""" + ITEMS = {} + def __init__(self, name, dir=False): + self.name = name + self.uid = None + self.gid = None + self.mode = None + self.dir = dir + + if len(name) > 1: + self.parent = Item.Get(os.path.dirname(name), dir=True) + self.parent.children.append(self) + else: + self.parent = None + if dir: + self.children = [] + + def Dump(self, indent=0): + if self.uid is not None: + print "%s%s %d %d %o" % (" "*indent, self.name, self.uid, self.gid, self.mode) + else: + print "%s%s %s %s %s" % (" "*indent, self.name, self.uid, self.gid, self.mode) + if self.dir: + print "%s%s" % (" "*indent, self.descendants) + print "%s%s" % (" "*indent, self.best_subtree) + for i in self.children: + i.Dump(indent=indent+1) + + @classmethod + def Get(cls, name, dir=False): + if name not in cls.ITEMS: + cls.ITEMS[name] = Item(name, dir=dir) + return cls.ITEMS[name] + + @classmethod + def GetMetadata(cls, path, script): + # Run the external 'fs_config' program to determine the desired + # uid, gid, and mode for every Item object. Note this uses the + # one in the client now, which might not be the same as the one + # used when this target_files was built. + for i in cls.ITEMS.itervalues(): + if i.name: + try: + p = subprocess.check_output(["stat","--format=%n|%u|%g|%a",i.name]).strip() + except: + continue + name, uid, gid, mode = p.split("|") + i.uid = int(uid) + i.gid = int(gid) + i.mode = int(mode, 8) + # script.SetPermissions("/"+i.name, i.uid, i.gid, i.mode) + + def SetPermissions(self, script): + """Append set_perm/set_perm_recursive commands to 'script' to + set all permissions, users, and groups for the tree of files + rooted at 'self'.""" + self.CountChildMetadata() + + def recurse(item, current): + # current is the (uid, gid, dmode, fmode) tuple that the current + # item (and all its children) have already been set to. We only + # need to issue set_perm/set_perm_recursive commands if we're + # supposed to be something different. + subpath = string.replace(item.name,self.name,"/system") + if item.dir: + if current != item.best_subtree: + script.SetPermissionsRecursive(subpath, *item.best_subtree) + current = item.best_subtree + + if item.uid != current[0] or item.gid != current[1] or \ + item.mode != current[2]: + if item.uid is not None and item.gid is not None: + script.SetPermissions(subpath, item.uid, item.gid, item.mode) + + for i in item.children: + recurse(i, current) + else: + if item.uid != current[0] or item.gid != current[1] or \ + item.mode != current[3]: + script.SetPermissions(subpath, item.uid, item.gid, item.mode) + + recurse(self, (-1, -1, -1, -1)) + + def CountChildMetadata(self): + """Count up the (uid, gid, mode) tuples for all children and + determine the best strategy for using set_perm_recursive and + set_perm to correctly chown/chmod all the files to their desired + values. Recursively calls itself for all descendants. + + Returns a dict of {(uid, gid, dmode, fmode): count} counting up + all descendants of this node. (dmode or fmode may be None.) Also + sets the best_subtree of each directory Item to the (uid, gid, + dmode, fmode) tuple that will match the most descendants of that + Item. + """ + assert self.dir + d = self.descendants = {(self.uid, self.gid, self.mode, None): 1} + for i in self.children: + if i.dir: + for k, v in i.CountChildMetadata().iteritems(): + d[k] = d.get(k, 0) + v + else: + k = (i.uid, i.gid, None, i.mode) + d[k] = d.get(k, 0) + 1 + + # Find the (uid, gid, dmode, fmode) tuple that matches the most + # descendants. + + # First, find the (uid, gid) pair that matches the most + # descendants. + ug = {} + for (uid, gid, _, _), count in d.iteritems(): + if uid is not None and gid is not None: + ug[(uid, gid)] = ug.get((uid, gid), 0) + count + ug = MostPopularKey(ug, (0, 0)) + + # Now find the dmode and fmode that match the most descendants + # with that (uid, gid), and choose those. + best_dmode = (0, 0755) + best_fmode = (0, 0644) + for k, count in d.iteritems(): + if k[:2] != ug: continue + if k[2] is not None and count >= best_dmode[0]: best_dmode = (count, k[2]) + if k[3] is not None and count >= best_fmode[0]: best_fmode = (count, k[3]) + self.best_subtree = ug + (best_dmode[1], best_fmode[1]) + + return d + +def main(): + usage = "usage: %prog [options] arg" + parser = OptionParser(usage) + parser.add_option("-p", dest="path", + help=" topdir. must contain 'target' folder") + parser.add_option("-o", dest="outputfile", + help=" output file") + parser.add_option("-i", "--ignore-usr", dest="ignoreusr", action="store_true", + help=" don't scan usr/ dir") + parser.add_option("-w", "--wipe-userdata", dest="wipeuserdata", action="store_true", + help=" wipe userdata partition during install") + parser.add_option("-c", "--wipe-userdata-conditional", dest="wipeuserdataconditional", action="store_true", + help=" wipe userdata partition during install if previous linux install") + parser.add_option("-b", "--boardname", dest="boardname", + help=" check ro.product.board against boardname") + (options, args) = parser.parse_args() + + script = edify_generator.EdifyGenerator(3, OPTIONS.info_dict) + symlinks = [] + item = Item + for parent, dirnames, filenames in os.walk(options.path): + if 'usr' in dirnames and parent == options.path and options.ignoreusr: + dirnames.remove('usr') + for dirname in dirnames: + fulldirname = parent + "/"+dirname + if os.path.islink(fulldirname): + linkname = os.path.realpath(fulldirname) + pos = linkname.find(options.path) + if pos >= 0: + symlinks.append((linkname[pos+len(options.path):], "/system/" + fulldirname[len(options.path)+1:])) + else: + symlinks.append((linkname, "/system/" + fulldirname[len(options.path)+1:])) + else: + item.Get(fulldirname, dir=True) + for filename in filenames: + fullfilename = parent + "/"+filename + if os.path.islink(fullfilename): + linkname = os.path.realpath(fullfilename) + pos = linkname.find(options.path) + if pos >= 0: + symlinks.append((linkname[pos+len(options.path):], "/system/" + fullfilename[len(options.path)+1:])) + else: + symlinks.append((linkname, "/system/" + fullfilename[len(options.path)+1:])) + else: + item.Get(fullfilename, dir=False) + symlinks.sort() + + if symlinks != None: + print "Reading files/folders..." + Item.GetMetadata(options.path, script) + print "Setting permissions..." + Item.Get(options.path).SetPermissions(script) + print "Creating symlinks..." + script.MakeSymlinks(symlinks) + f = open(options.outputfile, 'w') + f.write('assert(getprop("ro.build.product") == "%s");\n' % options.boardname) + f.write('assert(getprop("ro.product.device") == "%s");\n' % options.boardname) + f.write('show_progress(0.500000, 3);\n') + if options.wipeuserdataconditional: + f.write('mount("yaffs2", "MTD", "system", "/system");\n') + f.write('ifelse\n') + f.write('(\n') + f.write(' is_file_exist("system/etc/issue") != "file_not_exit",\n') + f.write(' (\n') + f.write(' ui_print("Keeping Userdata");\n') + f.write(' unmount("/system");\n') + f.write(' ),\n') + f.write(' (\n') + f.write(' ui_print("Wiping Userdata");\n') + f.write(' unmount("/system");\n') + f.write(' format("yaffs2", "MTD", "userdata", "0");\n') + f.write(' )\n') + f.write(');\n') + elif options.wipeuserdata: + f.write('format("yaffs2", "MTD", "userdata", "0");\n') + f.write('format("yaffs2", "MTD", "system", "0");\n') + f.write('mount("yaffs2", "MTD", "system", "/system");\n') + f.write('show_progress(0.300000, 60);\n') + f.write('ui_print("Copying Files");\n') + f.write('package_extract_dir("system", "/system");\n') + f.write("\n".join(script.script) + "\n") + f.write('assert(package_extract_file("logo.img", "/tmp/logo.img"),\n') + f.write(' write_raw_image("/tmp/logo.img", "logo"),\n') + f.write(' delete("/tmp/logo.img"));\n') + f.write('show_progress(0.180000, 20);\n') + f.write('assert(package_extract_file("uImage-2.6.34", "/tmp/boot.img"),\n') + f.write(' write_raw_image("/tmp/boot.img", "boot"),\n') + f.write(' delete("/tmp/boot.img"));\n') + f.write('show_progress(0.020000, 0);\n') + f.write('unmount("/system");\n') + f.close() + print "Done!" + +if __name__ == '__main__': + main() diff --git a/fs/recovery_aml/recovery_aml.mk b/fs/recovery_aml/recovery_aml.mk new file mode 100644 index 0000000000..bd710dbeed --- /dev/null +++ b/fs/recovery_aml/recovery_aml.mk @@ -0,0 +1,36 @@ +############################################################# +# +# tar + squashfs to archive target filesystem +# +############################################################# + +ROOTFS_RECOVERY_AML_DEPENDENCIES = linux26 rootfs-tar_aml + +RECOVERY_AML_ARGS = -b $(BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME) +ifeq ($(BR2_TARGET_ROOTFS_RECOVERY_AML_WIPE_USERDATA),y) + RECOVERY_AML_ARGS += -w +endif +ifeq ($(BR2_TARGET_ROOTFS_RECOVERY_AML_WIPE_USERDATA_CONDITIONAL),y) + RECOVERY_AML_ARGS += -c +endif + +define ROOTFS_RECOVERY_AML_CMD + mkdir -p $(BINARIES_DIR)/aml_recovery/system && \ + tar -C $(BINARIES_DIR)/aml_recovery/system -xf $(BINARIES_DIR)/rootfs.tar && \ + mkdir -p $(BINARIES_DIR)/aml_recovery/META-INF/com/google/android/ && \ + PYTHONDONTWRITEBYTECODE=1 fs/recovery_aml/android_scriptgen $(RECOVERY_AML_ARGS) -i -p $(BINARIES_DIR)/aml_recovery/system -o \ + $(BINARIES_DIR)/aml_recovery/META-INF/com/google/android/updater-script && \ + cp -f fs/recovery_aml/update-binary $(BINARIES_DIR)/aml_recovery/META-INF/com/google/android/ && \ + cp -f fs/recovery_aml/logo.img $(BINARIES_DIR)/aml_recovery/ && \ + cp -f $(BINARIES_DIR)/uImage-* $(BINARIES_DIR)/aml_recovery/ && \ + find $(BINARIES_DIR)/aml_recovery/system/ -type l -delete && \ + find $(BINARIES_DIR)/aml_recovery/system/ -type d -empty -exec sh -c 'echo "dummy" > "{}"/.empty' \; && \ + pushd $(BINARIES_DIR)/aml_recovery/ >/dev/null && \ + zip -m -q -r -y $(BINARIES_DIR)/aml_recovery/update-unsigned.img logo.img uImage-2.6.34 META-INF system && \ + popd >/dev/null && \ + echo "Signing update.img..." && \ + pushd fs/recovery_aml/ >/dev/null; java -Xmx1024m -jar signapk.jar -w testkey.x509.pem testkey.pk8 $(BINARIES_DIR)/aml_recovery/update-unsigned.img $(BINARIES_DIR)/update.img && \ + rm -rf $(BINARIES_DIR)/aml_recovery; rm -f $(TARGET_DIR)/usr.sqsh +endef + +$(eval $(call ROOTFS_TARGET,recovery_aml)) From ed54f52ad59ab0e221d7842c1a7521e8530d42dc Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 16 Dec 2012 11:47:24 +0000 Subject: [PATCH 15/65] update to f16ref --- configs/amlogic_f16ref-xbmc_defconfig | 5 +++-- fs/recovery_aml/android_scriptgen | 6 +++--- fs/recovery_aml/recovery_aml.mk | 4 ++-- fs/recovery_aml/signapk.jar | Bin 4 files changed, 8 insertions(+), 7 deletions(-) mode change 100644 => 100755 fs/recovery_aml/android_scriptgen mode change 100644 => 100755 fs/recovery_aml/signapk.jar diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 684b821db8..860442c1f7 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a9=y -BR2_KERNEL_MIRROR="git@github.com:j1nx/Amlogic-reff16-kernel.git" +BR2_KERNEL_MIRROR="git@github.com:j1nx/buildroot-linux-kernel-m3.git" BR2_OPTIMIZE_3=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y @@ -45,7 +45,8 @@ BR2_ROOTFS_SKELETON_CUSTOM=y BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_RECOVERY_AML=y +BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="e9e2528a61af6c45993d3c014127d3a93b36fd30" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="c60351822a1af2979a4468f2cf7387238c2966d3" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" diff --git a/fs/recovery_aml/android_scriptgen b/fs/recovery_aml/android_scriptgen old mode 100644 new mode 100755 index 2b9618df17..3fd4460688 --- a/fs/recovery_aml/android_scriptgen +++ b/fs/recovery_aml/android_scriptgen @@ -228,9 +228,9 @@ def main(): f.write('ui_print("Copying Files");\n') f.write('package_extract_dir("system", "/system");\n') f.write("\n".join(script.script) + "\n") - f.write('assert(package_extract_file("logo.img", "/tmp/logo.img"),\n') - f.write(' write_raw_image("/tmp/logo.img", "logo"),\n') - f.write(' delete("/tmp/logo.img"));\n') + f.write('assert(package_extract_file("aml_logo.img", "/tmp/aml_logo.img"),\n') + f.write(' write_raw_image("/tmp/aml_logo.img", "aml_logo"),\n') + f.write(' delete("/tmp/aml_logo.img"));\n') f.write('show_progress(0.180000, 20);\n') f.write('assert(package_extract_file("uImage-2.6.34", "/tmp/boot.img"),\n') f.write(' write_raw_image("/tmp/boot.img", "boot"),\n') diff --git a/fs/recovery_aml/recovery_aml.mk b/fs/recovery_aml/recovery_aml.mk index bd710dbeed..9ec1505733 100644 --- a/fs/recovery_aml/recovery_aml.mk +++ b/fs/recovery_aml/recovery_aml.mk @@ -21,12 +21,12 @@ define ROOTFS_RECOVERY_AML_CMD PYTHONDONTWRITEBYTECODE=1 fs/recovery_aml/android_scriptgen $(RECOVERY_AML_ARGS) -i -p $(BINARIES_DIR)/aml_recovery/system -o \ $(BINARIES_DIR)/aml_recovery/META-INF/com/google/android/updater-script && \ cp -f fs/recovery_aml/update-binary $(BINARIES_DIR)/aml_recovery/META-INF/com/google/android/ && \ - cp -f fs/recovery_aml/logo.img $(BINARIES_DIR)/aml_recovery/ && \ + cp -f fs/recovery_aml/aml_logo.img $(BINARIES_DIR)/aml_recovery/ && \ cp -f $(BINARIES_DIR)/uImage-* $(BINARIES_DIR)/aml_recovery/ && \ find $(BINARIES_DIR)/aml_recovery/system/ -type l -delete && \ find $(BINARIES_DIR)/aml_recovery/system/ -type d -empty -exec sh -c 'echo "dummy" > "{}"/.empty' \; && \ pushd $(BINARIES_DIR)/aml_recovery/ >/dev/null && \ - zip -m -q -r -y $(BINARIES_DIR)/aml_recovery/update-unsigned.img logo.img uImage-2.6.34 META-INF system && \ + zip -m -q -r -y $(BINARIES_DIR)/aml_recovery/update-unsigned.img aml_logo.img uImage-2.6.34 META-INF system && \ popd >/dev/null && \ echo "Signing update.img..." && \ pushd fs/recovery_aml/ >/dev/null; java -Xmx1024m -jar signapk.jar -w testkey.x509.pem testkey.pk8 $(BINARIES_DIR)/aml_recovery/update-unsigned.img $(BINARIES_DIR)/update.img && \ diff --git a/fs/recovery_aml/signapk.jar b/fs/recovery_aml/signapk.jar old mode 100644 new mode 100755 From d71b308f24999d8d2f9b3908ee98f7c971dc62c9 Mon Sep 17 00:00:00 2001 From: J1nx Date: Thu, 20 Dec 2012 13:54:00 +0000 Subject: [PATCH 16/65] update readme with ARC requirements --- README.md | 24 ++++++++++++++++++++++++ package/amlogic/ubootaml/ubootaml.mk | 11 +++++------ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 90b07aa519..5cd14347fa 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,30 @@ In a fresh minimal Debian Unstable install, Note that as of current (2012-10-10) Debian Unstable, python defaults to python 2.7. Earlier pythons (or python3) will not work. +For the f16ref uboot sources to compile, you need the ARC toolchain as well. I will create a buildroot package for that later, (The initial commit is already there) but let's get whole system to work first before making it nice. + +The easiest thing for now is to compile it manually and add the binaries to your PATH variable. + +```shell +wget http://sourceforge.net/projects/arc-linux/files/ARC%20GNU%20Toolchain/ARC%20GNU%204.4/arc_gcc_rel4.4.tar.gz/download -O arc_gcc_rel4.4.tar.gz +tar xzvf arc_gcc_rel4.4.tar.gz +cd arc_gcc_rel4.4 + +export ARC_GNU=//arc_gcc_rel4.4 +export INSTALLDIR=/arc-4.4-elf32 (<- just gave it the same path) +export DISABLE_MULTILIB=--enable-multilib + +./build-elf32.sh --force +``` + +Now it will fail this way with the GDB part, but that is fine for now as all we need are the arc elf32 bins. + +Then make the bins available to your environment by extending the PATH variable; + +```shell +export PATH=$PATH:/arc-4.4-elf32/bin +``` + # Set up a key to sign the image ```shell diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index 4813579607..a8747281fc 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -1,15 +1,14 @@ -UBOOTAML_VERSION:=4d4fb67bda53e407d705d891134759deb8e1f41b -UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git +UBOOTAML_VERSION:=50dba3182b40ff71a68ddae1ba88a53cdab93935 +UBOOTAML_SITE=git@github.com:Pivosgroup/buildroot-uboot.git UBOOTAML_SITE_METHOD=git UBOOTAML_INSTALL_STAGING=YES UBOOTAML_DEPENDENCIES=ubootamltoolchain define UBOOTAML_BUILD_CMDS - rm -f $(@D)/tools/ucl/libucl_linux.lib - rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux + rm -f $(@D)/tools/ucl/libucl_linux.lib $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ - cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib - $(MAKE) -C $(@D) m3_mbox_config + cp -f $(@D)/tools/ucl/ucl_cygwin_prj/objs/libucl.a $(@D)/tools/ucl/libucl_linux.lib + $(MAKE) -C $(@D) stv_mbx_m3_512_config PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) endef From 2c0f97caf2ff7bbcb4c24b4858fe63935b7c38b5 Mon Sep 17 00:00:00 2001 From: J1nx Date: Thu, 20 Dec 2012 13:56:38 +0000 Subject: [PATCH 17/65] revert ubootaml makefile changes --- package/amlogic/ubootaml/ubootaml.mk | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index a8747281fc..4813579607 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -1,14 +1,15 @@ -UBOOTAML_VERSION:=50dba3182b40ff71a68ddae1ba88a53cdab93935 -UBOOTAML_SITE=git@github.com:Pivosgroup/buildroot-uboot.git +UBOOTAML_VERSION:=4d4fb67bda53e407d705d891134759deb8e1f41b +UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git UBOOTAML_SITE_METHOD=git UBOOTAML_INSTALL_STAGING=YES UBOOTAML_DEPENDENCIES=ubootamltoolchain define UBOOTAML_BUILD_CMDS - rm -f $(@D)/tools/ucl/libucl_linux.lib + rm -f $(@D)/tools/ucl/libucl_linux.lib + rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ - cp -f $(@D)/tools/ucl/ucl_cygwin_prj/objs/libucl.a $(@D)/tools/ucl/libucl_linux.lib - $(MAKE) -C $(@D) stv_mbx_m3_512_config + cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib + $(MAKE) -C $(@D) m3_mbox_config PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) endef From eda0f5957f0a926c795457deec10498efbccf274 Mon Sep 17 00:00:00 2001 From: J1nx Date: Thu, 20 Dec 2012 14:00:06 +0000 Subject: [PATCH 18/65] bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 860442c1f7..17ba37de8b 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -48,5 +48,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="c60351822a1af2979a4468f2cf7387238c2966d3" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="dd262cf295c735785221e07659ff0cd065970713" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 3dac8f8857be09201950424b895136d3865c4206 Mon Sep 17 00:00:00 2001 From: J1nx Date: Thu, 20 Dec 2012 14:02:00 +0000 Subject: [PATCH 19/65] bump xbmc version --- package/thirdparty/xbmc/xbmc.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/thirdparty/xbmc/xbmc.mk b/package/thirdparty/xbmc/xbmc.mk index 88e4c5b733..e129e78370 100644 --- a/package/thirdparty/xbmc/xbmc.mk +++ b/package/thirdparty/xbmc/xbmc.mk @@ -4,7 +4,7 @@ # ################################################################################# -XBMC_VERSION = 7329e9ea3b9dbca6ff995be6fd0299783aa8be09 +XBMC_VERSION = 8e11c9f76cd10adb5350575b3c1b8c58ff24472c XBMC_SITE_METHOD = git XBMC_SITE = ssh://git@github.com/Pivosgroup/xbmc.git XBMC_INSTALL_STAGING = YES From 59220252df87de589125d3f5b916055848ce039e Mon Sep 17 00:00:00 2001 From: J1nx Date: Fri, 21 Dec 2012 14:53:44 +0000 Subject: [PATCH 20/65] bump kernel version --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 17ba37de8b..cf0f29b17a 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -48,5 +48,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="dd262cf295c735785221e07659ff0cd065970713" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="40998fbd0a982177a7a178889f9dc00adde7cbaa" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From e21ed62408fef89353f2a11e2ed4dfdd7ff750db Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 22 Dec 2012 19:53:57 +0000 Subject: [PATCH 21/65] bump uboot --- package/amlogic/ubootaml/ubootaml.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index 4813579607..ecb0f8921f 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -1,4 +1,4 @@ -UBOOTAML_VERSION:=4d4fb67bda53e407d705d891134759deb8e1f41b +UBOOTAML_VERSION:=0648a177f3ae87445f02003d52eeff3687ac165c UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git UBOOTAML_SITE_METHOD=git UBOOTAML_INSTALL_STAGING=YES From 7d20cf7baf9b54073a05b8370eb765435f760b7f Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 23 Dec 2012 17:07:31 +0000 Subject: [PATCH 22/65] bump kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index cf0f29b17a..48fca2a3b2 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -48,5 +48,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="40998fbd0a982177a7a178889f9dc00adde7cbaa" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4184bd378ee69e550c2b3477f7cb1b14b8ab6ade" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 7c0b4a8d2dd55f2e1da6c058557f386e8bcccb02 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 23 Dec 2012 17:17:49 +0000 Subject: [PATCH 23/65] bump xbmc --- package/thirdparty/xbmc/xbmc.mk | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/package/thirdparty/xbmc/xbmc.mk b/package/thirdparty/xbmc/xbmc.mk index 13e3ce48c2..d8bb7d4e58 100644 --- a/package/thirdparty/xbmc/xbmc.mk +++ b/package/thirdparty/xbmc/xbmc.mk @@ -4,11 +4,7 @@ # ################################################################################# -<<<<<<< HEAD -XBMC_VERSION = 8e11c9f76cd10adb5350575b3c1b8c58ff24472c -======= -XBMC_VERSION = 0785c8eb671a8e468e717e76a6eb974237ec92c4 ->>>>>>> upstream/master +XBMC_VERSION = db36e3ef184d92780c25e29618c8ae1ae047c9fa XBMC_SITE_METHOD = git XBMC_SITE = ssh://git@github.com/Pivosgroup/xbmc.git XBMC_INSTALL_STAGING = YES From 9b6aaa0bf0141295a58c96f0dba90ea85fa1e7ba Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 23 Dec 2012 17:26:33 +0000 Subject: [PATCH 24/65] bump kernel (again) --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 48fca2a3b2..0cf17e7bb8 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -48,5 +48,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4184bd378ee69e550c2b3477f7cb1b14b8ab6ade" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="baf3f63639de6660a5ceac7ad4811f943f29e2ff" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 3701c75cdf1698d3668a47eed97cc4538af037a9 Mon Sep 17 00:00:00 2001 From: J1nx Date: Fri, 4 Jan 2013 18:36:46 +0000 Subject: [PATCH 25/65] bumb kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 0cf17e7bb8..b1bd5d279e 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -48,5 +48,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="baf3f63639de6660a5ceac7ad4811f943f29e2ff" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ffde4f70c94bfb7c7748c7edc298b1c29911d63b" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From f4ad70bc7cbafd56268654f794b176cf20b016e6 Mon Sep 17 00:00:00 2001 From: J1nx Date: Fri, 4 Jan 2013 18:37:58 +0000 Subject: [PATCH 26/65] [aml-pivos-sync] remove locale userdata that we don't use --- configs/amlogic_f16ref-xbmc_defconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index b1bd5d279e..c379ecc688 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -7,6 +7,8 @@ BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y BR2_PACKAGE_GDB=y BR2_PACKAGE_GDB_SERVER=y BR2_GDB_VERSION_7_1=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="" BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" # BR2_SOFT_FLOAT is not set BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" From 9ebe063c359ecfb287363e31bca4dd9085f69fce Mon Sep 17 00:00:00 2001 From: J1nx Date: Fri, 4 Jan 2013 19:38:37 +0000 Subject: [PATCH 27/65] bump kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index c379ecc688..53f2ef6b8b 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ffde4f70c94bfb7c7748c7edc298b1c29911d63b" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5d3f84687f090fe94aa6913078448e7cd7440321" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From 8829746bdc0017fed553c390a7af9f3e9cb46250 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 13:03:48 +0000 Subject: [PATCH 28/65] [f16ref] Move away the uboot to it's own f16ref version, restore the Pivos one for the other boxes (for now) --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- package/amlogic/Config.in | 1 + package/amlogic/ubootaml/ubootaml.mk | 11 +++++------ package/amlogic/ubootf16ref/Config.in | 8 ++++++++ package/amlogic/ubootf16ref/ubootaml.mk | 22 ++++++++++++++++++++++ 5 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 package/amlogic/ubootf16ref/Config.in create mode 100644 package/amlogic/ubootf16ref/ubootaml.mk diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 53f2ef6b8b..85144b901e 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -16,7 +16,7 @@ BR2_TARGET_GENERIC_GETTY=y BR2_BUSYBOX_VERSION_1_17_X=y BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_UBOOTF16REF=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y BR2_PACKAGE_DOSFSTOOLS=y diff --git a/package/amlogic/Config.in b/package/amlogic/Config.in index 48cdf4416e..57c67ae7fa 100644 --- a/package/amlogic/Config.in +++ b/package/amlogic/Config.in @@ -2,6 +2,7 @@ menu "AMLogic libraries and programs" source "package/amlogic/cmem/Config.in" source "package/amlogic/opengl/Config.in" source "package/amlogic/ubootaml/Config.in" +source "package/amlogic/ubootamlf16ref/Config.in" source "package/amlogic/libamplayerm1/Config.in" source "package/amlogic/libamplayerm3/Config.in" source "package/amlogic/amremote_config/Config.in" diff --git a/package/amlogic/ubootaml/ubootaml.mk b/package/amlogic/ubootaml/ubootaml.mk index ecb0f8921f..a8747281fc 100644 --- a/package/amlogic/ubootaml/ubootaml.mk +++ b/package/amlogic/ubootaml/ubootaml.mk @@ -1,15 +1,14 @@ -UBOOTAML_VERSION:=0648a177f3ae87445f02003d52eeff3687ac165c -UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git +UBOOTAML_VERSION:=50dba3182b40ff71a68ddae1ba88a53cdab93935 +UBOOTAML_SITE=git@github.com:Pivosgroup/buildroot-uboot.git UBOOTAML_SITE_METHOD=git UBOOTAML_INSTALL_STAGING=YES UBOOTAML_DEPENDENCIES=ubootamltoolchain define UBOOTAML_BUILD_CMDS - rm -f $(@D)/tools/ucl/libucl_linux.lib - rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux + rm -f $(@D)/tools/ucl/libucl_linux.lib $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ - cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib - $(MAKE) -C $(@D) m3_mbox_config + cp -f $(@D)/tools/ucl/ucl_cygwin_prj/objs/libucl.a $(@D)/tools/ucl/libucl_linux.lib + $(MAKE) -C $(@D) stv_mbx_m3_512_config PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) endef diff --git a/package/amlogic/ubootf16ref/Config.in b/package/amlogic/ubootf16ref/Config.in new file mode 100644 index 0000000000..9d1810753d --- /dev/null +++ b/package/amlogic/ubootf16ref/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_UBOOTF16REF + bool "ubootf16ref" + help + uBoot from AMLogic's latest repo + + http://openlinux.amlogic.com + + diff --git a/package/amlogic/ubootf16ref/ubootaml.mk b/package/amlogic/ubootf16ref/ubootaml.mk new file mode 100644 index 0000000000..ecb0f8921f --- /dev/null +++ b/package/amlogic/ubootf16ref/ubootaml.mk @@ -0,0 +1,22 @@ +UBOOTAML_VERSION:=0648a177f3ae87445f02003d52eeff3687ac165c +UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git +UBOOTAML_SITE_METHOD=git +UBOOTAML_INSTALL_STAGING=YES +UBOOTAML_DEPENDENCIES=ubootamltoolchain + +define UBOOTAML_BUILD_CMDS + rm -f $(@D)/tools/ucl/libucl_linux.lib + rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux + $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ + cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib + $(MAKE) -C $(@D) m3_mbox_config + PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) +endef + +define UBOOTAML_INSTALL_STAGING_CMDS + cp -f $(@D)/build/u-boot-aml-ucl.bin $(BINARIES_DIR)/spi_M3_512.bin + mkdir -p $(HOST_DIR)/usr/bin + install $(@D)/build/tools/mkimage $(HOST_DIR)/usr/bin/mkimage +endef + +$(eval $(call GENTARGETS,package/amlogic,ubootaml)) From 6a5912d53c296b920e0df244836f79f19f6e4967 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 13:21:35 +0000 Subject: [PATCH 29/65] [aml] Add support for more devices --- README.md | 29 ++++++++++++++ configs/amlogic_stvm3-xbmc_defconfig | 56 ++++++++++++++++++++++++++++ configs/amlogic_stvmc-xbmc_defconfig | 55 +++++++++++++++++++++++++++ 3 files changed, 140 insertions(+) create mode 100644 configs/amlogic_stvm3-xbmc_defconfig create mode 100644 configs/amlogic_stvmc-xbmc_defconfig diff --git a/README.md b/README.md index 5cd14347fa..f61a15cd82 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,37 @@ export PATH=$PATH:/arc-4.4-elf32/bin ``` # Build +First configure the source tree for the device you want to compile the image for. +The following devices are supported at this moment; + Pivos XIOS DS M1 == amlogic_xios-xbmc_defconfig + Pivos XIOS DS M3 == amlogic_xios_m3-xbmc_defconfig + Refee/OE Smart TV Box == amlogic_f16ref-xbmc_defconfig + GBox Midnight == amlogic_f16ref-xbmc_defconfig + Sumvision Nano M1 (non slim) == amlogic_stvmc-xbmc_defconfig (Actually the same s the xios M1) + Sumvision Nano M3 (slim) == amlogic_stvmc-xbmc_defconfig + Geniatech/MyGica Enjoy TV 510b == amlogic_stvmc-xbmc_defconfig ```shell % make amlogic_xios-xbmc_defconfig +``` +or +```shell +% make amlogic_xios_m3-xbmc_defconfig +``` +or +```shell +% make amlogic_f16ref-xbmc_defconfig +``` +or +```shell +% make amlogic_stvm3-xbmc_defconfig +``` +or +```shell +% make amlogic_stvmc-xbmc_defconfig +``` + +Then build the update file +```shell % make ``` diff --git a/configs/amlogic_stvm3-xbmc_defconfig b/configs/amlogic_stvm3-xbmc_defconfig new file mode 100644 index 0000000000..6361ce8109 --- /dev/null +++ b/configs/amlogic_stvm3-xbmc_defconfig @@ -0,0 +1,56 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_KERNEL_MIRROR="git@github.com:Pivosgroup/buildroot-linux-kernel.git" +BR2_OPTIMIZE_3=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_GDB_SERVER=y +BR2_GDB_VERSION_7_1=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="" +BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" +# BR2_SOFT_FLOAT is not set +BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" +BR2_BOARD_TYPE_AMLOGIC_M1=y +BR2_TARGET_GENERIC_GETTY=y +BR2_BUSYBOX_VERSION_1_17_X=y +BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_LIRC=y +BR2_PACKAGE_XBMC=y +BR2_PACKAGE_XIOS=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_NTFS_3G=y +BR2_PACKAGE_NTFSPROGS=y +# BR2_PACKAGE_UDEV_MTD_PROBE is not set +BR2_PACKAGE_USBMOUNT=y +BR2_PACKAGE_MYSQL_CLIENT_LIB_ONLY=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_NTP=y +BR2_PACKAGE_NTP_NTPDATE=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y +BR2_PACKAGE_NANO=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV=y +BR2_ROOTFS_SKELETON_CUSTOM=y +BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_RECOVERY_AML=y +BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="stvm3" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ad4457bd8c540721f3e0601f44159db30d25e02a" +BR2_LINUX_KERNEL_DEFCONFIG="meson_xios" diff --git a/configs/amlogic_stvmc-xbmc_defconfig b/configs/amlogic_stvmc-xbmc_defconfig new file mode 100644 index 0000000000..08b07efce8 --- /dev/null +++ b/configs/amlogic_stvmc-xbmc_defconfig @@ -0,0 +1,55 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_KERNEL_MIRROR="git@github.com:Pivosgroup/buildroot-linux-kernel-m3.git" +BR2_OPTIMIZE_3=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_GDB_SERVER=y +BR2_GDB_VERSION_7_1=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="" +BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" +# BR2_SOFT_FLOAT is not set +BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" +BR2_TARGET_GENERIC_GETTY=y +BR2_BUSYBOX_VERSION_1_17_X=y +BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_LIRC=y +BR2_PACKAGE_XBMC=y +BR2_PACKAGE_XIOS=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_NTFS_3G=y +BR2_PACKAGE_NTFSPROGS=y +# BR2_PACKAGE_UDEV_MTD_PROBE is not set +BR2_PACKAGE_USBMOUNT=y +BR2_PACKAGE_MYSQL_CLIENT_LIB_ONLY=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_NTP=y +BR2_PACKAGE_NTP_NTPDATE=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y +BR2_PACKAGE_NANO=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV=y +BR2_ROOTFS_SKELETON_CUSTOM=y +BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_RECOVERY_AML=y +BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="stvmc" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2b653283b2e828243a5e084822799156cbc44e79" +BR2_LINUX_KERNEL_DEFCONFIG="meson_xios_m3" From fbe4905d94bb334d5dbbbe45df2928f1e3059527 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 13:22:32 +0000 Subject: [PATCH 30/65] [aml] Small typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f61a15cd82..14fb348c77 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The following devices are supported at this moment; Pivos XIOS DS M3 == amlogic_xios_m3-xbmc_defconfig Refee/OE Smart TV Box == amlogic_f16ref-xbmc_defconfig GBox Midnight == amlogic_f16ref-xbmc_defconfig - Sumvision Nano M1 (non slim) == amlogic_stvmc-xbmc_defconfig (Actually the same s the xios M1) + Sumvision Nano M1 (non slim) == amlogic_stvmc-xbmc_defconfig (Actually the same as the xios M1) Sumvision Nano M3 (slim) == amlogic_stvmc-xbmc_defconfig Geniatech/MyGica Enjoy TV 510b == amlogic_stvmc-xbmc_defconfig From 912cb226f6d57a86dbe071e27e9b021271bf9c40 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 13:42:45 +0000 Subject: [PATCH 31/65] [aml] Added two dependencies to the readme file --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 14fb348c77..bdebb67361 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,8 @@ In a fresh minimal Debian Unstable install, % sudo apt-get install git build-essential zip gawk libtool gettext \ automake autoconf nasm unzip gettext flex bison libsdl-image1.2 \ liblzo2-2 lzma python openjdk-7-jre-headless \ - texinfo libxml-parser-perl wget pkg-config swig cpio zlib1g-dev + texinfo libxml-parser-perl wget pkg-config swig cpio zlib1g-dev \ + libgmp-dev libmpfr-dev ``` Note that as of current (2012-10-10) Debian Unstable, python defaults From a312766cc96155d9fed77ff7d8110aa2f072b090 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 13:45:50 +0000 Subject: [PATCH 32/65] [aml] Config files more readable --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index bdebb67361..8cbd1e400e 100644 --- a/README.md +++ b/README.md @@ -53,12 +53,19 @@ export PATH=$PATH:/arc-4.4-elf32/bin # Build First configure the source tree for the device you want to compile the image for. The following devices are supported at this moment; + Pivos XIOS DS M1 == amlogic_xios-xbmc_defconfig + Pivos XIOS DS M3 == amlogic_xios_m3-xbmc_defconfig + Refee/OE Smart TV Box == amlogic_f16ref-xbmc_defconfig + GBox Midnight == amlogic_f16ref-xbmc_defconfig + Sumvision Nano M1 (non slim) == amlogic_stvmc-xbmc_defconfig (Actually the same as the xios M1) + Sumvision Nano M3 (slim) == amlogic_stvmc-xbmc_defconfig + Geniatech/MyGica Enjoy TV 510b == amlogic_stvmc-xbmc_defconfig ```shell From bd172cceea13eeb3aa01df25e23120affdc48a6c Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 18:51:39 +0000 Subject: [PATCH 33/65] [aml-pivos-sync] changed, use https:// or git:// to download from github --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- configs/amlogic_stvm3-xbmc_defconfig | 2 +- configs/amlogic_stvmc-xbmc_defconfig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 85144b901e..9d9f486803 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a9=y -BR2_KERNEL_MIRROR="git@github.com:j1nx/buildroot-linux-kernel-m3.git" +BR2_KERNEL_MIRROR="git://github.com/j1nx/buildroot-linux-kernel-m3.git" BR2_OPTIMIZE_3=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y diff --git a/configs/amlogic_stvm3-xbmc_defconfig b/configs/amlogic_stvm3-xbmc_defconfig index 6361ce8109..d586275025 100644 --- a/configs/amlogic_stvm3-xbmc_defconfig +++ b/configs/amlogic_stvm3-xbmc_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a9=y -BR2_KERNEL_MIRROR="git@github.com:Pivosgroup/buildroot-linux-kernel.git" +BR2_KERNEL_MIRROR="git://github.com/Pivosgroup/buildroot-linux-kernel.git" BR2_OPTIMIZE_3=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y diff --git a/configs/amlogic_stvmc-xbmc_defconfig b/configs/amlogic_stvmc-xbmc_defconfig index 08b07efce8..0ef14fbf47 100644 --- a/configs/amlogic_stvmc-xbmc_defconfig +++ b/configs/amlogic_stvmc-xbmc_defconfig @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a9=y -BR2_KERNEL_MIRROR="git@github.com:Pivosgroup/buildroot-linux-kernel-m3.git" +BR2_KERNEL_MIRROR="git://github.com/Pivosgroup/buildroot-linux-kernel-m3.git" BR2_OPTIMIZE_3=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y From 4fef5d8b1152cc2a1724c3a53863a4496412f980 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 18:53:16 +0000 Subject: [PATCH 34/65] [aml] Remove XIOS skin from non XIOS defconfigs --- configs/amlogic_stvm3-xbmc_defconfig | 1 - configs/amlogic_stvmc-xbmc_defconfig | 1 - 2 files changed, 2 deletions(-) diff --git a/configs/amlogic_stvm3-xbmc_defconfig b/configs/amlogic_stvm3-xbmc_defconfig index d586275025..a7287e9808 100644 --- a/configs/amlogic_stvm3-xbmc_defconfig +++ b/configs/amlogic_stvm3-xbmc_defconfig @@ -20,7 +20,6 @@ BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_UBOOTAML=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y -BR2_PACKAGE_XIOS=y BR2_PACKAGE_DOSFSTOOLS=y BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y diff --git a/configs/amlogic_stvmc-xbmc_defconfig b/configs/amlogic_stvmc-xbmc_defconfig index 0ef14fbf47..d4b0638642 100644 --- a/configs/amlogic_stvmc-xbmc_defconfig +++ b/configs/amlogic_stvmc-xbmc_defconfig @@ -19,7 +19,6 @@ BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_UBOOTAML=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y -BR2_PACKAGE_XIOS=y BR2_PACKAGE_DOSFSTOOLS=y BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y From 9bf88635dbb04d07764a09b1ba9edf6068343a59 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 19:38:55 +0000 Subject: [PATCH 35/65] [aml] Fix ubootamlf16ref <-> ubootf16ref package error --- package/amlogic/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/amlogic/Config.in b/package/amlogic/Config.in index 57c67ae7fa..0f199827b1 100644 --- a/package/amlogic/Config.in +++ b/package/amlogic/Config.in @@ -2,7 +2,7 @@ menu "AMLogic libraries and programs" source "package/amlogic/cmem/Config.in" source "package/amlogic/opengl/Config.in" source "package/amlogic/ubootaml/Config.in" -source "package/amlogic/ubootamlf16ref/Config.in" +source "package/amlogic/ubootf16ref/Config.in" source "package/amlogic/libamplayerm1/Config.in" source "package/amlogic/libamplayerm3/Config.in" source "package/amlogic/amremote_config/Config.in" From 510d13e293b838022924bc858037087177b35f1a Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 21:58:42 +0000 Subject: [PATCH 36/65] [f16ref] Fix half moved uboot f16ref sources --- package/amlogic/ubootf16ref/ubootaml.mk | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 package/amlogic/ubootf16ref/ubootaml.mk diff --git a/package/amlogic/ubootf16ref/ubootaml.mk b/package/amlogic/ubootf16ref/ubootaml.mk deleted file mode 100644 index ecb0f8921f..0000000000 --- a/package/amlogic/ubootf16ref/ubootaml.mk +++ /dev/null @@ -1,22 +0,0 @@ -UBOOTAML_VERSION:=0648a177f3ae87445f02003d52eeff3687ac165c -UBOOTAML_SITE=git@github.com:j1nx/Amlogic-reff16-uboot.git -UBOOTAML_SITE_METHOD=git -UBOOTAML_INSTALL_STAGING=YES -UBOOTAML_DEPENDENCIES=ubootamltoolchain - -define UBOOTAML_BUILD_CMDS - rm -f $(@D)/tools/ucl/libucl_linux.lib - rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux - $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ - cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib - $(MAKE) -C $(@D) m3_mbox_config - PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) -endef - -define UBOOTAML_INSTALL_STAGING_CMDS - cp -f $(@D)/build/u-boot-aml-ucl.bin $(BINARIES_DIR)/spi_M3_512.bin - mkdir -p $(HOST_DIR)/usr/bin - install $(@D)/build/tools/mkimage $(HOST_DIR)/usr/bin/mkimage -endef - -$(eval $(call GENTARGETS,package/amlogic,ubootaml)) From 102fe46a1944a8f90ee623a581923e3bc7c2076b Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 5 Jan 2013 22:05:04 +0000 Subject: [PATCH 37/65] [f16ref] Really should not do this crap with alcohol present ;) --- package/amlogic/ubootf16ref/ubootf16ref.mk | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 package/amlogic/ubootf16ref/ubootf16ref.mk diff --git a/package/amlogic/ubootf16ref/ubootf16ref.mk b/package/amlogic/ubootf16ref/ubootf16ref.mk new file mode 100644 index 0000000000..e7364501cf --- /dev/null +++ b/package/amlogic/ubootf16ref/ubootf16ref.mk @@ -0,0 +1,22 @@ +UBOOTF16REF_VERSION:=0648a177f3ae87445f02003d52eeff3687ac165c +UBOOTF16REF_SITE=git://github.com/j1nx/Amlogic-reff16-uboot.git +UBOOTF16REF_SITE_METHOD=git +UBOOTF16REF_INSTALL_STAGING=YES +UBOOTF16REF_DEPENDENCIES=ubootamltoolchain + +define UBOOTF16REF_BUILD_CMDS + rm -f $(@D)/tools/ucl/libucl_linux.lib + rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux + $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ + cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib + $(MAKE) -C $(@D) m3_mbox_config + PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) +endef + +define UBOOTF16REF_INSTALL_STAGING_CMDS + cp -f $(@D)/build/u-boot-aml-ucl.bin $(BINARIES_DIR)/u-boot-aml-ucl.bin + mkdir -p $(HOST_DIR)/usr/bin + install $(@D)/build/tools/mkimage $(HOST_DIR)/usr/bin/mkimage +endef + +$(eval $(call GENTARGETS,package/amlogic,ubootf16ref)) From 16bb4ac5fdb72b822b9640c3d6364c11bd74bfb5 Mon Sep 17 00:00:00 2001 From: J1nx Date: Mon, 7 Jan 2013 10:31:16 +0000 Subject: [PATCH 38/65] [aml] More changes to support multiple boardnames --- fs/recovery_aml/android_scriptgen | 9 ++++++--- linux/linux.mk | 4 ++++ package/amlogic/ubootf16ref/ubootf16ref.mk | 6 +----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/fs/recovery_aml/android_scriptgen b/fs/recovery_aml/android_scriptgen index de563c23fe..4423bc4d75 100755 --- a/fs/recovery_aml/android_scriptgen +++ b/fs/recovery_aml/android_scriptgen @@ -229,15 +229,18 @@ def main(): f.write('package_extract_dir("system", "/system");\n') f.write("\n".join(script.script) + "\n") f.write('assert(package_extract_file("aml_logo.img", "/tmp/aml_logo.img"),\n') - f.write(' write_raw_image("/tmp/aml_logo.img", "aml_logo"),\n') - f.write(' delete("/tmp/aml_logo.img"));\n') + if options.boardname == "f16ref": + f.write(' write_raw_image("/tmp/aml_logo.img", "aml_logo"),\n') + else: + f.write(' write_raw_image("/tmp/aml_logo.img", "logo"),\n') + f.write(' delete("/tmp/aml_logo.img"));\n') f.write('show_progress(0.180000, 20);\n') f.write('assert(package_extract_file("uImage-2.6.34", "/tmp/boot.img"),\n') f.write(' write_raw_image("/tmp/boot.img", "boot"),\n') f.write(' delete("/tmp/boot.img"));\n') f.write('show_progress(0.020000, 0);\n') f.write('unmount("/system");\n') - if options.boardname == "xiosm3": + if options.boardname == "xiosm3" or options.boardname == "stvmc" or options.boardname == "f16ref": f.write('ifelse\n') f.write('(\n') f.write(' mount("vfat","none","/dev/block/avnftl4p1","/data"),\n') diff --git a/linux/linux.mk b/linux/linux.mk index 505a0ea8db..4c61148e08 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -37,7 +37,11 @@ LINUX26_IMAGE_NAME=vmImage else LINUX26_IMAGE_NAME=uImage endif +ifeq ($(BR2_PACKAGE_UBOOTF16REF),y) +LINUX26_DEPENDENCIES+=ubootf16ref +else LINUX26_DEPENDENCIES+=ubootaml +endif else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y) LINUX26_IMAGE_NAME=bzImage else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y) diff --git a/package/amlogic/ubootf16ref/ubootf16ref.mk b/package/amlogic/ubootf16ref/ubootf16ref.mk index e7364501cf..590a994b22 100644 --- a/package/amlogic/ubootf16ref/ubootf16ref.mk +++ b/package/amlogic/ubootf16ref/ubootf16ref.mk @@ -1,14 +1,10 @@ -UBOOTF16REF_VERSION:=0648a177f3ae87445f02003d52eeff3687ac165c +UBOOTF16REF_VERSION:=03f6b6659603eec35d62cd8e46d3036faff65641 UBOOTF16REF_SITE=git://github.com/j1nx/Amlogic-reff16-uboot.git UBOOTF16REF_SITE_METHOD=git UBOOTF16REF_INSTALL_STAGING=YES UBOOTF16REF_DEPENDENCIES=ubootamltoolchain define UBOOTF16REF_BUILD_CMDS - rm -f $(@D)/tools/ucl/libucl_linux.lib - rm -rf $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux - $(MAKE) -C $(@D)/tools/ucl/ucl_cygwin_prj/ - cp -f $(@D)/tools/ucl/ucl_cygwin_prj/ucl_linux/libucl_linux.a $(@D)/tools/ucl/libucl_linux.lib $(MAKE) -C $(@D) m3_mbox_config PATH="$(TOOLCHAIN_EXTERNAL_DIR)/bin:$(TARGET_PATH)" $(MAKE) -C $(@D) endef From c88fd213e6259288b6075997507134a3a42b9ca6 Mon Sep 17 00:00:00 2001 From: J1nx Date: Mon, 7 Jan 2013 22:42:15 +0000 Subject: [PATCH 39/65] [f16ref] Switch f16ref back to pivos ubootaml --- configs/amlogic_f16ref-xbmc_defconfig | 4 ++-- configs/amlogic_stvmc-xbmc_defconfig | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 9d9f486803..7214888417 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -16,7 +16,7 @@ BR2_TARGET_GENERIC_GETTY=y BR2_BUSYBOX_VERSION_1_17_X=y BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_UBOOTF16REF=y +BR2_PACKAGE_UBOOTAML=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y BR2_PACKAGE_DOSFSTOOLS=y @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5d3f84687f090fe94aa6913078448e7cd7440321" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="f6b7af000615a7c44e7bb7145ae201366696ce63" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" diff --git a/configs/amlogic_stvmc-xbmc_defconfig b/configs/amlogic_stvmc-xbmc_defconfig index d4b0638642..525da2d092 100644 --- a/configs/amlogic_stvmc-xbmc_defconfig +++ b/configs/amlogic_stvmc-xbmc_defconfig @@ -16,7 +16,7 @@ BR2_TARGET_GENERIC_GETTY=y BR2_BUSYBOX_VERSION_1_17_X=y BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_UBOOTF16REF=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y BR2_PACKAGE_DOSFSTOOLS=y From 81e0816212c3b56033b1a79a2a36c34e9ed48222 Mon Sep 17 00:00:00 2001 From: J1nx Date: Mon, 7 Jan 2013 22:44:34 +0000 Subject: [PATCH 40/65] [stvmc] Switch stvmc back, back to pivos ubootaml --- configs/amlogic_stvmc-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_stvmc-xbmc_defconfig b/configs/amlogic_stvmc-xbmc_defconfig index 525da2d092..d4b0638642 100644 --- a/configs/amlogic_stvmc-xbmc_defconfig +++ b/configs/amlogic_stvmc-xbmc_defconfig @@ -16,7 +16,7 @@ BR2_TARGET_GENERIC_GETTY=y BR2_BUSYBOX_VERSION_1_17_X=y BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y -BR2_PACKAGE_UBOOTF16REF=y +BR2_PACKAGE_UBOOTAML=y BR2_PACKAGE_LIRC=y BR2_PACKAGE_XBMC=y BR2_PACKAGE_DOSFSTOOLS=y From 6a457a6f458e609c2a6316458651473ae9193ca4 Mon Sep 17 00:00:00 2001 From: J1nx Date: Mon, 7 Jan 2013 22:49:45 +0000 Subject: [PATCH 41/65] [f16ref] Bump kernel --- configs/amlogic_stvm3-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_stvm3-xbmc_defconfig b/configs/amlogic_stvm3-xbmc_defconfig index a7287e9808..5cac79ece8 100644 --- a/configs/amlogic_stvm3-xbmc_defconfig +++ b/configs/amlogic_stvm3-xbmc_defconfig @@ -51,5 +51,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="stvm3" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ad4457bd8c540721f3e0601f44159db30d25e02a" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="d4457bd8c540721f3e0601f44159db30d25e02a" BR2_LINUX_KERNEL_DEFCONFIG="meson_xios" From b41e6b9eab21ebac56fa29196cca2d12f9b0a457 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 12 Jan 2013 12:20:12 +0000 Subject: [PATCH 42/65] [aml] Bump kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 7214888417..02621803cd 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="f6b7af000615a7c44e7bb7145ae201366696ce63" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5b86dff5b9178ad9763cd954b69c6edd6ed09f80" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" From b1455ee23bdbefbb936e57d8fc2a2b77ee1b1d41 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 12 Jan 2013 20:30:14 +0000 Subject: [PATCH 43/65] [f16ref] Switch to clean GBox config --- configs/amlogic_f16ref-xbmc_defconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 02621803cd..78b748ed09 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5b86dff5b9178ad9763cd954b69c6edd6ed09f80" -BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="149ee7f8365bb7888b4868eb426573a9f8260e91" +BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 5cf0cedacb3860a78532d4ca6306d8b11bf85ea7 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 13 Jan 2013 13:21:10 +0000 Subject: [PATCH 44/65] [f16ref] bump kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 78b748ed09..5f0ff6ba7c 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="149ee7f8365bb7888b4868eb426573a9f8260e91" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="bcfedce1c30de2d355ae7eaa67ac6c4c02a55d16" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 1454bb1826d33eb1b14154ec7bea88aa6e7edcf1 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 13 Jan 2013 18:50:51 +0000 Subject: [PATCH 45/65] [f16ref] Bump kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 5f0ff6ba7c..74f0ad9e7c 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="bcfedce1c30de2d355ae7eaa67ac6c4c02a55d16" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="091c6400a5fe0e2c69f99fa73d87ee44bc4ac97a" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 391501abed526799fbde9edc654cf0cacdb178c0 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 13 Jan 2013 19:47:24 +0000 Subject: [PATCH 46/65] [f16ref] Bump kernel, you will see a lot of bumps from now --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 74f0ad9e7c..331f0c6a02 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="091c6400a5fe0e2c69f99fa73d87ee44bc4ac97a" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="657bae2b8a85da7e728b4cb350adb79bc6edb388" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 57d9a148bb70e5eb2a8edda353d5b124cff08453 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 13 Jan 2013 20:18:29 +0000 Subject: [PATCH 47/65] [f16ref] bumb kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 331f0c6a02..47665840be 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="657bae2b8a85da7e728b4cb350adb79bc6edb388" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="d20ad078d905a8312c6fbd77b973f2c6afe0a7f9" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 312cdb74edef4145f6892cc2a0d7bd02d6626eb9 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 13 Jan 2013 21:32:32 +0000 Subject: [PATCH 48/65] [f16ref] bumb kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 47665840be..025e5e85dc 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="d20ad078d905a8312c6fbd77b973f2c6afe0a7f9" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="25cfc9f94f8dc8670f8ebd3ebff102ba4493c895" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From c7af7b37e72790110ec206f8c0b705b3a1d4ad71 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sun, 13 Jan 2013 21:48:44 +0000 Subject: [PATCH 49/65] [f16ref] bumb kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 025e5e85dc..95aeb95cee 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="25cfc9f94f8dc8670f8ebd3ebff102ba4493c895" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="a5cff40e5f2ed3ed489d0a7fc29e688230d0e541" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 78c5643db8edcd45d9f4f558583b6b871e3c122b Mon Sep 17 00:00:00 2001 From: J1nx Date: Mon, 14 Jan 2013 20:01:40 +0000 Subject: [PATCH 50/65] [f6ref] Bump kernel --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 95aeb95cee..77bfca0ff4 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="a5cff40e5f2ed3ed489d0a7fc29e688230d0e541" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4ebdb7526ad481bea8fb2454809b5e14d916c06c" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 174c8a7819f0b17b35a67ff665bb5adf16f9a926 Mon Sep 17 00:00:00 2001 From: J1nx Date: Mon, 14 Jan 2013 20:10:57 +0000 Subject: [PATCH 51/65] [f16ref] Bump kernel again --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 77bfca0ff4..57a7d5a7df 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4ebdb7526ad481bea8fb2454809b5e14d916c06c" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="8f9adf2c0b6f6a5b0875c4baa5a6260c8723c8f6" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 7feabde286f0dbb1ab67036dc4139fd32b27ca15 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 10:02:41 +0000 Subject: [PATCH 52/65] [f16ref] Bump kernel one last time --- configs/amlogic_f16ref-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 57a7d5a7df..23077788cd 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="8f9adf2c0b6f6a5b0875c4baa5a6260c8723c8f6" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5f436be7fca90ca996070163c1beb817266e2535" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 255f94f7504446ddba98234c35b72701815ffc67 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 10:11:08 +0000 Subject: [PATCH 53/65] [f16ref] Switch to own board configuration --- board/amlogic/f16ref/busybox.config | 970 +++++++++++++++++ board/amlogic/f16ref/skeleton/dev/.empty | 0 board/amlogic/f16ref/skeleton/etc/TZ | 1 + .../f16ref/skeleton/etc/default/hwclock | 4 + board/amlogic/f16ref/skeleton/etc/fstab | 16 + board/amlogic/f16ref/skeleton/etc/group | 26 + board/amlogic/f16ref/skeleton/etc/hostname | 1 + board/amlogic/f16ref/skeleton/etc/hosts | 1 + .../f16ref/skeleton/etc/init.d/S10setup | 73 ++ .../f16ref/skeleton/etc/init.d/S20urandom | 54 + .../f16ref/skeleton/etc/init.d/S21hwclock | 83 ++ .../f16ref/skeleton/etc/init.d/S40network | 38 + .../f16ref/skeleton/etc/init.d/S50mali | 26 + board/amlogic/f16ref/skeleton/etc/init.d/rcS | 28 + board/amlogic/f16ref/skeleton/etc/inittab | 57 + board/amlogic/f16ref/skeleton/etc/inputrc | 44 + .../amlogic/f16ref/skeleton/etc/irmap-amlogic | 45 + board/amlogic/f16ref/skeleton/etc/irmap.conf | 35 + board/amlogic/f16ref/skeleton/etc/issue | 3 + .../etc/network/if-down.d/wpasupplicant | 1 + .../etc/network/if-post-down.d/wpasupplicant | 1 + .../etc/network/if-pre-up.d/wpasupplicant | 1 + .../etc/network/if-up.d/wpasupplicant | 1 + .../f16ref/skeleton/etc/network/interfaces | 6 + board/amlogic/f16ref/skeleton/etc/passwd | 14 + board/amlogic/f16ref/skeleton/etc/passwd- | 14 + board/amlogic/f16ref/skeleton/etc/profile | 49 + board/amlogic/f16ref/skeleton/etc/protocols | 31 + board/amlogic/f16ref/skeleton/etc/random-seed | Bin 0 -> 512 bytes board/amlogic/f16ref/skeleton/etc/remote.conf | 59 ++ board/amlogic/f16ref/skeleton/etc/securetty | 35 + board/amlogic/f16ref/skeleton/etc/services | 302 ++++++ board/amlogic/f16ref/skeleton/etc/shadow | 12 + board/amlogic/f16ref/skeleton/etc/shadow- | 12 + board/amlogic/f16ref/skeleton/etc/shawd | 0 .../skeleton/etc/wpa_supplicant/action_wpa.sh | 50 + .../skeleton/etc/wpa_supplicant/functions.sh | 979 ++++++++++++++++++ .../skeleton/etc/wpa_supplicant/ifupdown.sh | 175 ++++ board/amlogic/f16ref/skeleton/lib/.empty | 0 board/amlogic/f16ref/skeleton/proc/.empty | 0 board/amlogic/f16ref/skeleton/recovery/.empty | 0 board/amlogic/f16ref/skeleton/root/.empty | 0 board/amlogic/f16ref/skeleton/sbin/wpa_action | 35 + board/amlogic/f16ref/skeleton/sys/.empty | 0 board/amlogic/f16ref/skeleton/tmp/.empty | 0 board/amlogic/f16ref/skeleton/usr/sbin/.empty | 0 .../skeleton/usr/sbin/MID_andorid/REAMDME.txt | 6 + .../usr/sbin/MID_andorid/flash_eraseall | Bin 0 -> 9808 bytes .../usr/sbin/MID_andorid/flash_eraseall_64bit | Bin 0 -> 30416 bytes .../usr/sbin/MID_andorid/nandwrite_lp | Bin 0 -> 10580 bytes .../arm_linux_64bitflasheraseall/REAMDME.txt | 8 + .../arm_linux_64bitflasheraseall/flash_erase | Bin 0 -> 5136 bytes .../flash_erase_64bit | Bin 0 -> 73622 bytes .../flash_eraseall | Bin 0 -> 10832 bytes .../flash_eraseall_64bit | 4 + .../arm_linux_64bitflasheraseall/nandwrite_lp | Bin 0 -> 19327 bytes .../skeleton/usr/share/udhcpc/default.script | 39 + .../amlogic/f16ref/skeleton/var/cache/.empty | 0 .../f16ref/skeleton/var/lib/pcmcia/.empty | 0 board/amlogic/f16ref/skeleton/var/lock/.empty | 0 board/amlogic/f16ref/skeleton/var/log/.empty | 0 .../amlogic/f16ref/skeleton/var/pcmcia/.empty | 0 board/amlogic/f16ref/skeleton/var/run/.empty | 0 .../amlogic/f16ref/skeleton/var/spool/.empty | 0 board/amlogic/f16ref/skeleton/var/tmp/.empty | 0 configs/amlogic_f16ref-xbmc_defconfig | 4 +- 66 files changed, 3341 insertions(+), 2 deletions(-) create mode 100644 board/amlogic/f16ref/busybox.config create mode 100755 board/amlogic/f16ref/skeleton/dev/.empty create mode 100755 board/amlogic/f16ref/skeleton/etc/TZ create mode 100644 board/amlogic/f16ref/skeleton/etc/default/hwclock create mode 100644 board/amlogic/f16ref/skeleton/etc/fstab create mode 100755 board/amlogic/f16ref/skeleton/etc/group create mode 100755 board/amlogic/f16ref/skeleton/etc/hostname create mode 100755 board/amlogic/f16ref/skeleton/etc/hosts create mode 100755 board/amlogic/f16ref/skeleton/etc/init.d/S10setup create mode 100755 board/amlogic/f16ref/skeleton/etc/init.d/S20urandom create mode 100755 board/amlogic/f16ref/skeleton/etc/init.d/S21hwclock create mode 100755 board/amlogic/f16ref/skeleton/etc/init.d/S40network create mode 100755 board/amlogic/f16ref/skeleton/etc/init.d/S50mali create mode 100755 board/amlogic/f16ref/skeleton/etc/init.d/rcS create mode 100644 board/amlogic/f16ref/skeleton/etc/inittab create mode 100755 board/amlogic/f16ref/skeleton/etc/inputrc create mode 100644 board/amlogic/f16ref/skeleton/etc/irmap-amlogic create mode 100644 board/amlogic/f16ref/skeleton/etc/irmap.conf create mode 100755 board/amlogic/f16ref/skeleton/etc/issue create mode 120000 board/amlogic/f16ref/skeleton/etc/network/if-down.d/wpasupplicant create mode 120000 board/amlogic/f16ref/skeleton/etc/network/if-post-down.d/wpasupplicant create mode 120000 board/amlogic/f16ref/skeleton/etc/network/if-pre-up.d/wpasupplicant create mode 120000 board/amlogic/f16ref/skeleton/etc/network/if-up.d/wpasupplicant create mode 100755 board/amlogic/f16ref/skeleton/etc/network/interfaces create mode 100644 board/amlogic/f16ref/skeleton/etc/passwd create mode 100644 board/amlogic/f16ref/skeleton/etc/passwd- create mode 100755 board/amlogic/f16ref/skeleton/etc/profile create mode 100755 board/amlogic/f16ref/skeleton/etc/protocols create mode 100755 board/amlogic/f16ref/skeleton/etc/random-seed create mode 100755 board/amlogic/f16ref/skeleton/etc/remote.conf create mode 100755 board/amlogic/f16ref/skeleton/etc/securetty create mode 100755 board/amlogic/f16ref/skeleton/etc/services create mode 100644 board/amlogic/f16ref/skeleton/etc/shadow create mode 100644 board/amlogic/f16ref/skeleton/etc/shadow- create mode 100755 board/amlogic/f16ref/skeleton/etc/shawd create mode 100755 board/amlogic/f16ref/skeleton/etc/wpa_supplicant/action_wpa.sh create mode 100755 board/amlogic/f16ref/skeleton/etc/wpa_supplicant/functions.sh create mode 100755 board/amlogic/f16ref/skeleton/etc/wpa_supplicant/ifupdown.sh create mode 100644 board/amlogic/f16ref/skeleton/lib/.empty create mode 100755 board/amlogic/f16ref/skeleton/proc/.empty create mode 100644 board/amlogic/f16ref/skeleton/recovery/.empty create mode 100755 board/amlogic/f16ref/skeleton/root/.empty create mode 100755 board/amlogic/f16ref/skeleton/sbin/wpa_action create mode 100755 board/amlogic/f16ref/skeleton/sys/.empty create mode 100755 board/amlogic/f16ref/skeleton/tmp/.empty create mode 100755 board/amlogic/f16ref/skeleton/usr/sbin/.empty create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/REAMDME.txt create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/flash_eraseall create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/flash_eraseall_64bit create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/nandwrite_lp create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/REAMDME.txt create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_erase create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_erase_64bit create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_eraseall create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_eraseall_64bit create mode 100644 board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/nandwrite_lp create mode 100755 board/amlogic/f16ref/skeleton/usr/share/udhcpc/default.script create mode 100755 board/amlogic/f16ref/skeleton/var/cache/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/lib/pcmcia/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/lock/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/log/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/pcmcia/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/run/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/spool/.empty create mode 100755 board/amlogic/f16ref/skeleton/var/tmp/.empty diff --git a/board/amlogic/f16ref/busybox.config b/board/amlogic/f16ref/busybox.config new file mode 100644 index 0000000000..237338a317 --- /dev/null +++ b/board/amlogic/f16ref/busybox.config @@ -0,0 +1,970 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.17.4 +# Sun Jan 6 22:17:08 2013 +# +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_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=y +CONFIG_LOCALE_SUPPORT=y +CONFIG_UNICODE_SUPPORT=y +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=63 +CONFIG_LAST_SUPPORTED_WCHAR=767 +# 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=y +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="" +CONFIG_EXTRA_CFLAGS="" + +# +# 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 +# +# CONFIG_INSTALL_NO_USR is not set +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_PASSWORD_MINLEN=6 +CONFIG_MD5_SIZE_VS_SPEED=2 +CONFIG_FEATURE_FAST_TOP=y +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +# CONFIG_FEATURE_EDITING_VI is not set +CONFIG_FEATURE_EDITING_HISTORY=15 +CONFIG_FEATURE_EDITING_SAVEHISTORY=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_MONOTONIC_SYSCALL is not set +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=y +CONFIG_FEATURE_AR_CREATE=y +CONFIG_BUNZIP2=y +CONFIG_BZIP2=y +CONFIG_CPIO=y +CONFIG_FEATURE_CPIO_O=y +CONFIG_FEATURE_CPIO_P=y +# 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_LZOP=y +# CONFIG_LZOP_COMPR_HIGH is not set +CONFIG_RPM2CPIO=y +CONFIG_RPM=y +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=y +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=y +CONFIG_UNLZMA=y +CONFIG_FEATURE_LZMA_FAST=y +CONFIG_LZMA=y +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_TEST=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_CAL=y +CONFIG_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y +CONFIG_CHROOT=y +CONFIG_CKSUM=y +CONFIG_COMM=y +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=y +CONFIG_DF=y +CONFIG_FEATURE_DF_FANCY=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +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=y +CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FALSE=y +CONFIG_FOLD=y +CONFIG_FSYNC=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LENGTH=y +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=y +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=y +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=y +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=y +CONFIG_FEATURE_SPLIT_FANCY=y +CONFIG_STAT=y +CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_STTY=y +CONFIG_SUM=y +CONFIG_SYNC=y +CONFIG_TAC=y +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TOUCH=y +CONFIG_TRUE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNEXPAND=y +CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y +CONFIG_UNIQ=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_UUENCODE=y +CONFIG_WC=y +CONFIG_FEATURE_WC_LARGE=y +CONFIG_WHO=y +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# 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 +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_FGCONSOLE=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +CONFIG_KBD_MODE=y +CONFIG_LOADFONT=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y +CONFIG_SETFONT=y +CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y +CONFIG_DEFAULT_SETFONT_DIR="" +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +CONFIG_SHOWKEY=y + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y + +# +# 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=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_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=y +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +# CONFIG_FEATURE_VI_8BIT is not set +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +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_VI_OPTIMIZE_CURSOR=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=y +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y + +# +# Init Utilities +# +CONFIG_BOOTCHARTD=y +CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER=y +CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE=y +CONFIG_INIT=y +CONFIG_FEATURE_USE_INITTAB=y +# CONFIG_FEATURE_KILL_REMOVED is not set +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_EXTRA_QUIET=y +CONFIG_FEATURE_INIT_COREDUMPS=y +CONFIG_FEATURE_INITRD=y +CONFIG_HALT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_MESG=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +CONFIG_USE_BB_PWD_GRP=y +CONFIG_USE_BB_SHADOW=y +CONFIG_USE_BB_CRYPT=y +CONFIG_USE_BB_CRYPT_SHA=y +CONFIG_ADDGROUP=y +CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y +CONFIG_FEATURE_ADDUSER_TO_GROUP=y +CONFIG_DELGROUP=y +CONFIG_FEATURE_DEL_USER_FROM_GROUP=y +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_ADDUSER=y +CONFIG_FEATURE_ADDUSER_LONG_OPTIONS=y +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +CONFIG_DELUSER=y +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_PAM is not set +CONFIG_LOGIN_SCRIPTS=y +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_CRYPTPW=y +CONFIG_CHPASSWD=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +CONFIG_MODINFO=y +# 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=y +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_REV=y +CONFIG_ACPID=y +CONFIG_FEATURE_ACPID_COMPAT=y +# CONFIG_BLKID 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=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +CONFIG_FDISK_SUPPORT_LARGE_DISKS=y +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_FDISK_ADVANCED=y +CONFIG_FINDFS=y +CONFIG_FLOCK=y +CONFIG_FREERAMDISK=y +CONFIG_FSCK_MINIX=y +CONFIG_MKFS_EXT2=y +CONFIG_MKFS_MINIX=y +CONFIG_FEATURE_MINIX2=y +# CONFIG_MKFS_REISER is not set +CONFIG_MKFS_VFAT=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +CONFIG_FEATURE_HEXDUMP_REVERSE=y +CONFIG_HD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +# 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_MKSWAP=y +CONFIG_FEATURE_MKSWAP_UUID=y +CONFIG_MORE=y +CONFIG_FEATURE_USE_TERMIOS=y +CONFIG_MOUNT=y +CONFIG_FEATURE_MOUNT_FAKE=y +CONFIG_FEATURE_MOUNT_VERBOSE=y +CONFIG_FEATURE_MOUNT_HELPERS=y +CONFIG_FEATURE_MOUNT_LABEL=y +CONFIG_FEATURE_MOUNT_NFS=y +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +CONFIG_RDEV=y +CONFIG_READPROFILE=y +CONFIG_RTCWAKE=y +CONFIG_SCRIPT=y +CONFIG_SCRIPTREPLAY=y +CONFIG_SETARCH=y +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=y + +# +# Filesystem/Volume identification +# +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_BTRFS=y +CONFIG_FEATURE_VOLUMEID_REISERFS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +CONFIG_FEATURE_VOLUMEID_HFS=y +CONFIG_FEATURE_VOLUMEID_JFS=y +CONFIG_FEATURE_VOLUMEID_XFS=y +CONFIG_FEATURE_VOLUMEID_NTFS=y +CONFIG_FEATURE_VOLUMEID_ISO9660=y +CONFIG_FEATURE_VOLUMEID_UDF=y +CONFIG_FEATURE_VOLUMEID_LUKS=y +CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y +CONFIG_FEATURE_VOLUMEID_CRAMFS=y +CONFIG_FEATURE_VOLUMEID_ROMFS=y +CONFIG_FEATURE_VOLUMEID_SYSV=y +CONFIG_FEATURE_VOLUMEID_OCFS2=y +CONFIG_FEATURE_VOLUMEID_LINUXRAID=y + +# +# Miscellaneous Utilities +# +# CONFIG_CONSPY is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +CONFIG_ADJTIMEX=y +# CONFIG_BBCONFIG is not set +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=4000 +CONFIG_FEATURE_BEEP_LENGTH_MS=30 +CONFIG_CHAT=y +CONFIG_FEATURE_CHAT_NOFAIL=y +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +CONFIG_FEATURE_CHAT_IMPLICIT_CR=y +CONFIG_FEATURE_CHAT_SWALLOW_OPTS=y +CONFIG_FEATURE_CHAT_SEND_ESCAPES=y +CONFIG_FEATURE_CHAT_VAR_ABORT_LEN=y +CONFIG_FEATURE_CHAT_CLR_ABORT=y +CONFIG_CHRT=y +CONFIG_CROND=y +CONFIG_FEATURE_CROND_D=y +CONFIG_FEATURE_CROND_CALL_SENDMAIL=y +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=y +CONFIG_DC=y +CONFIG_FEATURE_DC_LIBM=y +# 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=y +CONFIG_FEATURE_EJECT_SCSI=y +CONFIG_FBSPLASH=y +CONFIG_FLASHCP=y +CONFIG_FLASH_LOCK=y +CONFIG_FLASH_UNLOCK=y +CONFIG_FLASH_ERASEALL=y +CONFIG_IONICE=y +CONFIG_INOTIFYD=y +CONFIG_LAST=y +# CONFIG_FEATURE_LAST_SMALL is not set +CONFIG_FEATURE_LAST_FANCY=y +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_MARKS=y +CONFIG_FEATURE_LESS_REGEXP=y +CONFIG_FEATURE_LESS_WINCH=y +CONFIG_FEATURE_LESS_DASHCMD=y +CONFIG_FEATURE_LESS_LINENUMS=y +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y +CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y +# CONFIG_MAKEDEVS is not set +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_FEATURE_MAKEDEVS_TABLE is not set +CONFIG_MAN=y +CONFIG_MICROCOM=y +CONFIG_MOUNTPOINT=y +CONFIG_MT=y +CONFIG_RAIDAUTORUN=y +CONFIG_READAHEAD=y +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +CONFIG_RX=y +CONFIG_SETSID=y +CONFIG_STRINGS=y +CONFIG_TASKSET=y +CONFIG_FEATURE_TASKSET_FANCY=y +CONFIG_TIME=y +CONFIG_TIMEOUT=y +CONFIG_TTYSIZE=y +CONFIG_VOLNAME=y +CONFIG_WALL=y +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +CONFIG_NC=y +CONFIG_NC_SERVER=y +CONFIG_NC_EXTRA=y +# CONFIG_NC_110_COMPAT 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=y +CONFIG_ARPING=y +CONFIG_BRCTL=y +CONFIG_FEATURE_BRCTL_FANCY=y +CONFIG_FEATURE_BRCTL_SHOW=y +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +CONFIG_FAKEIDENTD=y +CONFIG_FTPD=y +CONFIG_FEATURE_FTP_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y +CONFIG_FTPGET=y +CONFIG_FTPPUT=y +CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y +CONFIG_HOSTNAME=y +CONFIG_HTTPD=y +CONFIG_FEATURE_HTTPD_RANGES=y +CONFIG_FEATURE_HTTPD_USE_SENDFILE=y +CONFIG_FEATURE_HTTPD_SETUID=y +CONFIG_FEATURE_HTTPD_BASIC_AUTH=y +CONFIG_FEATURE_HTTPD_AUTH_MD5=y +CONFIG_FEATURE_HTTPD_CGI=y +CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y +CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y +CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y +CONFIG_FEATURE_HTTPD_ERROR_PAGES=y +CONFIG_FEATURE_HTTPD_PROXY=y +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=y +CONFIG_IFENSLAVE=y +CONFIG_IFPLUGD=y +CONFIG_IFUPDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y +# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set +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=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=y +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=y +CONFIG_FEATURE_IPCALC_FANCY=y +CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y +CONFIG_NAMEIF=y +CONFIG_FEATURE_NAMEIF_EXTENDED=y +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_PING=y +CONFIG_PING6=y +CONFIG_FEATURE_FANCY_PING=y +CONFIG_PSCAN=y +CONFIG_ROUTE=y +CONFIG_SLATTACH=y +CONFIG_TCPSVD=y +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_TELNETD=y +CONFIG_FEATURE_TELNETD_STANDALONE=y +CONFIG_FEATURE_TELNETD_INETD_WAIT=y +CONFIG_TFTP=y +CONFIG_TFTPD=y + +# +# 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 is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +CONFIG_TUNCTL=y +CONFIG_FEATURE_TUNCTL_UG=y +CONFIG_UDHCPD=y +CONFIG_DHCPRELAY=y +CONFIG_DUMPLEASES=y +CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y +CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases" +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCP_PORT=y +CONFIG_UDHCP_DEBUG=9 +CONFIG_FEATURE_UDHCP_RFC3397=y +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=y +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_ZCIP=y + +# +# Print Utilities +# +CONFIG_LPD=y +CONFIG_LPR=y +CONFIG_LPQ=y + +# +# Mail Utilities +# +CONFIG_MAKEMIME=y +CONFIG_FEATURE_MIME_CHARSET="us-ascii" +CONFIG_POPMAILDIR=y +CONFIG_FEATURE_POPMAILDIR_DELIVERY=y +CONFIG_REFORMIME=y +CONFIG_FEATURE_REFORMIME_COMPAT=y +CONFIG_SENDMAIL=y + +# +# Process Utilities +# +CONFIG_SMEMCAP=y +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_NMETER=y +CONFIG_PGREP=y +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +CONFIG_PKILL=y +CONFIG_PS=y +CONFIG_FEATURE_PS_WIDE=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=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=y +CONFIG_FEATURE_TOP_DECIMALS=y +CONFIG_FEATURE_TOP_SMP_PROCESS=y +CONFIG_FEATURE_TOPMEM=y +CONFIG_FEATURE_SHOW_THREADS=y +CONFIG_UPTIME=y +CONFIG_WATCH=y + +# +# Runit Utilities +# +CONFIG_RUNSV=y +CONFIG_RUNSVDIR=y +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +CONFIG_SV=y +CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service" +CONFIG_SVLOGD=y +CONFIG_CHPST=y +CONFIG_SETUIDGID=y +CONFIG_ENVUIDGID=y +CONFIG_ENVDIR=y +CONFIG_SOFTLIMIT=y +# 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_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_HUSH=y +CONFIG_HUSH_BASH_COMPAT=y +CONFIG_HUSH_HELP=y +CONFIG_HUSH_INTERACTIVE=y +CONFIG_HUSH_JOB=y +CONFIG_HUSH_TICK=y +CONFIG_HUSH_IF=y +CONFIG_HUSH_LOOPS=y +CONFIG_HUSH_CASE=y +CONFIG_HUSH_FUNCTIONS=y +CONFIG_HUSH_LOCAL=y +CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_RANDOM_SUPPORT=y +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_LASH is not set +CONFIG_MSH=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_CTTYHACK=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_READ_BUFFER_SIZE=256 +CONFIG_FEATURE_IPC_SYSLOG=y +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y +CONFIG_KLOGD=y +CONFIG_LOGGER=y diff --git a/board/amlogic/f16ref/skeleton/dev/.empty b/board/amlogic/f16ref/skeleton/dev/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/etc/TZ b/board/amlogic/f16ref/skeleton/etc/TZ new file mode 100755 index 0000000000..9fcb2a3c56 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/TZ @@ -0,0 +1 @@ +MST7MDT diff --git a/board/amlogic/f16ref/skeleton/etc/default/hwclock b/board/amlogic/f16ref/skeleton/etc/default/hwclock new file mode 100644 index 0000000000..1aa0960074 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/default/hwclock @@ -0,0 +1,4 @@ +# use UTC +UTC=yes +# Can we use hwclock on this system? +HWCLOCKACCESS=yes diff --git a/board/amlogic/f16ref/skeleton/etc/fstab b/board/amlogic/f16ref/skeleton/etc/fstab new file mode 100644 index 0000000000..b6ed3fdb63 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/fstab @@ -0,0 +1,16 @@ +# /etc/fstab: static file system information. +# +# +/dev/root / ext2 ro,noauto 0 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620 0 0 +tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /tmp tmpfs defaults,noatime 0 0 +sysfs /sys sysfs defaults 0 0 +tmpfs /var/log tmpfs defaults,noatime 0 0 +tmpfs /var/run tmpfs defaults,noatime 0 0 +tmpfs /var/tmp tmpfs defaults,noatime 0 0 +tmpfs /var/lock tmpfs defaults,noatime 0 0 +tmpfs /var/cache tmpfs defaults,noatime 0 0 +/usr.sqsh /usr squashfs ro,defaults,noatime 0 0 +/dev/mtdblock3 /recovery yaffs2 defaults 0 0 diff --git a/board/amlogic/f16ref/skeleton/etc/group b/board/amlogic/f16ref/skeleton/etc/group new file mode 100755 index 0000000000..0b32c23473 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/group @@ -0,0 +1,26 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +kmem:x:15: +wheel:x:10:root +dialout:x:20: +cdrom:x:24: +floppy:x:25: +tape:x:26: +audio:x:29: +utmp:x:43: +video:x:44: +staff:x:50: +haldaemon:x:68: +dbus:x:81: +netdev:x:82: +ftp:x:83 +nobody:x:99: +nogroup:x:99: +users:x:100: +default:x:1000: diff --git a/board/amlogic/f16ref/skeleton/etc/hostname b/board/amlogic/f16ref/skeleton/etc/hostname new file mode 100755 index 0000000000..4b2877f54f --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/hostname @@ -0,0 +1 @@ +xios diff --git a/board/amlogic/f16ref/skeleton/etc/hosts b/board/amlogic/f16ref/skeleton/etc/hosts new file mode 100755 index 0000000000..ba712fe033 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/hosts @@ -0,0 +1 @@ +127.0.0.1 localhost diff --git a/board/amlogic/f16ref/skeleton/etc/init.d/S10setup b/board/amlogic/f16ref/skeleton/etc/init.d/S10setup new file mode 100755 index 0000000000..8cea46f39d --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/init.d/S10setup @@ -0,0 +1,73 @@ +#!/bin/sh + +if [ "X$1" = "Xstart" ]; then + echo "S10setup: init fb0, fb1" + # blank the fb's + echo 1 > /sys/class/graphics/fb0/blank + echo 1 > /sys/class/graphics/fb1/blank + # clear them + dd if=/dev/zero of=/dev/fb0 bs=1280 count=2880 + dd if=/dev/zero of=/dev/fb1 bs=1280 count=2880 + # bugfix for m3 kernel, init fb0 to 24 bpp first + # or the init to 32 bpp will not work + fbset -fb /dev/fb0 -g 1280 720 1280 1440 24 + # setup the default fb sizes, bbp and buffering + fbset -fb /dev/fb0 -g 1280 720 1280 1440 32 + fbset -fb /dev/fb1 -g 1280 720 1280 1440 32 + # + echo "S10setup: remount / rw" + mount -o remount,rw / + # + echo "S10setup: checking keys" + # Make sure dropbear directory exists + if [ ! -d /etc/dropbear ] ; then + mkdir -p /etc/dropbear + fi + # Check for the Dropbear RSA key + if [ ! -f /etc/dropbear/dropbear_rsa_host_key ] ; then + echo -n "generating rsa key... " + /usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key > /dev/null 2>&1 + fi + # Check for the Dropbear DSS key + if [ ! -f /etc/dropbear/dropbear_dss_host_key ] ; then + echo -n "generating dsa key... " + /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key > /dev/null 2>&1 + fi + # + echo "S10setup: moving /etc" + # /etc must be rw, move it to /tmp and bind + mkdir -p /tmp/etc + cp -a /etc /tmp/ + mount -o bind /tmp/etc /etc + # + echo "S10setup: moving /media" + # /media is where usb drives mount, move it to /tmp and bind + mkdir -p /tmp/media + cp -a /media /tmp/ + mount -o bind /tmp/media /media + # + echo "S10setup: mounting /tmp/userdata" + # find userdata via mtd partition name, mount it and bind to /root + for i in `ls /dev/mtd* | grep -o "mtd[0-9]$"`; do + if [[ "`cat /sys/devices/virtual/mtd/$i/name`" == "userdata" ]]; then + USERDATA="/dev/"`ls /sys/devices/virtual/mtd/$i | grep -o mtdblock[0-9]` + break + fi + done + + mkdir -p /tmp/userdata + mount -t yaffs2 $USERDATA /tmp/userdata + mkdir -p /tmp/userdata/xios/root + mount -o bind /tmp/userdata/xios/root /root + # + echo "S10setup: remount / ro" + mount -o remount,ro / + # + # we startup as performance, then switch to ondemand (kernel bug) and + # if m1 or m3, limit to 600Mhz to keep audio hw from stalling. + echo "S10setup: switching to ondemand" + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "600000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # + echo "S10setup: done" +fi diff --git a/board/amlogic/f16ref/skeleton/etc/init.d/S20urandom b/board/amlogic/f16ref/skeleton/etc/init.d/S20urandom new file mode 100755 index 0000000000..f73cea59ed --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/init.d/S20urandom @@ -0,0 +1,54 @@ +#! /bin/sh +# +# urandom This script saves the random seed between reboots. +# It is called from the boot, halt and reboot scripts. +# +# Version: @(#)urandom 1.33 22-Jun-1998 miquels@cistron.nl +# + +[ -c /dev/urandom ] || exit 0 +#. /etc/default/rcS + +case "$1" in + start|"") + if [ "$VERBOSE" != no ] + then + echo -n "Initializing random number generator... " + fi + # Load and then save 512 bytes, + # which is the size of the entropy pool + if [ -f /etc/random-seed ] + then + cat /etc/random-seed >/dev/urandom + fi + # check for read only file system + if ! touch /etc/random-seed 2>/dev/null + then + echo "read-only file system detected...done" + exit + fi + rm -f /etc/random-seed + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "urandom start: failed." + umask 022 + [ "$VERBOSE" != no ] && echo "done." + ;; + stop) + if ! touch /etc/random-seed 2>/dev/null + then + exit + fi + # Carry a random seed from shut-down to start-up; + # see documentation in linux/drivers/char/random.c + [ "$VERBOSE" != no ] && echo -n "Saving random seed... " + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "urandom stop: failed." + [ "$VERBOSE" != no ] && echo "done." + ;; + *) + echo "Usage: urandom {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/board/amlogic/f16ref/skeleton/etc/init.d/S21hwclock b/board/amlogic/f16ref/skeleton/etc/init.d/S21hwclock new file mode 100755 index 0000000000..78f404aff1 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/init.d/S21hwclock @@ -0,0 +1,83 @@ +#!/bin/sh +# hwclock.sh Set system clock to hardware clock, according to the UTC +# setting in /etc/default/rcS (see also rcS(5)). +# +# WARNING: If your hardware clock is not in UTC/GMT, this script +# must know the local time zone. This information is +# stored in /etc/localtime. This might be a problem if +# your /etc/localtime is a symlink to something in +# /usr/share/zoneinfo AND /usr isn't in the root +# partition! The workaround is to define TZ either +# in /etc/default/rcS, or in the proper place below. + +[ ! -x /sbin/hwclock ] && exit 0 + +#. /etc/default/rcS +. /etc/default/hwclock + +[ "$UTC" = yes ] && UTC=--utc || UTC=--localtime + +if [ ! -z "$HWCLOCKDEVICE" ]; then + if [ -e $HWCLOCKDEVICE ]; then + DEVICE="--rtc $HWCLOCKDEVICE" + fi +fi + +case "$1" in + start) + if [ "$VERBOSE" != no ] + then + echo "System time was `date`." + echo "Setting the System Clock using the Hardware Clock as reference..." + fi + + if [ "$HWCLOCKACCESS" != no ] + then + if [ -z "$TZ" ] + then + hwclock --hctosys $UTC $DEVICE + else + TZ="$TZ" hwclock --hctosys $UTC $DEVICE + fi + fi + + if [ "$VERBOSE" != no ] + then + echo "System Clock set. System local time is now `date`." + fi + ;; + stop|restart|reload|force-reload) + # + # Updates the Hardware Clock with the System Clock time. + # This will *override* any changes made to the Hardware Clock. + # + # WARNING: If you disable this, any changes to the system + # clock will not be carried across reboots. + # + if [ "$VERBOSE" != no ] + then + echo "Saving the System Clock time to the Hardware Clock..." + fi + if [ "$HWCLOCKACCESS" != no ] + then + hwclock --systohc $UTC $DEVICE + fi + if [ "$VERBOSE" != no ] + then + echo "Hardware Clock updated to `date`." + fi + exit 0 + ;; + show) + if [ "$HWCLOCKACCESS" != no ] + then + hwclock --show $UTC $DEVICE + fi + ;; + *) + echo "Usage: hwclock.sh {start|stop|show|reload|restart}" >&2 + echo " start sets kernel (system) clock from hardware (RTC) clock" >&2 + echo " stop and reload set hardware (RTC) clock from kernel (system) clock" >&2 + exit 1 + ;; +esac diff --git a/board/amlogic/f16ref/skeleton/etc/init.d/S40network b/board/amlogic/f16ref/skeleton/etc/init.d/S40network new file mode 100755 index 0000000000..bbeff84dae --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/init.d/S40network @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Start the network.... +# + +case "$1" in + start) + echo "Starting network..." + + # bump up the default udp/tcp buffersizes + sysctl -w net.core.rmem_max=33554432 + sysctl -w net.core.netdev_max_backlog=2000 + sysctl -w net.ipv4.udp_mem='262144 327680 393216' + sysctl -w net.ipv4.tcp_mem='262144 327680 393216' + + # make sure eth0 and wlan0 interfaces are up + # xbmc will take care of actually configuring them + # do it this way to keep from triggering + # a lengthy dhcp probe at boot. + ifconfig eth0 up + ifconfig wlan0 up + ;; + stop) + echo -n "Stopping network..." + ifconfig eth0 down + ifconfig wlan0 down + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo $"Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/board/amlogic/f16ref/skeleton/etc/init.d/S50mali b/board/amlogic/f16ref/skeleton/etc/init.d/S50mali new file mode 100755 index 0000000000..94cfc23515 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/init.d/S50mali @@ -0,0 +1,26 @@ +#! /bin/sh +# +case "$1" in + start) + echo "Starting mali..." + /bin/echo 0 > /sys/class/graphics/fb0/blank + #/sbin/modprobe ump + /sbin/modprobe mali + ;; + stop) + echo "Stopping mali..." + /sbin/modprobe -r mali + #/sbin/modprobe -r ump + ;; + restart|reload) + echo "Restarting mali..." + /sbin/modprobe -r mali + #/sbin/modprobe -r ump + #/sbin/modprobe ump + /sbin/modprobe mali + ;; + *) + ;; +esac + +exit $? diff --git a/board/amlogic/f16ref/skeleton/etc/init.d/rcS b/board/amlogic/f16ref/skeleton/etc/init.d/rcS new file mode 100755 index 0000000000..dbd4979562 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/init.d/rcS @@ -0,0 +1,28 @@ +#!/bin/sh + + +# Start all init scripts in /etc/init.d +# executing them in numerical order. +# +export HOME=/root +for i in /etc/init.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac +done + diff --git a/board/amlogic/f16ref/skeleton/etc/inittab b/board/amlogic/f16ref/skeleton/etc/inittab new file mode 100644 index 0000000000..a77911df79 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/inittab @@ -0,0 +1,57 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +::sysinit:/bin/mount -t proc none /proc +::sysinit:/bin/mount -o remount,rw / +::sysinit:/bin/mkdir -p /dev/pts +::sysinit:/bin/mkdir -p /dev/shm +::sysinit:/bin/ln -sf /proc/self/mounts /etc/mtab +::sysinit:/bin/mount -o remount,ro / +# root is ro from here on. see /etc/fstab +# +::sysinit:/bin/mount -a +::sysinit:/bin/hostname -F /etc/hostname +::sysinit:/sbin/ifconfig lo 127.0.0.1 up +::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Set up a couple of getty's +tty1::respawn:/sbin/getty 38400 tty1 +tty2::respawn:/sbin/getty 38400 tty2 + +# Put a getty on the serial port +#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # UNSUPPORT GENERIC_SERIAL +ttyS0::respawn:/bin/sh # AMLOGIC_GENERAL_SERIAL + +# Logging junk +null::sysinit:/bin/touch /var/log/messages +null::respawn:/sbin/syslogd -n +null::respawn:/sbin/klogd -n +tty3::respawn:/usr/bin/tail -f /var/log/messages + +# Stuff to do for the 3-finger salute +::ctrlaltdel:/sbin/reboot + +# Stuff to do when restarting the init process +::restart:/sbin/init + +# Stuff to do before rebooting +::shutdown:/etc/init.d/S21hwclock stop +::shutdown:/usr/bin/killall -q klogd +::shutdown:/usr/bin/killall -q syslogd +::shutdown:/bin/umount -a -r +::shutdown:/sbin/swapoff -a diff --git a/board/amlogic/f16ref/skeleton/etc/inputrc b/board/amlogic/f16ref/skeleton/etc/inputrc new file mode 100755 index 0000000000..2f1cb601a5 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/inputrc @@ -0,0 +1,44 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info readline' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on +set bell-style visible + +# To allow the use of 8bit-characters like the german umlauts, comment out +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +"\e0d": backward-word +"\e0c": forward-word +"\e[h": beginning-of-line +"\e[f": end-of-line +"\e[1~": beginning-of-line +"\e[4~": end-of-line +#"\e[5~": beginning-of-history +#"\e[6~": end-of-history +"\e[3~": delete-char +"\e[2~": quoted-insert + +# Common standard keypad and cursor +# (codes courtsey Werner Fink, ) +#"\e[1~": history-search-backward +"\e[2~": yank +"\e[3~": delete-char +#"\e[4~": set-mark +"\e[5~": history-search-backward +"\e[6~": history-search-forward +# Normal keypad and cursor of xterm +"\e[F": end-of-line +"\e[H": beginning-of-line +# Application keypad and cursor of xterm +"\eOA": previous-history +"\eOC": forward-char +"\eOB": next-history +"\eOD": backward-char +"\eOF": end-of-line +"\eOH": beginning-of-line + diff --git a/board/amlogic/f16ref/skeleton/etc/irmap-amlogic b/board/amlogic/f16ref/skeleton/etc/irmap-amlogic new file mode 100644 index 0000000000..fe96b71457 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/irmap-amlogic @@ -0,0 +1,45 @@ +#amlogic NEC remote +factory_code = 0x40400001 +work_mode = 1 +repeat_enable = 0 +release_delay = 150 +debug_enable = 1 +reg_control = 0xfbe40 + +key_begin + 0x01 1 + 0x02 3 + 0x03 4 + 0x04 5 + 0x05 6 + 0x06 7 + 0x07 8 + 0x08 9 + 0x09 57 + 0x0A 116 + 0x0C 113 + 0x0B 103 + 0x0E 108 + 0x10 105 + 0x11 106 + 0x0D 28 + 0x16 102 + 0x1E 114 + 0x1F 115 + 0x40 119 + 0x41 128 + 0x15 104 + 0x1C 109 + 0x46 63 + 0x43 64 + 0x47 65 + 0x12 66 + 0x45 67 + 0x18 68 + 0x53 59 + 0x5B 60 + 0x57 61 + 0x54 62 + 0x1B 0x16C + 0x14 87 +key_end diff --git a/board/amlogic/f16ref/skeleton/etc/irmap.conf b/board/amlogic/f16ref/skeleton/etc/irmap.conf new file mode 100644 index 0000000000..b21b28e60b --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/irmap.conf @@ -0,0 +1,35 @@ +0x01 Qt::Key_Escape EXIT +0x02 Qt::Key_2 NUM2 +0x03 Qt::Key_3 NUM3 +0x04 Qt::Key_4 NUM4 +0x05 Qt::Key_5 NUM5 +0x06 Qt::Key_6 NUM6 +0x07 Qt::Key_7 NUM7 +0x08 Qt::Key_F2 NUM8 +0x09 Qt::Key_Menu NUM9 +0x0A Qt::Key_F1 POWER +0x0C Qt::Key_VolumeMute MUTE +0x0B Qt::Key_Up UP +0x0E Qt::Key_Down DOWN +0x10 Qt::Key_Left LEFT +0x11 Qt::Key_Right RIGHT +0x0D Qt::Key_Enter OK +0x16 Qt::Key_HomePage HOME +0x1e Qt::Key_VolumeDown VOL- +0x1f Qt::Key_VolumeUp VOL+ +0x40 Qt::Key_MediaPlay PLAY +0x41 Qt::Key_Pause STOP +0x15 Qt::Key_MediaPrevious PREV +0x1c Qt::Key_MediaNext NEXT +0x46 Qt::Key_F5 MUSIC +0x43 Qt::Key_F6 Picture +0x47 Qt::Key_F7 Video +0x12 Qt::Key_F8 TXT +0x45 Qt::Key_F9 Subtitle +0x18 Qt::Key_F10 NETWORK +0x53 Qt::Key_F11 F1 +0x5b Qt::Key_F12 F2 +0x57 Qt::Key_F3 F3 +0x54 Qt::Key_F4 F4 +0x1b Qt::Key_Favorites Folder +0x14 Qt::Key_F11 SORT \ No newline at end of file diff --git a/board/amlogic/f16ref/skeleton/etc/issue b/board/amlogic/f16ref/skeleton/etc/issue new file mode 100755 index 0000000000..90f177983b --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/issue @@ -0,0 +1,3 @@ + +Welcome to Buildroot + diff --git a/board/amlogic/f16ref/skeleton/etc/network/if-down.d/wpasupplicant b/board/amlogic/f16ref/skeleton/etc/network/if-down.d/wpasupplicant new file mode 120000 index 0000000000..dd8edf7927 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/network/if-down.d/wpasupplicant @@ -0,0 +1 @@ +../../wpa_supplicant/ifupdown.sh \ No newline at end of file diff --git a/board/amlogic/f16ref/skeleton/etc/network/if-post-down.d/wpasupplicant b/board/amlogic/f16ref/skeleton/etc/network/if-post-down.d/wpasupplicant new file mode 120000 index 0000000000..dd8edf7927 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/network/if-post-down.d/wpasupplicant @@ -0,0 +1 @@ +../../wpa_supplicant/ifupdown.sh \ No newline at end of file diff --git a/board/amlogic/f16ref/skeleton/etc/network/if-pre-up.d/wpasupplicant b/board/amlogic/f16ref/skeleton/etc/network/if-pre-up.d/wpasupplicant new file mode 120000 index 0000000000..dd8edf7927 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/network/if-pre-up.d/wpasupplicant @@ -0,0 +1 @@ +../../wpa_supplicant/ifupdown.sh \ No newline at end of file diff --git a/board/amlogic/f16ref/skeleton/etc/network/if-up.d/wpasupplicant b/board/amlogic/f16ref/skeleton/etc/network/if-up.d/wpasupplicant new file mode 120000 index 0000000000..dd8edf7927 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/network/if-up.d/wpasupplicant @@ -0,0 +1 @@ +../../wpa_supplicant/ifupdown.sh \ No newline at end of file diff --git a/board/amlogic/f16ref/skeleton/etc/network/interfaces b/board/amlogic/f16ref/skeleton/etc/network/interfaces new file mode 100755 index 0000000000..89b4448658 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/network/interfaces @@ -0,0 +1,6 @@ +auto lo +iface lo inet loopback +# +iface eth0 inet manual +# +iface wlan0 inet manual diff --git a/board/amlogic/f16ref/skeleton/etc/passwd b/board/amlogic/f16ref/skeleton/etc/passwd new file mode 100644 index 0000000000..86d62269e0 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/passwd @@ -0,0 +1,14 @@ +root:x:0:0:root:/root:/bin/sh +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:100:sync:/bin:/bin/sync +mail:x:8:8:mail:/var/spool/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +operator:x:37:37:Operator:/var:/bin/sh +haldaemon:x:68:68:hald:/:/bin/sh +dbus:x:81:81:dbus:/var/run/dbus:/bin/sh +nobody:x:99:99:nobody:/home:/bin/sh +sshd:x:103:99:Operator:/var:/bin/sh diff --git a/board/amlogic/f16ref/skeleton/etc/passwd- b/board/amlogic/f16ref/skeleton/etc/passwd- new file mode 100644 index 0000000000..86d62269e0 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/passwd- @@ -0,0 +1,14 @@ +root:x:0:0:root:/root:/bin/sh +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:100:sync:/bin:/bin/sync +mail:x:8:8:mail:/var/spool/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +operator:x:37:37:Operator:/var:/bin/sh +haldaemon:x:68:68:hald:/:/bin/sh +dbus:x:81:81:dbus:/var/run/dbus:/bin/sh +nobody:x:99:99:nobody:/home:/bin/sh +sshd:x:103:99:Operator:/var:/bin/sh diff --git a/board/amlogic/f16ref/skeleton/etc/profile b/board/amlogic/f16ref/skeleton/etc/profile new file mode 100755 index 0000000000..02cf2cb9b4 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/profile @@ -0,0 +1,49 @@ +# ~/.bashrc: executed by bash(1) for non-login interactive shells. + +export PATH=\ +/bin:\ +/sbin:\ +/usr/bin:\ +/usr/sbin:\ +/usr/bin/X11:\ +/usr/local/bin + +# If running interactively, then: +if [ "$PS1" ]; then + + #if [ "$BASH" ]; then + if [ 1 ]; then #alway is + export PS1="[\u@\h \W]\\$ " + alias ll='/bin/ls --color=tty -laFh' + alias ls='/bin/ls --color=tty -F' + export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:'; + else + if [ "`id -u`" -eq 0 ]; then + export PS1='# ' + else + export PS1='$ ' + fi + fi + + export USER=`id -un` + export LOGNAME=$USER + export HOSTNAME=`/bin/hostname` + export HISTSIZE=1000 + export HISTFILESIZE=1000 + export PAGER='/bin/more ' + export EDITOR='/bin/vi' + export INPUTRC=/etc/inputrc + export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile + + ### Some aliases + alias ps2='ps facux ' + alias ps1='ps faxo "%U %t %p %a" ' + alias af='ps af' + alias cls='clear' + alias df='df -h' + alias indent='indent -bad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -npsl -nsc -nsob -nss -ts4 ' + #alias bc='bc -l' + alias minicom='minicom -c on' + alias calc='calc -Cd ' + alias bc='calc -Cd ' +fi; diff --git a/board/amlogic/f16ref/skeleton/etc/protocols b/board/amlogic/f16ref/skeleton/etc/protocols new file mode 100755 index 0000000000..1ac8a40967 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/protocols @@ -0,0 +1,31 @@ +# /etc/protocols: +# $Id: protocols,v 1.1 2004/10/09 02:49:18 andersen Exp $ +# +# Internet (IP) protocols +# +# from: @(#)protocols 5.1 (Berkeley) 4/17/89 +# +# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992). + +ip 0 IP # internet protocol, pseudo protocol number +icmp 1 ICMP # internet control message protocol +igmp 2 IGMP # Internet Group Management +ggp 3 GGP # gateway-gateway protocol +ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') +st 5 ST # ST datagram mode +tcp 6 TCP # transmission control protocol +egp 8 EGP # exterior gateway protocol +pup 12 PUP # PARC universal packet protocol +udp 17 UDP # user datagram protocol +hmp 20 HMP # host monitoring protocol +xns-idp 22 XNS-IDP # Xerox NS IDP +rdp 27 RDP # "reliable datagram" protocol +iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 +xtp 36 XTP # Xpress Tranfer Protocol +ddp 37 DDP # Datagram Delivery Protocol +idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport +rspf 73 RSPF #Radio Shortest Path First. +vmtp 81 VMTP # Versatile Message Transport +ospf 89 OSPFIGP # Open Shortest Path First IGP +ipip 94 IPIP # Yet Another IP encapsulation +encap 98 ENCAP # Yet Another IP encapsulation diff --git a/board/amlogic/f16ref/skeleton/etc/random-seed b/board/amlogic/f16ref/skeleton/etc/random-seed new file mode 100755 index 0000000000000000000000000000000000000000..f26038adc5d057a0b9d6ce5d3cda02ccb4a4d12e GIT binary patch literal 512 zcmV+b0{{Iq0UOB42;n4xpAvJIL$H4mg*!B4&9jh)7+B2j-fX7o@K*bzj;pJ$FwoQzl&MuZ^Wy zrYS)x9vq<)#e~&1uB|_ITW-fntEg1^KXs3>vvgL7?_kg!+6=fg{S7mwkr$#pmPZ13liCc zi|M+im&71p*p+Z|7f(m-aedNFtEezFN-nZHytAhV~}?OM$-f$(%cG(ioV{==Ub4mfZP}OaJJ7 z25tvCcku=>;L?}O-dvK9`}<^gmg@IrnfQm#P>RRF|C9c;GDgEg_bw26{dkIVt1`{` z3#ol{Q_FL91TBD~{uZnRRZ(Otf!KXM&;q)8B The Registered Ports are not controlled by the IANA and on most systems +#> can be used by ordinary user processes or programs executed by ordinary +#> users. +# +#> Ports are used in the TCP [45,106] to name the ends of logical +#> connections which carry long term conversations. For the purpose of +#> providing services to unknown callers, a service contact port is +#> defined. This list specifies the port used by the server process as its +#> contact port. While the IANA can not control uses of these ports it +#> does register or list uses of these ports as a convienence to the +#> community. +# +nfsdstatus 1110/tcp +nfsd-keepalive 1110/udp + +ingreslock 1524/tcp +ingreslock 1524/udp +prospero-np 1525/tcp # Prospero non-privileged +prospero-np 1525/udp +datametrics 1645/tcp old-radius # datametrics / old radius entry +datametrics 1645/udp old-radius # datametrics / old radius entry +sa-msg-port 1646/tcp old-radacct # sa-msg-port / old radacct entry +sa-msg-port 1646/udp old-radacct # sa-msg-port / old radacct entry +radius 1812/tcp # Radius +radius 1812/udp # Radius +radacct 1813/tcp # Radius Accounting +radacct 1813/udp # Radius Accounting +nfsd 2049/tcp nfs +nfsd 2049/udp nfs +cvspserver 2401/tcp # CVS client/server operations +cvspserver 2401/udp # CVS client/server operations +mysql 3306/tcp # MySQL +mysql 3306/udp # MySQL +rfe 5002/tcp # Radio Free Ethernet +rfe 5002/udp # Actually uses UDP only +cfengine 5308/tcp # CFengine +cfengine 5308/udp # CFengine +bbs 7000/tcp # BBS service +# +# +# Kerberos (Project Athena/MIT) services +# Note that these are for Kerberos v4, and are unofficial. Sites running +# v4 should uncomment these and comment out the v5 entries above. +# +kerberos4 750/udp kerberos-iv kdc # Kerberos (server) udp +kerberos4 750/tcp kerberos-iv kdc # Kerberos (server) tcp +kerberos_master 751/udp # Kerberos authentication +kerberos_master 751/tcp # Kerberos authentication +passwd_server 752/udp # Kerberos passwd server +krb_prop 754/tcp # Kerberos slave propagation +krbupdate 760/tcp kreg # Kerberos registration +kpasswd 761/tcp kpwd # Kerberos "passwd" +kpop 1109/tcp # Pop with Kerberos +knetd 2053/tcp # Kerberos de-multiplexor +zephyr-srv 2102/udp # Zephyr server +zephyr-clt 2103/udp # Zephyr serv-hm connection +zephyr-hm 2104/udp # Zephyr hostmanager +eklogin 2105/tcp # Kerberos encrypted rlogin +# +# Unofficial but necessary (for NetBSD) services +# +supfilesrv 871/tcp # SUP server +supfiledbg 1127/tcp # SUP debugging +# +# Datagram Delivery Protocol services +# +rtmp 1/ddp # Routing Table Maintenance Protocol +nbp 2/ddp # Name Binding Protocol +echo 4/ddp # AppleTalk Echo Protocol +zip 6/ddp # Zone Information Protocol +# +# Services added for the Debian GNU/Linux distribution +poppassd 106/tcp # Eudora +poppassd 106/udp # Eudora +mailq 174/tcp # Mailer transport queue for Zmailer +mailq 174/tcp # Mailer transport queue for Zmailer +omirr 808/tcp omirrd # online mirror +omirr 808/udp omirrd # online mirror +rmtcfg 1236/tcp # Gracilis Packeten remote config server +xtel 1313/tcp # french minitel +coda_opcons 1355/udp # Coda opcons (Coda fs) +coda_venus 1363/udp # Coda venus (Coda fs) +coda_auth 1357/udp # Coda auth (Coda fs) +coda_udpsrv 1359/udp # Coda udpsrv (Coda fs) +coda_filesrv 1361/udp # Coda filesrv (Coda fs) +codacon 1423/tcp venus.cmu # Coda Console (Coda fs) +coda_aux1 1431/tcp # coda auxiliary service (Coda fs) +coda_aux1 1431/udp # coda auxiliary service (Coda fs) +coda_aux2 1433/tcp # coda auxiliary service (Coda fs) +coda_aux2 1433/udp # coda auxiliary service (Coda fs) +coda_aux3 1435/tcp # coda auxiliary service (Coda fs) +coda_aux3 1435/udp # coda auxiliary service (Coda fs) +cfinger 2003/tcp # GNU Finger +afbackup 2988/tcp # Afbackup system +afbackup 2988/udp # Afbackup system +icp 3130/tcp # Internet Cache Protocol (Squid) +icp 3130/udp # Internet Cache Protocol (Squid) +postgres 5432/tcp # POSTGRES +postgres 5432/udp # POSTGRES +fax 4557/tcp # FAX transmission service (old) +hylafax 4559/tcp # HylaFAX client-server protocol (new) +noclog 5354/tcp # noclogd with TCP (nocol) +noclog 5354/udp # noclogd with UDP (nocol) +hostmon 5355/tcp # hostmon uses TCP (nocol) +hostmon 5355/udp # hostmon uses TCP (nocol) +ircd 6667/tcp # Internet Relay Chat +ircd 6667/udp # Internet Relay Chat +webcache 8080/tcp # WWW caching service +webcache 8080/udp # WWW caching service +tproxy 8081/tcp # Transparent Proxy +tproxy 8081/udp # Transparent Proxy +mandelspawn 9359/udp mandelbrot # network mandelbrot +amanda 10080/udp # amanda backup services +amandaidx 10082/tcp # amanda backup services +amidxtape 10083/tcp # amanda backup services +isdnlog 20011/tcp # isdn logging system +isdnlog 20011/udp # isdn logging system +vboxd 20012/tcp # voice box system +vboxd 20012/udp # voice box system +binkp 24554/tcp # Binkley +binkp 24554/udp # Binkley +asp 27374/tcp # Address Search Protocol +asp 27374/udp # Address Search Protocol +tfido 60177/tcp # Ifmail +tfido 60177/udp # Ifmail +fido 60179/tcp # Ifmail +fido 60179/udp # Ifmail + +# Local services + diff --git a/board/amlogic/f16ref/skeleton/etc/shadow b/board/amlogic/f16ref/skeleton/etc/shadow new file mode 100644 index 0000000000..1db54568eb --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/shadow @@ -0,0 +1,12 @@ +root:$1$C0786MXO$qNkHWlSs49I0CJ94OYfcs0:15393:0:99999:7::: +bin:*:10933:0:99999:7::: +daemon:*:10933:0:99999:7::: +adm:*:10933:0:99999:7::: +lp:*:10933:0:99999:7::: +sync:*:10933:0:99999:7::: +shutdown:*:10933:0:99999:7::: +halt:*:10933:0:99999:7::: +uucp:*:10933:0:99999:7::: +operator:*:10933:0:99999:7::: +nobody:*:10933:0:99999:7::: + diff --git a/board/amlogic/f16ref/skeleton/etc/shadow- b/board/amlogic/f16ref/skeleton/etc/shadow- new file mode 100644 index 0000000000..23d27f9ef7 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/shadow- @@ -0,0 +1,12 @@ +root::10933:0:99999:7::: +bin:*:10933:0:99999:7::: +daemon:*:10933:0:99999:7::: +adm:*:10933:0:99999:7::: +lp:*:10933:0:99999:7::: +sync:*:10933:0:99999:7::: +shutdown:*:10933:0:99999:7::: +halt:*:10933:0:99999:7::: +uucp:*:10933:0:99999:7::: +operator:*:10933:0:99999:7::: +nobody:*:10933:0:99999:7::: + diff --git a/board/amlogic/f16ref/skeleton/etc/shawd b/board/amlogic/f16ref/skeleton/etc/shawd new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/action_wpa.sh b/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/action_wpa.sh new file mode 100755 index 0000000000..7fb40adf43 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/action_wpa.sh @@ -0,0 +1,50 @@ +#!/bin/sh + +# Action script to enable/disable wpa-roam interfaces in reaction to +# ifplugd events. +# +# Copyright: Copyright (c) 2008-2010, Kel Modderman +# License: GPL-2 +# + +PATH=/sbin:/usr/sbin:/bin:/usr/bin + +if [ ! -x /sbin/wpa_action ]; then + exit 0 +fi + +# ifplugd(8) - +# +# If an ifplugd managed interface is brought up, disconnect any +# wpa-roam managed interfaces so that only one "roaming" interface +# remains active on the system. + +IFPLUGD_IFACE="${1}" + +case "${2}" in + up) + COMMAND=disconnect + ;; + down) + COMMAND=reconnect + ;; + *) + echo "$0: unknown arguments: ${@}" >&2 + exit 1 + ;; +esac + +for CTRL in /var/run/wpa_supplicant/*; do + [ -S "${CTRL}" ] || continue + + IFACE="${CTRL#/var/run/wpa_supplicant/}" + + # skip if ifplugd is managing this interface + if [ "${IFPLUGD_IFACE}" = "${IFACE}" ]; then + continue + fi + + if wpa_action "${IFACE}" check; then + wpa_cli -i "${IFACE}" "${COMMAND}" + fi +done diff --git a/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/functions.sh b/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/functions.sh new file mode 100755 index 0000000000..56cf2e2af5 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/functions.sh @@ -0,0 +1,979 @@ +#!/bin/sh + +##################################################################### +## Purpose +# This file contains common shell functions used by scripts of the +# wpasupplicant package to allow ifupdown to manage wpa_supplicant. +# It also contains some functions used by wpa_action(8) that allow +# ifupdown to be managed by wpa_cli(8) action events. +# +# This file is provided by the wpasupplicant package. + +##################################################################### +# Copyright (C) 2006 - 2009 Debian/Ubuntu wpasupplicant Maintainers +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# On Debian GNU/Linux systems, the text of the GPL license, +# version 2, can be found in /usr/share/common-licenses/GPL-2. + +##################################################################### +## global variables +# wpa_supplicant variables +WPA_SUP_BIN="/sbin/wpa_supplicant" +WPA_SUP_PNAME="wpa_supplicant" +WPA_SUP_PIDFILE="/var/run/wpa_supplicant.${WPA_IFACE}.pid" + +# wpa_cli variables +WPA_CLI_BIN="/sbin/wpa_cli" +WPA_CLI_PNAME="wpa_cli" +WPA_CLI_PIDFILE="/var/run/wpa_action.${WPA_IFACE}.pid" +WPA_CLI_TIMESTAMP="/var/run/wpa_action.${WPA_IFACE}.timestamp" +WPA_CLI_IFUPDOWN="/var/run/wpa_action.${WPA_IFACE}.ifupdown" + +# sendsigs omission interface, present in initscripts (>= 2.86.ds1-48) +if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then + # Debian + WPA_SUP_OMIT_PIDFILE="/lib/init/rw/sendsigs.omit.d/wpasupplicant.wpa_supplicant.${WPA_IFACE}.pid" +elif [ -d /var/run/sendsigs.omit.d/ ]; then + # Ubuntu, see https://launchpad.net/bugs/181541 for status + WPA_SUP_OMIT_PIDFILE="/var/run/sendsigs.omit.d/wpasupplicant.wpa_supplicant.${WPA_IFACE}.pid" +else + WPA_SUP_OMIT_PIDFILE= +fi + +# default ctrl_interface socket directory +if [ -z "$WPA_CTRL_DIR" ]; then + WPA_CTRL_DIR="/var/run/wpa_supplicant" +fi + +# verbosity variables +if [ -n "$IF_WPA_VERBOSITY" ] || [ "$VERBOSITY" = "1" ]; then + TO_NULL="/dev/stdout" + DAEMON_VERBOSITY="--verbose" +else + TO_NULL="/dev/null" + DAEMON_VERBOSITY="--quiet" +fi + +##################################################################### +## wpa_cli wrapper +# Path to common ctrl_interface socket and iface supplied. +# NB: WPA_CTRL_DIR cannot be used for interactive commands, it is +# set only in the environment that wpa_cli provides when processing +# action events. +# +wpa_cli () { + "$WPA_CLI_BIN" -p "$WPA_CTRL_DIR" -i "$WPA_IFACE" "$@" + + return "$?" +} + +##################################################################### +## verbose and stderr message wrapper +# Ensures a standard and easily identifiable message is printed by +# scripts using this function library. +# +# log Log a message to syslog when called non-interactively +# by wpa_action +# +# verbose To stdout when IF_WPA_VERBOSITY or VERBOSITY is true +# +# action Same as verbose but without newline +# Useful for allowing wpa_cli commands to echo result +# value of 'OK' or 'FAILED' +# +# stderr Echo warning or error messages to stderr +# +# NB: when called by wpa_action, there is no redirection (verbose) +# +wpa_msg () { + if [ "$1" = "log" ]; then + shift + case "$WPA_ACTION" in + "CONNECTED"|"DISCONNECTED") + [ -x /usr/bin/logger ] || return + if [ "$#" -gt 0 ]; then + logger -t "wpa_action" "$@" + else + logger -t "wpa_action" + fi + ;; + *) + [ "$#" -gt 0 ] && echo "wpa_action: $@" + ;; + esac + return + fi + + case "$1" in + "verbose") + shift + echo "$WPA_SUP_PNAME: $@" >$TO_NULL + ;; + "action") + shift + echo -n "$WPA_SUP_PNAME: $@ -- " >$TO_NULL + ;; + "stderr") + shift + echo "$WPA_SUP_PNAME: $@" >/dev/stderr + ;; + *) + ;; + esac +} + +##################################################################### +## validate daemon pid files +# Test daemon process ID files via start-stop-daemon with a signal 0 +# given the exec binary and pidfile location. +# +# $1 daemon +# $2 pidfile +# +# Returns true when pidfile exists, the process ID exists _and_ was +# created by the exec binary. +# +# If the test fails, but the pidfile exists, it is stale +# +test_daemon_pidfile () { + local DAEMON + local PIDFILE + + if [ -n "$1" ]; then + DAEMON="$1" + fi + + if [ -f "$2" ]; then + PIDFILE="$2" + fi + + if [ -n "$DAEMON" ] && [ -f "$PIDFILE" ]; then + if start-stop-daemon --stop --quiet --signal 0 \ + --exec "$DAEMON" --pidfile "$PIDFILE"; then + return 0 + else + rm -f "$PIDFILE" + return 1 + fi + else + return 1 + fi +} + +# validate wpa_supplicant pidfile +test_wpa_supplicant () { + test_daemon_pidfile "$WPA_SUP_BIN" "$WPA_SUP_PIDFILE" +} + +# validate wpa_cli pidfile +test_wpa_cli () { + test_daemon_pidfile "$WPA_CLI_BIN" "$WPA_CLI_PIDFILE" +} + +##################################################################### +## daemonize wpa_supplicant +# Start wpa_supplicant via start-stop-dameon with all required +# options. Will start if environment variable WPA_SUP_CONF is present +# +# Default options: +# -B dameonize/background process +# -D driver backend ('wext' if none given) +# -P process ID file +# -C path to ctrl_interface socket directory +# -s log to syslog +# +# Conditional options: +# -c configuration file +# -W wait for wpa_cli to attach to ctrl_interface socket +# -b bridge interface name +# -f path to log file +# +init_wpa_supplicant () { + [ -n "$WPA_SUP_CONF" ] || return 0 + + local WPA_SUP_OPTIONS + WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $WPA_IFACE" + + if [ -n "$WPA_ACTION_SCRIPT" ]; then + if [ -x "$WPA_ACTION_SCRIPT" ]; then + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -W" + wpa_msg verbose "wait for wpa_cli to attach" + else + wpa_msg stderr "action script \"$WPA_ACTION_SCRIPT\" not executable" + return 1 + fi + fi + + if [ -n "$IF_WPA_BRIDGE" ]; then + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -b $IF_WPA_BRIDGE" + wpa_msg verbose "wpa-bridge $IF_WPA_BRIDGE" + fi + + if [ -n "$IF_WPA_DRIVER" ]; then + wpa_msg verbose "wpa-driver $IF_WPA_DRIVER" + case "$IF_WPA_DRIVER" in + hostap|ipw|madwifi|ndiswrapper) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -D nl80211,wext" + wpa_msg stderr "\"$IF_WPA_DRIVER\" wpa-driver is unsupported" + wpa_msg stderr "using \"nl80211,wext\" wpa-driver instead ..." + ;; + *) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -D $IF_WPA_DRIVER" + ;; + esac + else + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -D wext" + wpa_msg verbose "wpa-driver wext (default)" + fi + + if [ -n "$IF_WPA_DEBUG_LEVEL" ]; then + case "$IF_WPA_DEBUG_LEVEL" in + 3) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -t -ddd" + ;; + 2) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -t -dd" + ;; + 1) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -t -d" + ;; + 0) + # wpa_supplicant default verbosity + ;; + -1) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -q" + ;; + -2) + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -qq" + ;; + esac + wpa_msg verbose "using debug level: $IF_WPA_DEBUG_LEVEL" + fi + + if [ -n "$IF_WPA_LOGFILE" ]; then + # custom log file + WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -f $IF_WPA_LOGFILE" + WPA_SUP_LOGFILE="$IF_WPA_LOGFILE" + wpa_msg verbose "logging to $IF_WPA_LOGFILE" + fi + + wpa_msg verbose "$WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF" + + start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \ + --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \ + -- $WPA_SUP_OPTIONS $WPA_SUP_CONF + + if [ "$?" -ne 0 ]; then + wpa_msg stderr "$WPA_SUP_BIN daemon failed to start" + return 1 + fi + + if [ -n "$WPA_SUP_OMIT_PIDFILE" ]; then + wpa_msg verbose "creating sendsigs omission pidfile: $WPA_SUP_OMIT_PIDFILE" + cat "$WPA_SUP_PIDFILE" > "$WPA_SUP_OMIT_PIDFILE" + fi +} + +##################################################################### +## stop wpa_supplicant process +# Kill wpa_supplicant via start-stop-daemon, given the location of +# the pidfile or ctrl_interface socket path and interface name +# +kill_wpa_supplicant () { + test_wpa_supplicant || return 0 + + wpa_msg verbose "terminating $WPA_SUP_PNAME daemon via pidfile $WPA_SUP_PIDFILE" + + start-stop-daemon --stop --oknodo $DAEMON_VERBOSITY \ + --exec $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE + + if [ -f "$WPA_SUP_PIDFILE" ]; then + rm -f "$WPA_SUP_PIDFILE" + fi + + if [ -f "$WPA_SUP_OMIT_PIDFILE" ]; then + wpa_msg verbose "removing $WPA_SUP_OMIT_PIDFILE" + rm -f "$WPA_SUP_OMIT_PIDFILE" + fi +} + +##################################################################### +## reload wpa_supplicant process +# Sending a HUP signal causes wpa_supplicant to reparse its +# configuration file +# +reload_wpa_supplicant () { + if test_wpa_supplicant; then + wpa_msg verbose "reloading wpa_supplicant configuration file via HUP signal" + start-stop-daemon --stop --signal HUP \ + --name "$WPA_SUP_PNAME" --pidfile "$WPA_SUP_PIDFILE" + else + wpa_msg verbose "cannot $WPA_ACTION, $WPA_SUP_PIDFILE does not exist" + fi +} + +##################################################################### +## daemonize wpa_cli and action script +# If environment variable WPA_ACTION_SCRIPT is present, wpa_cli will +# be spawned via start-stop-daemon +# +# Required options: +# -a action script => wpa_action +# -P process ID file +# -B background process +# +init_wpa_cli () { + HACK_WPA_ACTION_SCRIPT="/sbin/wpa_action" + [ -n "$HACK_WPA_ACTION_SCRIPT" ] || return 0 + + local WPA_CLI_OPTIONS + WPA_CLI_OPTIONS="-B -P $WPA_CLI_PIDFILE -i $WPA_IFACE" + + wpa_msg verbose "$WPA_CLI_BIN $WPA_CLI_OPTIONS -p $WPA_CTRL_DIR -a $HACK_WPA_ACTION_SCRIPT" + + start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \ + --name $WPA_CLI_PNAME --startas $WPA_CLI_BIN --pidfile $WPA_CLI_PIDFILE \ + -- $WPA_CLI_OPTIONS -p $WPA_CTRL_DIR -a $HACK_WPA_ACTION_SCRIPT + + if [ "$?" -ne 0 ]; then + wpa_msg stderr "$WPA_CLI_BIN daemon failed to start" + return 1 + fi +} + +##################################################################### +## stop wpa_cli process +# Kill wpa_cli via start-stop-daemon, given the location of the +# pidfile +# +kill_wpa_cli () { + test_wpa_cli || return 0 + + wpa_msg verbose "terminating $WPA_CLI_PNAME daemon via pidfile $WPA_CLI_PIDFILE" + + start-stop-daemon --stop --oknodo $DAEMON_VERBOSITY \ + --exec $WPA_CLI_BIN --pidfile $WPA_CLI_PIDFILE + + if [ -f "$WPA_CLI_PIDFILE" ]; then + rm -f "$WPA_CLI_PIDFILE" + fi + + if [ -f "$WPA_CLI_TIMESTAMP" ]; then + rm -f "$WPA_CLI_TIMESTAMP" + fi + + if [ -L "$WPA_CLI_IFUPDOWN" ]; then + rm -f "$WPA_CLI_IFUPDOWN" + fi +} + +##################################################################### +## higher level wpa_cli wrapper for variable and set_network commands +# wpa_cli_do [set_network variable] +# +# $1 envorinment variable +# $2 data type of variable {raw|ascii} +# $3 wpa_cli variable, if $3 is set_network, shift and take +# set_network subvariable +# $4 wpa-* string as it would appear in interfaces file, enhances +# verbose messages +# +wpa_cli_do () { + if [ -z "$1" ]; then + return 0 + fi + + local WPACLISET_VALUE + local WPACLISET_VARIABLE + local WPACLISET_DESC + + case "$2" in + ascii) + # Double quote + WPACLISET_VALUE="\"$1\"" + ;; + raw|*) + # Provide raw value + WPACLISET_VALUE="$1" + ;; + esac + + case "$3" in + set_network) + if [ -z "$WPA_ID" ]; then + return 1 + fi + shift + WPACLISET_VARIABLE="set_network $WPA_ID $3" + ;; + *) + WPACLISET_VARIABLE="$3" + ;; + esac + + case "$4" in + *-psk|*-passphrase|*-passwd*|*-wep-key*) + WPACLISET_DESC="$4 *****" + ;; + *) + WPACLISET_DESC="$4 $WPACLISET_VALUE" + ;; + esac + + wpa_msg action "$WPACLISET_DESC" + + wpa_cli $WPACLISET_VARIABLE "$WPACLISET_VALUE" >$TO_NULL + + if [ "$?" -ne 0 ]; then + wpa_msg stderr "$WPACLISET_DESC failed!" + fi +} + +##################################################################### +## check value data type in plaintext or hex +# returns 0 if input consists of hexadecimal digits only, 1 otherwise +# +ishex () { + if [ -z "$1" ]; then + return 0 + fi + + case "$1" in + *[!0-9a-fA-F]*) + # plaintext + return 1 + ;; + *) + # hexadecimal + return 0 + ;; + esac +} + +##################################################################### +## sanity check and set psk|passphrase +# Warn about strange psk|passphrase values +# +# $1 psk or passphrase value +# +# If psk is surrounded by quotes strip them. +# +# If psk contains all hexadecimal characters and string length is 64: +# is 256bit hexadecimal +# else: +# is plaintext +# +# plaintext passphrases must be 8 - 63 characters in length +# 256-bit hexadecimal key must be 64 characters in length +# +wpa_key_check_and_set () { + if [ "$#" -ne 3 ]; then + return 0 + fi + + local KEY + local KEY_LEN + local KEY_TYPE + local ENC_TYPE + + case "$1" in + '"'*'"') + # Strip surrounding quotation marks + KEY=$(echo -n "$1" | sed 's/^"//;s/"$//') + ;; + *) + KEY="$1" + ;; + esac + + KEY_LEN="${#KEY}" + + case "$2" in + wep_key*) + ENC_TYPE="WEP" + ;; + psk) + ENC_TYPE="WPA" + ;; + *) + return 0 + ;; + esac + + if [ "$ENC_TYPE" = "WEP" ]; then + if ishex "$KEY"; then + case "$KEY_LEN" in + 10|26|32|58) + # 64/128/152/256-bit WEP + KEY_TYPE="raw" + ;; + *) + KEY_TYPE="ascii" + ;; + esac + else + KEY_TYPE="ascii" + fi + + if [ "$KEY_TYPE" = "ascii" ]; then + if [ "$KEY_LEN" -lt "5" ]; then + wpa_msg stderr "WARNING: plaintext or ascii WEP key has $KEY_LEN characters," + wpa_msg stderr "it must have at least 5 to be valid." + fi + fi + elif [ "$ENC_TYPE" = "WPA" ]; then + if ishex "$KEY"; then + case "$KEY_LEN" in + 64) + # 256-bit WPA + KEY_TYPE="raw" + ;; + *) + KEY_TYPE="ascii" + ;; + esac + else + KEY_TYPE="ascii" + fi + + if [ "$KEY_TYPE" = "ascii" ]; then + if [ "$KEY_LEN" -lt "8" ] || [ "$KEY_LEN" -gt "63" ]; then + wpa_msg stderr "WARNING: plaintext or ascii WPA key has $KEY_LEN characters," + wpa_msg stderr "it must have between 8 and 63 to be valid." + wpa_msg stderr "If the WPA key is a 256-bit hexadecimal key, it must have" + wpa_msg stderr "exactly 64 characters." + fi + fi + fi + + wpa_cli_do "$KEY" "$KEY_TYPE" set_network "$2" "$3" +} + +##################################################################### +## formulate a usable configuration from interfaces(5) wpa- lines +# A series of wpa_cli commands corresponding to environment variables +# created as a result of wpa- lines in an interfaces stanza. +# +# NB: no-act when roaming daemon is used (to avoid prematurely +# attaching to ctrl_interface socket) +# +conf_wpa_supplicant () { + if [ -n "$WPA_ACTION_SCRIPT" ]; then + return 0 + fi + + if [ "$IF_WPA_DRIVER" = "wired" ]; then + IF_WPA_AP_SCAN="0" + wpa_msg verbose "forcing ap_scan=0 (required for wired IEEE8021X auth)" + fi + + if [ -n "$IF_WPA_ESSID" ]; then + # #403316, be similar to wireless tools + IF_WPA_SSID="$IF_WPA_ESSID" + fi + + wpa_cli_do "$IF_WPA_AP_SCAN" raw \ + ap_scan wpa-ap-scan + + wpa_cli_do "$IF_WPA_PREAUTHENTICATE" raw \ + preauthenticate wpa-preauthenticate + + if [ -n "$IF_WPA_SSID" ] || [ "$IF_WPA_DRIVER" = "wired" ] || \ + [ -n "$IF_WPA_KEY_MGMT" ]; then + + case "$IF_WPA_SSID" in + '"'*'"') + IF_WPA_SSID=$(echo -n "$IF_WPA_SSID" | sed 's/^"//;s/"$//') + ;; + *) + ;; + esac + + WPA_ID=$(wpa_cli add_network) + + wpa_msg verbose "configuring network block -- $WPA_ID" + + wpa_cli_do "$IF_WPA_SSID" ascii \ + set_network ssid wpa-ssid + + wpa_cli_do "$IF_WPA_PRIORITY" raw \ + set_network priority wpa-priority + + wpa_cli_do "$IF_WPA_BSSID" raw \ + set_network bssid wpa-bssid + + if [ -s "$IF_WPA_PSK_FILE" ]; then + IF_WPA_PSK=$(cat "$IF_WPA_PSK_FILE") + fi + + # remain compat with wpa-passphrase-file + if [ -s "$IF_WPA_PASSPHRASE_FILE" ]; then + IF_WPA_PSK=$(cat "$IF_WPA_PASSPHRASE_FILE") + fi + + # remain compat with wpa-passphrase + if [ -n "$IF_WPA_PASSPHRASE" ]; then + IF_WPA_PSK="$IF_WPA_PASSPHRASE" + fi + + if [ -n "$IF_WPA_PSK" ]; then + wpa_key_check_and_set "$IF_WPA_PSK" \ + psk wpa-psk + fi + + wpa_cli_do "$IF_WPA_PAIRWISE" raw \ + set_network pairwise wpa-pairwise + + wpa_cli_do "$IF_WPA_GROUP" raw \ + set_network group wpa-group + + wpa_cli_do "$IF_WPA_MODE" raw \ + set_network mode wpa-mode + + wpa_cli_do "$IF_WPA_FREQUENCY" raw \ + set_network frequency wpa-frequency + + wpa_cli_do "$IF_WPA_SCAN_FREQ" raw \ + set_network scan_freq wpa-scan-freq + + wpa_cli_do "$IF_WPA_FREQ_LIST" raw \ + set_network freq_list wpa-freq-list + + wpa_cli_do "$IF_WPA_KEY_MGMT" raw \ + set_network key_mgmt wpa-key-mgmt + + wpa_cli_do "$IF_WPA_PROTO" raw \ + set_network proto wpa-proto + + wpa_cli_do "$IF_WPA_AUTH_ALG" raw \ + set_network auth_alg wpa-auth-alg + + wpa_cli_do "$IF_WPA_SCAN_SSID" raw \ + set_network scan_ssid wpa-scan-ssid + + wpa_cli_do "$IF_WPA_IDENTITY" ascii \ + set_network identity wpa-identity + + wpa_cli_do "$IF_WPA_ANONYMOUS_IDENTITY" ascii \ + set_network anonymous_identity wpa-anonymous-identity + + wpa_cli_do "$IF_WPA_EAP" raw \ + set_network eap wpa-eap + + wpa_cli_do "$IF_WPA_EAPPSK" raw \ + set_network eappsk wpa-eappsk + + wpa_cli_do "$IF_WPA_NAI" ascii \ + set_network nai wpa-nai + + wpa_cli_do "$IF_WPA_PASSWORD" ascii \ + set_network password wpa-password + + wpa_cli_do "$IF_WPA_CA_CERT" ascii \ + set_network ca_cert wpa-ca-cert + + wpa_cli_do "$IF_WPA_CA_PATH" ascii \ + set_network ca_path wpa-ca-path + + wpa_cli_do "$IF_WPA_CLIENT_CERT" ascii \ + set_network client_cert wpa-client-cert + + wpa_cli_do "$IF_WPA_PRIVATE_KEY" ascii \ + set_network private_key wpa-private-key + + wpa_cli_do "$IF_WPA_PRIVATE_KEY_PASSWD" ascii \ + set_network private_key_passwd wpa-private-key-passwd + + wpa_cli_do "$IF_WPA_DH_FILE" ascii \ + set_network dh_file wpa-dh-file + + wpa_cli_do "$IF_WPA_SUBJECT_MATCH" ascii \ + set_network subject_match wpa-subject-match + + wpa_cli_do "$IF_WPA_ALTSUBJECT_MATCH" ascii \ + set_network altsubject_match wpa-altsubject-match + + wpa_cli_do "$IF_WPA_CA_CERT2" ascii \ + set_network ca_cert2 wpa-ca-cert2 + + wpa_cli_do "$IF_WPA_CA_PATH2" ascii \ + set_network ca_path2 wpa-ca-path2 + + wpa_cli_do "$IF_WPA_CLIENT_CERT2" ascii \ + set_network client_cert2 wpa-client-cert2 + + wpa_cli_do "$IF_WPA_PRIVATE_KEY2" ascii \ + set_network private_key2 wpa-private-key2 + + wpa_cli_do "$IF_WPA_PRIVATE_KEY_PASSWD2" ascii \ + set_network private_key_passwd2 wpa-private-key-passwd2 + + wpa_cli_do "$IF_WPA_DH_FILE2" ascii \ + set_network dh_file2 wpa-dh-file2 + + wpa_cli_do "$IF_WPA_SUBJECT_MATCH2" ascii \ + set_network subject_match2 wpa-subject-match2 + + wpa_cli_do "$IF_WPA_ALTSUBJECT_MATCH2" ascii \ + set_network altsubject_match2 wpa-altsubject-match2 + + wpa_cli_do "$IF_WPA_EAP_METHODS" raw \ + set_network eap_methods wpa-eap-methods + + wpa_cli_do "$IF_WPA_PHASE1" ascii \ + set_network phase1 wpa-phase1 + + wpa_cli_do "$IF_WPA_PHASE2" ascii \ + set_network phase2 wpa-phase2 + + wpa_cli_do "$IF_WPA_PCSC" raw \ + set_network pcsc wpa-pcsc + + wpa_cli_do "$IF_WPA_PIN" ascii \ + set_network pin wpa-pin + + wpa_cli_do "$IF_WPA_ENGINE" raw \ + set_network engine wpa-engine + + wpa_cli_do "$IF_WPA_ENGINE_ID" ascii \ + set_network engine_id wpa-engine-id + + wpa_cli_do "$IF_WPA_KEY_ID" ascii \ + set_network key_id wpa-key-id + + wpa_cli_do "$IF_WPA_EAPOL_FLAGS" raw \ + set_network eapol_flags wpa-eapol-flags + + if [ -n "$IF_WPA_WEP_KEY0" ]; then + wpa_key_check_and_set "$IF_WPA_WEP_KEY0" \ + wep_key0 wpa-wep-key0 + fi + + if [ -n "$IF_WPA_WEP_KEY1" ]; then + wpa_key_check_and_set "$IF_WPA_WEP_KEY1" \ + wep_key1 wpa-wep-key1 + fi + + if [ -n "$IF_WPA_WEP_KEY2" ]; then + wpa_key_check_and_set "$IF_WPA_WEP_KEY2" \ + wep_key2 wpa-wep-key2 + fi + + if [ -n "$IF_WPA_WEP_KEY3" ]; then + wpa_key_check_and_set "$IF_WPA_WEP_KEY3" \ + wep_key3 wpa-wep-key3 + fi + + wpa_cli_do "$IF_WPA_WEP_TX_KEYIDX" raw \ + set_network wep_tx_keyidx wpa-wep-tx-keyidx + + wpa_cli_do "$IF_WPA_PROACTIVE_KEY_CACHING" raw \ + set_network proactive_key_caching wpa-proactive-key-caching + + wpa_cli_do "$IF_WPA_PAC_FILE" ascii \ + set_network pac_file wpa-pac-file + + wpa_cli_do "$IF_WPA_PEERKEY" raw \ + set_network peerkey wpa-peerkey + + wpa_cli_do "$IF_FRAGMENT_SIZE" raw \ + set_network fragment_size wpa-fragment-size + + wpa_cli_do "$IF_WPA_ID_STR" ascii \ + set_network id_str wpa-id-str + + wpa_cli_do "$WPA_ID" raw \ + enable_network "enabling network block" + fi +} + +##################################################################### +## Log wpa_cli environment variables +wpa_log_env () { + wpa_msg log "WPA_IFACE=$WPA_IFACE WPA_ACTION=$WPA_ACTION" + wpa_msg log "WPA_ID=$WPA_ID WPA_ID_STR=$WPA_ID_STR WPA_CTRL_DIR=$WPA_CTRL_DIR" +} + +##################################################################### +## hysteresis checking +# Networking tools such as dhcp clients used with ifupdown can +# synthesize artificial ACTION events, particuarly just after a +# DISCONNECTED/CONNECTED events are experienced in quick succession. +# This can lead to infinite event loops, and in extreme cases has the +# potential to cause system instability. +# +wpa_hysteresis_event () { + echo "$(date +%s)" > "$WPA_CLI_TIMESTAMP" 2>/dev/null +} + +wpa_hysteresis_check () { + if [ -f "$WPA_CLI_TIMESTAMP" ]; then + local TIME + local TIMESTAMP + local TIMEWAIT + TIME=$(date +%s) + # current time minus 4 second event buffer + TIMEWAIT=$(($TIME-4)) + # get time of last event + TIMESTAMP=$(cat $WPA_CLI_TIMESTAMP) + # compare values, allowing new action to be processed + # only if last action was more than 4 seconds ago + if [ "$TIMEWAIT" -le "$TIMESTAMP" ]; then + wpa_msg log "$WPA_ACTION event blocked by hysteresis check" + return 1 + fi + fi + + return 0 +} + +##################################################################### +## ifupdown locking functions +# A collection of rudimentary locking functions to lock ifup/ifdown +# actions. +# + +ifupdown_lock () { + ln -s lock "$WPA_CLI_IFUPDOWN" +} + +ifupdown_locked () { + [ -L "$WPA_CLI_IFUPDOWN" ] && return 0 + + return 1 +} + +ifupdown_unlock () { + rm -f "$WPA_CLI_IFUPDOWN" +} + +##################################################################### +## apply mapping logic and ifup logical interface +# Apply mapping logic via id_str or external mapping script, check +# state of IFACE with respect to ifupdown and ifup logical interaface +# +ifup () { + local INTERFACES_FILE + local IFSTATE_FILE + local IFUP_RETVAL + local WPA_LOGICAL_IFACE + + if [ -e /etc/network/interfaces ]; then + INTERFACES_FILE="/etc/network/interfaces" + else + wpa_msg log "/etc/network/interfaces does not exist, $WPA_IFACE will not be configured" + return 1 + fi + + if [ -e /etc/network/run/ifstate ]; then + # debian's ifupdown + IFSTATE_FILE="/etc/network/run/ifstate" + elif [ -e /var/run/network/ifstate ]; then + # ubuntu's + IFSTATE_FILE="/var/run/network/ifstate" + else + unset IFSTATE_FILE + fi + + if [ -z "$IF_WPA_MAPPING_SCRIPT_PRIORITY" ] && [ -n "$WPA_ID_STR" ]; then + WPA_LOGICAL_IFACE="$WPA_ID_STR" + fi + + if [ -z "$WPA_LOGICAL_IFACE" ] && [ -n "$IF_WPA_MAPPING_SCRIPT" ]; then + local WPA_MAP_STDIN + + WPA_MAP_STDIN=$(set | sed -n 's/^\(IF_WPA_MAP[0-9]*\)=.*/echo \$\1/p') + + if [ -n "$WPA_MAP_STDIN" ]; then + WPA_LOGICAL_IFACE=$(eval "$WPA_MAP_STDIN" | "$IF_WPA_MAPPING_SCRIPT" "$WPA_IFACE") + else + WPA_LOGICAL_IFACE=$("$IF_WPA_MAPPING_SCRIPT" "$WPA_IFACE") + fi + + if [ -n "$WPA_LOGICAL_IFACE" ]; then + wpa_msg log "mapping script result: $WPA_LOGICAL_IFACE" + else + wpa_msg log "mapping script failed." + fi + fi + + if [ -z "$WPA_LOGICAL_IFACE" ]; then + if [ -n "$IF_WPA_ROAM_DEFAULT_IFACE" ]; then + WPA_LOGICAL_IFACE="$IF_WPA_ROAM_DEFAULT_IFACE" + else + WPA_LOGICAL_IFACE="default" + fi + fi + + if [ -n "$WPA_LOGICAL_IFACE" ]; then + if egrep -q "^iface[[:space:]]+${WPA_LOGICAL_IFACE}[[:space:]]+inet" "$INTERFACES_FILE"; then + : # logical network is defined + else + wpa_msg log "network settings not defined for $WPA_LOGICAL_IFACE in $INTERFACES_FILE" + WPA_LOGICAL_IFACE="default" + fi + + wpa_msg log "ifup $WPA_IFACE=$WPA_LOGICAL_IFACE" + + ifupdown_lock + + if [ -n "$IFSTATE_FILE" ] && grep -q "^$WPA_IFACE=$WPA_IFACE" "$IFSTATE_FILE"; then + # Force settings over the unconfigured "master" IFACE + /sbin/ifup -v --force "$WPA_IFACE=$WPA_LOGICAL_IFACE" + else + /sbin/ifup -v "$WPA_IFACE=$WPA_LOGICAL_IFACE" + fi + IFUP_RETVAL="$?" + + ifupdown_unlock + fi + + wpa_msg log "creating sendsigs omission pidfile: $WPA_SUP_OMIT_PIDFILE" + cat "$WPA_SUP_PIDFILE" > "$WPA_SUP_OMIT_PIDFILE" + + return "$IFUP_RETVAL" +} + +##################################################################### +## ifdown IFACE +# Check IFACE state and ifdown as requested. +# +ifdown () { + wpa_msg log "ifdown $WPA_IFACE" + + ifupdown_lock + + /sbin/ifdown -v "$WPA_IFACE" + + ifupdown_unlock + + wpa_msg log "removing sendsigs omission pidfile: $WPA_SUP_OMIT_PIDFILE" + rm -f "$WPA_SUP_OMIT_PIDFILE" +} + +##################################################################### +## keep IFACE scanning +# After ifdown, the IFACE may be left "down", and inhibits +# wpa_supplicant's ability to continue roaming. +# +# NB: use iproute if present, flushing the IFACE first +# +if_post_down_up () { + if [ -x /bin/ip ]; then + ip addr flush dev "$WPA_IFACE" 2>/dev/null + ip link set "$WPA_IFACE" up + else + ifconfig "$WPA_IFACE" up + fi +} diff --git a/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/ifupdown.sh b/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/ifupdown.sh new file mode 100755 index 0000000000..6c751b2997 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/etc/wpa_supplicant/ifupdown.sh @@ -0,0 +1,175 @@ +#!/bin/sh + +##################################################################### +## Purpose +# This file is executed by ifupdown in pre-up, post-up, pre-down and +# post-down phases of network interface configuration. It allows +# ifup(8), and ifdown(8) to manage wpa_supplicant(8) and wpa_cli(8) +# processes running in daemon mode. +# +# /etc/wpa_supplicant/functions.sh is sourced by this file. +# +# This file is provided by the wpasupplicant package. + +##################################################################### +# Copyright (C) 2006 - 2009 Debian/Ubuntu wpasupplicant Maintainers +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# On Debian GNU/Linux systems, the text of the GPL license, +# version 2, can be found in /usr/share/common-licenses/GPL-2. + +case $0 in + *if-up.d*) PHASE="up";; + *if-down.d*) PHASE="down";; + *if-pre-up.d*) PHASE="pre-up";; + *if-post-down.d*) PHASE="post-down";; +esac + +if [ -n "$IF_WPA_MAINT_DEBUG" ]; then + set -x +fi + +# quit if we're called for the loopback +if [ "$IFACE" = lo ]; then + exit 0 +fi + +# allow wpa_supplicant interface to be specified via wpa-iface +# useful for starting wpa_supplicant on one interface of a bridge +if [ -n "$IF_WPA_IFACE" ]; then + WPA_IFACE="$IF_WPA_IFACE" +else + WPA_IFACE="$IFACE" +fi + +# source functions +if [ -f /etc/wpa_supplicant/functions.sh ]; then + . /etc/wpa_supplicant/functions.sh +else + exit 0 +fi + +# quit if executables are not installed +if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then + exit 0 +fi + +do_start () { + if test_wpa_cli; then + # if wpa_action is active for this IFACE, do nothing + ifupdown_locked && exit 0 + + # if the administrator is calling ifup, say something useful + if [ "$PHASE" = "pre-up" ]; then + wpa_msg stderr "wpa_action is managing ifup/ifdown state of $WPA_IFACE" + wpa_msg stderr "execute \`ifdown --force $WPA_IFACE' to stop wpa_action" + fi + exit 1 + elif ! set | grep -q "^IF_WPA"; then + # no wpa- option defined for IFACE, do nothing + exit 0 + fi + + # ensure stale ifupdown_lock marker is purged + ifupdown_unlock + + # preliminary sanity checks for roaming daemon + if [ -n "$IF_WPA_ROAM" ]; then + if [ "$METHOD" != "manual" ]; then + wpa_msg stderr "wpa-roam can only be used with the \"manual\" inet METHOD" + exit 1 + fi + if [ -n "$IF_WPA_MAPPING_SCRIPT" ]; then + if ! type "$IF_WPA_MAPPING_SCRIPT" >/dev/null; then + wpa_msg stderr "wpa-mapping-script \"$IF_WPA_MAPPING_SCRIPT\" is not valid" + exit 1 + fi + fi + if [ -n "$IF_WPA_MAPPING_SCRIPT_PRIORITY" ] && [ -z "$IF_WPA_MAPPING_SCRIPT" ]; then + wpa_msg stderr "\"wpa-mapping-script-priority 1\" is invalid without a wpa-mapping-script" + exit 1 + fi + IF_WPA_CONF="$IF_WPA_ROAM" + WPA_ACTION_SCRIPT="/sbin/wpa_action" + fi + + # master function; determines if ifupdown.sh should do something or not + if [ -n "$IF_WPA_CONF" ] && [ "$IF_WPA_CONF" != "managed" ]; then + if [ ! -s "$IF_WPA_CONF" ]; then + wpa_msg stderr "cannot read contents of $IF_WPA_CONF" + exit 1 + fi + WPA_SUP_CONF_CTRL_DIR=$(sed -n -e 's/[[:space:]]*#.*//g' -e 's/[[:space:]]\+.*$//g' \ + -e 's/^ctrl_interface=\(DIR=\)\?\(.*\)/\2/p' "$IF_WPA_CONF") + if [ -n "$WPA_SUP_CONF_CTRL_DIR" ]; then + WPA_CTRL_DIR="$WPA_SUP_CONF_CTRL_DIR" + WPA_SUP_CONF="-c $IF_WPA_CONF" + else + # specify the default ctrl_interface since none was defined in + # the given IF_WPA_CONF + WPA_SUP_CONF="-c $IF_WPA_CONF -C $WPA_CTRL_DIR" + fi + else + # specify the default ctrl_interface + WPA_SUP_CONF="-C $WPA_CTRL_DIR" + fi +} + +do_stop () { + if test_wpa_cli; then + # if wpa_action is active for this IFACE and calling ifdown, + # do nothing + ifupdown_locked && exit 0 + elif test_wpa_supplicant; then + # wpa_supplicant process exists for this IFACE, but wpa_cli + # process does not. Allow stop mode to kill this process. + : + else + exit 0 + fi +} + +case "$MODE" in + start) + do_start + case "$PHASE" in + pre-up) + kill_wpa_supplicant + init_wpa_supplicant || exit 1 + conf_wpa_supplicant || { kill_wpa_supplicant; exit 1; } + ;; + up) + init_wpa_cli || { kill_wpa_supplicant; exit 1; } + ;; + esac + ;; + + stop) + do_stop + case "$PHASE" in + down) + kill_wpa_cli + ;; + post-down) + kill_wpa_supplicant + ;; + esac + ;; + + *) + wpa_msg stderr "unknown mode: \"$MODE\"" + exit 1 + ;; +esac + +exit 0 diff --git a/board/amlogic/f16ref/skeleton/lib/.empty b/board/amlogic/f16ref/skeleton/lib/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/proc/.empty b/board/amlogic/f16ref/skeleton/proc/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/recovery/.empty b/board/amlogic/f16ref/skeleton/recovery/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/root/.empty b/board/amlogic/f16ref/skeleton/root/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/sbin/wpa_action b/board/amlogic/f16ref/skeleton/sbin/wpa_action new file mode 100755 index 0000000000..038d6eea06 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/sbin/wpa_action @@ -0,0 +1,35 @@ +#!/bin/sh + +# network interface +WPA_IFACE="$1" +# [CONNECTED|DISCONNECTED] +WPA_ACTION="$2" + +if [ -f /etc/wpa_supplicant/functions.sh ]; then + . /etc/wpa_supplicant/functions.sh +else + exit 0 +fi + +case "$WPA_ACTION" in + "CONNECTED") + wpa_log_env + wpa_hysteresis_check || exit 1 + wpa_hysteresis_event + [ -f /var/run/udhcpc.$WPA_IFACE.pid] && killall udhcpc + /sbin/udhcpc -b -i $WPA_IFACE -p /var/run/udhcpc.$WPA_IFACE.pid + ;; + + "DISCONNECTED") + wpa_log_env + wpa_hysteresis_check || exit 1 + /sbin/udhcpc -b -i $WPA_IFACE -p /var/run/udhcpc.$WPA_IFACE.pid + ;; + + *) + echo "Unknown action: \"$WPA_ACTION\"" + exit 1 + ;; +esac + +exit 0 diff --git a/board/amlogic/f16ref/skeleton/sys/.empty b/board/amlogic/f16ref/skeleton/sys/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/tmp/.empty b/board/amlogic/f16ref/skeleton/tmp/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/.empty b/board/amlogic/f16ref/skeleton/usr/sbin/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/REAMDME.txt b/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/REAMDME.txt new file mode 100644 index 0000000000..57028df9fa --- /dev/null +++ b/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/REAMDME.txt @@ -0,0 +1,6 @@ +flash_erase Ö»²ÁÐ´Ä³Ò»Çø¼äµÄ²¿·ÖµØÖ· +flash_eraseall ²ÁÐ´Ä³Ò»Çø¼äµÄÈ«²¿ +µ«ËûÃDz»Ö§³Ö´óÓÚ4GBµÄÇø¼ä +ËùÒÔÔö¼ÓÁËÁíÍâºó׺Ϊ64bitµÄflash_erase_64bit¹¤¾ß£» +Èç¹ûҪȫ²¿²Áд¼´Íê³Éflash_eraseallµÄ¹¦ÄÜ,ÏÖÔڵĸñʽÊÇflash_eraseall_64bit /dev/mtdx 0 0 +nandwrite_lpÊÇÔö¼ÓÁ˶ÔmicronоƬµÄÖ§³Ö£¬ËûµÄÃüÁîÐвÎÊý±ØÐë¼Ó-a; \ No newline at end of file diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/flash_eraseall b/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/flash_eraseall new file mode 100644 index 0000000000000000000000000000000000000000..0b8a8ad5a0225be42ad5cdb6d86a5dbd2fbda1f5 GIT binary patch literal 9808 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 VNrC~v89QgY73`Xv3UH_0e*imEJ4FBh literal 0 HcmV?d00001 diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/flash_eraseall_64bit b/board/amlogic/f16ref/skeleton/usr/sbin/MID_andorid/flash_eraseall_64bit new file mode 100644 index 0000000000000000000000000000000000000000..f8d5d8d92a02ec38080de01b0c0b59c4813695be GIT binary patch literal 30416 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≶&SMG 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 RH>b;qbfQS_dQ4MK_FtVe|BL_t literal 0 HcmV?d00001 diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_erase_64bit b/board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_erase_64bit new file mode 100644 index 0000000000000000000000000000000000000000..70417614c448208c014ac283ea3cd24a5152860b GIT binary patch literal 73622 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 literal 0 HcmV?d00001 diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_eraseall b/board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/flash_eraseall new file mode 100644 index 0000000000000000000000000000000000000000..31a9844176ee7a727708556d7b8920e67b8cf63e GIT binary patch literal 10832 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 0 0\`; please use it" 1>&2 +[ $# -ne 0 ] && set -- "$@" 0 0 +exec flash_erase "$@" diff --git a/board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/nandwrite_lp b/board/amlogic/f16ref/skeleton/usr/sbin/arm_linux_64bitflasheraseall/nandwrite_lp new file mode 100644 index 0000000000000000000000000000000000000000..a691150f9cb7d7939236c425c67ce5b304794c67 GIT binary patch literal 19327 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 F{{bAdeFXpj literal 0 HcmV?d00001 diff --git a/board/amlogic/f16ref/skeleton/usr/share/udhcpc/default.script b/board/amlogic/f16ref/skeleton/usr/share/udhcpc/default.script new file mode 100755 index 0000000000..a52a7f8122 --- /dev/null +++ b/board/amlogic/f16ref/skeleton/usr/share/udhcpc/default.script @@ -0,0 +1,39 @@ +#!/bin/sh + +# udhcpc script edited by Tim Riker + +[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 + +RESOLV_CONF="/etc/resolv.conf" +[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" +[ -n "$subnet" ] && NETMASK="netmask $subnet" + +case "$1" in + deconfig) + /sbin/ifconfig $interface 0.0.0.0 + ;; + + renew|bound) + /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + + if [ -n "$router" ] ; then + echo "deleting routers" + while route del default gw 0.0.0.0 dev $interface ; do + : + done + + for i in $router ; do + route add default gw $i dev $interface + done + fi + + echo -n > $RESOLV_CONF + [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF + for i in $dns ; do + echo adding dns $i + echo nameserver $i >> $RESOLV_CONF + done + ;; +esac + +exit 0 diff --git a/board/amlogic/f16ref/skeleton/var/cache/.empty b/board/amlogic/f16ref/skeleton/var/cache/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/lib/pcmcia/.empty b/board/amlogic/f16ref/skeleton/var/lib/pcmcia/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/lock/.empty b/board/amlogic/f16ref/skeleton/var/lock/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/log/.empty b/board/amlogic/f16ref/skeleton/var/log/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/pcmcia/.empty b/board/amlogic/f16ref/skeleton/var/pcmcia/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/run/.empty b/board/amlogic/f16ref/skeleton/var/run/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/spool/.empty b/board/amlogic/f16ref/skeleton/var/spool/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/board/amlogic/f16ref/skeleton/var/tmp/.empty b/board/amlogic/f16ref/skeleton/var/tmp/.empty new file mode 100755 index 0000000000..e69de29bb2 diff --git a/configs/amlogic_f16ref-xbmc_defconfig b/configs/amlogic_f16ref-xbmc_defconfig index 23077788cd..1a9322ed4f 100644 --- a/configs/amlogic_f16ref-xbmc_defconfig +++ b/configs/amlogic_f16ref-xbmc_defconfig @@ -14,7 +14,7 @@ BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" BR2_TARGET_GENERIC_GETTY=y BR2_BUSYBOX_VERSION_1_17_X=y -BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/xios/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/f16ref/busybox.config" BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y BR2_PACKAGE_UBOOTAML=y BR2_PACKAGE_LIRC=y @@ -44,7 +44,7 @@ BR2_PACKAGE_WPA_SUPPLICANT_WPS=y BR2_PACKAGE_NANO=y BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV=y BR2_ROOTFS_SKELETON_CUSTOM=y -BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/xios/skeleton" +BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/f16ref/skeleton" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" From 0670eba391e3846f9f3494951c16b41af92fceb2 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 10:13:18 +0000 Subject: [PATCH 54/65] [f16ref] Remove XIOS splash from xbmc makefile, will include it to the xios skin later as seperate android update package --- package/thirdparty/xbmc/xbmc.mk | 5 ----- 1 file changed, 5 deletions(-) diff --git a/package/thirdparty/xbmc/xbmc.mk b/package/thirdparty/xbmc/xbmc.mk index b3bac74959..44becf4d59 100644 --- a/package/thirdparty/xbmc/xbmc.mk +++ b/package/thirdparty/xbmc/xbmc.mk @@ -55,10 +55,6 @@ define XBMC_INSTALL_ETC endef -define XBMC_INSTALL_SPLASH - cp -f package/thirdparty/xbmc/xios_splash.png $(TARGET_DIR)/usr/share/xbmc/media/Splash.png -endef - define XBMC_CLEAN_UNUSED_ADDONS rm -rf $(TARGET_DIR)/usr/share/xbmc/addons/screensaver.rsxs.plasma rm -rf $(TARGET_DIR)/usr/share/xbmc/addons/visualization.milkdrop @@ -78,7 +74,6 @@ endef XBMC_PRE_CONFIGURE_HOOKS += XBMC_BOOTSTRAP XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_INSTALL_ETC -XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_INSTALL_SPLASH XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_UNUSED_ADDONS XBMC_POST_INSTALL_TARGET_HOOKS += XBMC_CLEAN_CONFLUENCE_SKIN ifneq ($(BR2_ENABLE_DEBUG),y) From 689d08d9a34bece0c334dda0c4a07ad6b1b5eb91 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 10:14:44 +0000 Subject: [PATCH 55/65] [f16ref] Change hostname to amlogic --- board/amlogic/f16ref/skeleton/etc/hostname | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/amlogic/f16ref/skeleton/etc/hostname b/board/amlogic/f16ref/skeleton/etc/hostname index 4b2877f54f..ecef865001 100755 --- a/board/amlogic/f16ref/skeleton/etc/hostname +++ b/board/amlogic/f16ref/skeleton/etc/hostname @@ -1 +1 @@ -xios +amlogic From ea18df2782a8a608cc1b2d2100833ef724a5da97 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 10:31:42 +0000 Subject: [PATCH 56/65] [f16ref] Changed to IR NEC remote, still need to be mapped by someone --- .../thirdparty/xbmc/etc/xbmc/remote-lirc.conf | 118 ++++++++---------- package/thirdparty/xbmc/etc/xbmc/remote.conf | 118 ++++++++---------- 2 files changed, 110 insertions(+), 126 deletions(-) diff --git a/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf b/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf index 840ab6b49b..61b8725809 100644 --- a/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf +++ b/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf @@ -26,71 +26,63 @@ # reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE # reg_bit0_time set value for PREG_IR_DEC_BIT0_TIME #************************************************************************************************************* -# MYGICA NEC remote -factory_code = 0xBD020001 -work_mode = 1 -repeat_enable = 1 -release_delay = 150 +#amlogic NEC remote +fn_key_scancode = 0x00 +left_key_scancode = 0x51 +right_key_scancode = 0x50 +up_key_scancode = 0x16 +down_key_scancode = 0x1a +ok_key_scancode = 0x13 +pageup_key_scancode = 0x55 +pagedown_key_scancode = 0x54 + +factory_code = 0xfe010001 +work_mode = 1 +repeat_enable = 1 +release_delay = 150 debug_enable = 1 reg_control = 0xfbe40 key_begin - 0xd8 0 ;BROWER - 0xd4 0 ;SYM - 0x80 66 ;MUTE - 0xc6 0 ;PHOTO - 0xd5 0 ;MUSIC - 0xd1 0 ;MEDIA_RECORD - 0x86 0 ;BROWER - 0x90 111 ;DEL - 0x83 0 ;SYM - 0x92 2 ;NUM1 - 0x93 3 ;NUM2 - 0xcc 4 ;NUM3 - 0x8e 5 ;NUM4 - 0x8f 6 ;NUM5 - 0xc8 7 ;NUM6 - 0x8a 8 ;NUM7 - 0x8b 9 ;NUM8 - 0xc4 10 ;NUM9 - 0xd9 24 ;AT - 0x87 11 ;NUM0 - 0x82 46 ;COM - - 0xdd 115 ;VOL+ - 0x8c 114 ;VOL- - 0x9c 0 ;ZOOM_IN - 0x89 0 ;ZOOM_OUT - 0x9a 104 ;PAGE_UP - 0xcd 109 ;PAGE_DOWN - - 0x95 1 ;HOME - 0xc5 358 ;NOTIFICATION - - 0x99 105 ;LEFT - 0xca 103 ;UP - 0xc1 106 ;RIGHT - 0xd2 108 ;DOWN - 0xce 352 ;OK - 0xd6 369 ;MENU - 0xd0 158 ;BACK - 0x96 51 ;PAGELEFT - 0xc2 52 ;PAGERIGHT - 0xc3 19 ;DEL - 0x84 33 ;MEDIA_FAST_FORWARD - 0xda 51 ;MEDIA_REWIND - 0x88 25 ;MEDIA_STOP - 0xc7 52 ;MEDIA_FAST_FORWARD - 0x55 45 ;EXIT - 0x45 116 ;POWER -# 0x86 0x110 ;mouse left click -# 0x83 0x111 ;mouse right click. + 0x01 11 + 0x4e 2 + 0x0d 3 + 0x0c 4 + 0x4a 5 + 0x09 6 + 0x08 7 + 0x46 8 + 0x05 9 + 0x04 10 + 0x13 97 + 0x19 15 + 0x42 14 + 0x16 103 + 0x1a 108 + 0x51 105 + 0x50 106 + 0x11 102 + 0x18 104 + 0x10 109 + 0x4c 125 + 0x5a 119 + 0x59 122 + 0x52 128 + 0x58 123 + 0x54 120 + 0x55 121 + 0x40 116 + 0x41 113 + 0x45 130 + 0x49 134 + 0x0a 133 + 0x48 138 + 0x4d 137 + 0x0e 136 + 0x0f 135 + 0x43 132 + 0x03 127 + 0x06 139 + 0x44 140 + 0x00 63 key_end - -mouse_begin - 0x00 0xc6 ;mouse move up - 0x01 0xd1 ;mouse move down - 0x02 0xd5 ;mouse move left - 0x03 0x90 ;mouse move right -mouse_end - diff --git a/package/thirdparty/xbmc/etc/xbmc/remote.conf b/package/thirdparty/xbmc/etc/xbmc/remote.conf index 322307d216..61b8725809 100644 --- a/package/thirdparty/xbmc/etc/xbmc/remote.conf +++ b/package/thirdparty/xbmc/etc/xbmc/remote.conf @@ -26,71 +26,63 @@ # reg_repeat_leader set value for PREG_IR_DEC_REPEAT_IDLE # reg_bit0_time set value for PREG_IR_DEC_BIT0_TIME #************************************************************************************************************* -# MYGICA NEC remote -factory_code = 0xBD020001 -work_mode = 1 -repeat_enable = 1 -release_delay = 150 +#amlogic NEC remote +fn_key_scancode = 0x00 +left_key_scancode = 0x51 +right_key_scancode = 0x50 +up_key_scancode = 0x16 +down_key_scancode = 0x1a +ok_key_scancode = 0x13 +pageup_key_scancode = 0x55 +pagedown_key_scancode = 0x54 + +factory_code = 0xfe010001 +work_mode = 1 +repeat_enable = 1 +release_delay = 150 debug_enable = 1 reg_control = 0xfbe40 key_begin - 0xd8 0 ;BROWER - 0xd4 0 ;SYM - 0x80 66 ;MUTE - 0xc6 0 ;PHOTO - 0xd5 0 ;MUSIC - 0xd1 0 ;MEDIA_RECORD - 0x86 0 ;BROWER - 0x90 111 ;DEL - 0x83 0 ;SYM - 0x92 2 ;NUM1 - 0x93 3 ;NUM2 - 0xcc 4 ;NUM3 - 0x8e 5 ;NUM4 - 0x8f 6 ;NUM5 - 0xc8 7 ;NUM6 - 0x8a 8 ;NUM7 - 0x8b 9 ;NUM8 - 0xc4 10 ;NUM9 - 0xd9 24 ;AT - 0x87 11 ;NUM0 - 0x82 46 ;COM - - 0xdd 13 ;VOL+ - 0x8c 12 ;VOL- - 0x9c 0 ;ZOOM_IN - 0x89 0 ;ZOOM_OUT - 0x9a 104 ;PAGE_UP - 0xcd 109 ;PAGE_DOWN - - 0x95 1 ;HOME - 0xc5 23 ;NOTIFICATION - - 0x99 105 ;LEFT - 0xca 103 ;UP - 0xc1 106 ;RIGHT - 0xd2 108 ;DOWN - 0xce 28 ;OK - 0xd6 46 ;MENU - 0xd0 14 ;EXIT - 0x96 51 ;PAGELEFT - 0xc2 52 ;PAGERIGHT - 0xc3 19 ;DEL - 0x84 33 ;MEDIA_FAST_FORWARD - 0xda 51 ;MEDIA_REWIND - 0x88 25 ;MEDIA_STOP - 0xc7 52 ;MEDIA_FAST_FORWARD - 0x55 45 ;EXIT - 0x45 31 ;POWER -# 0x86 0x110 ;mouse left click -# 0x83 0x111 ;mouse right click. + 0x01 11 + 0x4e 2 + 0x0d 3 + 0x0c 4 + 0x4a 5 + 0x09 6 + 0x08 7 + 0x46 8 + 0x05 9 + 0x04 10 + 0x13 97 + 0x19 15 + 0x42 14 + 0x16 103 + 0x1a 108 + 0x51 105 + 0x50 106 + 0x11 102 + 0x18 104 + 0x10 109 + 0x4c 125 + 0x5a 119 + 0x59 122 + 0x52 128 + 0x58 123 + 0x54 120 + 0x55 121 + 0x40 116 + 0x41 113 + 0x45 130 + 0x49 134 + 0x0a 133 + 0x48 138 + 0x4d 137 + 0x0e 136 + 0x0f 135 + 0x43 132 + 0x03 127 + 0x06 139 + 0x44 140 + 0x00 63 key_end - -mouse_begin - 0x00 0xc6 ;mouse move up - 0x01 0xd1 ;mouse move down - 0x02 0xd5 ;mouse move left - 0x03 0x90 ;mouse move right -mouse_end - From d1fcbbbb8ed30b69af811f85b62751404b45a400 Mon Sep 17 00:00:00 2001 From: Peter Steenbergen Date: Tue, 15 Jan 2013 12:33:59 +0100 Subject: [PATCH 57/65] Update README, remove arc-gcc stuff. Not needed! --- README.md | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/README.md b/README.md index 8cbd1e400e..a8e78e216f 100644 --- a/README.md +++ b/README.md @@ -18,30 +18,6 @@ In a fresh minimal Debian Unstable install, Note that as of current (2012-10-10) Debian Unstable, python defaults to python 2.7. Earlier pythons (or python3) will not work. -For the f16ref uboot sources to compile, you need the ARC toolchain as well. I will create a buildroot package for that later, (The initial commit is already there) but let's get whole system to work first before making it nice. - -The easiest thing for now is to compile it manually and add the binaries to your PATH variable. - -```shell -wget http://sourceforge.net/projects/arc-linux/files/ARC%20GNU%20Toolchain/ARC%20GNU%204.4/arc_gcc_rel4.4.tar.gz/download -O arc_gcc_rel4.4.tar.gz -tar xzvf arc_gcc_rel4.4.tar.gz -cd arc_gcc_rel4.4 - -export ARC_GNU=//arc_gcc_rel4.4 -export INSTALLDIR=/arc-4.4-elf32 (<- just gave it the same path) -export DISABLE_MULTILIB=--enable-multilib - -./build-elf32.sh --force -``` - -Now it will fail this way with the GDB part, but that is fine for now as all we need are the arc elf32 bins. - -Then make the bins available to your environment by extending the PATH variable; - -```shell -export PATH=$PATH:/arc-4.4-elf32/bin -``` - # Set up a key to sign the image ```shell From bed569df9c5d7e04b15fb6304f299f31be65f5b1 Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 20:20:29 +0000 Subject: [PATCH 58/65] [f16ref] Move GBox to his own config --- configs/amlogic_f16ref_gbox-xbmc_defconfig | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 configs/amlogic_f16ref_gbox-xbmc_defconfig diff --git a/configs/amlogic_f16ref_gbox-xbmc_defconfig b/configs/amlogic_f16ref_gbox-xbmc_defconfig new file mode 100644 index 0000000000..1a9322ed4f --- /dev/null +++ b/configs/amlogic_f16ref_gbox-xbmc_defconfig @@ -0,0 +1,54 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_KERNEL_MIRROR="git://github.com/j1nx/buildroot-linux-kernel-m3.git" +BR2_OPTIMIZE_3=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_GDB_SERVER=y +BR2_GDB_VERSION_7_1=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="" +BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" +# BR2_SOFT_FLOAT is not set +BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" +BR2_TARGET_GENERIC_GETTY=y +BR2_BUSYBOX_VERSION_1_17_X=y +BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/f16ref/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_LIRC=y +BR2_PACKAGE_XBMC=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_NTFS_3G=y +BR2_PACKAGE_NTFSPROGS=y +# BR2_PACKAGE_UDEV_MTD_PROBE is not set +BR2_PACKAGE_USBMOUNT=y +BR2_PACKAGE_MYSQL_CLIENT_LIB_ONLY=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_NTP=y +BR2_PACKAGE_NTP_NTPDATE=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y +BR2_PACKAGE_NANO=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV=y +BR2_ROOTFS_SKELETON_CUSTOM=y +BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/f16ref/skeleton" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_RECOVERY_AML=y +BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5f436be7fca90ca996070163c1beb817266e2535" +BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 34cf2034f5531cd2ecfa811729c03a509e128b3a Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 20:21:09 +0000 Subject: [PATCH 59/65] [f16ref] Start adding support for the Bluetimes M3 --- configs/amlogic_f16ref_BlueM3-xbmc_defconfig | 54 ++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 configs/amlogic_f16ref_BlueM3-xbmc_defconfig diff --git a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig new file mode 100644 index 0000000000..bf8751e978 --- /dev/null +++ b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig @@ -0,0 +1,54 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_KERNEL_MIRROR="git://github.com/j1nx/buildroot-linux-kernel-m3.git" +BR2_OPTIMIZE_3=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM2010Q1=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_GDB_SERVER=y +BR2_GDB_VERSION_7_1=y +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="" +BR2_EXT_TOOL_DIRS_EXTRA="/usr/lib/gconv /usr/share/zoneinfo" +# BR2_SOFT_FLOAT is not set +BR2_TARGET_OPTIMIZATION="-pipe -mfloat-abi=softfp -mfpu=neon" +BR2_TARGET_GENERIC_GETTY=y +BR2_BUSYBOX_VERSION_1_17_X=y +BR2_PACKAGE_BUSYBOX_CONFIG="board/amlogic/f16ref/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_UBOOTAML=y +BR2_PACKAGE_LIRC=y +BR2_PACKAGE_XBMC=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_MKDOSFS=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSCK=y +BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_NTFS_3G=y +BR2_PACKAGE_NTFSPROGS=y +# BR2_PACKAGE_UDEV_MTD_PROBE is not set +BR2_PACKAGE_USBMOUNT=y +BR2_PACKAGE_MYSQL_CLIENT_LIB_ONLY=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_NTP=y +BR2_PACKAGE_NTP_NTPDATE=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_PACKAGE_WPA_SUPPLICANT_WPS=y +BR2_PACKAGE_NANO=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV=y +BR2_ROOTFS_SKELETON_CUSTOM=y +BR2_ROOTFS_SKELETON_CUSTOM_PATH="board/amlogic/f16ref/skeleton" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_RECOVERY_AML=y +BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5f436be7fca90ca996070163c1beb817266e2535" +BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_bluem3" From 9ee641fa2d92c0075aa85d80fe3341aee898e1cf Mon Sep 17 00:00:00 2001 From: J1nx Date: Tue, 15 Jan 2013 20:25:38 +0000 Subject: [PATCH 60/65] [f16ref] Bump kernel for BlueM3 support --- configs/amlogic_f16ref_BlueM3-xbmc_defconfig | 2 +- configs/amlogic_f16ref_gbox-xbmc_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig index bf8751e978..d87589570c 100644 --- a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig +++ b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5f436be7fca90ca996070163c1beb817266e2535" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4df3672371d02ed81315c37f25b8076cd51c7041" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_bluem3" diff --git a/configs/amlogic_f16ref_gbox-xbmc_defconfig b/configs/amlogic_f16ref_gbox-xbmc_defconfig index 1a9322ed4f..79a8a34540 100644 --- a/configs/amlogic_f16ref_gbox-xbmc_defconfig +++ b/configs/amlogic_f16ref_gbox-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5f436be7fca90ca996070163c1beb817266e2535" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4df3672371d02ed81315c37f25b8076cd51c7041" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From f9a513c1d4daa040879e2e3295c2befbb469123c Mon Sep 17 00:00:00 2001 From: J1nx Date: Wed, 16 Jan 2013 15:45:12 +0000 Subject: [PATCH 61/65] [f16ref] Bump kernel --- configs/amlogic_f16ref_BlueM3-xbmc_defconfig | 2 +- configs/amlogic_f16ref_gbox-xbmc_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig index d87589570c..7bbff2a8e4 100644 --- a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig +++ b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4df3672371d02ed81315c37f25b8076cd51c7041" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="67f6ff4a49ad54434b96cdbf50f8cbeb3f2abd9b" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_bluem3" diff --git a/configs/amlogic_f16ref_gbox-xbmc_defconfig b/configs/amlogic_f16ref_gbox-xbmc_defconfig index 79a8a34540..282eec4141 100644 --- a/configs/amlogic_f16ref_gbox-xbmc_defconfig +++ b/configs/amlogic_f16ref_gbox-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4df3672371d02ed81315c37f25b8076cd51c7041" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ec2fc8cbeae55d1f80b09c372478462e9473a23d" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 8cf3d701e62cc65c6ae39f8fa77a820ef0daeb42 Mon Sep 17 00:00:00 2001 From: J1nx Date: Wed, 16 Jan 2013 18:54:02 +0000 Subject: [PATCH 62/65] [f16ref] Bump BlueM3 kernel --- configs/amlogic_f16ref_BlueM3-xbmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig index 7bbff2a8e4..5f9e0c541b 100644 --- a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig +++ b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="67f6ff4a49ad54434b96cdbf50f8cbeb3f2abd9b" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="7b5610061fe0fce36f4a48a7eef7023c481c83a9" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_bluem3" From 8a03f7a507dabd5969c9af1186134f3a9909acdb Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 19 Jan 2013 11:55:54 +0000 Subject: [PATCH 63/65] [f16ref] Bump GBox and BlueM3 kernels --- configs/amlogic_f16ref_BlueM3-xbmc_defconfig | 2 +- configs/amlogic_f16ref_gbox-xbmc_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig index 5f9e0c541b..70d22e68f0 100644 --- a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig +++ b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="7b5610061fe0fce36f4a48a7eef7023c481c83a9" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="8fd369cd6d53c111bb493635d8fdc8be0afef320" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_bluem3" diff --git a/configs/amlogic_f16ref_gbox-xbmc_defconfig b/configs/amlogic_f16ref_gbox-xbmc_defconfig index 282eec4141..e6e9c1309e 100644 --- a/configs/amlogic_f16ref_gbox-xbmc_defconfig +++ b/configs/amlogic_f16ref_gbox-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="ec2fc8cbeae55d1f80b09c372478462e9473a23d" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="8fd369cd6d53c111bb493635d8fdc8be0afef320" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From 705b2d8947b89683bee0d91a3ed069c7dbcee666 Mon Sep 17 00:00:00 2001 From: J1nx Date: Sat, 19 Jan 2013 14:02:13 +0000 Subject: [PATCH 64/65] [f16ref] Bump GBox and BlueM3 kernels --- configs/amlogic_f16ref_BlueM3-xbmc_defconfig | 2 +- configs/amlogic_f16ref_gbox-xbmc_defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig index 70d22e68f0..2d8028c137 100644 --- a/configs/amlogic_f16ref_BlueM3-xbmc_defconfig +++ b/configs/amlogic_f16ref_BlueM3-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="8fd369cd6d53c111bb493635d8fdc8be0afef320" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="db251f3c10367a26cc629b579270dac7b46da6a0" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_bluem3" diff --git a/configs/amlogic_f16ref_gbox-xbmc_defconfig b/configs/amlogic_f16ref_gbox-xbmc_defconfig index e6e9c1309e..7c2a93eb42 100644 --- a/configs/amlogic_f16ref_gbox-xbmc_defconfig +++ b/configs/amlogic_f16ref_gbox-xbmc_defconfig @@ -50,5 +50,5 @@ BR2_TARGET_ROOTFS_RECOVERY_AML=y BR2_TARGET_ROOTFS_RECOVERY_AML_BOARDNAME="f16ref" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="8fd369cd6d53c111bb493635d8fdc8be0afef320" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="db251f3c10367a26cc629b579270dac7b46da6a0" BR2_LINUX_KERNEL_DEFCONFIG="meson_reff16_gbox" From c8fe9a58406b91c50f95a5b570a605203e58e713 Mon Sep 17 00:00:00 2001 From: mattburris Date: Tue, 29 Jan 2013 04:36:40 -0600 Subject: [PATCH 65/65] Update package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf Updated remote config for G-Box Midnight Remote --- .../thirdparty/xbmc/etc/xbmc/remote-lirc.conf | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf b/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf index 61b8725809..76218f4fc8 100644 --- a/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf +++ b/package/thirdparty/xbmc/etc/xbmc/remote-lirc.conf @@ -44,45 +44,45 @@ debug_enable = 1 reg_control = 0xfbe40 key_begin - 0x01 11 - 0x4e 2 - 0x0d 3 - 0x0c 4 - 0x4a 5 - 0x09 6 - 0x08 7 - 0x46 8 - 0x05 9 - 0x04 10 - 0x13 97 - 0x19 15 - 0x42 14 - 0x16 103 - 0x1a 108 - 0x51 105 - 0x50 106 - 0x11 102 - 0x18 104 - 0x10 109 - 0x4c 125 - 0x5a 119 - 0x59 122 - 0x52 128 - 0x58 123 - 0x54 120 - 0x55 121 - 0x40 116 - 0x41 113 - 0x45 130 - 0x49 134 - 0x0a 133 - 0x48 138 - 0x4d 137 - 0x0e 136 - 0x0f 135 - 0x43 132 - 0x03 127 - 0x06 139 - 0x44 140 + 0x01 11 ;NUM0 + 0x4e 2 ;NUM1 + 0x0d 3 ;NUM2 + 0x0c 4 ;NUM3 + 0x4a 5 ;NUM4 + 0x09 6 ;NUM5 + 0x08 7 ;NUM6 + 0x46 8 ;NUM7 + 0x05 9 ;NUM8 + 0x04 10 ;NUM9 + 0x13 97 ;OK + 0x19 15 ;EXIT + 0x42 14 ;DEL + 0x16 103 ;UP + 0x1a 108 ;DOWN + 0x51 105 ;LEFT + 0x50 106 ;RIGHT + 0x11 102 ;HOME + 0x18 104 ;VOL+ + 0x10 109 ;VOL- + 0x4c 125 ;MENU + 0x5a 119 ;MEDIA_PLAY_PAUSE + 0x59 122 ;MEDIA_PREVIOUS + 0x52 128 ;MEDIA_STOP + 0x58 123 ;MEDIA_NEXT + 0x54 120 ;MEDIA_FAST_FORWARD + 0x55 121 ;MEDIA_REWIND + 0x40 116 ;POWER + 0x41 113 ;MUTE + 0x45 130 ;ZOOM_IN_OUT + 0x49 134 ;PHOTO + 0x0a 133 ;MUSIC + 0x48 138 ;FILE + 0x4d 137 ;VIDEO + 0x0e 136 ;NETWORK + 0x0f 135 ;ANDROID + 0x43 132 ;SETTINGS + 0x03 127 ;SEARCH + 0x06 139 ;SUBTITLE + 0x44 140 ;AUDIO 0x00 63 key_end