From 2736fc299d6d334a0416cdd136a3a71730897735 Mon Sep 17 00:00:00 2001 From: Scott Kilau Date: Tue, 14 Jun 2022 20:26:55 -0500 Subject: [PATCH 01/19] Start adding support for Bonding Ethernet and Wifi --- SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 33 +++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index 61947c8..f695b97 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -63,19 +63,39 @@ wait_wlan() { rename_interface() { ##Fool iCamera by renaming the hardline interface to wlan0 echo "renaming interfaces" + + # Bring all interfaces down ifconfig $1 down ifconfig wlan0 down - /opt/wz_mini/bin/busybox ip link set wlan0 name wlanold - /opt/wz_mini/bin/busybox ip addr flush dev wlanold - /opt/wz_mini/bin/busybox ip link set $1 name wlan0 + ifconfig bond0 down + + # Rename the real wlan0 interface + /opt/wz_mini/bin/busybox ip link set wlan0 name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold + + # Have to bring bond0 up to be able to bond our slaves. + /opt/wz_mini/bin/busybox ip link set bond0 up + + # Enslave the Ethernet and Original Wifi interfaces + # under the Bonding interface. + /opt/wz_mini/tmp/.bin/ifenslave bond0 eth0 wlanold + + # Have to bring bond0 down to be rename the interface + /opt/wz_mini/bin/busybox ip link set bond0 down + + # Name the bond0 interface to be the "new" wlan0 interface + /opt/wz_mini/bin/busybox ip link set bond0 name wlan0 + + # Bring the newly renamed wlan0 back up eth_wlan_up } eth_wlan_up() { ##Run DHCP client, and bind mount our fake wpa_cli.sh to fool iCamera - ifconfig wlan0 up + ifconfig wlan0 up + pkill udhcpc - udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b + udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b if [[ "$V2" == "true" ]]; then mount -o bind /opt/wz_mini/bin/wpa_cli.sh /system/bin/wpa_cli else @@ -224,6 +244,9 @@ if [[ "$ENABLE_USB_ETH" == "true" ]]; then insmod $KMOD_PATH/kernel/drivers/net/usb/$i.ko done + # Insert the bonding driver when running Ethernet + insmod $KMOD_PATH/kernel/drivers/net/bonding.ko mode=active-backup miimon=100 downdelay=5000 updelay=5000 primary=eth0 + swap_enable netloop eth0 From 9d78ea2ea60803f82e224caf8e4cb4a6a1ac0860 Mon Sep 17 00:00:00 2001 From: Scott Kilau Date: Tue, 14 Jun 2022 22:52:17 -0500 Subject: [PATCH 02/19] Add wpa_supplicant daemon that works properly for the wlanold interface. With this addition, the bonding now works correctly. Ethernet is used when available/connected, and will fallback to Wifi when not. As soon as Ethernet does become available again, the bonding will switch to it as priority. --- SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 46 +++++++++++++++------------ 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index f695b97..3d364bd 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -64,43 +64,49 @@ rename_interface() { ##Fool iCamera by renaming the hardline interface to wlan0 echo "renaming interfaces" - # Bring all interfaces down + # Bring all interfaces down ifconfig $1 down ifconfig wlan0 down - ifconfig bond0 down + ifconfig bond0 down - # Rename the real wlan0 interface - /opt/wz_mini/bin/busybox ip link set wlan0 name wlanold - /opt/wz_mini/bin/busybox ip addr flush dev wlanold + # Rename the real wlan0 interface + /opt/wz_mini/bin/busybox ip link set wlan0 name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold - # Have to bring bond0 up to be able to bond our slaves. - /opt/wz_mini/bin/busybox ip link set bond0 up + # Have to bring bond0 up to be able to bond our slaves. + /opt/wz_mini/bin/busybox ip link set bond0 up - # Enslave the Ethernet and Original Wifi interfaces - # under the Bonding interface. - /opt/wz_mini/tmp/.bin/ifenslave bond0 eth0 wlanold + # Enslave the Ethernet and Original Wifi interfaces + # under the Bonding interface. + /opt/wz_mini/tmp/.bin/ifenslave bond0 eth0 wlanold - # Have to bring bond0 down to be rename the interface - /opt/wz_mini/bin/busybox ip link set bond0 down + # Have to bring bond0 down to be rename the interface + /opt/wz_mini/bin/busybox ip link set bond0 down - # Name the bond0 interface to be the "new" wlan0 interface - /opt/wz_mini/bin/busybox ip link set bond0 name wlan0 + # Name the bond0 interface to be the "new" wlan0 interface + /opt/wz_mini/bin/busybox ip link set bond0 name wlan0 - # Bring the newly renamed wlan0 back up + # Bring the newly renamed wlan0 back up eth_wlan_up } eth_wlan_up() { ##Run DHCP client, and bind mount our fake wpa_cli.sh to fool iCamera - ifconfig wlan0 up - + ifconfig wlan0 up pkill udhcpc - udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b + udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b + + # Kill any existing wpa_supplicant that might be running + # and spawn our own instead + /opt/wz_mini/bin/busybox killall wpa_supplicant + wpa_supplicant -D nl80211 -i wlanold -c /tmp/wpa_supplicant.conf -B -s + if [[ "$V2" == "true" ]]; then mount -o bind /opt/wz_mini/bin/wpa_cli.sh /system/bin/wpa_cli else mount -o bind /opt/wz_mini/bin/wpa_cli.sh /bin/wpa_cli fi + break } @@ -244,8 +250,8 @@ if [[ "$ENABLE_USB_ETH" == "true" ]]; then insmod $KMOD_PATH/kernel/drivers/net/usb/$i.ko done - # Insert the bonding driver when running Ethernet - insmod $KMOD_PATH/kernel/drivers/net/bonding.ko mode=active-backup miimon=100 downdelay=5000 updelay=5000 primary=eth0 + # Insert the bonding driver when running Ethernet + insmod $KMOD_PATH/kernel/drivers/net/bonding/bonding.ko mode=active-backup miimon=100 downdelay=5000 updelay=5000 primary=eth0 swap_enable From adaa3ccf0b68e611ba990cc6d9c0b60ce2cc8b69 Mon Sep 17 00:00:00 2001 From: Scott Kilau Date: Wed, 15 Jun 2022 21:14:39 -0500 Subject: [PATCH 03/19] Start to parameterize the Binding values, so users can select them or not. --- SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 78 +++++++++++++++++++-------- SD_ROOT/wz_mini/wz_mini.conf | 8 +++ 2 files changed, 63 insertions(+), 23 deletions(-) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index 3d364bd..7612ebb 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -63,30 +63,54 @@ wait_wlan() { rename_interface() { ##Fool iCamera by renaming the hardline interface to wlan0 echo "renaming interfaces" - - # Bring all interfaces down ifconfig $1 down ifconfig wlan0 down - ifconfig bond0 down + /opt/wz_mini/bin/busybox ip link set wlan0 name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold + /opt/wz_mini/bin/busybox ip link set $1 name wlan0 + eth_wlan_up +} - # Rename the real wlan0 interface - /opt/wz_mini/bin/busybox ip link set wlan0 name wlanold - /opt/wz_mini/bin/busybox ip addr flush dev wlanold +rename_interface_and_setup_bonding() { +##Fool iCamera by renaming the hardline interface to wlan0 +## $1 Bonding Interface, $2 Primary Interface, $3 Secondary Interface + bonding_interface=$1 + primary_interface=$2 + secondary_interface=$3 - # Have to bring bond0 up to be able to bond our slaves. - /opt/wz_mini/bin/busybox ip link set bond0 up + echo "renaming interfaces" - # Enslave the Ethernet and Original Wifi interfaces - # under the Bonding interface. - /opt/wz_mini/tmp/.bin/ifenslave bond0 eth0 wlanold + # Bring all interfaces down + ifconfig $bonding_interface down + ifconfig $primary_interface down + ifconfig $secondary_interface down - # Have to bring bond0 down to be rename the interface - /opt/wz_mini/bin/busybox ip link set bond0 down + # Have to bring bonding interface up to be able to bond our slaves. + /opt/wz_mini/bin/busybox ip link set $bonding_interface up - # Name the bond0 interface to be the "new" wlan0 interface - /opt/wz_mini/bin/busybox ip link set bond0 name wlan0 + # Rename the real wlan0 interface if needed/used + if [[ "$primary_interface" == "wlan0" ]]; then + /opt/wz_mini/bin/busybox ip link set $primary_interface name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold + primary_interface="wlanold" + fi + if [[ "$secondary_interface" == "wlan0" ]]; then + /opt/wz_mini/bin/busybox ip link set $secondary_interface name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold + secondary_interface="wlanold" + fi - # Bring the newly renamed wlan0 back up + # Enslave the Ethernet and Original Wifi interfaces + # under the bonding interface. + /opt/wz_mini/tmp/.bin/ifenslave $bonding_interface $primary_interface $secondary_interface + + # Have to bring bonding interface down to be rename the interface + /opt/wz_mini/bin/busybox ip link set $bonding_interface down + + # Name the bonding interface to be the "new" wlan0 interface + /opt/wz_mini/bin/busybox ip link set $bonding_interface name wlan0 + + # Bring the newly renamed wlan0 (actually the bond interface) back up eth_wlan_up } @@ -96,10 +120,12 @@ eth_wlan_up() { pkill udhcpc udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b - # Kill any existing wpa_supplicant that might be running - # and spawn our own instead - /opt/wz_mini/bin/busybox killall wpa_supplicant - wpa_supplicant -D nl80211 -i wlanold -c /tmp/wpa_supplicant.conf -B -s + # If running with Interface Bonding enabled, kill any existing + # wpa_supplicant that might be running and spawn our own instead + if [[ "$BONDING_ENABLED" == "true" ]]; then + /opt/wz_mini/bin/busybox killall wpa_supplicant + wpa_supplicant -D nl80211 -i wlanold -c /tmp/wpa_supplicant.conf -B -s + fi if [[ "$V2" == "true" ]]; then mount -o bind /opt/wz_mini/bin/wpa_cli.sh /system/bin/wpa_cli @@ -134,7 +160,11 @@ wlanold_check() { eth_wlan_up else echo "wlanold doesn't exist" - rename_interface $1 + if [[ "$BONDING_ENABLED" == "true" ]]; then + rename_interface_and_setup_bonding bond0 "$BONDING_PRIMARY_INTERFACE" "$BONDING_SECONDARY_INTERFACE" + else + rename_interface $1 + fi fi } @@ -250,8 +280,10 @@ if [[ "$ENABLE_USB_ETH" == "true" ]]; then insmod $KMOD_PATH/kernel/drivers/net/usb/$i.ko done - # Insert the bonding driver when running Ethernet - insmod $KMOD_PATH/kernel/drivers/net/bonding/bonding.ko mode=active-backup miimon=100 downdelay=5000 updelay=5000 primary=eth0 + if [[ "$BONDING_ENABLED" == "true" ]]; then + # Insert the bonding driver if requested + insmod $KMOD_PATH/kernel/drivers/net/bonding/bonding.ko mode=active-backup miimon="$BONDING_LINK_MONITORING_FREQ_MS" downdelay="$BONDING_DOWN_DELAY_MS" updelay="$BONDING_UP_DELAY_MS" primary="$BONDING_PRIMARY_INTERFACE" + fi swap_enable diff --git a/SD_ROOT/wz_mini/wz_mini.conf b/SD_ROOT/wz_mini/wz_mini.conf index ded368b..a526851 100644 --- a/SD_ROOT/wz_mini/wz_mini.conf +++ b/SD_ROOT/wz_mini/wz_mini.conf @@ -32,6 +32,14 @@ ENABLE_IPTABLES="false" ENABLE_NFSv4="false" +##### NETWORK INTERFACE BONDING ##### +BONDING_ENABLED="true" +BONDING_PRIMARY_INTERFACE="eth0" +BONDING_SECONDARY_INTERFACE="wlan0" +BONDING_LINK_MONITORING_FREQ_MS="100" +BONDING_DOWN_DELAY_MS="5000" +BONDING_UP_DELAY_MS="5000" + #####ACCESSORIES##### REMOTE_SPOTLIGHT="false" REMOTE_SPOTLIGHT_HOST="0.0.0.0" From cdc6119fac8f6fc3c259a6ad8ae4045a6b7fb8cd Mon Sep 17 00:00:00 2001 From: Scott Kilau Date: Thu, 16 Jun 2022 10:14:49 -0500 Subject: [PATCH 04/19] If we change the primary interface name, ensure we tell the bonding driver about it. --- SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index 7612ebb..5478d15 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -89,16 +89,19 @@ rename_interface_and_setup_bonding() { /opt/wz_mini/bin/busybox ip link set $bonding_interface up # Rename the real wlan0 interface if needed/used - if [[ "$primary_interface" == "wlan0" ]]; then + if [[ "$primary_interface" == "wlan0" ]]; then /opt/wz_mini/bin/busybox ip link set $primary_interface name wlanold /opt/wz_mini/bin/busybox ip addr flush dev wlanold primary_interface="wlanold" - fi - if [[ "$secondary_interface" == "wlan0" ]]; then + # Because we just changed the name of the primary interface, we need to + # tell the bonding driver about the name change as well. + echo "$primary_interface" > /sys/devices/virtual/net/$bonding_interface/bonding/primary + fi + if [[ "$secondary_interface" == "wlan0" ]]; then /opt/wz_mini/bin/busybox ip link set $secondary_interface name wlanold /opt/wz_mini/bin/busybox ip addr flush dev wlanold secondary_interface="wlanold" - fi + fi # Enslave the Ethernet and Original Wifi interfaces # under the bonding interface. From d94a7637d029b015ff65a6816ce671ed95ab1bdf Mon Sep 17 00:00:00 2001 From: Scott Kilau Date: Thu, 16 Jun 2022 10:50:07 -0500 Subject: [PATCH 05/19] Ensure bonding is only used if ethernet is also used. --- SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index 5478d15..de266b4 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -125,7 +125,7 @@ eth_wlan_up() { # If running with Interface Bonding enabled, kill any existing # wpa_supplicant that might be running and spawn our own instead - if [[ "$BONDING_ENABLED" == "true" ]]; then + if [[ "$BONDING_ENABLED" == "true" ]] && [[ "$ENABLE_USB_ETH" == "true" ]]; then /opt/wz_mini/bin/busybox killall wpa_supplicant wpa_supplicant -D nl80211 -i wlanold -c /tmp/wpa_supplicant.conf -B -s fi @@ -163,7 +163,7 @@ wlanold_check() { eth_wlan_up else echo "wlanold doesn't exist" - if [[ "$BONDING_ENABLED" == "true" ]]; then + if [[ "$BONDING_ENABLED" == "true" ]] && [[ "$ENABLE_USB_ETH" == "true" ]]; then rename_interface_and_setup_bonding bond0 "$BONDING_PRIMARY_INTERFACE" "$BONDING_SECONDARY_INTERFACE" else rename_interface $1 @@ -284,7 +284,23 @@ if [[ "$ENABLE_USB_ETH" == "true" ]]; then done if [[ "$BONDING_ENABLED" == "true" ]]; then - # Insert the bonding driver if requested + if [[ "$BONDING_LINK_MONITORING_FREQ_MS" == "" ]]; then + "$BONDING_LINK_MONITORING_FREQ_MS" = "100" + fi + if [[ "$BONDING_DOWN_DELAY_MS" == "" ]]; then + "$BONDING_DOWN_DELAY_MS" = "5000" + fi + if [[ "$BONDING_UP_DELAY_MS" == "" ]]; then + "$BONDING_UP_DELAY_MS" = "5000" + fi + if [[ "$BONDING_PRIMARY_INTERFACE" == "" ]]; then + "$BONDING_PRIMARY_INTERFACE" = "eth0" + fi + if [[ "$BONDING_SECONDARY_INTERFACE" == "" ]]; then + "$BONDING_SECONDARY_INTERFACE" = "wlan0" + fi + + # Insert the bonding driver into the kernel insmod $KMOD_PATH/kernel/drivers/net/bonding/bonding.ko mode=active-backup miimon="$BONDING_LINK_MONITORING_FREQ_MS" downdelay="$BONDING_DOWN_DELAY_MS" updelay="$BONDING_UP_DELAY_MS" primary="$BONDING_PRIMARY_INTERFACE" fi From 60aa017325da10225c86198b0a8e7d9641274299 Mon Sep 17 00:00:00 2001 From: Scott Kilau Date: Thu, 16 Jun 2022 15:19:32 -0500 Subject: [PATCH 06/19] Default bonding to false. --- SD_ROOT/wz_mini/wz_mini.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SD_ROOT/wz_mini/wz_mini.conf b/SD_ROOT/wz_mini/wz_mini.conf index 3a5c38a..e0d16d9 100644 --- a/SD_ROOT/wz_mini/wz_mini.conf +++ b/SD_ROOT/wz_mini/wz_mini.conf @@ -35,7 +35,7 @@ ENABLE_NFSv4="false" ENABLE_RTL8189FS_DRIVER="false" ##### NETWORK INTERFACE BONDING ##### -BONDING_ENABLED="true" +BONDING_ENABLED="false" BONDING_PRIMARY_INTERFACE="eth0" BONDING_SECONDARY_INTERFACE="wlan0" BONDING_LINK_MONITORING_FREQ_MS="100" From 3dca5d188fc6f4b1b4a15d8557542a45a5a991b7 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 05:54:19 -0700 Subject: [PATCH 07/19] add night drop feature --- SD_ROOT/wz_mini/lib/libcallback.so | Bin 55555 -> 58609 bytes SD_ROOT/wz_mini/wz_mini.conf | 1 + src/libcallback_wz_mod/night_drop.c | 38 ++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 src/libcallback_wz_mod/night_drop.c diff --git a/SD_ROOT/wz_mini/lib/libcallback.so b/SD_ROOT/wz_mini/lib/libcallback.so index 4d5e9cb5236f8488025b619b37d95fe8ea47c290..e54d5e6992aa1dcf75136d731285564f99db0cd0 100644 GIT binary patch literal 58609 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 H{rvv|Jgii5 literal 55555 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 diff --git a/SD_ROOT/wz_mini/wz_mini.conf b/SD_ROOT/wz_mini/wz_mini.conf index 8952f50..f4bd7bc 100644 --- a/SD_ROOT/wz_mini/wz_mini.conf +++ b/SD_ROOT/wz_mini/wz_mini.conf @@ -84,6 +84,7 @@ ENABLE_CIFS="false" DISABLE_FW_UPGRADE="false" AUDIO_PROMPT_VOLUME="50" ENABLE_MP4_WRITE="false" +NIGHT_DROP_DISABLE="false" #####DEBUG##### #drops you to a shell via serial, doesn't load app_init.sh diff --git a/src/libcallback_wz_mod/night_drop.c b/src/libcallback_wz_mod/night_drop.c new file mode 100644 index 0000000..f050fc4 --- /dev/null +++ b/src/libcallback_wz_mod/night_drop.c @@ -0,0 +1,38 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +static uint32_t (*real_local_sdk_video_set_fps)(int encChn); + +int local_sdk_video_set_fps(int encChn) { + + const char *nd_enable="/opt/wz_mini/tmp/.nd"; + const char *product_T31="/opt/wz_mini/tmp/.T31"; + const char *product_T20="/opt/wz_mini/tmp/.T20"; + + if( access( nd_enable, F_OK ) != -1 ) { + printf("[command] [night_drop.c] Night Drop Enabled\n"); + if( encChn == 15 && access( product_T31, F_OK ) != -1 ) { + printf("[command] [night_drop.c] T31 detected\n"); + fprintf(stderr, "[command] [night_drop.c] Night Time Requested FPS Drop Value: %d\n", encChn); + printf("[command] [night_drop.c] Night FPS Drop Stopped\n"); + } else if ( encChn >= 15 && access( product_T20, F_OK ) != -1 ) { + printf("[command] [night_drop.c] T20 detected\n"); + fprintf(stderr, "[command] [night_drop.c] Night Time Requested FPS Drop Value: %d\n", encChn); + printf("[command] [night_drop.c] Night FPS Drop Stopped\n"); + } else { + fprintf(stderr, "[command] [night_drop.c] Requested FPS Value: %d\n", encChn); + fprintf(stderr, "[command] [night_drop.c] Calling local_sdk_video_set_fps to: %d\n", encChn); + real_local_sdk_video_set_fps(encChn); + } + + } +} + + +static void __attribute ((constructor)) nigh_drop_init(void) { + real_local_sdk_video_set_fps = dlsym(dlopen("/system/lib/liblocalsdk.so", RTLD_LAZY), "local_sdk_video_set_fps"); +} From 7a5109aa422168b3587dff995211df833ad96f2e Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 05:54:44 -0700 Subject: [PATCH 08/19] night drop libcallback source --- src/libcallback_wz_mod/Makefile | 2 +- src/libcallback_wz_mod/libcallback.so | Bin 55555 -> 58609 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcallback_wz_mod/Makefile b/src/libcallback_wz_mod/Makefile index dc932f2..dc4c7bc 100644 --- a/src/libcallback_wz_mod/Makefile +++ b/src/libcallback_wz_mod/Makefile @@ -2,7 +2,7 @@ CC = /openmiko/build/mips-gcc472-glibc216-64bit/bin/mips-linux-uclibc-gnu-gcc CFLAGS = -fPIC -std=gnu99 -shared -ldl -ltinyalsa -lm -pthread -CC_SRCS = video_callback.c audio_callback.c jpeg.c setlinebuf.c mmc_format.c curl.c freopen.c opendir.c remove.c motor.c command.c gmtime_r.c wait_motion.c irled.c audio_play.c mp4write.c imp_control.c +CC_SRCS = video_callback.c audio_callback.c jpeg.c setlinebuf.c mmc_format.c curl.c freopen.c opendir.c remove.c motor.c command.c gmtime_r.c wait_motion.c irled.c audio_play.c mp4write.c imp_control.c night_drop.c TARGET = libcallback.so all: ${TARGET} diff --git a/src/libcallback_wz_mod/libcallback.so b/src/libcallback_wz_mod/libcallback.so index 4d5e9cb5236f8488025b619b37d95fe8ea47c290..e54d5e6992aa1dcf75136d731285564f99db0cd0 100644 GIT binary patch literal 58609 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 H{rvv|Jgii5 literal 55555 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 From 7279817608055f1a76a446889cc1b6f05709aa26 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 05:55:20 -0700 Subject: [PATCH 09/19] prep for atbm driver --- SD_ROOT/wz_mini/etc/init.d/wz_post.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_post.sh b/SD_ROOT/wz_mini/etc/init.d/wz_post.sh index d2406e3..22ad6a1 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_post.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_post.sh @@ -52,6 +52,13 @@ if [[ "$ENABLE_RTL8189FS_DRIVER" == "true" ]]; then fi fi +if [[ "$ENABLE_ATBM603X_DRIVER" == "true" ]]; then + echo "Enable atbm603x_wifi_sdio_24M" + if [ -f /opt/wz_mini/tmp/.T31 ]; then + sed -i 's/\/system\/driver\/atbm603x_wifi_sdio.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/atbm603x_wifi_sdio_24M.ko/g' /opt/wz_mini/tmp/.storage/app_init.sh + fi +fi + ##RTSP SERVER INIT if [[ "$RTSP_HI_RES_ENABLED" == "true" ]] || [[ "$RTSP_LOW_RES_ENABLED" == "true" ]] && ! [[ -e /tmp/dbgflag ]]; then From 33fef73458c7ebda612edb114401a62ba75bdf51 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 05:56:02 -0700 Subject: [PATCH 10/19] remove fd after upgrade script exit --- SD_ROOT/wz_mini/bin/upgrade-run.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/SD_ROOT/wz_mini/bin/upgrade-run.sh b/SD_ROOT/wz_mini/bin/upgrade-run.sh index 5c4b237..297af25 100755 --- a/SD_ROOT/wz_mini/bin/upgrade-run.sh +++ b/SD_ROOT/wz_mini/bin/upgrade-run.sh @@ -50,6 +50,7 @@ echo "Launching latest upgrade-script" /opt/wz_mini/bin/upgrade-run.sh backup_begin & echo "Exit old script" +rm -f /dev/fd exit 0 } From de3fadebc93ddc503e097651f8b9489f831c6801 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 06:14:41 -0700 Subject: [PATCH 11/19] night drop feature --- README.md | 9 +++++++++ SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 4 ++++ SD_ROOT/wz_mini/lib/libcallback.so | Bin 58609 -> 58524 bytes file.chk | 10 +++++----- src/libcallback_wz_mod/imp_control.c | 17 ++++++++--------- src/libcallback_wz_mod/libcallback.so | Bin 58609 -> 58524 bytes 6 files changed, 26 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a97afcc..4a650cb 100644 --- a/README.md +++ b/README.md @@ -377,6 +377,15 @@ This script will upgrade wz_mini over the air. It will backup `wz_mini.conf`, a If there are any line differences between the old `wz_mini.conf` and the new release, the script will preserve the current config in place. Note that this means any missing or additional lines. It is recommended to download the latest wz_mini.conf from github, if there are any major changes to the file, copy the new one to your system first, set your parameteres, save the file, then perform the upgrade. NOTE: if you are upgrading a V2 camera from a release older than 06-16-22, you must manually download the upgrade-run.sh script from this repo and place it in `wz_mini/bin/upgrade-run.sh`, then run it from there ! + +--- + +``` +NIGHT_DROP_DISABLE="false" +``` + +Stop the camera from dropping the frame rate during nightvision. + --- ## Latest Updates diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index 7fe5b3e..19eac6a 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -629,6 +629,10 @@ if ([[ "$RTSP_LOW_RES_ENABLED" == "true" ]] || [[ "$RTSP_HI_RES_ENABLED" == "tru /opt/wz_mini/bin/rtmp-stream.sh "$RMTP_STREAM_SERVICE" "$RTMP_AUDIO" fi +if [[ "$NIGHT_DROP_DISABLE" == "true" ]]; then + touch /opt/wz_mini/tmp/.nd +fi + hostname_set touch /opt/wz_mini/tmp/.wz_user_firstrun pkill -f dumpload #Kill dumpload so it won't waste cpu or ram gathering cores and uploading them when something crashes diff --git a/SD_ROOT/wz_mini/lib/libcallback.so b/SD_ROOT/wz_mini/lib/libcallback.so index e54d5e6992aa1dcf75136d731285564f99db0cd0..c3abdd416be662a49888b87ddd85bdd836a010e2 100644 GIT binary patch delta 19143 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 delta 19345 zcmbV!4}83Qlw(hR8T7xNTEOxlpvs7Ew@37 zR4p`RPyq`D1r#qzcvMBVV8E*21z&iwyY4P%d6#wBd-1+-FZ-7J7Ug}Tk)IiM!c^B_M+3{LF3>K}EYQm!8;HUf&@G@LpiGblM4=V5 z1oRjIHOxfZ2%4tiR0gHruL6pG1KJFFlmG(e0~-N~1w9VJd|@RR_pF9(c%l#hJq4-- zY2gh#(DW$;(R8~9gc&CXGydMEKDVgxJj63VyH&hFjqgUBt3Fe-5!9gIVXQ`ZU{ev_ zran_tNu#|CMOE4Z;yIvZ0n_6H z3Le6q#KRT^ME`DYJ!6$tqj{~7f&6uY!Qe%f5t#c1#2SCA^3}JVNijYL@H8j}xrP_; z@GMfLo%Cl1&mWK?y~-=!8!xTp>jorA(~+D(OPWFq*2qdsyyjJmg>ng>xQ01SC!N^_2{I;k9G52NjqX-;-88v-zdh~RrzCkluu%F_5A+~Ol)w{43>+aD$Ht|fLow8lYpzC19`@) z{MXT!$g5PEs$^_9%KI@Vm#I4ay_}=`u^}ooLI(o>MhQ9y3kg;f3<>x!8W0q4BKjB* z@Qi_|P{0?c&jRj(Jg_sZ3kffx#~}fCLFGXKe+KN~?;2AZlA!E>kdp~XS|BU+BP98S z{Jp?F0sGNZuYli!Jdc3?iu@2J4|)Krm&EQsSKZzD4J;KEy1Els5ZEc;dg#t3;K`6= z67X;|hza-)Xh4JvIRfeGFW~PIuod#cQ4BDhbj6PhvW^W#lNmb=4Fv@J4*KC2@RMk! z?`3|=;Eb_eA^B@ktbiw?HEsd#rQW{G=MEm$@G+*bQ^@)T4YdjQpCHO4;JMHo6Yy&4 zsA>zTqo=8(0v?F+VF8oZ66(eevgK$?useYr1w%l>77 z&V_k=yfrfi{?RJ?5#_@|{y$*ugarHr z=1x$+`v(?45kkUL^uRCR5hTD3p>hLa+3Oe%-)6q)mW&3kz;+t-djwpCcDV%{f*6;8 zKSaJ$z+a% z0|M5eykEfE&;Xx+D`WUOw2d3nEb71tvU<-!R=I^`P(Tf1>R%2#_CJE8JF z2^?91_pypwfWuFrOtMn`7QLCV%W(BhL3t$bc`&e*hrTlXao|*M%@Z{X7A>B)a^b3Z zt5+_3V%~z~k1txXc;1p#3m;>YxM=0P1$B>W$&0)z<9hpuEu6ECmNfQBODyY(v9TlBB!}_j^eick7o}Tu9Z7t4`Y6duAl;ip zqPN9_Zyd?aVTTT+`FINi9LQy#9Ek8^=}GaCbas+Jn)NiWI{-soUG;% zjMr?WIVLfkBf?+Eus%#&|8c`*%0(%S!*rn0apeXx5f^o;JW**o)zF3ZQ@hde1F33l z!%$nBP+Kx;vvJ9qlzi>b9*3+ZNG}gQ+dKdzs`yB&bl84)~ z@`m>2xhU`?@%k*2bX^|S0G`_T!7QsmzrD;+$X7U$_@%5gLynB395YXM%#5kshGE)w>a1r zFcYn-hVYk0#Ty*$Q<`ENAw|QV*o@=RkO)+Cl{K6fUoXk>8 zIBfwa%npIMDazcsDw&TOohUi@#L+3kExjtR2xY_yQtY!vC^b+sNU}Dw(AfQyX5t4& zkJsfIy2AqD|1N9;3(q>xv7SB^fZ>|=cY;~J|j0<7tpKrI5}2rTDLhagm}>$ zUwW;lLAngw+ZDde%E%vbJPOTXv!u3lc5~(Mmxh`ze%=MUY2`*&zG{5$|(dlj|*drKm!rFMc`I5Ys zFi6t4)cjdc0gde}suzXUa&DP^P|*seYOecwfs}(%M5ce8Z*u)Tnf{87~e0I(@vzqqHJa zpy!@^efq3+x4e+hv*tDIIDArNLD_R$>>6K}Zi(N5mAHEcqEU3K+1rmsFT9wXef&TH za^qNu?DuN3h`K~>0_nFv)2~#_rQ65r&i$8aBKq3R%V5s|d#-FZFWh0~8*jh0s0=+a z3nP%rK5Z#z*DQfz6lv%*3tF&4u%J>N|MTs`CYGTa>RJf_^&HD8R(gLi^O za`($y*Mm1a!3JOO%7iS5^;@E?M+xtQSYCUl16nG{H1i#I4pudF1WzzlsQ=uZeOveq zWccLCPaLLVv$Te{)+fhwwglud?&7{>^Z~6`D~eO3WjvuSneQwf)uU!9E1CaPJVF=w zD;83QJUCl8>?`+7OoI~EPRvVp1$w?b%7AHkkUhM_$$9OXXx7<80SR?Oc;2LVqj%z6 zF#7oUP0`I0-K&%gyC&i5S-%w_KCuUYM&nTG=t+v*i`Pz~s z<2TW~D^Dl$_ev%hySh_Kro~@;qtRi{fda9?B#A@#Bc(-DQ|ai0My%37f_?JwGo|-Q z&D=i4ns8Ytmxk3=$SbGJi;sJ=R^F=Spi5o+$dqiOjZ!c;l%K-&Wj1xhi^^`r(~1pd zKBp{2QaquiGP9(omFj>2BQw#224tD$vs|e(CrjAx7QRVp#^l>vrstQ-EW#|(%k{YK zic1IvN}Fp`SA~R8>r=RQYOJvq#chl298ejPteMLi2Y|EFnp>X^b#UaW1mDAl=JlWLi6lj`}l^6}^? zS;TUFrJSte70j41cMpgUuWN+Gcd;9o|1LTJFcv~mc-?wvspjq!9-dyvgLmt7o_~vW zz}KTHzgCqLjN0dO-}4F6?}*meI^AmADoO?Gndwttt&;D_l1}lWd!{6xdcV<;>s#Lv z+Pz1fN%leyPTO1WNlHG2G1QJLXgp87PnP`HjHCo5$F;vo?gI|T_?ekzKD8xPiskVY zsl&CBgViadVeMsp0!_a}qka=fw8&47P9-<1BF`A!t*kT`KUSH?d}YI_lNDS?qYW z9dnLsRL|O*?=>e7=c7HO9K3h2bS^5z^@~#K?<2bc{qp_y#QZ>}^M6;I3E+$;++&5Gr##+i7yGR|1IM^S#0JiLFa%)@Kv%*?F* zOT?C|C3t9tnY(AD@y`3r#;)C^TWI9B@(cH;;*^LgHqA6c3z#*g9{%1zb zbua{OSvlbcbCSa!l)?Ev-eQ(M&DLHQO0Mmp0t_-upt^_15U+bE8_pOhwd0{?>23L` zy2{kUIcnb1`(;bz+p6NE%lt}JGCx{1z_5D{y#p!zTvcqm*0<|WGV!Fw2E|V0JlqN8 z{O~ZT$S^xw%9T~*ntjoDN@Y`4tm~0tIP26n|05N0V^cQI(erDM#HnqzRHxx7Va`$> zs4k8_yQkFQ!3e+vwNTH%Y*MoOcx~s<+$z~8B75-8oJqReuVpU=nsWr@SBhtOd@#I{#ijEbjC2WMq_OC9(`Nq#k9KM}QB9+gu$FA1W0pKKGtH92-sdYK@- zPAwxJ@Y>rTIZl;KwlfD7$aPTJHC%;y$%7vUzk2=rd(eS1^QmjQ79<&HKLyLQfI2sP z!85ScyB2({^Ss4J-J8j`*2dA}-rC>lYu_qu=B`>Br6m$5#F!VNFs;10ZgxDrvT%%4 z#;+_&;@>QcQ=hIaG$*@0EW>N-*_KYI-R`vM;ArYPxqZil(jN#~!tsNtSrDo=rLyvbxf!aDtv~|+*JK-=T;5RYXM7_avn3hG&^6Z4Fk4kZ7h6Crr z%GP5)W->N#%Prio(iHD|yYG%szu9ZTN=opK>tXNQf<aes>-xw-n9JZmbrf4&6c?$Qd#C{ z+?$L2!BKgs)9;qfed1cD-z{q~GNNl)xUc7WEe7sw3kvs%hupR3mp13M_2dFa_X%|s zWb{6vF4knw33cs9eSdST7DXhI2+@qJ+D9kUy0aa;bk!I;bz-xy8EpbLote=R4eXvBby))H8 zZb3O;vD#`}6V1m?4Chk^SLYeGg2Nzl$kJEa;9t{|^U2tZz&mx#fp==L*VrJ(_*6lT zenMewm^*hayhiIWEkL{IT9nG&pzS-O>yH?BQ zp-0Whre3+rv|Oo<`ks74-?Q>n(fnf4Z1SIb<=02^JLJZl@0H&u=aW+w{*8%#Y(@vZ z?8Va@l@XEiKkAjgMb5wSbaoGYWy1#|qtx+qoP<*wwB6sUTwA~8qzOa#yl3Ju!>HWi zUgdW8TMp+xw;n&R3Idwj^HXElEm=JnweY>d2_~U9}+6>3a!})P9 zai?T)D>n2MSCW|;Z&cryR9=zzidr6DZDMlM1liO};<;Zfks6y6|EOAC7nL}_m&D6I z)8#CDp`>@z^8{ZCJap=Fp;|g7D$m(V-Zfbs>XwRl&C^MJCYh9KsVGBda6%4#J%#}ap_HlL zQut*h=JlTN zpDpEX)JnlKZ#g0N-PdR`RLG?+ym-^TZ(grY2*SW=CsNA1t$8UszIuPDz;>O+^@v^4arHz5A@&0N246-M zOoLaw!DQIlud*&|PzMkE^)i24lgY5ZU;fr6g}=2aMXHut+yVZ>{qmQ*pzxQ#;k3wu zx9kOzp|fB9D=I%Zs3EyMX)l@#;ePpdsgrNlizzs0p#Gi$|2dhzpJ7g}#+$u=9agH2 zn=;PT7-xqpH}sOp5cxT|+|_)u`2$16z0I-eqN;duz-()4M%A z6brEZQYdB%KF#y9qb*zUg&BRK#}MdivhbVye>Z22w1G`?RSNM;zqHd^+Kp#AY3lyj zuViDkq3&Jvl%4xFTJUL6$);?>7A>vMZm8qksSc;S8-jylVDD*VZJTUrS*MovYs=a- zKd!gOSM{D&7Y4D9wB~3o9XNXVZ7t(;wY#F{Bw;k8+q1b0X4$jRc|YR!<__b&rwll{ z{J!N$a~rcbO!(-~zNRaNJ|cV#n7jS;{G8t;wes`+|HaR>+N9s|A6h3%zu~uS{sg~k z{jfO?-bgy1C)Mz^e6sWiKf?dJG=p#4GFd9;r}1|RkAL}foIAez@?>e;p&wqpPvRA? z7MR4EhEPqRNoJjC8{eLmnQ(b)_cxjmd_?&0p_8vZm9jagzr6q-xVDXF%ryxgzvBK& z1mvE^n5P^gKONtH&cz3;^BC)_!?&SN;HDBjXuZyhg3}soJ8>Bdq=ohXV;!In=mh92 zs0(xvbQyFNbR9&u$Sk1hH}EWk$eZ{&b$54yM|h^xiz>dX#N*giHQ~A%>-Q*yO=@gW zW1AZ1?%`t(j=@<-%|R>PkLwOv$J2Ej8%Vx(gE;akK4adfi0Q&}7!(2pK>?5--i)flP!!kuA_EC=3dLf}jA%5AuP$pia7igy6xm8|2!8i+@f$P_Q93(K9H5 z59hl;VUQo6|Ar6;K>-j2KVl!}U;ejY4JJwgMK+@dh`yl@BMyOrpa95E*o{2I6ugK% zAUDVba)N9i6NrH#t&jx@gF>JnC;;+{&5#GY2h7avL=PM>Pi=h^g0HhqRopI+1F z*7S+>z zlPM8%Yt9EW!`6O)R!ox_&MJ|o9Eg59`|bNyX*%Btw&}8L51;d)RaaF(%y_lzKG!GIH1OZ{N4_wTEf5xZ|)@*ICDpLhcf|5gz^{lA4ywtkqsQ zay-E&fqSLQ(9CyyWYtwX#pgoEc|7_z^0^;oNY@Xgf7~KT`}w>fDh4){XLe*7==R?wes@Qfd=;23=K1;R4y%zqwvX(R2WF;s8%P@+C~|`6E^XeX0)k^=OtMf~Sjo~F23^B|g zW9kWo7^X0aml-KtyJ;B1a32JLx%9fcVAnk^#qFC#QJfqJH- zC(3bzZw$5QDDzlGjaG>cmB84t-Rkv5!p{Il1dL_DNI4`aJ;LuHwqT7= zpzi-}v{_b&WqC+Tq9jOJm{M+Lh_dA8;89F2jcs6jMfFA=c z7VtB`E&;ayV_o0-X-17(Nd5%Lvjltsc+FVcae%u+E&mtbav}duz!d_%3S1^&9m=)w z)1OYp(Mo)$HPel6ByFk|79h_%5mrhaiPgZc9rt!-=wLe@?;N8G2Kdg-NhLl(AYBG* z6tEt`=*1jSg(LxYxnv+WnC?k6@$}EE34Wo}6r{TOjL)oaM;`ku4~^S_=O91wnN`Q8 z^KU=P$oJrC^fguJKZ5<#`xprMUlO|nTm`#IZwt~2T|Yg=Z~NR@+O?Zfh;cB>!U_t1 zAR%9wdAY#;O3dCkrPKuA>wA=I{=`2W7}jjl=NSoICC5~&{!8#HS|HsK&R7_Dvu!e0T4SE>IM*d*lN0JaI(fN^jN zcqp(-z;`qa8SUT zfW<3S+kwSv;KzVN0{;o%uz+z%wV}s7H9ZV&L|_<926!`ROVO7ZSavW}d>b%19TZ5P zcL9?lLV@rMV3&aDUYuLNON|b+Xnyxa^_Rfl5g6!#pLa9=>C21;pOE|&lEr&~-vaxE z{67E(1pE_lP{70RA`$Py+krzu{%GK^fJ+8JQR28D0!IWa|EDpu6+$2lnB$>A4WoXRiUis(Q6Pp) zVA?}bAY2Np1?uraU~R8O`OAUb0{@G^9s&D-y#n3|tc3;}o<2r`PhbcE`vrU&I3VD! zfyMu~;yd7=kpDff`2Sd31J;5K4}))kMiu@Bxrd2J2nzzTfV%{I8?gBQVB8KI5%Omd zUebMubvCg0-v&GlEdI9w+kllzuFyYSYTbhb8@9d_NTnYGI|Y0a*d^dFuv@_Y3XE+t zqc=27!XJQXD@}pq4Y(Ej@UIoSGKj?i({>y7Phl`4!6y_L0ZjWt?bfXm*e~R}fVGf- zhiSk8A^%}u+T$w?GO-1Om%_0`0(E#Pa1i`dzuZDxa_I42iM$O=n^SzSE*Cfm91<${ z05~k*Bfwn(?gZ|hBZ=(yz~X;J5(bXEqSP-p;2)46{@*0u0yCUkP#_gv0X7LZ&V(To za5}J4z*)~K}h%s3F808l0yTl1{>mHVDZ0BnFSmX%FhPwRyjN*Dz9$pr~^*{%V$P- zCcG9noeq*HP{MX3I0YOyWc+%tMAMHPTExcyc@+Ca~ QyCnXMCH~O7KTMSVFEy!i?EnA( diff --git a/file.chk b/file.chk index 0f89fa9..43f6713 100644 --- a/file.chk +++ b/file.chk @@ -3,8 +3,8 @@ d41d8cd98f00b204e9800998ecf8427e SD_ROOT/wz_mini/mnt/.gitignore 34c6a4c3a941ff2becd9f487826d7692 SD_ROOT/wz_mini/etc/uvc.config ad7d1a2f9db3079617731b5854ce3b6a SD_ROOT/wz_mini/etc/init.d/wz_cam.sh 0774518c06d6ef8e7181d35f194777cc SD_ROOT/wz_mini/etc/init.d/wz_init.sh -c94845a6a1bd6c20f643daf4595b03f9 SD_ROOT/wz_mini/etc/init.d/wz_user.sh -48c4fd27a194459efda6e92b446f51a0 SD_ROOT/wz_mini/etc/init.d/wz_post.sh +a98928459d20f5202bec263a1ec6f5f5 SD_ROOT/wz_mini/etc/init.d/wz_user.sh +babb83cd8cdbd5af8639cfaecbca2d70 SD_ROOT/wz_mini/etc/init.d/wz_post.sh e3034eac02d8eda9902ca9cf89f0a586 SD_ROOT/wz_mini/etc/inittab 840aa9c26726201f7cffbf001bee193a SD_ROOT/wz_mini/etc/uvc_jxf22.config 2609cae8b3b084d83e84299528d8bc93 SD_ROOT/wz_mini/etc/wz_mini.conf.dist @@ -49,7 +49,7 @@ a8970288e72c871bff6a4484f1e733d6 SD_ROOT/wz_mini/bin/readelf 41b56bb30f02bce5f5e2598073151e16 SD_ROOT/wz_mini/bin/ffmpeg e37474a12d76cae16336476cba61e8b8 SD_ROOT/wz_mini/bin/neofetch 7fcc716cda1e024dae1045050a135beb SD_ROOT/wz_mini/bin/audioplay_t31 -1b34a65eae3c4aed0704cc90e59757ce SD_ROOT/wz_mini/bin/upgrade-run.sh +acc689ec54f1441af6af08d3c5be6447 SD_ROOT/wz_mini/bin/upgrade-run.sh e6a6a9dd8ce138686083a3d4303cea40 SD_ROOT/wz_mini/bin/iperf3 0468ffb319707687557353242a518923 SD_ROOT/wz_mini/bin/wg 65510c6c4d0db4b4679fc92d1c617fdd SD_ROOT/wz_mini/bin/rtmp-stream.sh @@ -81,7 +81,7 @@ b339aee882a5d1c943ad08e4282ec3fd SD_ROOT/wz_mini/usr/bin/iCamera-dbg 4c780f0455481d106d47d89f0ae04ed5 SD_ROOT/wz_mini/lib/uClibc.tar 9afeb088e4cbabbe0b04033b560204d0 SD_ROOT/wz_mini/lib/libimp.so 4100755cb6cc6e3b76da20c7e3690e16 SD_ROOT/wz_mini/lib/libalog.so -11efb592b989c853d0db65b5aa5e5413 SD_ROOT/wz_mini/lib/libcallback.so +8b11cb5de135891af07b5fd9675ce73a SD_ROOT/wz_mini/lib/libcallback.so baf8d0b7a28f2fbb49a19ae0980779da SD_ROOT/wz_mini/lib/modules/3.10.14/modules.order 70775da41db88e4450d910b4ee8621c0 SD_ROOT/wz_mini/lib/modules/3.10.14/kernel/crypto/md4.ko abbaa461e044b5688814423a087fbc52 SD_ROOT/wz_mini/lib/modules/3.10.14/kernel/fs/ext4/ext4.ko @@ -184,5 +184,5 @@ ccf8f3611141656ba5594771bec06202 SD_ROOT/wz_mini/lib/modules/3.10.14__isvp_swan 14865a6e2e2df87a8362c6f20377a934 SD_ROOT/wz_mini/lib/libtinyalsa.so.2 bd383994491e4bdca81788c168feb2eb SD_ROOT/wz_mini/lib/libasound.so.2 f6f0d5a9ebd916de6bdb9695067809ae SD_ROOT/wz_mini/lib/libaudioProcess.so -2609cae8b3b084d83e84299528d8bc93 SD_ROOT/wz_mini/wz_mini.conf +8d8b7d0665522562b174be8aeee8f31a SD_ROOT/wz_mini/wz_mini.conf d41d8cd98f00b204e9800998ecf8427e SD_ROOT/wz_mini/tmp/.gitignore diff --git a/src/libcallback_wz_mod/imp_control.c b/src/libcallback_wz_mod/imp_control.c index 2ec10fa..bf6a2cd 100644 --- a/src/libcallback_wz_mod/imp_control.c +++ b/src/libcallback_wz_mod/imp_control.c @@ -158,21 +158,20 @@ int fps_den = 1; IMP_ISP_Tuning_SetHVFLIP(3); } } else if(!strcmp(p, "fps_set")) { - //encoder framerate failed p = strtok_r(NULL, " \t\r\n", &tokenPtr); -// fps_val = 20; if(p) fps_val = atoi(p); -// IMP_ISP_EnableTuning(); -// IMP_ISP_Tuning_SetSensorFPS(fps_val, fps_den); + IMP_ISP_EnableTuning(); + IMP_ISP_Tuning_SetSensorFPS(fps_val, fps_den); - paracfg_set_user_config_item(5,fps_val); + //encoder framerate failed +// paracfg_set_user_config_item(5,fps_val); - set_fs_chn_config_fps(encChn, fps_val); - set_fs_chn_config_fps(encChn1, fps_val); +// set_fs_chn_config_fps(encChn, fps_val); +// set_fs_chn_config_fps(encChn1, fps_val); - set_video_max_fps(fps_val); - local_sdk_video_set_fps(fps_val); +// set_video_max_fps(fps_val); +// local_sdk_video_set_fps(fps_val); // local_sdk_video_set_gop(encChn, fps_val); diff --git a/src/libcallback_wz_mod/libcallback.so b/src/libcallback_wz_mod/libcallback.so index e54d5e6992aa1dcf75136d731285564f99db0cd0..c3abdd416be662a49888b87ddd85bdd836a010e2 100644 GIT binary patch delta 19143 zcmbV!4SZ8Yy7xJ00tuv&wka*NG)Wt1fhTzUG^?}Z@63UDwn-)*=2XRd)ejvKXcAWCk52^ z&M!~q{O9ADnP+C6d1i7ZS57BvKb;UtH(3Tr(r8JN?DdYaUe)^~sd``iqJf6<36kWm z-@K#f3zH3{yE{_>Nq5VPRhAN&^0>73e=~8Nch^LXDxu9Vna@#;t`I98|gP*TH zKM9{2kqdf64WqKqHpvFs3F-}c0CXqlIS{!*kQ-DAS_Jwr=pE2>s_r;EI6(EFiJ$`J zFr?LAFxHL&C<2ko0L=!y0U8e43_=UJ8>sqD_<5k`K^s7?fJC2zmna8pwnG&Z)(S;qE8+UIBVY zf&9A>-!yE-fM}TA1DXfIXyYyw-_z9RmsP(K{@d#FM%Ax??^2)1dkORmXp1Bblzey~ zR}T6Ce^S1@^=DIRAII}uYTyFZU#9vKRG++OLHB~{2*Ax$JgEl$qw2Hf-LE~sp96YP z!1P$H;-_f5HS~zwT7T9iFGtntyLyvoBxwoARDU+Zw3b6jT3vrOZO}S^r$Gs7pys`R zhX4}D+wnEvO(2@5?8S*!GoDQ3*l6O zzr-<2mij@e{tvnf_yp-UU_MdLQu;}Vau1WFR+axDsQBi zGP0&&C!UC>G`bGhdMTJ8Gj`l|R0U;m}8TH4RsE~d);yVN!LIooNega(_7Vw`CAI2~Nd+5Iu=`J*|QHak#g+l@k0|x}W zwl@^KUkI2;5)<%XRLCpfw^0F)fd5Dm6R-_EU>EQ`$Zui4=wllx389~pn4lTS(LmWt z14Y0qP|c1lY)Id%+K3SRC9;JDe4WOJfOk`C1x)Lj=CbkdGzN4)h(C|Y`vv@K@b?LL z9u07>5HOlrFW}Fq^#bk<26h2=qFojNFF^$*0Utwr7cG!*B!?%_ps0Y)8FC;9A>ctI zhzR(9z@U{qY_^RI3!%qR%|-$L2AvQR@M+)xV~5OHRemA3jrv}|QLym}_)Ell1pF%4 zxCJ~Et+TViiMDKu5Xz{{0jW+VG#kpLVYjbWZ*^t z%hW~z{|E911e^}+7jT&ged`kf+^B$8!2d?A74VzDZUKJ*(fg00arn^G`z5BHU5I}k z(z6J-1^guePwM4_AjrmpO9l-A1HTti;Mge5!)T4xvqN`e)piKUK1X>G0nb7`!UB$v z3J~yN#D@g@De4gr@XJ)JfH#A`PrzBdXc7nk*{GLCz&}P$xCOi!1=y;YL7S4z?u2#**(j|Aam2mfNZ)SKxBCYxqF{N#_9EW6t~ zgUJI^4o)AiM`mT6DGmGe?5_i-9jwUk$}`Wwq#@B;vHm2$D$|p{U6QV2QAmIlf0cZg z$W9910SlP?Mwn9M??ipce;ZaV`R|Z1msxy<{UI|asoA=} zr4q+r+dF8O zypX`4ND8svme6tI!`wXS;Qq`23xdghm-Ny8C`-ypN$gy=K4_3U7JFcQu#**J+2l@E zm6boc^Pp}Y=#}B=RnlK?_^ebkRnju3C^vkgyE^H}pN#xnfepbVDPXAv#_l7alS=c< zlE+%TZd=fF%}&z8bk{kf?AKYg*_7(fH#`;>a%m~N`!+bQ+>k7kiW;>wS*bgf5Jml| z-e~;(47Id@C~b>SS}ICQXH~Y8)UOZja&l3DdqsGCT`%OQW>4E}BdSsRbtr>`M|r!{ zI&48L-GLW^zegO^gUatpVy`S2$fB-Pwi+Xr&sz;&7L$#VUd&tS`dp5@e`94GJob%klnIyn8dDUZaZ3=Fo&W>!CVj9kaojZS0H z!Pc92N0Gy&@rI_T8a7Hdr!O0kon4aNqcaF=osr)9eLLgYHl@3IHtOci(7*9rDgXaE zBZD2uwSH%ZSl*xxsmjYYxYef&)|gj$TM@^1hG*#a?TnV8N@rxS^FuSgcZV2xhq!yQ zd6ffM<1pi(o?`UAF$rVylb}=j6zbvP^8V~M!x9bF*0MSss~?^+SdWfU@|4xlEYhPB z9d;ko%5%Z3Zz$?3zzW8s4L$ED#VFH8xsuu{q;8L;zPLPdJt!AFrl_B6ecm*HAc7Az#AK$s5hNQkI0h2SIg0umNLl zxpH+~dPNW0tS0-LJr!{t_=}1-@6C9%;{xufi1XeQm1rJn)l=GTr07?kOFisp{!64zMr9O~LkQHp<%sX6rq=|^hvAzGcrOo;dO0119%(zPciVL3 zt!&?n{;b2PXJ_1I6J@65&`O%M;aOuU<&3B~(_%T33etvB(sFeTrgCX0cm%Am>R?p` z88OC~X*nr<+_aeRy2eVk+^J{b0{x)!Rxh7HXinWK=>*J4WhOcDJkn)$w!kL)*_DEv zn>6fs^hBYiVGT}HW)(XdOk=*0nYzLo?Aehc2Nfc4o*+rWnj{O^=Odp}C0X36NU|95 zx02-LTS~GxUXqmgCP`YiD}4|rN#?y%KUkEc8(Bq3YOFd~$+-S^aKULoMyxm)y6&O} zYmzNi#fY}l`EMh}v+L6ak4BtXD&gj>Hd?6KwCs~eM{6RLp}p@MqjOzXwZY9g(zSh( zGY`pKTt^m+v9jOZ*{^6c8em@_ob$h0AgOfhGw#-_4=y{rHKs+@CTIS#EH z8r{@%ZG52xe0JK|V`IkXtbdCs-^{l}k4yaA9GBxVX@;fFYIlIg3ARcb1VCMVTQrmTJCITJLl&xPmvXAXBG{Y zXR&ofxfxoA({R9%t7jLA%yJ%I@op3)#pQ7QM9DERE{6s6s2ZD# z#e=M`y0ONaX6oXfXm%D^Z;`R-a`|o3Hpiv4kF&$lD;bxAZ_0Zs?ib>6M8+Cf>o_M` zU7u}be;C(Sl~Q7HU-=B@;VQnlhUq&dIRkv)Qz^b;tGt|DT$`G3GPsrJX}m?Aa^z90 z$K%Cm*#6ZlOlAL7JS?u{s+?3dZTt|O=PD*q7Vnr4gDz#^@tF|V=i~DS1$M+Q5F3DL zYLNQ7z{oIlPq6Cze-aqfEbPx}CnTEe2Ny{-m`v|JZ&m3jb>y4yx^+Hd0N8LVgRcW0U|#9B*}J8ajRu7ZP; zmvr3OpXE$0(D^RKberWJaa7pf(R5pY>o$9#UU%Ueo){*#0ZYgJJSJD9q~@(x_T_zq zdIZ?eig7xxlAMfIUmS10#+x0PY=^kNsThL>lUDSwk}0GiOU9+LXQ%W^Y+ttlO5Y>h zz&t3VjlO9WIJK|a2w@$Vk|u|ko##dzG@?6QuD)1qbm3Sb5vW|l>72w=Q^r$Zkaskz6{f*SbAdISe?nNGq6KzD&0bz zzJ(Rc$dKK!=P>zk-)!zdz3sIaCg7`$W(xf1FDz z1@qo*W%g-$=D&Y5I+q5{k^4yrpS?d978ps}JgZJ_$#x$lN7*mt-;4S?9-@{leI&&|8z3*Md5GHf)I)2asINTqrLJ)| zTRknCeZ9a;kAGS4tiEY?X&nnKuv1tvfkJe9Au`kKYwk{t$NzYE1k_l`qbV%!5wrSK z@rX6meHf>ANUh&J32T;J2QyRGhDuCEjIt)!chhQy`Gu1Oioq~^#A0wCrgi7aLn+Mo zXu6>gxfK+BL~oG5vlwNip=q-povt%~#`Zp%WuO*^*nwr~>?=fF=O$nB!U-nn@B*Aq zKZiLod*MWbhqF@5VLdyt(4xEC9y3NOcZ-8%A(HaJk{CVIEz}SOhhjEYKdOy8zG3NM zHgDS9b3(&j=ap>dTMDw9BcJl3qc|Z8@7Crd{Zvu0$UNZ4?oub-NQ?UkAc88LVFwmv z;BcP`-M+|TI2j9T;u9*0uy!qsr9W-88??cPjv%h$IZ_8Oi!RHA;X=m7EL~)c$Xd@k`#Kk3|n?x%tGe&Wy7=PMC$A)O80f|f)*PM z*Aa4!aYMVPm!s#=h-Pd^?~3_o4;fi(N%b`=lZy@-$r!i8s5bMKdIsz7r1E%*bdQA7 z(O{x9pG!=cL8W!1Tl3ykx+1q*r93f%^Syqf6wOf7H}Q6IzAaA}mM6{fd0vGxc)HBP zEgl)N6we(ois+Nq?<(u)iDbB{83sxLa zHXY3v#Ayxw^g&17jUNsXU~RS2c8z-G^;_g>R^uNPr}eyoVmkS*GJLzW9&w(k4Lm{X zNzL5@JtuAnG&U>UG&a_jf~9G^hWVOw(b*MfR66zziW$Ccbbq#HsmUaAMZ@$1@}vZ3 z#nG}B9M=S~Rg2A{wfGe%V*tfy8q=$4Op+GYn7X=;1o3IJy>Q95&GvG&?%kVYn(Ycp zWtVJY5f}Cb#}s9=DAg#)f&VtCuSO>^vp;jd+UA>Q{;Fp2?7JHE*G9NDdjd$&efGT- zJbIovujM?nbL;A(H~)aRUF4BWJVag5+DvE8I_HP1VfhFLRkuOdezqeu9gcAg&`ev= zi_2}WcI2l<8SHzst!d>`W_ zSb4vxVy`x`m#)cR-c{xS-o2$xw?R?io1iMF@>`HyQQ=2uey0xV5x+eazktV^d&D;h z@n~e~|LEiSx5VOoB!tvUJ>pwq@oo}x>aTmmx5eUHdHL-<;!pB;Zm6ub;LL;C@P3ap zXJS0Q=J8EE;?ME;k~O(;GRs95KrJ!z8ncWO8`OPGk9-$yo3CnYf3|;3qP(5wyRS#S z&fDh0lGN|S{>A7UKXeNHP`8+!ea33-!JzB53@)zCkt=zjQja{>Zkq>(@$AiK5^;J- zjr>(Ydg1b-VpRcWRFK;HWN-rp zM}X~Imt*k68hT-!^`<bGJiX(Eo2P00#haXD{d7&$M0 zXHNHKEoU`y&f-n+ZMGP$eP_;SEaxobH1lQB@}k9{Z_$i{TMbI8ZRkam!ZZE6PRn-)&vXFQ{S)BDmvarxEt-8}eH*Kke? z)3!y|(K-{og&(zykOMO&c&z@<>XKf8`c{Te( z!$^+t*KgNE`9+c;^@mnU!bJ;Un{#l;JroK8+p2A+ncRBm~)g5vXd*Zc;^5}!_ zy*6EzGuR(qFJpm;sq!}VUzyoSE!(e5o+-@Pq{O%sf0Q&@4JcOq za@F^${w&q^ss7?7HuAs-9KzNdutCSHJ7DWicV2uTy4&IbDR)@dr32Y1jkt>u0tG;R zknc5#<^R*5TDpTl_b$jqUxm;>5m1;2_a_?Rhd=?4ALIjhK^~ABWCvM5+`;d{OZ-t# z2Z&q*ei+mU3aMcM_cX4xQBVgc0&1l@KX73@H-bW-0EnC) zz7OODc|dNE9TdWgyB7EosH=e|m7?%FKoL;5!2@P^2!R41Kgb92f;=EMh+bv4!?%DW zP***|yr>*}a9(|IAlrJ-SrrWt1aJ5eP#Dw*3V{M3Kgb92g6IWldMTP-gr=9D>4j%{ z$(dekrgxdc%gCm>craJq!c46;UFdbzr!@;F_EP}PJJ_PuES-J`_uRwSr9(D(INOUb zzl+@i4{tT}c|Qw3v<`jWrW<`H533x*K09iY$FM$!ZEO$1?c>>JM{M$Vwg}%7cy`Z3 z?ln%N95_gL42(l;^C4Vkn#_hBw#k!uyrqJ?-gM6kFa5IVtpjx7DG0Llx+fNblc&cH z+jPcCN(y^>4|4n2X?%OwH;Cw*%WLI-kh9`<&>+ixhX=|vyzl_qjA~W0Jx6T1dF(O#_yS4IUYwD_p{3%zo~jTgtugGV*Yoz2~S+cYOt~K!AM%&{fA49nO;H931*V zP{!HJ(f?yJ(dAeo54#9NS7wQ<%+zM8qjw+D>|4$WO{v4s{?C1$wvQ@}?9ig4W z*`*U%_t}NusXD9%0)7BEPry$Ay9B%j*e&27FsA$iA7|Bggy4@5TrS{t;JlG&9jqIw z`EP&=h4}vjE*9`r;L!rsAzvl?^~V!&`Z3_7Et@V}+f^w%ggE)OHgo}5tP7Z}nNz2ySdgBh*YT`H3l;E;y{USYbZw2BQqWlIVOxyleK zvDv3cRXu$wABtxWo*UWeQ#Mjdmri9BSnidiYbw)UA$i;T=m`Evk-i2tLgmt`LsFru zpKYw@6I-dhi9#r0UnvJOC~`4XDFL2Ds7 z!e0Q3SDC*8_6zYhfN2dSN9hgdhme2=05=NQ0UQ?aFx*3myB0ML2|7aTjng>S3$f2m zXVrEI$sb3oc!y~PVZPcc#cu=_?`^$8+{U20&;xV@=?!4<8uoEu@!nTEuy`-*cXWx$ zBNU*A!u1NcFR)L*R$#w?e*hd1@ZG>60Z#>P6!1g9VF5pGa)QBpbUH>1wcsTrhzJRG z0C&{0K0m|NL?M{|i9)=XNB>CCCB**@m`o;e)NlU)=4O4yW0 zHwlaSKu~0pk)s42B=87$GO$;`Gl6{q_7g(^zf2fLn06cO4d8$fzXMpjAm7}lRc5;FV@xKY3zz+nMj295~$Prw}l*7Ze&U=eB+>IWPZ;&W>ept)>3lmT}M z2_B|+GI`;WL5~A-6IjK5U^0vIfN{@SS_Mp|GC4{g04DR99N`y$Jp!(+Lx6Ze?=@hr zkl-+|PrxUD{Q~|iu;%P|_$zQgh&Mr{h6FqixUn18N<|0=cLzw7z?xM-e^M|5SaT$y zrNFd#z@$TqQ=|>R5g|VV?hx=+;HZFi19!zR`hOn+_<8}4MD#u|-?gatLtxs;kfZo^ zVA|b~Bm4!hN5GeWy#oFRuus5-L`YD>C|@!oAfN>RyMQ%EEuIb>65?kAHwt(;a9F^r zfg=Lm1gtqb9-4qV)c9Iz!CnMJg$##*y9E3pu=qa_r-3DPlSuhHfW`lf_;-p|ogMz4 zfwfH~rN0hL8%?-cF2ck+AX0&08nF1k6EXJ zzDWnNWTwQ{OgZHz@FE5`xS<# z5#SXvbOPg4gF7nl&%kujL5^^53%X3eIlv(S=K(hgxC}Tf;JLt&*GT?w#Bd=3I)ntP zfujO`9k@%t&A^hnXQKT3fh_`V1-1+L7r^45o!p@OYWb2K&nf6w@!wB|1G@zV1;E`R zPm#s|dxZFDz+M4Y1N#KL6xc7|mB0rJzZ}!&;KtwfGO)M){g?4KtPci%H(&mLyn9L& delta 19345 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 QyCnXMCH~O7KTMSVFEy!i?EnA( From b224ebc7dde3b3ccf163b9421ce2688d1861e8bd Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 19:55:37 -0700 Subject: [PATCH 12/19] add unattended flag to upgrade script --- SD_ROOT/wz_mini/bin/upgrade-run.sh | 68 ++++++++++++++++-------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/SD_ROOT/wz_mini/bin/upgrade-run.sh b/SD_ROOT/wz_mini/bin/upgrade-run.sh index 297af25..21bd4eb 100755 --- a/SD_ROOT/wz_mini/bin/upgrade-run.sh +++ b/SD_ROOT/wz_mini/bin/upgrade-run.sh @@ -131,39 +131,45 @@ reboot } -if [[ -e /tmp/dbgflag ]]; then - upgrade_mode_start +if [[ "$1" == "unattended" ]]; then + echo "Unattended upgrade!" + rm -rf /opt/Upgrade + sync + setup else -if [ "$1" == "backup_begin" ]; then - backup_begin -else + if [[ -e /tmp/dbgflag ]]; then + upgrade_mode_start + else -read -r -p "${1:-wz_mini, this will download the latest version from github and upgrade your system. Are you sure? [y/N]} " response - case "$response" in - [yY][eE][sS]|[yY]) - if [[ -d /opt/Upgrade ]]; then - echo "WARNING: Old Upgrade directory exists" - read -r -p "${1:-Unable to proceed, must DELETE old Upgrade directory, are you sure? [y/N]} " response - case "$response" in - [yY][eE][sS]|[yY]) - rm -rf /opt/Upgrade - sync - setup - ;; - *) - echo "User denied directory removal, exit" - ;; - esac - else - setup - fi - - ;; - *) - echo "User declined system update, exit" - ;; - esac -fi + if [ "$1" == "backup_begin" ]; then + backup_begin + else + read -r -p "${1:-wz_mini, this will download the latest version from github and upgrade your system. Are you sure? [y/N]} " response + case "$response" in + [yY][eE][sS]|[yY]) + if [[ -d /opt/Upgrade ]]; then + echo "WARNING: Old Upgrade directory exists" + read -r -p "${1:-Unable to proceed, must DELETE old Upgrade directory, are you sure? [y/N]} " response + case "$response" in + [yY][eE][sS]|[yY]) + rm -rf /opt/Upgrade + sync + setup + ;; + *) + echo "User denied directory removal, exit" + ;; + esac + else + setup + fi + ;; + *) + echo "User declined system update, exit" + ;; + esac + fi + fi fi From a4ec416c671ff9ca905c23ef0ab97fe9b46fc3ad Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sat, 18 Jun 2022 19:56:31 -0700 Subject: [PATCH 13/19] v4l2rtspserver add -F0, don't modify FPS fed by camera --- SD_ROOT/wz_mini/etc/init.d/wz_user.sh | 2 +- file.chk | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh index 19eac6a..29448ed 100755 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh @@ -616,7 +616,7 @@ if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]] || [[ "$RTSP_HI_RES_ENABLED" == "true echo "delay RTSP for iCamera" #This delay is required. Sometimes, if you start the rtsp server too soon, live view will break on the app. sleep 5 - LD_LIBRARY_PATH=/opt/wz_mini/lib /opt/wz_mini/bin/v4l2rtspserver $AUDIO_CH $AUDIO_FMT -U "$RTSP_LOGIN":"$RTSP_PASSWORD" -P "$RTSP_PORT" $DEVICE1 $DEVICE2 & + LD_LIBRARY_PATH=/opt/wz_mini/lib /opt/wz_mini/bin/v4l2rtspserver $AUDIO_CH $AUDIO_FMT -F0 -U "$RTSP_LOGIN":"$RTSP_PASSWORD" -P "$RTSP_PORT" $DEVICE1 $DEVICE2 & fi if ([[ "$RTSP_LOW_RES_ENABLED" == "true" ]] || [[ "$RTSP_HI_RES_ENABLED" == "true" ]]) && [[ "$RTMP_STREAM_ENABLED" == "true" ]] && ([[ "$RTSP_LOW_RES_ENABLE_AUDIO" == "true" ]] || [[ "$RTSP_HI_RES_ENABLE_AUDIO" == "true" ]]); then diff --git a/file.chk b/file.chk index 43f6713..5a10450 100644 --- a/file.chk +++ b/file.chk @@ -3,7 +3,7 @@ d41d8cd98f00b204e9800998ecf8427e SD_ROOT/wz_mini/mnt/.gitignore 34c6a4c3a941ff2becd9f487826d7692 SD_ROOT/wz_mini/etc/uvc.config ad7d1a2f9db3079617731b5854ce3b6a SD_ROOT/wz_mini/etc/init.d/wz_cam.sh 0774518c06d6ef8e7181d35f194777cc SD_ROOT/wz_mini/etc/init.d/wz_init.sh -a98928459d20f5202bec263a1ec6f5f5 SD_ROOT/wz_mini/etc/init.d/wz_user.sh +6a33627530778f7c2d842f69a1c55f9a SD_ROOT/wz_mini/etc/init.d/wz_user.sh babb83cd8cdbd5af8639cfaecbca2d70 SD_ROOT/wz_mini/etc/init.d/wz_post.sh e3034eac02d8eda9902ca9cf89f0a586 SD_ROOT/wz_mini/etc/inittab 840aa9c26726201f7cffbf001bee193a SD_ROOT/wz_mini/etc/uvc_jxf22.config @@ -49,7 +49,7 @@ a8970288e72c871bff6a4484f1e733d6 SD_ROOT/wz_mini/bin/readelf 41b56bb30f02bce5f5e2598073151e16 SD_ROOT/wz_mini/bin/ffmpeg e37474a12d76cae16336476cba61e8b8 SD_ROOT/wz_mini/bin/neofetch 7fcc716cda1e024dae1045050a135beb SD_ROOT/wz_mini/bin/audioplay_t31 -acc689ec54f1441af6af08d3c5be6447 SD_ROOT/wz_mini/bin/upgrade-run.sh +03a42f7f175f88903c0dc52013f11205 SD_ROOT/wz_mini/bin/upgrade-run.sh e6a6a9dd8ce138686083a3d4303cea40 SD_ROOT/wz_mini/bin/iperf3 0468ffb319707687557353242a518923 SD_ROOT/wz_mini/bin/wg 65510c6c4d0db4b4679fc92d1c617fdd SD_ROOT/wz_mini/bin/rtmp-stream.sh From bf63b1717933e4d5c0b45c9a756bedeafc814e59 Mon Sep 17 00:00:00 2001 From: archandanime <36922812+archandanime@users.noreply.github.com> Date: Sun, 19 Jun 2022 11:32:06 +0700 Subject: [PATCH 14/19] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a650cb..30fcc9e 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,10 @@ Using this project can potentially expose your device to the open internet depen * USB Mass storage enabled, mount USB SSD/HDD/flash drives * CIFS Supported * iptables included -* Play .wav audio files using "cmd aplay " command +* Play .wav audio files using "cmd aplay \ \" command, the .wav file should be run from: + ``` + ffmpeg -i in.wav -acodec pcm_s16le -ac 1 -ar 16000 out.wav + ``` * WebCam Mode - Use your camera as a spare UVC USB Web Camera on your PC or AndroidTV! * RTMP Streaming - Stream live video from the camera to your favorite service, youtube, twitch, or facebook live. From c4e3827d2bc1f7aa35f79ac0489e54bd7727b61f Mon Sep 17 00:00:00 2001 From: gtxaspec Date: Sat, 18 Jun 2022 21:47:39 -0700 Subject: [PATCH 15/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 30fcc9e..fd2102a 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Using this project can potentially expose your device to the open internet depen * USB Mass storage enabled, mount USB SSD/HDD/flash drives * CIFS Supported * iptables included -* Play .wav audio files using "cmd aplay \ \" command, the .wav file should be run from: +* Play .wav audio files using "cmd aplay \ \" command. Supported .wav files may be generated using ffmpeg as well:: ``` ffmpeg -i in.wav -acodec pcm_s16le -ac 1 -ar 16000 out.wav ``` From e3fc6d3f39959b4c21c937829dfcad526769a607 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sun, 19 Jun 2022 01:02:15 -0700 Subject: [PATCH 16/19] fix no rtsp video on old rtsp firmware --- SD_ROOT/wz_mini/lib/libcallback.so | Bin 58524 -> 58525 bytes src/libcallback_wz_mod/libcallback.so | Bin 58524 -> 58525 bytes src/libcallback_wz_mod/video_callback.c | 4 ++++ 3 files changed, 4 insertions(+) diff --git a/SD_ROOT/wz_mini/lib/libcallback.so b/SD_ROOT/wz_mini/lib/libcallback.so index c3abdd416be662a49888b87ddd85bdd836a010e2..6381626afb1be743c5a61382b14339f9598d07b7 100644 GIT binary patch delta 10148 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 D&ME6) diff --git a/src/libcallback_wz_mod/libcallback.so b/src/libcallback_wz_mod/libcallback.so index c3abdd416be662a49888b87ddd85bdd836a010e2..6381626afb1be743c5a61382b14339f9598d07b7 100644 GIT binary patch delta 10148 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 D&ME6) diff --git a/src/libcallback_wz_mod/video_callback.c b/src/libcallback_wz_mod/video_callback.c index 0bdc09a..a7da6f9 100644 --- a/src/libcallback_wz_mod/video_callback.c +++ b/src/libcallback_wz_mod/video_callback.c @@ -186,6 +186,10 @@ int local_sdk_video_set_encode_frame_callback(int ch, void *callback) { video_encode_cb = callback; fprintf(stderr,"enc func injection save video_encode_cb=0x%x\n", video_encode_cb); callback = video_encode_capture; + } else if( (ch == 0) && ch_count == 3) { + video_encode_cb = callback; + fprintf(stderr,"RTSP FIRMWARE enc func injection save video_encode_cb=0x%x\n", video_encode_cb); + callback = video_encode_capture; } fprintf(stderr,"ch count is %x\n", ch_count); From d623b2a036a5681c059a439c974dcb1a78010173 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sun, 19 Jun 2022 01:04:44 -0700 Subject: [PATCH 17/19] update changelog --- README.md | 2 ++ file.chk | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fd2102a..55e62d5 100644 --- a/README.md +++ b/README.md @@ -393,6 +393,8 @@ Stop the camera from dropping the frame rate during nightvision. ## Latest Updates +* 06-19-22: Fixed no rtsp video when wz_mini is used with the old stock rtsp firmware. +* 06-18-22: Added night drop feature preventing fps drop during nightvision. Upgrade script can now work unattended. Add -F0 flag to rtsp server. * 06-17-22: Fix custom hostname not being set. Note: The hostname variable has CHANGED! You will need to update your `wz_mini.conf` file. * 06-16-22: Simplified the camera model detection method throughout wz_mini. * 06-16-22: fix scp client bug, allow user modifications to app_init, updated initramfs script, moved upgrade-run to PATH, revised kernel module paths, added ENABLE_RTL8189FS_DRIVER option for v2/v3, updated kernels for v2/v3. ( NOTE: this is a major upgrade, file names for the init scripts have changed, if you are upgrading the V2, do not use the upgrade-run.sh script, please manually update ) diff --git a/file.chk b/file.chk index 5a10450..a9fc7cf 100644 --- a/file.chk +++ b/file.chk @@ -81,7 +81,7 @@ b339aee882a5d1c943ad08e4282ec3fd SD_ROOT/wz_mini/usr/bin/iCamera-dbg 4c780f0455481d106d47d89f0ae04ed5 SD_ROOT/wz_mini/lib/uClibc.tar 9afeb088e4cbabbe0b04033b560204d0 SD_ROOT/wz_mini/lib/libimp.so 4100755cb6cc6e3b76da20c7e3690e16 SD_ROOT/wz_mini/lib/libalog.so -8b11cb5de135891af07b5fd9675ce73a SD_ROOT/wz_mini/lib/libcallback.so +395c1f510f1179cc8ab4e8ffe8182c84 SD_ROOT/wz_mini/lib/libcallback.so baf8d0b7a28f2fbb49a19ae0980779da SD_ROOT/wz_mini/lib/modules/3.10.14/modules.order 70775da41db88e4450d910b4ee8621c0 SD_ROOT/wz_mini/lib/modules/3.10.14/kernel/crypto/md4.ko abbaa461e044b5688814423a087fbc52 SD_ROOT/wz_mini/lib/modules/3.10.14/kernel/fs/ext4/ext4.ko From 10a27ca01fd13753fe44c2f92e385a3674ac8686 Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Sun, 19 Jun 2022 02:55:33 -0700 Subject: [PATCH 18/19] fix night drop early boot --- SD_ROOT/wz_mini/lib/libcallback.so | Bin 58525 -> 58723 bytes file.chk | 2 +- src/libcallback_wz_mod/libcallback.so | Bin 58525 -> 58723 bytes src/libcallback_wz_mod/night_drop.c | 13 ++++++++++--- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/SD_ROOT/wz_mini/lib/libcallback.so b/SD_ROOT/wz_mini/lib/libcallback.so index 6381626afb1be743c5a61382b14339f9598d07b7..9e8285375c9a6958fd1af3e1ca10caabc1db117f 100644 GIT binary patch delta 13611 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 al@e?O2U^=kellgaS^wbFHuKZ(B>z7;h#Uz3 delta 13428 zcma)?4}4VBnfK2<%!DLPaFPs=k}#PhV;FHZ3^8JeF$~E-0}bgwql+w!14X44=|Cx> zP%_$xXd@YT(1IY27$9H@gP9_BV;J!tx)jHcyj|9%blS4M>{k7RE+5yv%gXzE?%YXE zqU~o7oSgf8&U2o7p7a0Cy?=af)N}8S3Oh8%){=%BOh<&^Xcina{6mOx#1-PXQ9=Z_ zKG7xvQz=`UCdCe_*D7T2XzyxmkvY%LY6w>R8;ulN7cy4LbG_6&x`LHAj<)BW>rE@= ziR-gr?^kqqbYov*h4-QYQHB4^?V)fn+BdB5 zT$B$zP5s&S%Ag|tHMfGohj<()ycYHJK22k;vsZc)@rNkpQ1~kDW>t7UyZbb?UT1F` z*goXtIaD&K@V~%JLg7~KbcL(fNrivSPAWVa<--bJMD0Tg|4qnb6^$(veiuAIw8vs^OVUtt^l=|6oP?RU z!XF|(s_@e=6H)j^v~pPCM^L*kMwSb=;Kk+^ln*KSq+w(R6~TNM3=lQvVDKyAI(Y3> z_)oCoQFsgYzQTE6tHK()ukgnxKd^1c?*edA;f5?M9tlO@K?ULp{|*JB3hx3(6g~sT zgRi1B@SkVjZ!nI+O8zD^Y)IiA*bgc^D+2}t+i2w&yYz3PEo1C$UM2h2FzZoxA#UeT zIL?z@;a89^6n+P{8`wJJ|5MOUD*OcOClt14pgrP>pfn5qEBqrgctqhRxZ@S>g*zdI z>$!atmM9-kcqc00S9ty?I&^(rn^zHif)5bx0x`gxlJ>T)MBJoBefZ6fsqy&sl!N}M(Q$Bw~=~`w8}`U zjWlGW?Wwd`pH*Ce?MB89Bi(JJ5hLv~(rzQ|G191!#yF+R6AH;$Xl+Xx(g7p=!brtY z!(Ah_8fk%%I*in1q#h#;80lG@QMk4?=3O`wak^WGt8D){A+B(`M@$h;&UjvkB2FVh zRB`%(5Ef4N3gPDTMIodpsy%I^XNyW@w~hLX%JV|D-IGd^&yRA4c6R#1(JgUm%hBq`fjv9BFr6z9y`ikWQ}RjyyVJpPh55 zcb^kxI=K>!R8l-%YozJLH)pdts}1DR;U7+*aIsDLchHwhO6gRwWx6F+-(ePBE80!C zQT2s8>YZrBL0$}AWpIIbvoobL%Xyk+mgbYgVbv@&)sZg)J7`OZ{Tm^u-!VeHeTS-U z)zvo-sZSrFzBsMEt;90U67%*%Q7s|rJ4zg0y^7sKW$h!%o>t3RzozV2y=)#=Q}yzT z9n@c9mz%Gr3nitMMQD?Eh1bSyQiPi`YofuKx^C#oU4LxkPC0gG>@!A4yyPmb7ti>GL z>2tbil{23%l@-ZzJL$_w<7uMvHrW!TMb5eM>Q1V=(a!WX$n`8!F54*=UaW+vx?5=G z4TY@Jdc&P&|Fg4TapsMMnu)Z@H_OG>>HZds@RvF5Z$a#@`n&wuull=YnCxr(^&9^B zzv8bJq7TZ(lg(A6Mf9siSFQ99a}}hx$|k<*Ds+asnyI_$8BMM33FMz#Amh){{gW%E z*sfLSUT9#PVq*k2_C10Ttf%uct+Y4_l*My>;n z^sTt8=dYH{<7%qwfNM9e16l#in{u=C?8dY%rLHN~8v@3t^`eym%F4i;?hh~h%am`) zK$OZoi*kIiROk4ha6P>~JzqBNro%T^Xg>PDGYNnH;+Z6ayQ!k8yo7ap#uCh(%w6GC z*hk-=T81J|>3@$-Ez9!7{QA)J(Ql{TXWk5Ft9e$NohZ4EKA4?PUbl%tl|}N@m$av{ za$+?yT9tY;r|Vr!pH@DfQyWWFxE4973hz!;xK^)ltzO|b^$Op}I%_} zmfSWjLm#-csC{9U+Ze`dvvAv^rd)Qn)^G+j=m^s9r#6u17KiRsmA+JA3B2W2+4tYZ zsLiC)w^-%*-E`rWipnb7$)@<_#{6~0hR{K1X%aYP2fMz5G&Ec8^eYE6Od; z(cx*6c^G{3zb@0xWy&ddt7$CPE#1adxDEU2peJsvB>k85k?Qf9 zWMHq}!|V2P59b6i2)IHWdwotD<*q8Eh}UZF+RLlr)+vRQ@Y+mkVoQ4{UQ#3j1C%jy za#lBVJ@TziH}uC+^UTt$_}+V*B_6Nnqg6FyY0J#jS*HdiOV*Didwq>e?4?EZ&GPJC zI#j<%20o*VhRJzrFdnm&xe|=gnc3rLVZ%aselNY;uu@*#OQpWbOzVrwoFy)=pm;+8 zt?|{$GKa;r(D6=d{oG!qDHq2 z#b|D0jZ9wB3t7ALLXIvJDjqDd_!8!9d3M66bRs09?^_x-Zn=?*>C8SSDA^Xz16vYPvT$;-pk=6tGc^2$pWX=783`FIx#x$6=T zwp^sVc@;9=g#*Gk@-9GU&Rdt=7gKCi=JmxIdirAZPLuFPc;5HLsI+;lJk>?dHdjnI z-c|41V02K6I60{Vy~SrJ#pcy!n>^k{dEZ_uPY)IH{_R4ad^^a6TK$`3C`ljtH_G@i zx_5rFjQ);}&3{I^_EGbK!?JoGeYs$+OmxxQ@9dXNOw-8KVv(QhqiHQG<-(NYe9LxI z{20#Oo`0}quoE!0<&N?R@na1*Rh{gd>{u$Yt;+c< z<5<}R<-3)mBAQ#JY1H|sZb@}Y_Y_;>Fsl*wcC@O{m4_q+7oeRlIj^rF6}p#{y$Z^k)q`tn<| z#VgD3xcSpgc=zz~%3&4dwK=?D0EA?rwjA5W6P^w z{r#y)FPq0@)e*kzp#B?DtdCw^Q(@<7Z&OZ2>!6+fy(kRt*4$}M984dUR{YpvHXUL* zI%j;=I>_Ui8Lc~i)%YwgZ(Um*#I7ODosb*u#gGcZ3fu!?ORlo@RX8#V=9oL-lf5N)m@;Me5S@u+zNerF7?cAFh%cQW@JHcFJ~?T0fa@ zT(O~^;>9L%ulLA~Vbas`i3)z=k=?_j;VKjLK^lFDKKservhO9j z@VK4MZVb!Qsmu1ZusqM1_tJ(?Kwg40G+2|SM|^UC^>j)9BadR8-@0x*o!*#9(MK#? z;gyd*s#!-0?LU1~bBq+8fzUHjxUv0Ft(Jw`9=GZKKekae_0ZwRW@}gmhs0=>Wt(cv zO+EF_19bGULW*y4X=_GkEPOnralft+d)%dM9(g}*-=@u8TD-nM^@7D$H+!}2uhZ{& z!mGu;E@SbNUi#!GUom9)nU`W43(_9Jbl=Zv*{lEev)Niwsq@N?m#2OLkMK5WaCH>F z7(Vwh!6ldCqqd6^ong`6xr07%=c60$d8)XCr@IyT>DlMPbrCjymV0sSpx;g_rcin2 zn1_rVfpZrAf||G7X>R`o&&ruA%FI2#nB_#rloXl=bQw;{S|gb|ziD)?%%ycjwmiqxpwryr;;m-I;np;lc}w$i(TB?&_Vh^Pg?K;lojlf>9qO zH0NK9v1qmRG=6F4a1DV|`XXB0X5Ax%4>29OB0}^aMiGxAzKNJXJd1c9@gm|Uhy#e3 zF9^}JR}2fu7x8kYYe?i*u3384;Pa{UW^vIFd}5?mj8yDP8ObzKtC1G%qdy$2kjX<^ zKN!0>6vXQse#YnbLq5C%N(Bucx=7<1RfRl>?=}*Mal|NM1d&4+X$Uch7(nzRdJ#Q8 z7xd3B-&hgC2M+v+MF27M1El)>pa=FM@&^+895IR*K@4+*TOp)DqR)D3 z?EJErUl8+4VSW)DKur2^8>Hy#x>)J#I9^^x5hI9U#1LW-F@WetL3AKmS%%0j zIr+sVzs!t>sWnzE&-T)$*lc`3)O#lOrCFZt>^<|VJEe^Nh{|8HXT(#Ab6+dX5IbOF z2d#dsG~16$j?r7)K~{<=w?D3@1zY4VA3tgZ7;OwyX@A^qj(Ta%IwE~;|U?})dh{tjb+&Vv>tnrREc8$X*T^$$fAHpbs z&!iC8K@OwDb*T&X5@D3ULk5n_1DQmxg-H1~$@fU!Rf3t;pv1tBMFxyqv5! zX_uGqz1T^6Wvx*cwu!bGX5;t3blo*^z4#RD57VBL6*GnL5fK}0fOV6?-vMVTybNqn z_(8Cha^5J;D^jFf54`rOd&6E*posqfF}D|YD5j(M3~ZyHyfI~_L(!UtmBFd-BCt#0 z2f%KH*MmLu=^Mo*0mb$aNWF^I39yg;?#<$oYDM}dNNW|o0_@2r-H&`R2aF#<&%C*DK_rqIuNsEeKSF$5DfSk)PhtLqB(AXjt)NmF{=jQZ zjP|^x|1fvvEj#}l_Sst%rC~)Wh)N|CBM*V`n^)c26?u^nYWV4Do>9{1Gf((S*lntUrT2^xJp7y})yPNXwsrCRMB~1~(#~M>~(pdzi6;rtX?A zR)8%BhuV5Q7>|n^Pu1o56}68bZh4i?KparSQ*fR+-ANViPH3Bf%k-Kdv1T-ZEx0KM zO}aC(Ys`10o-aC&3oxw{&ip7I*Lw`?1xfBD+e;Pm~lAhd~>AyB_U zc^}-f21@7^{=D;JaMD=R^c4gj7V(15fjI-rn*ayq31EF=Ft`-Vn*|5XzX{A62nSRT z;~xU=pg@QQa607TVlFtn%JFxq^O+U>R&ct7^3h`VF)R5iz`-R#gwU$&(1XnBeB58? zpGu_#;7%xbt5Hj%z%FptEkYC+EpieZR`lNmM-;vYjw)=%#t~Q80!|p*#!WI7f~2BQ z0Ul8Jn_%_hs%EhI@zpZ0V;gi3*xm{*zZByDqm@1G0DF}D2-utAHod?;2-2Yx7cp?^ zT#z#OKA6u63FNWC-+}r3z=3ag5gb(b8aSkIA@;tmxkKek!C^fg?av0>5U5|X)qo?4 zftlc_!j0g#!gqob3a#_@F`NPPEn3eoTz!B2@PkFQ%f~cbK6nH~Wh*L(3{2Uxt@{fZP3cmqP zDtrN)4h~#=0Ul8Dv-!NUo!cLQo3xOB<>j+20&@+R&$}F$=W+f-9pO)=Xki0J;1*g9 z=5sP;pZ-PUV_-fzbKvsZ!F-E}7<|BzDP zf1nUncnl7`5rqrDra4%OjX~)EN0s~;VC(%@0ge1w;JA{14>+N4dm97;52CDl}bk4=!N-#f!@xM=L5TOjafSa4oKX04a8lt+E4oZ!Cs^Q-oddVnjbLk< zdHwN0;7AL=tzbOg>wyb=AI#7E9GKUG`F8*g%sapVg%5&*3P-^qg?|YS8?5jDzk$Fr z8GU5zPUyJ7;J}p)9C!+Y)W~;(BZ|RF@KBTIi)wIG$^SMuuJ9e;M2ZV_4^~5vR20^M S2co@aKAb+fH|JmP%>MthYP)3s diff --git a/file.chk b/file.chk index a9fc7cf..eb60bb3 100644 --- a/file.chk +++ b/file.chk @@ -81,7 +81,7 @@ b339aee882a5d1c943ad08e4282ec3fd SD_ROOT/wz_mini/usr/bin/iCamera-dbg 4c780f0455481d106d47d89f0ae04ed5 SD_ROOT/wz_mini/lib/uClibc.tar 9afeb088e4cbabbe0b04033b560204d0 SD_ROOT/wz_mini/lib/libimp.so 4100755cb6cc6e3b76da20c7e3690e16 SD_ROOT/wz_mini/lib/libalog.so -395c1f510f1179cc8ab4e8ffe8182c84 SD_ROOT/wz_mini/lib/libcallback.so +d63e45dd1a05a62ad91ef3d70eae44de SD_ROOT/wz_mini/lib/libcallback.so baf8d0b7a28f2fbb49a19ae0980779da SD_ROOT/wz_mini/lib/modules/3.10.14/modules.order 70775da41db88e4450d910b4ee8621c0 SD_ROOT/wz_mini/lib/modules/3.10.14/kernel/crypto/md4.ko abbaa461e044b5688814423a087fbc52 SD_ROOT/wz_mini/lib/modules/3.10.14/kernel/fs/ext4/ext4.ko diff --git a/src/libcallback_wz_mod/libcallback.so b/src/libcallback_wz_mod/libcallback.so index 6381626afb1be743c5a61382b14339f9598d07b7..9e8285375c9a6958fd1af3e1ca10caabc1db117f 100644 GIT binary patch delta 13611 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 al@e?O2U^=kellgaS^wbFHuKZ(B>z7;h#Uz3 delta 13428 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 S2co@aKAb+fH|JmP%>MthYP)3s diff --git a/src/libcallback_wz_mod/night_drop.c b/src/libcallback_wz_mod/night_drop.c index f050fc4..ac79ff9 100644 --- a/src/libcallback_wz_mod/night_drop.c +++ b/src/libcallback_wz_mod/night_drop.c @@ -9,6 +9,8 @@ static uint32_t (*real_local_sdk_video_set_fps)(int encChn); int local_sdk_video_set_fps(int encChn) { + fprintf(stderr, "[command] [night_drop.c] local_sdk_video_set_fps called with fps value: %d\n", encChn); + const char *nd_enable="/opt/wz_mini/tmp/.nd"; const char *product_T31="/opt/wz_mini/tmp/.T31"; const char *product_T20="/opt/wz_mini/tmp/.T20"; @@ -28,11 +30,16 @@ int local_sdk_video_set_fps(int encChn) { fprintf(stderr, "[command] [night_drop.c] Calling local_sdk_video_set_fps to: %d\n", encChn); real_local_sdk_video_set_fps(encChn); } - - } + //If nd is disabled, pass all requests along + } else { + printf("[command] [night_drop.c] Night Drop not enabled\n"); + fprintf(stderr, "[command] [night_drop.c] Requested FPS Value: %d\n", encChn); + fprintf(stderr, "[command] [night_drop.c] Calling local_sdk_video_set_fps to: %d\n", encChn); + real_local_sdk_video_set_fps(encChn); + } } -static void __attribute ((constructor)) nigh_drop_init(void) { +static void __attribute ((constructor)) night_drop_init(void) { real_local_sdk_video_set_fps = dlsym(dlopen("/system/lib/liblocalsdk.so", RTLD_LAZY), "local_sdk_video_set_fps"); } From 085183ccaaae4834a5b8969338661dd6bfb33c8b Mon Sep 17 00:00:00 2001 From: Alfonso Gamboa Date: Mon, 20 Jun 2022 20:11:43 -0700 Subject: [PATCH 19/19] enhance v2 image generation --- v2_install/compile_image.sh | 38 ++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/v2_install/compile_image.sh b/v2_install/compile_image.sh index c17cd25..35168a0 100755 --- a/v2_install/compile_image.sh +++ b/v2_install/compile_image.sh @@ -3,28 +3,40 @@ UA_STRING="Mozilla/5.0 (Macintosh; Intel Mac OS X 12_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15" DL_URL=$(wget --header="Accept: text/html" --user-agent="$UA_STRING" -qO- https://support.wyze.com/hc/en-us/articles/360024852172-Release-Notes-Firmware | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*" | grep /v2/ | sort -t . -k2r,5 | grep demo | head -1) -echo "create work directory" +echo "checking for tools" +command -v wget >/dev/null 2>&1 || { echo >&2 "wget is not installed. Aborting."; exit 1; } +command -v mkimage >/dev/null 2>&1 || { echo >&2 "mkimage is not installed. Aborting."; exit 1; } +command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip is not installed. Aborting."; exit 1; } + +echo "create temporary work directory" mkdir v2_ro -echo "download latest firmware" -wget $DL_URL -P ./v2_ro/ +echo "check for local zip" +if [ -f demo_4.9.8.1002.zip ]; then + echo "local archive found" + mv demo_4.9.8.1002.zip ./v2_ro/ +else + echo "local archive not found" + echo "downloading latest firmware" + wget $DL_URL -P ./v2_ro/ +fi -echo "extracting firmware to workdir" +echo "extracting firmware to temporary work directory" unzip v2_ro/demo_4.9.8.1002.zip -d ./v2_ro/ -echo "create firmware dir" -mkdir v2_ro/tmp_dir +echo "create firmware directory" +mkdir v2_ro/fw_dir -echo "unpack stock firmware" -./fw_tool.sh unpack v2_ro/demo_4.9.8.1002.bin v2_ro/tmp_dir +echo "unpack stock firmware image" +./fw_tool.sh unpack v2_ro/demo_4.9.8.1002.bin v2_ro/fw_dir -echo "replace kernel" -cp v2_kernel.bin v2_ro/tmp_dir/kernel.bin +echo "replace factory kernel" +cp v2_kernel.bin v2_ro/fw_dir/kernel.bin -echo "pack firmware with new kernel" -./fw_tool.sh pack v2_ro/tmp_dir/ demo.bin +echo "pack firmware image with new kernel" +./fw_tool.sh pack v2_ro/fw_dir/ demo.bin -echo "md5sum is: " `md5sum demo.bin` +echo "remove temporary work directory" rm -rf v2_ro echo "demo.bin ready. Please copy demo.bin to your memory card"