mirror of https://github.com/OpenIPC/composer.git
Add surveyorlabs project and fix Tapo C110
parent
ad181858a1
commit
30057a147e
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,139 @@
|
|||
# Architecture
|
||||
BR2_arm=y
|
||||
BR2_cortex_a7=y
|
||||
BR2_ARM_EABI=y
|
||||
BR2_ARM_FPU_NEON_VFPV4=y
|
||||
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||
BR2_KERNEL_HEADERS_VERSION=y
|
||||
BR2_DEFAULT_KERNEL_VERSION="4.9.37"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||
|
||||
# Toolchain
|
||||
BR2_PER_PACKAGE_DIRECTORIES=y
|
||||
BR2_GCC_VERSION_12_X=y
|
||||
# BR2_TOOLCHAIN_USES_UCLIBC is not set
|
||||
# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set
|
||||
# BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc"
|
||||
BR2_TOOLCHAIN_USES_MUSL=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_LIBC="musl"
|
||||
BR2_TOOLCHAIN_BUILDROOT_CXX=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||
|
||||
# Kernel
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/openipc/linux/archive/$(OPENIPC_KERNEL).tar.gz"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(EXTERNAL_VENDOR)/board/gk7205v200/kernel/gk7205v300.generic.config"
|
||||
BR2_LINUX_KERNEL_UIMAGE=y
|
||||
BR2_LINUX_KERNEL_XZ=y
|
||||
|
||||
# OpenIPC
|
||||
BR2_OPENIPC_SOC_VENDOR="goke"
|
||||
BR2_OPENIPC_SOC_MODEL="gk7205v300"
|
||||
BR2_OPENIPC_SOC_FAMILY="gk7205v200"
|
||||
BR2_OPENIPC_FLAVOR="ultimate"
|
||||
BR2_OPENIPC_FLASH_SIZE="16"
|
||||
|
||||
# Filesystem
|
||||
# BR2_TARGET_TZ_INFO is not set
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/overlay"
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/rootfs_script.sh"
|
||||
|
||||
# OpenIPC configuration
|
||||
BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc"
|
||||
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC"
|
||||
BR2_TARGET_GENERIC_HOSTNAME="openipc-gk7205v300"
|
||||
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL)/package/all-patches"
|
||||
|
||||
# OpenIPC packages
|
||||
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
|
||||
BR2_PACKAGE_DROPBEAR_OPENIPC=y
|
||||
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
|
||||
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
|
||||
BR2_PACKAGE_UBOOT_TOOLS=y
|
||||
BR2_PACKAGE_GOKE_OSDRV_GK7205V200=y
|
||||
BR2_PACKAGE_HISILICON_OPENSDK=y
|
||||
BR2_PACKAGE_HASERL=y
|
||||
# BR2_PACKAGE_HISI_GPIO is not set
|
||||
BR2_PACKAGE_IPCTOOL=y
|
||||
BR2_PACKAGE_JSON_C=y
|
||||
BR2_PACKAGE_JSONFILTER=y
|
||||
BR2_PACKAGE_LAME_OPENIPC=y
|
||||
BR2_PACKAGE_LIBCURL_OPENIPC=y
|
||||
BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_VERBOSE is not set
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set
|
||||
# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set
|
||||
BR2_PACKAGE_LIBCURL_OPENIPC_MBEDTLS=y
|
||||
BR2_PACKAGE_LIBEVENT_OPENIPC=y
|
||||
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
|
||||
BR2_PACKAGE_LIBOGG_OPENIPC=y
|
||||
BR2_PACKAGE_LIBWEBSOCKETS_OPENIPC=y
|
||||
BR2_PACKAGE_LIBYAML=y
|
||||
BR2_PACKAGE_MAJESTIC_FONTS=y
|
||||
BR2_PACKAGE_MAJESTIC=y
|
||||
BR2_PACKAGE_MBEDTLS_OPENIPC=y
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
|
||||
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
|
||||
BR2_PACKAGE_MICROBE_WEB=y
|
||||
# BR2_PACKAGE_MINI_SNMPD is not set
|
||||
BR2_PACKAGE_MOTORS=y
|
||||
BR2_PACKAGE_OPUS_OPENIPC=y
|
||||
BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y
|
||||
# BR2_PACKAGE_SSHPASS is not set
|
||||
BR2_PACKAGE_UACME_OPENIPC=y
|
||||
BR2_PACKAGE_VTUND_OPENIPC=y
|
||||
BR2_PACKAGE_YAML_CLI=y
|
||||
BR2_PACKAGE_QUIRC_OPENIPC=y
|
||||
|
||||
# WiFi
|
||||
BR2_PACKAGE_WIRELESS_TOOLS=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
|
||||
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC=y
|
||||
BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_MEDIATEK_MT7601U=y
|
||||
# BR2_PACKAGE_RTL8188EU is not set
|
||||
|
||||
# WIREGUARD
|
||||
BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
|
||||
BR2_PACKAGE_WIREGUARD_TOOLS=y
|
||||
|
||||
# IPTABLES
|
||||
BR2_PACKAGE_IPTABLES=y
|
||||
|
||||
# MQTT
|
||||
BR2_PACKAGE_MOSQUITTO=y
|
||||
# BR2_PACKAGE_MOSQUITTO_BROKER is not set
|
||||
|
||||
# ZEROTIER
|
||||
BR2_PACKAGE_ZEROTIER_ONE=y
|
||||
|
||||
# NABTO
|
||||
# BR2_PACKAGE_NABTO is not set
|
||||
|
||||
# DEBUG
|
||||
# BR2_PACKAGE_HOST_GDB is not set
|
||||
# BR2_PACKAGE_GDB is not set
|
||||
|
||||
# CCACHE
|
||||
BR2_CCACHE=y
|
||||
BR2_CCACHE_DIR="$(HOME)/.ccache"
|
||||
|
||||
# External
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-openipc-linux-musleabi"
|
||||
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/openipc/firmware/releases/download/$(OPENIPC_TOOLCHAIN).tgz"
|
|
@ -0,0 +1,271 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# OpenIPC.org (c)
|
||||
#
|
||||
|
||||
#
|
||||
# Constants
|
||||
#
|
||||
|
||||
MAX_KERNEL_SIZE=0x200000 # 2MiB, 2097152
|
||||
MAX_KERNEL_SIZE_ULTIMATE=0x300000 # 3MiB, 3145728
|
||||
MAX_KERNEL_SIZE_EXPERIMENTAL=0x3E8480 # ~3.9MiB, 4097152
|
||||
MAX_ROOTFS_SIZE=0x500000 # 5MiB, 5242880
|
||||
MAX_ROOTFS_SIZE_ULTIMATE=0xA00000 # 10MiB, 10485760
|
||||
|
||||
_d=$(date +"%y.%m.%d")
|
||||
OPENIPC_VER=$(echo OpenIPC v${_d:0:1}.${_d:1})
|
||||
unset _d
|
||||
|
||||
SRC_CACHE_DIR="/tmp/buildroot_dl"
|
||||
LOCK_FILE="$(pwd)/openipc.lock"
|
||||
|
||||
#
|
||||
# Functions
|
||||
#
|
||||
|
||||
echo_c() {
|
||||
# 30 grey, 31 red, 32 green, 33 yellow, 34 blue, 35 magenta, 36 cyan,37 white
|
||||
echo -e "\e[1;$1m$2\e[0m"
|
||||
}
|
||||
|
||||
check_or_set_lock() {
|
||||
if [ -f "$LOCK_FILE" ] && ps -ax | grep "^\s*\b$(cat "$LOCK_FILE")\b" >/dev/null; then
|
||||
echo_c 31 "Another instance running with PID $(cat "$LOCK_FILE")."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo_c 32 "Starting OpenIPC builder."
|
||||
echo $$ >$LOCK_FILE
|
||||
}
|
||||
|
||||
build_list_of_projects() {
|
||||
FUNCS=()
|
||||
AVAILABLE_PROJECTS=$(find br-ext-chip-*/configs/* -name "*_defconfig")
|
||||
local p
|
||||
for p in $AVAILABLE_PROJECTS; do
|
||||
p=${p##*/}; p=${p//_defconfig/}
|
||||
FUNCS+=($p)
|
||||
done
|
||||
}
|
||||
|
||||
select_project() {
|
||||
if [ $# -eq 0 ]; then
|
||||
if [ -n "$(command -v fzf)" ]; then
|
||||
local entries=$(echo $AVAILABLE_PROJECTS | sed "s/ /\n/g" | fzf)
|
||||
[ -z "$entries" ] && echo_c 31 "Cancelled." && drop_lock_and_exit
|
||||
BOARD=$(echo $entries | cut -d / -f 3 | awk -F_ '{printf "%s_%s", $1, $2}')
|
||||
elif [ -n "$(command -v whiptail)" ]; then
|
||||
local cmd="whiptail --title \"Available projects\" --menu \"Please select a project from the list:\" --notags 20 76 12"
|
||||
local entry
|
||||
for entry in $AVAILABLE_PROJECTS; do
|
||||
local project=${entry##*/}; project=${project//_defconfig/}
|
||||
local vendor=${entry%%/*}; vendor=${vendor##*-}
|
||||
local flavor=${project##*_}
|
||||
local chip=${project%%_*}
|
||||
cmd="${cmd} \"${project}\" \"${vendor^} ${chip^^} ${flavor}\""
|
||||
done
|
||||
BOARD=$(eval "${cmd} 3>&1 1>&2 2>&3")
|
||||
[ $? != 0 ] && echo_c 31 "Cancelled." && drop_lock_and_exit
|
||||
else
|
||||
echo -ne "Usage: $0 <variant>\nVariants:"
|
||||
local i
|
||||
for i in "${FUNCS[@]}"; do echo -n " ${i}"; done
|
||||
echo
|
||||
drop_lock_and_exit
|
||||
fi
|
||||
else
|
||||
BOARD=$1
|
||||
fi
|
||||
}
|
||||
|
||||
drop_lock_and_exit() {
|
||||
[ -f "$LOCK_FILE" ] && rm $LOCK_FILE
|
||||
exit 0
|
||||
}
|
||||
|
||||
log_and_run() {
|
||||
local command=$1
|
||||
echo_c 35 "$command"
|
||||
$command
|
||||
}
|
||||
|
||||
clone() {
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y automake make wget cpio file autotools-dev bc build-essential curl fzf git libtool rsync unzip libncurses-dev lzop
|
||||
git clone --depth=1 https://github.com/OpenIPC/firmware.git
|
||||
}
|
||||
|
||||
fresh() {
|
||||
BR_VER=2023.02.1
|
||||
|
||||
if [ -d "$SRC_CACHE_DIR" ]; then
|
||||
echo_c 36 "Found cache directory."
|
||||
else
|
||||
echo_c 31 "Cache directory not found."
|
||||
echo_c 34 "Creating cache directory ..."
|
||||
log_and_run "mkdir -p ${SRC_CACHE_DIR}"
|
||||
echo_c 34 "Done.\n"
|
||||
fi
|
||||
|
||||
if [ -d "buildroot-${BR_VER}" ]; then
|
||||
echo_c 36 "Found existing Buildroot directory."
|
||||
|
||||
if [ -d "buildroot-${BR_VER}/dl" ]; then
|
||||
echo_c 36 "Found existing Buildroot downloads directory."
|
||||
echo_c 34 "Copying Buildroot downloads to cache directory ..."
|
||||
log_and_run "cp -rvf buildroot-${BR_VER}/dl/* ${SRC_CACHE_DIR}"
|
||||
echo_c 34 "Done.\n"
|
||||
fi
|
||||
|
||||
echo_c 34 "Cleaning source directory."
|
||||
echo_c 35 "make distclean"
|
||||
make distclean
|
||||
echo_c 34 "Done.\n"
|
||||
else
|
||||
echo_c 31 "Buildroot sources not found."
|
||||
fi
|
||||
|
||||
echo_c 34 "Downloading Buildroot sources to cache directory ..."
|
||||
log_and_run "curl --continue-at - --output ${SRC_CACHE_DIR}/buildroot-${BR_VER}.tar.gz https://buildroot.org/downloads/buildroot-${BR_VER}.tar.gz"
|
||||
echo_c 34 "Done.\n"
|
||||
|
||||
echo_c 34 "Extracting a fresh copy of Buildroot from Buildroot sources ..."
|
||||
log_and_run "tar xvf ${SRC_CACHE_DIR}/buildroot-${BR_VER}.tar.gz"
|
||||
echo_c 34 "Done.\n"
|
||||
|
||||
echo_c 34 "Copying cached source files back to Buildroot ..."
|
||||
log_and_run "mkdir -p buildroot-${BR_VER}/dl/"
|
||||
log_and_run "cp -rvf ${SRC_CACHE_DIR}/* buildroot-${BR_VER}/dl/"
|
||||
echo_c 34 "Done.\n"
|
||||
|
||||
# prevent to double download buildroot
|
||||
# make prepare
|
||||
|
||||
echo_c 33 "Start building OpenIPC Firmware ${OPENIPC_VER} for ${SOC}."
|
||||
echo "The start-stop times" >/tmp/openipc_buildtime.txt
|
||||
date >>/tmp/openipc_buildtime.txt
|
||||
}
|
||||
|
||||
should_fit() {
|
||||
local filename=$1
|
||||
local maxsize=$2
|
||||
local filesize=$(stat --printf="%s" ./output/images/$filename)
|
||||
if [[ $filesize -gt $maxsize ]]; then
|
||||
export TG_NOTIFY="Warning: $filename is too large: $filesize vs $maxsize"
|
||||
echo_c 31 "Warning: $filename is too large: $filesize vs $maxsize"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
rename() {
|
||||
if grep -q ultimate_defconfig ./output/.config || grep -q ultimate_surveyorlabs_defconfig ./output/.config || grep -q sdcard_defconfig ./output/.config; then
|
||||
should_fit uImage $MAX_KERNEL_SIZE_ULTIMATE
|
||||
should_fit rootfs.squashfs $MAX_ROOTFS_SIZE_ULTIMATE
|
||||
else
|
||||
should_fit uImage $MAX_KERNEL_SIZE
|
||||
should_fit rootfs.squashfs $MAX_ROOTFS_SIZE
|
||||
fi
|
||||
mv -v ./output/images/uImage ./output/images/uImage.${SOC}
|
||||
mv -v ./output/images/rootfs.squashfs ./output/images/rootfs.squashfs.${SOC}
|
||||
mv -v ./output/images/rootfs.cpio ./output/images/rootfs.${SOC}.cpio
|
||||
mv -v ./output/images/rootfs.tar ./output/images/rootfs.${SOC}.tar
|
||||
date >>/tmp/openipc_buildtime.txt
|
||||
echo_c 31 "\n\n$(cat /tmp/openipc_buildtime.txt)\n\n"
|
||||
}
|
||||
|
||||
rename_initramfs() {
|
||||
should_fit uImage $MAX_KERNEL_SIZE_EXPERIMENTAL
|
||||
mv -v ./output/images/uImage ./output/images/uImage.initramfs.${SOC}
|
||||
mv -v ./output/images/rootfs.cpio ./output/images/rootfs.${SOC}.cpio
|
||||
mv -v ./output/images/rootfs.tar ./output/images/rootfs.${SOC}.tar
|
||||
date >>/tmp/openipc_buildtime.txt
|
||||
echo_c 31 "\n\n$(cat /tmp/openipc_buildtime.txt)\n\n"
|
||||
}
|
||||
|
||||
autoup_rootfs() {
|
||||
echo_c 34 "\nDownloading u-boot created by OpenIPC"
|
||||
curl --location --output ./output/images/u-boot-${SOC}-universal.bin \
|
||||
https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-${SOC}-universal.bin
|
||||
|
||||
echo_c 34 "\nMaking autoupdate u-boot image"
|
||||
./output/host/bin/mkimage -A arm -O linux -T firmware -n "$OPENIPC_VER" \
|
||||
-a 0x0 -e 0x50000 -d ./output/images/u-boot-${SOC}-universal.bin \
|
||||
./output/images/autoupdate-uboot.img
|
||||
|
||||
echo_c 34 "\nMaking autoupdate kernel image"
|
||||
./output/host/bin/mkimage -A arm -O linux -T kernel -C none -n "$OPENIPC_VER" \
|
||||
-a 0x50000 -e 0x250000 -d ./output/images/uImage.${SOC} \
|
||||
./output/images/autoupdate-kernel.img
|
||||
|
||||
echo_c 34 "\nMaking autoupdate rootfs image"
|
||||
./output/host/bin/mkimage -A arm -O linux -T filesystem -n "$OPENIPC_VER" \
|
||||
-a 0x250000 -e 0x750000 -d ./output/images/rootfs.squashfs.${SOC} \
|
||||
./output/images/autoupdate-rootfs.img
|
||||
}
|
||||
|
||||
copy_function() {
|
||||
test -n "$(declare -f "$1")" || return
|
||||
eval "${_/$1/$2}"
|
||||
}
|
||||
|
||||
uni_build() {
|
||||
[ -z "$BOARD" ] && BOARD=$FUNCNAME
|
||||
|
||||
SOC=$(echo $BOARD | cut -d '_' -f 1)
|
||||
|
||||
set -e
|
||||
if [ "$(echo $BOARD | cut -sd '_' -f 2)" == "" ]; then
|
||||
BOARD="${BOARD}_lite"
|
||||
fi
|
||||
|
||||
if [ "$BOARD" == "hi3518ev200_lite" ]; then
|
||||
NEED_AUTOUP=1
|
||||
fi
|
||||
|
||||
echo_c 33 "\n SoC: $SOC\nBoard: $BOARD\n"
|
||||
|
||||
if [ "all" = "${COMMAND}" ]; then
|
||||
fresh $(make BOARD=${BOARD})
|
||||
fi
|
||||
|
||||
log_and_run "make BOARD=${BOARD} ${COMMAND}"
|
||||
|
||||
if [ "all" == "${COMMAND}" ]; then
|
||||
if [ "ssc335_initramfs" == "$BOARD" ]; then
|
||||
rename_initramfs
|
||||
else
|
||||
rename
|
||||
fi
|
||||
|
||||
if [ ! -z "$NEED_AUTOUP" ]; then
|
||||
autoup_rootfs
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#######
|
||||
|
||||
check_or_set_lock
|
||||
|
||||
build_list_of_projects
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
BOARD=$1
|
||||
else
|
||||
select_project
|
||||
fi
|
||||
|
||||
[ -z "$BOARD" ] && echo_c 31 "Nothing selected." && drop_lock_and_exit
|
||||
|
||||
COMMAND=$2
|
||||
[ -z "$COMMAND" ] && COMMAND=all
|
||||
|
||||
for i in "${FUNCS[@]}"; do
|
||||
copy_function uni_build $i
|
||||
done
|
||||
|
||||
echo_c 37 "Building OpenIPC for ${BOARD}"
|
||||
uni_build $BOARD $COMMAND
|
||||
|
||||
drop_lock_and_exit
|
|
@ -0,0 +1 @@
|
|||
CET-1CEST,M3.5.0,M10.5.0/3
|
|
@ -0,0 +1,5 @@
|
|||
#
|
||||
composer_message="This firmware was created with the Composer project."
|
||||
#
|
||||
default_timezone="CET-1CEST,M3.5.0,M10.5.0/3 | Europe/Brussels"
|
||||
#
|
|
@ -0,0 +1,6 @@
|
|||
f2fs
|
||||
vfat
|
||||
exfat
|
||||
|
||||
# For XM530 SD cards
|
||||
# sdio0_sd
|
|
@ -0,0 +1 @@
|
|||
Europe/Brussels
|
|
@ -92,13 +92,13 @@ fi
|
|||
|
||||
# SSC333 Tapo C110
|
||||
if [ "$1" = "ssw101b-ssc333-tapo-c110" ]; then
|
||||
set_gpio 16 1
|
||||
modprobe ssw101b_wifi_usb
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# SSC337DE Foscam
|
||||
if [ "$1" = "rtl8188fu-ssc337de-foscam" ]; then
|
||||
set_gpio 15 0
|
||||
modprobe 8188fu
|
||||
exit 0
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue