Add t31_ultimate_gateway project

pull/1/head
Igor Zalatov (from Citadel PC) 2023-02-02 17:06:27 +03:00
parent 4d018d6b74
commit 06b73243a7
11 changed files with 2645 additions and 0 deletions

View File

@ -0,0 +1,42 @@
source "$BR2_EXTERNAL_INGENIC_PATH/linux/Config.ext.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t20/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t21/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t31/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic_patcher/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/aura-httpd/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/baresip-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/comgt/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/dbell-ina219/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/demo-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fdk-aac-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ffmpeg-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fwprintenv-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/i2c-gpio-custom/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/i2c-telemetry/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ipctool/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/json-c-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/jsonfilter/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/lame-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libcurl-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libevent-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libhv-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libogg-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libre-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/librem-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libsrt-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libwebsockets-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/linux-firmware-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/majestic-fonts/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/majestic/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/mbedtls-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/microbe-web/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/microsnander/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/motors/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/node-exporter/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/opus-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/rtl8188fu-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/uacme-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/vtund-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/xmdp/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/yaml-cli/Config.in"

View File

@ -0,0 +1,114 @@
# Architecture
BR2_mipsel=y
BR2_mips_xburst=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_MIPS_FP32_MODE_32=y
# BR2_MIPS_FP32_MODE_XX is not set
BR2_MIPS_NAN_LEGACY=y
BR2_MIPS_OABI32=y
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="3.10.14"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y
# Toolchain
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_GCC_VERSION_8_X=y
# BR2_TOOLCHAIN_USES_UCLIBC is not set
# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set
# BR2_TOOLCHAIN_BUILDROOT_LIBC="uclibc"
BR2_EXTRA_GCC_CONFIG_OPTIONS="--with-float=hard"
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_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.10.14"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_INGENIC_PATH)/board/t31/kernel/t31.generic.config"
BR2_LINUX_KERNEL_UIMAGE=y
BR2_LINUX_KERNEL_LZMA=y
BR2_LINUX_KERNEL_EXT_INGENIC_PATCHER=y
BR2_LINUX_KERNEL_EXT_INGENIC_PATCHER_LIST="$(BR2_EXTERNAL_INGENIC_PATH)/board/t31/kernel/patches/ $(BR2_EXTERNAL_INGENIC_PATH)/board/t31/kernel/overlay"
# 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="$(TOPDIR)/../general/overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(TOPDIR)/../scripts/executing_commands_for_$(BR2_TOOLCHAIN_BUILDROOT_LIBC).sh"
# OpenIPC configuration
BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc"
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC"
BR2_TARGET_GENERIC_HOSTNAME="gateway-t31"
BR2_GLOBAL_PATCH_DIR="$(TOPDIR)/../general/package/all-patches"
# OpenIPC packages
BR2_PACKAGE_BUSYBOX_CONFIG="$(TOPDIR)/../general/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_FWPRINTENV_OPENIPC=y
BR2_PACKAGE_INGENIC_OSDRV_T31=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_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
# ZEROTIER
BR2_PACKAGE_ZEROTIER_ONE=y
# DEBUG
BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y

View File

@ -0,0 +1 @@
../../general/package/dbell-ina219

View File

@ -0,0 +1 @@
../../general/package/demo-openipc

View File

@ -0,0 +1 @@
../../general/package/i2c-gpio-custom

View File

@ -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
git clone --depth=1 https://github.com/OpenIPC/firmware.git
}
fresh() {
BR_VER=$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 fpv_defconfig ./output/.config || grep -q ultimate_gateway_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} buildroot-version)
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

View File

@ -0,0 +1,11 @@
--- a/building.sh 2023-02-02 15:32:57.318398151 +0300
+++ b/building.sh 2023-02-02 17:04:45.877941273 +0300
@@ -159,7 +159,7 @@
}
rename() {
- if grep -q ultimate_defconfig ./output/.config || grep -q fpv_defconfig ./output/.config; then
+ if grep -q ultimate_defconfig ./output/.config || grep -q fpv_defconfig ./output/.config || grep -q ultimate_gateway_defconfig ./output/.config; then
should_fit uImage $MAX_KERNEL_SIZE_ULTIMATE
should_fit rootfs.squashfs $MAX_ROOTFS_SIZE_ULTIMATE
else

View File

@ -0,0 +1,2 @@
#
composer_message="This firmware was created with the Composer project."

View File

@ -0,0 +1,23 @@
#!/bin/sh
# General masquerade
iptables -A POSTROUTING -t nat -j MASQUERADE
#
# Gemeral postrouting
iptables -A POSTROUTING -t nat -j SNAT -p TCP -o eth0 -d 172.19.32.0/24 --to-source 172.19.32.200
#
# Host 1 - 172.19.32.178
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10122 --to-destination 172.19.32.178:22
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10154 --to-destination 172.19.32.178:554
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10167 --to-destination 172.19.32.178:34567
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10180 --to-destination 172.19.32.178:80
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10185 --to-destination 172.19.32.178:85
#
# Host 2 - 172.19.32.233
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10222 --to-destination 172.19.32.233:22
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10254 --to-destination 172.19.32.233:554
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10267 --to-destination 172.19.32.233:34567
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10280 --to-destination 172.19.32.233:80
iptables -A PREROUTING -t nat -j DNAT -p TCP --dport 10285 --to-destination 172.19.32.233:85

View File

@ -0,0 +1,9 @@
#
# Level of messages on console
kernel.printk = 3 3 1 3
#
net.core.bpf_jit_enable=1
#
# Enable forwarding
net.ipv4.ip_forward = 1
#