From 90a410ad4867e9b1b33e4dad69d6444d18e94d69 Mon Sep 17 00:00:00 2001 From: cronyx Date: Sun, 10 Dec 2023 01:08:49 +0300 Subject: [PATCH] add Xiaomi MJSXJ02HL --- README.md | 1 + ...i3518ev300_lite_xiaomi-mjsxj02hl_defconfig | 128 ++++++++++++++++++ .../general/overlay/etc/builder.msg | 3 + .../general/overlay/etc/init.d/S00autoled | 41 ++++++ .../general/overlay/etc/init.d/S00resetbtn | 28 ++++ .../general/overlay/etc/init.d/S96autonight | 41 ++++++ .../general/overlay/etc/wireless/sdio | 94 +++++++++++++ .../general/overlay/usr/sbin/autoled.sh | 60 ++++++++ .../general/overlay/usr/sbin/autonight.sh | 56 ++++++++ .../general/overlay/usr/sbin/led_control.sh | 34 +++++ .../overlay/usr/share/openipc/customizer.sh | 36 +++++ .../hisilicon-osdrv-hi3516ev200.mk | 72 ++++++++++ .../scripts/excludes/hi3518ev300_lite.list | 45 ++++++ 13 files changed, 639 insertions(+) create mode 100644 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/br-ext-chip-hisilicon/configs/hi3518ev300_lite_xiaomi-mjsxj02hl_defconfig create mode 100644 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/builder.msg create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00autoled create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00resetbtn create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S96autonight create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/wireless/sdio create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autoled.sh create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autonight.sh create mode 100755 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/led_control.sh create mode 100644 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/share/openipc/customizer.sh create mode 100644 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/package/hisilicon-osdrv-hi3516ev200/hisilicon-osdrv-hi3516ev200.mk create mode 100644 devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/scripts/excludes/hi3518ev300_lite.list diff --git a/README.md b/README.md index 0a0ef5b..47a8f41 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ TP-Link Tapo C110 SSC333 SC3338 SSW101B NOR_8M in pro Uniview C1L-2WN-G SSC335DE OS02G10 RTL8188FU NOR_16M testing stage 2 Wansview Q5 1080p T21Z OV2735B RTL8188FU NOR_16M in progress Wansview Q5 2K T31L SC2336 ATBM6032i NOR_8M preparation +Xiaomi MJSXJ02HL HI3518EV300 JXF22 RTL8189FS NOR_16M preparation Xiaomi MJSXJ03HL T31N JXQ03P RTL8189FS NOR_16M in progress Xiaomi MJSXJ05HL T31L GC2053 ATBM6031 NOR_16M preparation ``` diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/br-ext-chip-hisilicon/configs/hi3518ev300_lite_xiaomi-mjsxj02hl_defconfig b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/br-ext-chip-hisilicon/configs/hi3518ev300_lite_xiaomi-mjsxj02hl_defconfig new file mode 100644 index 0000000..3fdc781 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/br-ext-chip-hisilicon/configs/hi3518ev300_lite_xiaomi-mjsxj02hl_defconfig @@ -0,0 +1,128 @@ +# 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/hi3516ev200/kernel/hi3518ev300.generic.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_XZ=y + +# OpenIPC +BR2_OPENIPC_SOC_VENDOR="hisilicon" +BR2_OPENIPC_SOC_MODEL="hi3518ev300" +BR2_OPENIPC_SOC_FAMILY="hi3516ev200" +BR2_OPENIPC_FLAVOR="lite" +BR2_OPENIPC_FLASH_SIZE="8" + +# 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-hi3518ev300" +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_HISI_GPIO is not set +BR2_PACKAGE_HISILICON_OSDRV_HI3516EV200=y +BR2_PACKAGE_HISILICON_OPENSDK=y +BR2_PACKAGE_IPCTOOL=y +BR2_PACKAGE_JSON_C=y +# BR2_PACKAGE_JSONFILTER is not set +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_LIBYAML=y +# BR2_PACKAGE_MAJESTIC_FONTS is not set +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 is not set +BR2_PACKAGE_OPUS_OPENIPC=y +BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_UACME_OPENIPC is not set +# BR2_PACKAGE_VTUND_OPENIPC is not set +BR2_PACKAGE_YAML_CLI=y +# BR2_PACKAGE_QUIRC_OPENIPC is not set + +# 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 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_RTL_8188EU is not set +# BR2_PACKAGE_RTL8188EU is not set +BR2_PACKAGE_RTL8189FS_OPENIPC=y + +# WIREGUARD +# BR2_PACKAGE_WIREGUARD_LINUX_COMPAT is not set +# BR2_PACKAGE_WIREGUARD_TOOLS 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" + +# Compression +BR2_PACKAGE_ZLIB=y + +# 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" diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/builder.msg b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/builder.msg new file mode 100644 index 0000000..ecd21de --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/builder.msg @@ -0,0 +1,3 @@ +# +Experimental system for building OpenIPC firmware for known devices +# diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00autoled b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00autoled new file mode 100755 index 0000000..e43eb0f --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00autoled @@ -0,0 +1,41 @@ +#!/bin/sh + +AUTOLED_ARGS="" +AUTOLED_PID_FILE=/var/run/autoled.pid + +start() { + printf "Starting automatic LED control: " + umask 077 + start-stop-daemon -b -m -S -q -p $AUTOLED_PID_FILE \ + --exec /usr/sbin/autoled.sh -- $AUTOLED_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping automatic LED control: " + start-stop-daemon -K -q -p $AUTOLED_PID_FILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart | reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit $? diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00resetbtn b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00resetbtn new file mode 100755 index 0000000..d2199c7 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S00resetbtn @@ -0,0 +1,28 @@ +#!/bin/sh + +case "$1" in + start | restart | reload) + if [ ! -d /sys/class/gpio/gpio0/ ]; then + echo 0 > /sys/class/gpio/export + echo in > /sys/class/gpio/gpio0/direction + fi + printf "Checking the reset button: " + if [ $(cat /sys/class/gpio/gpio0/value) -eq 0 ]; then + echo "PRESSED" + # Wipe overlay partition and reboot + echo "Let's start wipe overlay partition (/dev/mtd4)" + /usr/sbin/sysupgrade -n -z + else + echo "NOT PRESSED" + fi + exit $? + ;; + stop) + exit 0 + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S96autonight b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S96autonight new file mode 100755 index 0000000..c869fa2 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/init.d/S96autonight @@ -0,0 +1,41 @@ +#!/bin/sh + +AUTONIGHT_ARGS="" +AUTONIGHT_PID_FILE=/var/run/autonight.pid + +start() { + printf "Starting automatic night mode changer: " + umask 077 + start-stop-daemon -b -m -S -q -p $AUTONIGHT_PID_FILE \ + --exec /usr/sbin/autonight.sh -- $AUTONIGHT_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping automatic night mode changer: " + start-stop-daemon -K -q -p $AUTONIGHT_PID_FILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart | reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit $? diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/wireless/sdio b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/wireless/sdio new file mode 100755 index 0000000..0166db0 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/etc/wireless/sdio @@ -0,0 +1,94 @@ +#!/bin/sh + +set_gpio() { + [ "$2" -eq 1 ] && gpio set $1 || gpio clear $1 + sleep 1 +} + +set_mmc() { + mmc=/sys/devices/platform/jzmmc_v1.2.$1/present + [ "$(cat $mmc)" = "N" ] && echo "INSERT" > $mmc +} + +# Generic ATBM603X +if [ "$1" = "atbm603x-generic" ]; then + set_mmc 1 + cp -f /usr/share/atbm60xx_conf/atbm_txpwer_dcxo_cfg.txt /tmp + cp -f /usr/share/atbm60xx_conf/set_rate_power.txt /tmp + modprobe atbm603x_wifi_sdio + exit 0 +fi + +# Generic RTL8189FS +if [ "$1" = "rtl8189fs-generic" ]; then + set_mmc 1 + modprobe 8189fs + exit 0 +fi + +# T20 Wyze PanV1 +if [ "$1" = "rtl8189es-t20-wyze-pan-v1" ]; then + set_mmc 1 + modprobe 8189es rtw_power_mgnt=0 rtw_enusbss=0 + exit 0 +fi + +# T20 Wyze V2 +if [ "$1" = "rtl8189ftv-t20-wyze-v2" ]; then + set_mmc 1 + modprobe 8189fs rtw_power_mgnt=0 rtw_enusbss=0 + exit 0 +fi + +# T31 Wyze DB3 +if [ "$1" = "rtl8189ftv-t31-wyze-db3" ]; then + set_mmc 1 + modprobe 8189fs rtw_power_mgnt=0 rtw_enusbss=0 + exit 0 +fi + +# T31 Wyze PanV2 +if [ "$1" = "atbm603x-t31-wyze-pan-v2" ]; then + set_gpio 58 0 + set_gpio 58 1 + set_mmc 1 + cp -f /usr/share/atbm60xx_conf/atbm_txpwer_dcxo_cfg.txt /tmp + cp -f /usr/share/atbm60xx_conf/set_rate_power.txt /tmp + modprobe atbm603x_wifi_sdio atbm_printk_mask=0 + exit 0 +fi + +# T31 Wyze V3 / AtomCam 2 +if [ "$1" = "atbm603x-t31-wyze-v3" ]; then + set_gpio 57 0 + set_gpio 57 1 + set_mmc 1 + cp -f /usr/share/atbm60xx_conf/atbm_txpwer_dcxo_cfg.txt /tmp + cp -f /usr/share/atbm60xx_conf/set_rate_power.txt /tmp + modprobe atbm603x_wifi_sdio atbm_printk_mask=0 + exit 0 +fi + +# T31 Wyze V3 +if [ "$1" = "rtl8189ftv-t31-wyze-v3" ]; then + set_gpio 57 1 + set_mmc 1 + modprobe 8189fs rtw_power_mgnt=0 rtw_enusbss=0 + exit 0 +fi + +# Hi3518ev300 Xiaomi MJSXJ02HL +if [ "$1" = "rtl8189fs-mjsxj02hl" ]; then + devmem 0x112C0048 32 0x1D54 + devmem 0x112C004C 32 0x1174 + devmem 0x112C0064 32 0x1174 + devmem 0x112C0060 32 0x1174 + devmem 0x112C005C 32 0x1174 + devmem 0x112C0058 32 0x1174 + devmem 0x10020028 32 0x28000000 + devmem 0x10020028 32 0x20000000 + modprobe 8189fs + exit 0 +fi + +exit 1 diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autoled.sh b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autoled.sh new file mode 100755 index 0000000..d8a0d99 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autoled.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Automatic LED control for Xiaomi MJSXJ02HL + +streamerProcess="majestic" +serviceProcess="sysupgrade" +pollingInterval=1 + +show_help() { + echo "Usage: $0 [-p process] [-s process] [-i value] [-h] + -p process Name of the monitored streamer process (default = ${streamerProcess}). + -s process Name of the monitored service process (default = ${serviceProcess}). + -i value Polling interval in seconds (default = ${pollingInterval}). + -h Show this help." + exit 0 +} + +# override config values with command line arguments +while getopts H:L:i:h flag; do + case ${flag} in + p) streamerProcess=${OPTARG} ;; + s) serviceProcess=${OPTARG} ;; + i) pollingInterval=${OPTARG} ;; + h | *) show_help ;; + esac +done + +echo "...................." +echo "Name of the monitored streamer process: ${streamerProcess}" +echo "Name of the monitored service process: ${serviceProcess}" +echo "Polling interval: ${pollingInterval} sec" +echo "...................." + +led_state=0 +/usr/sbin/led_control.sh -o 0 -b 0 +echo "...................." + +while true; do + if killall -q -0 $serviceProcess; then + if [ $led_state -ne 3 ]; then + echo "Process $serviceProcess is running, turn on the white LED" + /usr/sbin/led_control.sh -o 1 -b 1 + led_state=3 + echo "...................." + fi + else + if [ $led_state -ne 1 ] && ! killall -q -0 $streamerProcess; then + echo "Process $streamerProcess is not running, turn on the orange LED" + /usr/sbin/led_control.sh -o 1 -b 0 + led_state=1 + echo "...................." + elif [ $led_state -ne 2 ] && killall -q -0 $streamerProcess; then + echo "Process $streamerProcess is running, turn on the blue LED" + /usr/sbin/led_control.sh -o 0 -b 1 + led_state=2 + echo "...................." + fi + fi + sleep $pollingInterval +done diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autonight.sh b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autonight.sh new file mode 100755 index 0000000..f5d8f5a --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/autonight.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Majestic settinfs for Xiaomi MJSXJ02HL +# +# nightMode: +# enabled: true +# irCutPin1: 70 +# irCutPin2: 68 +# backlightPin: 54 + +again_high_target=14000 +again_low_target=2000 +pollingInterval=5 + +show_help() { + echo "Usage: $0 [-H value] [-L value] [-i value] [-h] + -H value Again high target (default = ${again_high_target}). + -L value Again low target (default = ${again_low_target}). + -i value Polling interval (default = ${pollingInterval}). + -h Show this help." + exit 0 +} + +while getopts H:L:i:h flag; do + case ${flag} in + H) again_high_target=${OPTARG} ;; + L) again_low_target=${OPTARG} ;; + i) pollingInterval=${OPTARG} ;; + h | *) show_help ;; + esac +done + +echo "...................." +echo "Watching at isp_again > ${again_high_target} to enable night mode" +echo "Watching at isp_again < ${again_low_target} to disable night mode" +echo "Polling interval: ${pollingInterval} sec" +echo "...................." + +login=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f2) +pass=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f3) + +while true; do + metrics=$(curl -s http://localhost/metrics) + isp_again=$(echo "${metrics}" | awk '/^isp_again/ {print $2}' | grep . || echo 0) + night_enabled=$(echo "${metrics}" | awk '/^night_enabled/ {print $2}' | grep . || echo 0) + + if [ $night_enabled -ne 1 ] && [ $isp_again -gt $again_high_target ]; then + curl -s -u $login:$pass http://localhost/night/on + echo "Condition isp_again > ${again_high_target} was met (current value is ${isp_again}), turn on the night mode" + elif [ $night_enabled -ne 0 ] && [ $isp_again -lt $again_low_target ]; then + curl -s -u $login:$pass http://localhost/night/off + echo "Condition isp_again < ${again_low_target} was met (current value is ${isp_again}), turn off the night mode" + fi + + sleep $pollingInterval +done diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/led_control.sh b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/led_control.sh new file mode 100755 index 0000000..f9a9992 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/sbin/led_control.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# LED control for Xiaomi MJSXJ02HL + +show_help() { + echo "Usage: $0 [-o <0|1>] [-b <0|1>] + -o <0|1> Switch state for orange LED. + -b <0|1> Switch state for blue LED." + exit 0 +} + +led_control() { + echo "Switching LED with GPIO${1} to state ${2}" + if [ ! -d /sys/class/gpio/gpio${1}/ ]; then + echo ${1} > /sys/class/gpio/export + echo out > /sys/class/gpio/gpio${1}/direction + fi + echo ${2} > /sys/class/gpio/gpio${1}/value +} + +if [ $# -eq 0 ]; then show_help; fi +while getopts o:b: flag; do + case ${flag} in + o) + [ ${OPTARG} -eq 0 -o ${OPTARG} -eq 1 ] || show_help + led_control 52 ${OPTARG} + ;; + b) + [ ${OPTARG} -eq 0 -o ${OPTARG} -eq 1 ] || show_help + led_control 53 ${OPTARG} + ;; + *) show_help ;; + esac +done diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/share/openipc/customizer.sh b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/share/openipc/customizer.sh new file mode 100644 index 0000000..61685bf --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/overlay/usr/share/openipc/customizer.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Perform basic settings on a known IP camera +# +# +# Set custom upgrade url +# +fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/hi3518ev300_lite_xiaomi-mjsxj02hl-nor.tgz' +# +# +# Set custom majestic settings +# +cli -s .system.webAdmin disabled +cli -s .system.staticDir /var/www/majestic +cli -s .isp.iqProfile /etc/sensors/iq/f23.ini +cli -s .nightMode.enabled true +cli -s .nightMode.irCutPin1 70 +cli -s .nightMode.irCutPin2 68 +cli -s .nightMode.backlightPin 54 +cli -s .audio.speakerPin 55 +cli -s .video0.codec h264 +# +# +# Set wlan device and credentials if need +# +fw_setenv wlandev rtl8189fs-mjsxj02hl +#fw_setenv wlanssid Router +#fw_setenv wlanpass 12345678 +# +# +# Set osmem and rmem +# +fw_setenv bootargs 'mem=\${osmem} console=ttyAMA0,115200 panic=20 rootfstype=squashfs root=/dev/mtdblock3 init=/init mtdparts=\${mtdparts} mmz_allocator=hisi' +fw_setenv osmem 35M +# +exit 0 diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/package/hisilicon-osdrv-hi3516ev200/hisilicon-osdrv-hi3516ev200.mk b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/package/hisilicon-osdrv-hi3516ev200/hisilicon-osdrv-hi3516ev200.mk new file mode 100644 index 0000000..ee3fd49 --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/package/hisilicon-osdrv-hi3516ev200/hisilicon-osdrv-hi3516ev200.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# hisilicon-osdrv-hi3516ev200 +# +################################################################################ + +HISILICON_OSDRV_HI3516EV200_VERSION = +HISILICON_OSDRV_HI3516EV200_SITE = +HISILICON_OSDRV_HI3516EV200_LICENSE = MIT +HISILICON_OSDRV_HI3516EV200_LICENSE_FILES = LICENSE + +define HISILICON_OSDRV_HI3516EV200_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/sensor/config/*.ini + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors/WDR + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/WDR $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/sensor/config/WDR/*.ini + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/sensors/iq + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/iq $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/sensor/iq/imx307.ini + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/iq $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/sensor/iq/imx335.ini + $(INSTALL) -m 644 -t $(TARGET_DIR)/etc/sensors/iq $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/sensor/iq/f23.ini + ln -sf imx307.ini $(TARGET_DIR)/etc/sensors/iq/default.ini + + $(INSTALL) -m 755 -d $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/hisilicon + $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/hisilicon $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/kmod/camhi-motor.ko + $(INSTALL) -m 644 -t $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/hisilicon $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/kmod/hi3516ev200_isp.ko + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/script/load* + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/script/ircut_demo + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/script/set_allocator + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib/sensors + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/sensors $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/sensor/*.so + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/lib + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libaaccomm.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libaacdec.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libaacenc.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libaacsbrdec.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libaacsbrenc.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libbcd.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libdnvqe.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hiae.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hiawb_natura.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hiawb.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhi_cipher.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hidehaze.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hidrc.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hiir_auto.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/lib_hildci.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_AEC.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_AGC.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_ANR.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_common.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_EQ.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_HPF.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_record.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libhive_RES.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libisp.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libive.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libivp.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libmd.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libmpi.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libsecurec.so + # $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libtde.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libupvqe.so + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/lib/ $(HISILICON_OSDRV_HI3516EV200_PKGDIR)/files/lib/libVoiceEngine.so +endef + +$(eval $(generic-package)) diff --git a/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/scripts/excludes/hi3518ev300_lite.list b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/scripts/excludes/hi3518ev300_lite.list new file mode 100644 index 0000000..8ee596c --- /dev/null +++ b/devices/hi3518ev300_lite_xiaomi-mjsxj02hl/general/scripts/excludes/hi3518ev300_lite.list @@ -0,0 +1,45 @@ +etc/sensors/5M_imx335.ini +etc/sensors/camhi_imx307_i2c_4l_1080p.ini +etc/sensors/gc2053_i2c_1080p.ini +etc/sensors/imx307_i2c_2l_1080p.ini +etc/sensors/imx335_i2c_4M.ini +etc/sensors/jxf23_i2c_1080p.ini +etc/sensors/jxf37_i2c_1080p.ini +etc/sensors/sc2231_i2c_1080p.ini +etc/sensors/sc2232h_i2c_1080p.ini +etc/sensors/sc2239_i2c_1080p.ini +etc/sensors/sc2315e_i2c_1080p.ini +etc/sensors/sc3235_i2c_3M.ini +etc/sensors/sc4236_i2c_3M.ini +etc/sensors/sp2305_i2c_1080p.ini +etc/sensors/WDR/5M_imx335.ini +etc/sensors/WDR/imx335_i2c_4M.ini +# +etc/sensors/iq/gc2053.ini +etc/sensors/iq/default.ini +etc/sensors/iq/imx307.ini +etc/sensors/iq/imx335.ini +etc/sensors/iq/sc2232.ini +etc/sensors/iq/sc2335.ini +# +usr/bin/ircut_demo +# +usr/lib/sensors/libsns_f23.so +usr/lib/sensors/libsns_f37.so +usr/lib/sensors/libsns_gc2053.so +usr/lib/sensors/libsns_imx307.so +usr/lib/sensors/libsns_imx307_2l.so +usr/lib/sensors/libsns_imx335.so +usr/lib/sensors/libsns_sc2231.so +usr/lib/sensors/libsns_sc2232h.so +usr/lib/sensors/libsns_sc2239.so +usr/lib/sensors/libsns_sc2315e.so +usr/lib/sensors/libsns_sc3235.so +usr/lib/sensors/libsns_sc4236.so +usr/lib/sensors/libsns_sp2305.so +# +etc/mediatek +lib/modules/4.9.37/hisilicon/camhi-motor.ko +lib/modules/4.9.37/kernel/drivers/net/wireless +lib/modules/4.9.37/kernel/drivers/staging +lib/modules/4.9.37/kernel/fs/f2fs