mirror of
				https://github.com/gtxaspec/wz_mini_hacks.git
				synced 2025-11-04 06:31:54 +00:00 
			
		
		
		
	Merge branch 'master' into DetectAndAutoLoadEthernetDrivers
This commit is contained in:
		
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								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 <file> <vol>" command
 | 
			
		||||
* Play .wav audio files using "cmd aplay \<path-to-file\> \<vol\>" command.  Supported .wav files may be generated using ffmpeg as well::
 | 
			
		||||
 ```
 | 
			
		||||
 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.
 | 
			
		||||
 | 
			
		||||
@@ -377,10 +380,21 @@ 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
 | 
			
		||||
 | 
			
		||||
* 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 )
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -130,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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -71,16 +71,71 @@ rename_interface() {
 | 
			
		||||
	eth_wlan_up
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
	echo "renaming interfaces"
 | 
			
		||||
 | 
			
		||||
	# Bring all interfaces down
 | 
			
		||||
	ifconfig $bonding_interface down
 | 
			
		||||
	ifconfig $primary_interface down
 | 
			
		||||
	ifconfig $secondary_interface 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
 | 
			
		||||
 | 
			
		||||
	# 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"
 | 
			
		||||
		# 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
 | 
			
		||||
 | 
			
		||||
	# 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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
eth_wlan_up() {
 | 
			
		||||
##Run DHCP client, and bind mount our fake wpa_cli.sh to fool iCamera
 | 
			
		||||
        ifconfig wlan0 up
 | 
			
		||||
	pkill udhcpc
 | 
			
		||||
        udhcpc -i wlan0 -x hostname:$CUSTOM_HOSTNAME -p /var/run/udhcpc.pid -b
 | 
			
		||||
 | 
			
		||||
    # If running with Interface Bonding enabled, kill any existing
 | 
			
		||||
    # wpa_supplicant that might be running and spawn our own instead
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
	if [ -f /opt/wz_mini/tmp/.T20 ]; 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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -108,7 +163,11 @@ wlanold_check() {
 | 
			
		||||
		eth_wlan_up
 | 
			
		||||
	else
 | 
			
		||||
		echo "wlanold doesn't exist"
 | 
			
		||||
		rename_interface $1
 | 
			
		||||
		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
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -246,6 +305,27 @@ if [[ "$ENABLE_USB_ETH" == "true" ]]; then
 | 
			
		||||
		esac
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
    if [[ "$BONDING_ENABLED" == "true" ]]; then
 | 
			
		||||
        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
 | 
			
		||||
 | 
			
		||||
	swap_enable
 | 
			
		||||
 | 
			
		||||
	netloop eth0
 | 
			
		||||
@@ -559,7 +639,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
 | 
			
		||||
@@ -572,6 +652,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
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -33,6 +33,14 @@ ENABLE_NFSv4="false"
 | 
			
		||||
 | 
			
		||||
ENABLE_RTL8189FS_DRIVER="false"
 | 
			
		||||
 | 
			
		||||
##### NETWORK INTERFACE BONDING #####
 | 
			
		||||
BONDING_ENABLED="false"
 | 
			
		||||
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"
 | 
			
		||||
@@ -75,6 +83,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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								file.chk
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								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
 | 
			
		||||
04473a0de3ebbf562d253c5df3ddfdde  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
 | 
			
		||||
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
 | 
			
		||||
@@ -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
 | 
			
		||||
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
 | 
			
		||||
@@ -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
 | 
			
		||||
aa102e670336c6bf165f1a9925d9d4fc  SD_ROOT/wz_mini/wz_mini.conf
 | 
			
		||||
d41d8cd98f00b204e9800998ecf8427e  SD_ROOT/wz_mini/tmp/.gitignore
 | 
			
		||||
 
 | 
			
		||||
@@ -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}
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										45
									
								
								src/libcallback_wz_mod/night_drop.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/libcallback_wz_mod/night_drop.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
#define _GNU_SOURCE
 | 
			
		||||
#include <dlfcn.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
 | 
			
		||||
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";
 | 
			
		||||
 | 
			
		||||
        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);
 | 
			
		||||
        }
 | 
			
		||||
	//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)) night_drop_init(void) {
 | 
			
		||||
  real_local_sdk_video_set_fps = dlsym(dlopen("/system/lib/liblocalsdk.so", RTLD_LAZY), "local_sdk_video_set_fps");
 | 
			
		||||
}
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user