diff --git a/README.md b/README.md index bbe1bdf..3a03d2e 100644 --- a/README.md +++ b/README.md @@ -300,7 +300,7 @@ RTSP_HI_RES_ENABLE_AUDIO="true" RTSP_HI_RES_MAX_BITRATE="2048" RTSP_HI_RES_TARGET_BITRATE="1024" RTSP_HI_RES_ENC_PARAMETER="2" -RTSP_HI_RES_FPS="15" +RTSP_HI_RES_FPS="" RTSP_LOW_RES_ENABLED="false" RTSP_LOW_RES_ENABLE_AUDIO="false" @@ -308,10 +308,17 @@ RTSP_LOW_RES_MAX_BITRATE="" RTSP_LOW_RES_TARGET_BITRATE="" RTSP_LOW_RES_ENC_PARAMETER="" RTSP_LOW_RES_FPS="" + +RTSP_AUTH_DISABLE="false" + ``` the singular stream will be located at ```rtsp://login:password@IP_ADDRESS:8554/unicast``` multiple streams are located at ```rtsp://login:password@IP_ADDRESS:8554/video1_unicast``` and ```rtsp://login:password@IP_ADDRESS:8554/video2_unicast``` +You may disable authentication by setting `RTSP_AUTH_DISABLE` to true. + +Setting the FPS is not required unless you want to change the default device settings. + Note: If you don't set the password, the password will be set to the unique MAC address of the camera, in all uppercase, including the colons... for example:. AA:BB:CC:00:11:22. It's typically printed on the camera. Higher video bitrates may overload your Wi-Fi connection, so a wired connection is recommended. Huge credit to @mnakada for his libcallback library: [https://github.com/mnakada/atomcam_tools](https://github.com/mnakada/atomcam_tools) @@ -321,7 +328,7 @@ Huge credit to @mnakada for his libcallback library: [https://github.com/mnakada mp4_write: ``` -ENABLE_MP4_WRITE="false" +ENABLE_MP4_WRITE="true" ``` Forces the camera to skip writing files to /tmp, and write them directly to your storage medium or network mount, prevents trashing. Normally videos are written to /tmp then moved using `mv`, which can overload camera and or remote network connections. Useful for NFS/CIFS remote video storage. @@ -434,7 +441,7 @@ NOTE: if you are upgrading a V2 camera from a release older than 06-16-22, you m --- ``` -NIGHT_DROP_DISABLE="false" +NIGHT_DROP_DISABLE="true" ``` Stop the camera from dropping the frame rate during nightvision. @@ -495,8 +502,25 @@ Enables the local webserver, for configuration, car control, or to retreive an i --- +``` +ENABLE_SYSLOG_SAVE="true" +``` + +Save the syslog to the `logs/` directory + +--- + +``` +ENABLE_CRONTAB="true" +``` + +Enable crontab. Located at `wz_mini/etc/cron/root` + +--- + ## Latest Updates +* 08-07-22: Updated init.d scripts. Added syslog save feature. Fixed orientation issue on T31 devices in webcam mode. Added crontab support. * 07-25-22: Add dnsmasq local dns option in configuration to prevent dns flooding on local networks. Added web server capability for configuration and car control. * 07-14-22: Add car compatability with normally unsupported devices. * 07-13-22: Includes latest build of libcallback, better RTSP video and audio performance: fixed broken audio caused by motor_stop on T20 devices, fixed waitMotion errors. `cmd jpeg` currently still broken on T20 devices, updated scripts to account for changed. Some usage of `cmd` has changes, please see command output. Kernel & modules updated to prepare for H265 support on T31. diff --git a/SD_ROOT/wz_mini/bin/gather_wz_logs.sh b/SD_ROOT/wz_mini/bin/gather_wz_logs.sh index 9e21b76..e7754a3 100755 --- a/SD_ROOT/wz_mini/bin/gather_wz_logs.sh +++ b/SD_ROOT/wz_mini/bin/gather_wz_logs.sh @@ -10,7 +10,7 @@ if [ -d /opt/wz_mini/tmp/log_gather ] ; then rm -rf /opt/wz_mini/tmp/log_gather create_dir else -create_dir + create_dir fi echo "copy wz_mini logs" @@ -64,8 +64,8 @@ if [ -f /tmp/sd_check_result.txt ]; then fi if [[ "$RTSP_PASSWORD" == "" ]]; then - echo "password is blank in config" - RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac) + echo "password is blank in config" + RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac) fi cd /opt/wz_mini/tmp/log_gather diff --git a/SD_ROOT/wz_mini/etc/cron/root b/SD_ROOT/wz_mini/etc/cron/root new file mode 100644 index 0000000..52e8af5 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/cron/root @@ -0,0 +1,9 @@ +# Example of job definition: +# .---------------- minute (0 - 59) +# | .------------- hour (0 - 23) +# | | .---------- day of month (1 - 31) +# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... +# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat +# | | | | | +# * * * * * user-name command to be executed +#45 05 * * * /sbin/reboot \ No newline at end of file diff --git a/SD_ROOT/wz_mini/etc/init.d/S01bind b/SD_ROOT/wz_mini/etc/init.d/S01bind new file mode 100644 index 0000000..045a9e1 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S01bind @@ -0,0 +1,41 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Bind mount system files. +# Description: Replace specific system files with our customized versions via bind mount +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Replace stock busybox" + mount --bind /opt/wz_mini/bin/busybox /bin/busybox + + echo "Replace stock fstab" + mount --bind /opt/wz_mini/etc/fstab /etc/fstab + + echo "Replace stock inittab" + mount --bind /opt/wz_mini/etc/inittab /etc/inittab + + echo "Replace /etc/profile for local/ssh shells" + mount --bind /opt/wz_mini/etc/profile /etc/profile + + if [ -d /lib/modules ]; then + echo "Mount kernel modules in /lib" + mount --bind /opt/wz_mini/lib/modules /lib/modules + fi + + echo "Replace system hostname" + + echo $CUSTOM_HOSTNAME > /opt/wz_mini/etc/hostname + mount --bind /opt/wz_mini/etc/hostname /etc/hostname + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac diff --git a/SD_ROOT/wz_mini/etc/init.d/S02tmpfs b/SD_ROOT/wz_mini/etc/init.d/S02tmpfs new file mode 100644 index 0000000..967e891 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S02tmpfs @@ -0,0 +1,30 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Mount tmpfs +# Description: Mount tmpfs for system and wz_mini +### END INIT INFO + +./opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Mount wz_mini tmpfs" + mount -t tmpfs /opt/wz_mini/tmp + + echo "Create workspace directory" + mkdir /opt/wz_mini/tmp/.storage + + echo "Mounting global tmpfs" + mount -t tmpfs /tmp + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S03busybox b/SD_ROOT/wz_mini/etc/init.d/S03busybox new file mode 100644 index 0000000..0567250 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S03busybox @@ -0,0 +1,23 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Setup BusyBox +# Description: Install BusyBox applets to wz_mini $PATH +### END INIT INFO + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Install busybox applets" + mkdir /opt/wz_mini/tmp/.bin + /opt/wz_mini/bin/busybox --install -s /opt/wz_mini/tmp/.bin + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S04model b/SD_ROOT/wz_mini/etc/init.d/S04model new file mode 100644 index 0000000..7d921ea --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S04model @@ -0,0 +1,47 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Detect device model +# Description: Detect which model device we are, and configure the system accordingly +### END INIT INFO + + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + ##DETECT CAMERA MODEL & PLATFORM TYPE + #V2=WYZEC1-JZ + #PANv1=WYZECP1_JEF + #PANv2=HL_PAN2 + #V3=WYZE_CAKP2JFUS + #DB3=WYZEDB3 + #V3C=ATOM_CamV3C + + #mtdblock9 only exists on the T20 platform, indicating V2 or PANv1 + if [ -b /dev/mtdblock9 ]; then + mkdir /opt/wz_mini/tmp/params + mount -t jffs2 /dev/mtdblock9 /opt/wz_mini/tmp/params + touch /opt/wz_mini/tmp/.$(cat /opt/wz_mini/tmp/params/config/.product_config | grep PRODUCT_MODEL | sed -e 's#.*=\(\)#\1#') + touch /opt/wz_mini/tmp/.T20 + echo "$(cat /opt/wz_mini/tmp/params/config/.product_config | grep PRODUCT_MODEL | sed -e 's#.*=\(\)#\1#') detected" + umount /opt/wz_mini/tmp/params + rm -rf /opt/wz_mini/tmp/params + elif [ -b /dev/mtdblock6 ]; then + mkdir /opt/wz_mini/tmp/configs + mount -t jffs2 /dev/mtdblock6 /opt/wz_mini/tmp/configs + touch /opt/wz_mini/tmp/.$(cat /opt/wz_mini/tmp/configs/.product_config | grep PRODUCT_MODEL | sed -e 's#.*=\(\)#\1#') + touch /opt/wz_mini/tmp/.T31 + echo "$(cat /opt/wz_mini/tmp/configs/.product_config | grep PRODUCT_MODEL | sed -e 's#.*=\(\)#\1#') detected" + umount /opt/wz_mini/tmp/configs + rm -rf /opt/wz_mini/tmp/configs + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S05mount b/SD_ROOT/wz_mini/etc/init.d/S05mount new file mode 100644 index 0000000..225db00 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S05mount @@ -0,0 +1,28 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: +# Short-Description: Mount /system +# Description: Mount /system for manipulation, before app_init.sh does +### END INIT INFO + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "mounting /system" + mount -t jffs2 /dev/mtdblock4 /system + elif [ -f /opt/wz_mini/tmp/.T31 ]; then + echo "mounting /system" + mount /dev/mtdblock3 /system + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S06car b/SD_ROOT/wz_mini/etc/init.d/S06car new file mode 100644 index 0000000..47b3b54 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S06car @@ -0,0 +1,30 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Detect device CAR +# Description: Detect which CAR device +### END INIT INFO + + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Checking for CAR FW" + if [ -f /opt/wz_mini/tmp/.WYZEC1-JZ ]; then + if cat /system/bin/app.ver | grep 4.55; then + touch /opt/wz_mini/tmp/.CAR + echo "CAR FW detected!" + else + echo "CAR not detected" + fi + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S07inject b/SD_ROOT/wz_mini/etc/init.d/S07inject new file mode 100644 index 0000000..0f3a91b --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S07inject @@ -0,0 +1,69 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Inject commands into app_init.sh +# Description: Patch app_init.sh to inject wz_mini's init.d scripts +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Copy stock rcS" + cp /etc/init.d/rcS /opt/wz_mini/tmp/.storage/rcS + + echo "Add verbose debugging to rcS" + sed -i '/^\# Set mdev.*/iset -x\n' /opt/wz_mini/tmp/.storage/rcS + + echo "Inject init.d scripts to rcS" + sed -i '/^# Run init script.*/i/opt/wz_mini/etc/rc.d/K01network \&\n' /opt/wz_mini/tmp/.storage/rcS + sed -i '/^# Run init script.*/i/opt/wz_mini/etc/rc.d/K03rcd\n' /opt/wz_mini/tmp/.storage/rcS + + echo "Modify Global Paths in rcS" + sed -i '/sbin:/s/$/:\/opt\/wz_mini\/bin/' /opt/wz_mini/tmp/.storage/rcS + sed -i '/system\/\lib/s/$/:\/opt\/wz_mini\/lib/' /opt/wz_mini/tmp/.storage/rcS + + #Custom PATH hooks + #sed -i '/^# Run init script.*/i#Hook Library PATH here\nexport LD_LIBRARY_PATH=/tmp/test/lib:$LD_LIBRARY_PATH\n' /opt/wz_mini/tmp/.storage/rcS + #sed -i '/^# Run init script.*/i#Hook system PATH here\nexport PATH=/tmp/test/bin:$PATH\n' /opt/wz_mini/tmp/.storage/rcS + echo "Copy factory app_init.sh" + cp /system/init/app_init.sh /opt/wz_mini/tmp/.storage/app_init.sh + + echo "Replace factory app_init.sh path" + sed -i '/\/system\/init\/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS + sed -i '/Run init script.*/a /opt/wz_mini/tmp/.storage/app_init.sh \&\n' /opt/wz_mini/tmp/.storage/rcS + sed -i '/\/system\/init\/app_init.sh/,+2d' /opt/wz_mini/tmp/.storage/rcS + + if [[ "$DEBUG_ENABLED" == "true" ]]; then + sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS + sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS + touch /tmp/dbgflag + + elif [[ "$WEB_CAM_ENABLE" == "true" ]]; then + sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS + sed -i '/^# Run init/i/opt/wz_mini/etc/rc.d/K02webcam &' /opt/wz_mini/tmp/.storage/rcS + touch /tmp/dbgflag + + elif [[ -d /opt/Upgrade ]]; then + sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS + sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS + sed -i '/^# Mount configs.*/i/opt/wz_mini/bin/upgrade-run.sh &\n' /opt/wz_mini/tmp/.storage/rcS + touch /tmp/dbgflag + fi + + echo "Enable libcallback" + if [[ "$LIBCALLBACK_ENABLE" == "true" ]] || ([[ "$RTSP_HI_RES_ENABLED" == "true" ]] || [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]); then + echo "set path for iCamera" + sed -i 's/\/system\/bin\/iCamera/\/opt\/wz_mini\/usr\/bin\/iCamera/g' /opt/wz_mini/tmp/.storage/app_init.sh + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S08passwd b/SD_ROOT/wz_mini/etc/init.d/S08passwd new file mode 100644 index 0000000..1097cda --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S08passwd @@ -0,0 +1,30 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Change system password +# Description: Replace system password with wz_mini's version +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Replace stock password" + cp /opt/wz_mini/etc/shadow /opt/wz_mini/tmp/.storage/shadow + + if [[ "$DEBUG_PASSWORD" == "true" ]]; then + sed -i 's/:[^:]*/:/' /opt/wz_mini/tmp/.storage/shadow + echo "Remove stock password" + fi + + mount --bind /opt/wz_mini/tmp/.storage/shadow /etc/shadow + chmod 400 /etc/shadow + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac diff --git a/SD_ROOT/wz_mini/etc/init.d/S09firstboot b/SD_ROOT/wz_mini/etc/init.d/S09firstboot new file mode 100644 index 0000000..db6f203 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S09firstboot @@ -0,0 +1,40 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Check for first boot of wz_mini +# Description: Check to see if this is the first time wz_mini is booting, if it is, play an audio prompt +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf +. /opt/wz_mini/etc/rc.common + + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [ -e /opt/wz_mini/etc/.first_boot ]; then + echo "First boot already completed" + else + echo "First boot, initializing" + touch /opt/wz_mini/etc/.first_boot + + #May need different gpio for PANv1 + #We don't rmmod this module, as it is marked [permanent] by the kernel on T20 + if [ -f /opt/wz_mini/tmp/.T20 ]; then + insmod /opt/wz_mini/lib/modules/3.10.14/extra/audio.ko sign_mode=0 + LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/wz_mini/usr/share/audio/init_v2.wav $AUDIO_PROMPT_VOLUME + else + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0 + /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/init.wav $AUDIO_PROMPT_VOLUME + rmmod audio + fi + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S10kmod b/SD_ROOT/wz_mini/etc/init.d/S10kmod new file mode 100644 index 0000000..7346e92 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S10kmod @@ -0,0 +1,160 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Load kernel modules +# Description: Load kernel modules depending on model and configuration +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf +. /opt/wz_mini/etc/rc.common + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$ENABLE_RTL8189FS_DRIVER" == "true" ]] || [[ "$ENABLE_RTL8189FS_DRIVER" == "" ]]; then + echo "Enable 8189fs" + if [ -f /opt/wz_mini/tmp/.WYZEC1-JZ ]; then + sed -i 's/\/driver\/rtl8189ftv.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\/extra\/8189fs.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh + elif [ -f /opt/wz_mini/tmp/.WYZECP1_JEF ]; then + sed -i 's/insmod \/driver\/8189es.ko/insmod \/opt\/wz_mini\/lib\/modules\/3.10.14\/extra\/8189es.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh + elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then + sed -i 's/\/system\/driver\/rtl8189ftv.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/8189fs.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh + elif [ -f /opt/wz_mini/tmp/.ATOM_CamV3C ]; then + sed -i 's/\/system\/driver\/rtl8189ftv.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/8189fs.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh + fi + fi + + if [[ "$ENABLE_ATBM603X_DRIVER" == "true" ]] || [[ "$ENABLE_ATBM603X_DRIVER" == "" ]]; then + echo "Enable atbm603x_wifi_sdio" + if [ -f /opt/wz_mini/tmp/.ATOM_CamV3C ]; then + sed -i 's/\/thirdlib\/atbm603x_wifi_sdio.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/atbm603x_wifi_sdio.ko atbm_printk_mask=0/g' /opt/wz_mini/tmp/.storage/app_init.sh + elif [ -f /opt/wz_mini/tmp/.T31 ] && ! [ -f /opt/wz_mini/tmp/.ATOM_CamV3C ]; 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.ko atbm_printk_mask=0/g' /opt/wz_mini/tmp/.storage/app_init.sh + fi + fi + + if [ -f /opt/wz_mini/tmp/.CAR ] || [[ "$ENABLE_CAR_DRIVER" == "true" ]]; then + echo "Enable cp210x serial driver for car" + modprobe cp210x + fi + + if ([[ "$RTSP_HI_RES_ENABLED" == "true" ]] || [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]) && ! [[ -e /tmp/dbgflag ]]; then + if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]] && [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "Load video loopback driver at video6 video7" + insmod /opt/wz_mini/lib/modules/3.10.14/extra/v4l2loopback_V2.ko video_nr=6,7 + else + echo "Load video loopback driver at video1 video2" + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/v4l2loopback.ko video_nr=1,2 + fi + elif [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "Load video loopback driver at video7" + insmod /opt/wz_mini/lib/modules/3.10.14/extra/v4l2loopback_V2.ko video_nr=7 + else + echo "Load video loopback driver at video2" + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/v4l2loopback.ko video_nr=2 + fi + elif [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "Load video loopback driver at video6" + insmod /opt/wz_mini/lib/modules/3.10.14/extra/v4l2loopback_V2.ko video_nr=6 + else + echo "Load video loopback driver at video1" + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/v4l2loopback.ko video_nr=1 + fi + fi + fi + + + if [[ "$ENABLE_NFSv4" == "true" ]]; then + insmod $KMOD_PATH/kernel/lib/oid_registry.ko + insmod $KMOD_PATH/kernel/net/dns_resolver/dns_resolver.ko + insmod $KMOD_PATH/kernel/fs/nfs/nfsv4.ko + insmod $KMOD_PATH/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko + echo "NFSv4 enabled" + fi + + if [[ "$ENABLE_IPTABLES" == "true" ]]; then + + insmod $KMOD_PATH/kernel/net/netfilter/x_tables.ko + insmod $KMOD_PATH/kernel/net/ipv4/netfilter/ip_tables.ko + insmod $KMOD_PATH/kernel/net/ipv4/netfilter/ipt_REJECT.ko + insmod $KMOD_PATH/kernel/net/ipv4/netfilter/iptable_filter.ko + insmod $KMOD_PATH/kernel/net/ipv4/netfilter/iptable_mangle.ko + echo "iptables IPv4 enabled" + + if [[ "$ENABLE_IPV6" == "true" ]]; then + insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6_tables.ko + insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6t_REJECT.ko + insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6table_filter.ko + insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6table_mangle.ko + echo "iptables IPv6 enabled" + fi + + fi + + if [[ "$ENABLE_WIREGUARD" == "true" ]]; then + insmod $KMOD_PATH/kernel/net/ipv4/tunnel4.ko + insmod $KMOD_PATH/kernel/net/ipv4/ip_tunnel.ko + insmod $KMOD_PATH/kernel/net/wireguard/wireguard.ko + echo "Wireguard enabled" + fi + + if [[ "$ENABLE_CIFS" == "true" ]]; then + insmod $KMOD_PATH/kernel/fs/cifs/cifs.ko + echo "CIFS enabled" + fi + + if [[ "$ENABLE_USB_STORAGE" == "true" ]]; then + insmod $KMOD_PATH/kernel/drivers/scsi/scsi_mod.ko + insmod $KMOD_PATH/kernel/drivers/scsi/sd_mod.ko + insmod $KMOD_PATH/kernel/drivers/usb/storage/usb-storage.ko + echo "usb_storage enabled" + fi + + if [[ "$ENABLE_EXT4" == "true" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + insmod $KMOD_PATH/kernel/lib/crc16.ko + fi + + insmod $KMOD_PATH/kernel/fs/jbd2/jbd2.ko + insmod $KMOD_PATH/kernel/fs/mbcache.ko + insmod $KMOD_PATH/kernel/fs/ext4/ext4.ko + echo "ext4 support enabled" + fi + + 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 + if [[ "$BONDING_FAIL_OVER_MAC" == "" ]]; then + BONDING_FAIL_OVER_MAC="0" + fi + + echo "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" fail_over_mac="$BONDING_FAIL_OVER_MAC" + + echo "Network bonding enabled" + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S11configbackup b/SD_ROOT/wz_mini/etc/init.d/S11configbackup new file mode 100644 index 0000000..5c20a53 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S11configbackup @@ -0,0 +1,52 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Backup critical device files +# Description: Backup /configs and /params directory, these files are unique to the device, and if lost the camera is unusable. +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [ -d /opt/.wz_backup ]; then + echo "Factory config backup directory missing" + else + echo "Creating factory config backup directory" + mkdir /opt/.wz_backup + fi + + if [ -f /opt/wz_mini/tmp/.T31 ]; then + echo "T31 platform backup" + if [ -d /opt/.wz_backup/configs ]; then + echo "Factory configs backup directory present, not backing up again" + else + echo "Backup /configs" + cp -R /configs/ /opt/.wz_backup/ + fi + elif [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "T20 platform backup" + if [ -d /opt/.wz_backup/configs ]; then + echo "Factory configs backup directory present, not backing up again" + else + echo "Backup /configs" + cp -R /configs/ /opt/.wz_backup/ + fi + + if [ -d /opt/.wz_backup/params ]; then + echo "Factory params backup directory present, not backing up again" + else + echo "Backup /params" + cp -R /params/ /opt/.wz_backup/ + fi + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S12ssh b/SD_ROOT/wz_mini/etc/init.d/S12ssh new file mode 100644 index 0000000..5a44364 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S12ssh @@ -0,0 +1,23 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Start ssh daemon +# Description: Run the dropbear ssh daemon +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Running dropbear ssh server" + /opt/wz_mini/bin/dropbear -R -s -g + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S14terminfo b/SD_ROOT/wz_mini/etc/init.d/S14terminfo new file mode 100644 index 0000000..9f25971 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S14terminfo @@ -0,0 +1,27 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Check for terminfo directory +# Description: Provide the proper terminfo files for nano and shells +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [ -d /opt/wz_mini/usr/share/terminfo ]; then + echo "Terminfo already present" + else + echo "Terminfo not present, extract" + tar xf /opt/wz_mini/usr/share/terminfo.tar -C /opt/wz_mini/usr/share/ + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/S16factorycheck b/SD_ROOT/wz_mini/etc/init.d/S16factorycheck new file mode 100644 index 0000000..826b8ca --- /dev/null +++ b/SD_ROOT/wz_mini/etc/init.d/S16factorycheck @@ -0,0 +1,26 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Disable factorycheck +# Description: On T31 devices, we must disable factory check to prevent it from unmounting our binds. +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [ -f /opt/wz_mini/tmp/.T31 ]; then + mount --bind /opt/wz_mini/bin/factorycheck /system/bin/factorycheck + touch /tmp/usrflag + echo "Replace factorycheck with dummy, to prevent bind unmount" + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_init.sh b/SD_ROOT/wz_mini/etc/init.d/wz_init.sh old mode 100755 new mode 100644 index 5d6adea..ef5dc15 --- a/SD_ROOT/wz_mini/etc/init.d/wz_init.sh +++ b/SD_ROOT/wz_mini/etc/init.d/wz_init.sh @@ -1,5 +1,10 @@ #!/bin/sh +#init.d/ = early boot, before inittab is run +#rc.d/ = runs after /linuxrc, but before app_init.sh +#network.d/ runs after app_init.sh, and after wlan hw is ready +#rc.local.d/ = runs after app_init.sh and network has acquired an address + ###This file is run by switch_root, from the initramfs in the kernel. LOG_NAME=/opt/wz_mini/log/wz_init if [[ -e $LOG_NAME.log || -L $LOG_NAME.log ]] ; then @@ -13,10 +18,6 @@ fi touch -- "$LOG_NAME".log exec 1> $LOG_NAME.log 2>&1 -export WZMINI_CFG=/opt/wz_mini/wz_mini.conf - -[ -f $WZMINI_CFG ] && source $WZMINI_CFG - echo "welcome to wz_init.sh" echo "PID $$" @@ -31,182 +32,28 @@ echo ' |______| ' -set -x +# Start all init scripts in /etc/init.d +# executing them in numerical order. +# +for i in /opt/wz_mini/etc/init.d/S??* ;do -echo "replace stock busybox" -mount --bind /opt/wz_mini/bin/busybox /bin/busybox + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue -echo "replace stock fstab" -mount --bind /opt/wz_mini/etc/fstab /etc/fstab - -echo "mount wz_mini tmpfs" -mount -t tmpfs /opt/wz_mini/tmp - -echo "install busybox applets" -mkdir /opt/wz_mini/tmp/.bin -/opt/wz_mini/bin/busybox --install -s /opt/wz_mini/tmp/.bin - -##DETECT CAMERA MODEL & PLATFORM TYPE -#V2=WYZEC1-JZ -#PANv1=WYZECP1_JEF -#PANv2=HL_PAN2 -#V3=WYZE_CAKP2JFUS -#DB3=WYZEDB3 -#V3C=ATOM_CamV3C - -#mtdblock9 only exists on the T20 platform, indicating V2 or PANv1 -if [ -b /dev/mtdblock9 ]; then - mkdir /opt/wz_mini/tmp/params - mount -t jffs2 /dev/mtdblock9 /opt/wz_mini/tmp/params - touch /opt/wz_mini/tmp/.$(cat /opt/wz_mini/tmp/params/config/.product_config | grep PRODUCT_MODEL | sed -e 's#.*=\(\)#\1#') - touch /opt/wz_mini/tmp/.T20 - umount /opt/wz_mini/tmp/params - rm -rf /opt/wz_mini/tmp/params -elif [ -b /dev/mtdblock6 ]; then - mkdir /opt/wz_mini/tmp/configs - mount -t jffs2 /dev/mtdblock6 /opt/wz_mini/tmp/configs - touch /opt/wz_mini/tmp/.$(cat /opt/wz_mini/tmp/configs/.product_config | grep PRODUCT_MODEL | sed -e 's#.*=\(\)#\1#') - touch /opt/wz_mini/tmp/.T31 - umount /opt/wz_mini/tmp/configs - rm -rf /opt/wz_mini/tmp/configs -fi - -#Set the correct GPIO for the audio driver (T31 only) -if [ -f /opt/wz_mini/tmp/.HL_PAN2 ]; then - GPIO=7 -elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then - GPIO=63 -fi - -if [ -e /opt/wz_mini/etc/.first_boot ]; then - echo "first boot already completed" -else - echo "first boot, initializing" - if [ -f /opt/wz_mini/tmp/.T20 ]; then - #May need different gpio for PANv1 - #We don't rmmod this module, as it is marked [permanent] by the kernel on T20 - insmod /opt/wz_mini/lib/modules/3.10.14/extra/audio.ko sign_mode=0 - LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/wz_mini/usr/share/audio/init_v2.wav $AUDIO_PROMPT_VOLUME - else - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0 - /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/init.wav $AUDIO_PROMPT_VOLUME - rmmod audio - fi -fi - - -if [ -f /opt/wz_mini/etc/.first_boot ]; then - echo "Not first_boot" -else - echo "Set first_boot" - touch /opt/wz_mini/etc/.first_boot -fi - -echo "replace stock inittab" -mount --bind /opt/wz_mini/etc/inittab /etc/inittab - -echo "bind /etc/profile for local/ssh shells" -mount --bind /opt/wz_mini/etc/profile /etc/profile - -echo "mounting global tmpfs" -mount -t tmpfs /tmp - -echo "mount system to replace factorycheck with dummy, to prevent bind unmount" -if [ -f /opt/wz_mini/tmp/.T31 ]; then - mount /dev/mtdblock3 /system - mount --bind /opt/wz_mini/bin/factorycheck /system/bin/factorycheck -fi - -touch /tmp/usrflag - -echo "create workspace directory" -mkdir /opt/wz_mini/tmp/.storage - -echo "copy stock rcS" -cp /etc/init.d/rcS /opt/wz_mini/tmp/.storage/rcS - -echo "add wz_post inject to stock rcS" -sed -i '/^".*/aset -x' /opt/wz_mini/tmp/.storage/rcS -sed -i '/^# Run init script.*/i/opt/wz_mini/etc/init.d/wz_post.sh\n' /opt/wz_mini/tmp/.storage/rcS - -sed -i '/sbin:/s/$/:\/opt\/wz_mini\/bin/' /opt/wz_mini/tmp/.storage/rcS -sed -i '/system\/\lib/s/$/:\/opt\/wz_mini\/lib/' /opt/wz_mini/tmp/.storage/rcS - -#Custom PATH hooks -#sed -i '/^# Run init script.*/i#Hook Library PATH here\nexport LD_LIBRARY_PATH=/tmp/test/lib:$LD_LIBRARY_PATH\n' /opt/wz_mini/tmp/.storage/rcS -#sed -i '/^# Run init script.*/i#Hook system PATH here\nexport PATH=/tmp/test/bin:$PATH\n' /opt/wz_mini/tmp/.storage/rcS - -if [ -f /opt/wz_mini/tmp/.T20 ]; then - mount -t jffs2 /dev/mtdblock4 /system -fi - -#Check for Car FW -if [ -f /opt/wz_mini/tmp/.WYZEC1-JZ ]; then - if cat /system/bin/app.ver | grep 4.55; then - touch /opt/wz_mini/tmp/.CAR - fi -fi - -echo "Copy factory app_init.sh" -cp /system/init/app_init.sh /opt/wz_mini/tmp/.storage/app_init.sh - -echo "Replace factory app_init.sh path" -sed -i '/\/system\/init\/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS -sed -i '/Run init script.*/a /opt/wz_mini/tmp/.storage/app_init.sh\n' /opt/wz_mini/tmp/.storage/rcS -sed -i '/\/system\/init\/app_init.sh/,+2d' /opt/wz_mini/tmp/.storage/rcS - -echo "replace stock password" -cp /opt/wz_mini/etc/shadow /opt/wz_mini/tmp/.storage/shadow - -if [[ "$DEBUG_PASSWORD" == "true" ]]; then -sed -i 's/:[^:]*/:/' /opt/wz_mini/tmp/.storage/shadow -fi - -mount --bind /opt/wz_mini/tmp/.storage/shadow /etc/shadow -chmod 400 /etc/shadow - -if [[ -e /opt/wz_mini/swap.gz ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/wz_mini/usr/share/audio/swap_v2.wav $AUDIO_PROMPT_VOLUME - else - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0 - /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/swap.wav $AUDIO_PROMPT_VOLUME - rmmod audio - fi - echo "swap archive present, extracting" - gzip -d /opt/wz_mini/swap.gz - mkswap /opt/wz_mini/swap - sync;echo 3 > /proc/sys/vm/drop_caches -else - echo "swap archive missing, not extracting" -fi - -if [ -d /opt/wz_mini/usr/share/terminfo ]; then - echo "terminfo already present" -else - echo "terminfo not present, extract" - tar xf /opt/wz_mini/usr/share/terminfo.tar -C /opt/wz_mini/usr/share/ - -fi - -echo "Run dropbear ssh server" -/opt/wz_mini/bin/dropbear -R -s -g - -if [[ "$DEBUG_ENABLED" == "true" ]]; then - sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS - sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS - touch /tmp/dbgflag - -elif [[ "$WEB_CAM_ENABLE" == "true" ]]; then - sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS - sed -i '/^# Run init/i/opt/wz_mini/etc/init.d/wz_cam.sh &' /opt/wz_mini/tmp/.storage/rcS - touch /tmp/dbgflag - -elif [[ -d /opt/Upgrade ]]; then - sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS - sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS - sed -i '/^# Mount configs.*/i/opt/wz_mini/bin/upgrade-run.sh &\n' /opt/wz_mini/tmp/.storage/rcS - touch /tmp/dbgflag -fi + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac +done /linuxrc diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_post.sh b/SD_ROOT/wz_mini/etc/init.d/wz_post.sh deleted file mode 100755 index c3698fb..0000000 --- a/SD_ROOT/wz_mini/etc/init.d/wz_post.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/sh - -### This file is called by /etc/init.d/rcS, and is run before app_init.sh - -LOG_NAME=/opt/wz_mini/log/wz_post -if [[ -e $LOG_NAME.log || -L $LOG_NAME.log ]] ; then - i=0 - while [[ -e $LOG_NAME.log.$i || -L $LOG_NAME.log.$i ]] ; do - let i++ - done - mv $LOG_NAME.log $LOG_NAME.log.$i - LOG_NAME=$LOG_NAME -fi -touch -- "$LOG_NAME".log -exec 1> $LOG_NAME.log 2>&1 - -set -x - -if [ -e /tmp/dbgflag ];then - echo "debug mode, disabled" - exit 0 -fi - -export WZMINI_CFG=/opt/wz_mini/wz_mini.conf - -[ -f $WZMINI_CFG ] && source $WZMINI_CFG - -echo "welcome to wz_post.sh" -echo "PID $$" - -#CAMERA CONFIGURATION FILES BACKUP -if [ -d /opt/.wz_backup ]; then - echo "backup directory missing" -else - echo "creating backup directory" - mkdir /opt/.wz_backup -fi - -if [ -f /opt/wz_mini/tmp/.T31 ]; then - echo "T31 platform backup" - if [ -d /opt/.wz_backup/configs ]; then - echo "configs backup directory present, not backing up again" - else - echo "backup /configs" - cp -R /configs/ /opt/.wz_backup/ - fi -elif [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "T20 platform backup" - if [ -d /opt/.wz_backup/configs ]; then - echo "configs backup directory present, not backing up again" - else - echo "backup /configs" - cp -R /configs/ /opt/.wz_backup/ - fi - - if [ -d /opt/.wz_backup/params ]; then - echo "configs backup directory present, not backing up again" - else - echo "backup /params" - cp -R /params/ /opt/.wz_backup/ - fi -fi - -#SWAP FILE, REQUIRED FOR OPERATION! -if [[ "$ENABLE_SWAP" == "true" ]] && [[ -e /opt/wz_mini/swap ]]; then - echo "swap file found, enable" - swapon /opt/wz_mini/swap -else - echo "swap file missing" -fi - -if [ -d /lib/modules ]; then - echo "mount kernel modules" - mount --bind /opt/wz_mini/lib/modules /lib/modules -fi - -## REPLACE STOCK MODULES -if [[ "$ENABLE_RTL8189FS_DRIVER" == "true" ]] || [[ "$ENABLE_RTL8189FS_DRIVER" == "" ]]; then - echo "Enable 8189fs" - if [ -f /opt/wz_mini/tmp/.WYZEC1-JZ ]; then - sed -i 's/\/driver\/rtl8189ftv.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\/extra\/8189fs.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh - elif [ -f /opt/wz_mini/tmp/.WYZECP1_JEF ]; then - sed -i 's/insmod \/driver\/8189es.ko/insmod \/opt\/wz_mini\/lib\/modules\/3.10.14\/extra\/8189es.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh - elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then - sed -i 's/\/system\/driver\/rtl8189ftv.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/8189fs.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh - elif [ -f /opt/wz_mini/tmp/.ATOM_CamV3C ]; then - sed -i 's/\/system\/driver\/rtl8189ftv.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/8189fs.ko rtw_power_mgnt=0 rtw_enusbss=0 rtw_drv_log_level=0/g' /opt/wz_mini/tmp/.storage/app_init.sh - fi -fi - -if [[ "$ENABLE_ATBM603X_DRIVER" == "true" ]] || [[ "$ENABLE_ATBM603X_DRIVER" == "" ]]; then - echo "Enable atbm603x_wifi_sdio" - if [ -f /opt/wz_mini/tmp/.ATOM_CamV3C ]; then - sed -i 's/\/thirdlib\/atbm603x_wifi_sdio.ko/\/opt\/wz_mini\/lib\/modules\/3.10.14\_\_isvp_swan_1.0\_\_\/extra\/atbm603x_wifi_sdio.ko atbm_printk_mask=0/g' /opt/wz_mini/tmp/.storage/app_init.sh - elif [ -f /opt/wz_mini/tmp/.T31 ] && ! [ -f /opt/wz_mini/tmp/.ATOM_CamV3C ]; 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.ko atbm_printk_mask=0/g' /opt/wz_mini/tmp/.storage/app_init.sh - fi -fi - -##ENABLE LIBCALLBACK BY DEFAULT -if [[ "$LIBCALLBACK_ENABLE" == "true" ]] || ([[ "$RTSP_HI_RES_ENABLED" == "true" ]] || [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]); then - echo "set path for iCamera" - sed -i 's/\/system\/bin\/iCamera/\/opt\/wz_mini\/usr\/bin\/iCamera/g' /opt/wz_mini/tmp/.storage/app_init.sh -fi - -#RTSP SERVER -if ([[ "$RTSP_HI_RES_ENABLED" == "true" ]] || [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]) && ! [[ -e /tmp/dbgflag ]]; then - if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]] && [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "load video loopback driver at video6 video7" - insmod /opt/wz_mini/lib/modules/3.10.14/extra/v4l2loopback_V2.ko video_nr=6,7 - else - echo "load video loopback driver at video1 video2" - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/v4l2loopback.ko video_nr=1,2 - fi - elif [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "load video loopback driver at video7" - insmod /opt/wz_mini/lib/modules/3.10.14/extra/v4l2loopback_V2.ko video_nr=7 - else - echo "load video loopback driver at video2" - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/v4l2loopback.ko video_nr=2 - fi - elif [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "load video loopback driver at video6" - insmod /opt/wz_mini/lib/modules/3.10.14/extra/v4l2loopback_V2.ko video_nr=6 - else - echo "load video loopback driver at video1" - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/v4l2loopback.ko video_nr=1 - fi - fi -fi - -#MOTORIZED CAMERA CONTROL -if [[ "$DISABLE_MOTOR" == "true" ]]; then - echo "Motor Disabled" - touch /opt/wz_mini/tmp/.ms -fi - -#Enable serial driver for car -if [ -f /opt/wz_mini/tmp/.CAR ] || [[ "$ENABLE_CAR_DRIVER" == "true" ]]; then - modprobe cp210x -fi - -/opt/wz_mini/etc/init.d/wz_user.sh & - -##LIBRARY DEBUG -#cp /opt/wz_mini/lib/uClibc.tar /tmp -#tar -xf /tmp/uClibc.tar -C /tmp -#mount --bind /tmp/lib /lib -#cp /system/bin/iCamera /opt/wz_mini/tmp/.storage/ -#mount -o ro,bind /opt/wz_mini/usr/bin/iCamera-dbg /system/bin/iCamera diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh b/SD_ROOT/wz_mini/etc/init.d/wz_user.sh deleted file mode 100755 index 019280a..0000000 --- a/SD_ROOT/wz_mini/etc/init.d/wz_user.sh +++ /dev/null @@ -1,625 +0,0 @@ -#!/bin/sh - -LOG_NAME=/opt/wz_mini/log/wz_user -if [[ -e $LOG_NAME.log || -L $LOG_NAME.log ]] ; then - i=0 - while [[ -e $LOG_NAME.log.$i || -L $LOG_NAME.log.$i ]] ; do - let i++ - done - mv $LOG_NAME.log $LOG_NAME.log.$i - LOG_NAME=$LOG_NAME -fi -touch -- "$LOG_NAME".log -exec 1> $LOG_NAME.log 2>&1 - -set -x - -echo "welcome to wz_user.sh" -echo "PID $$" - - -if [[ -e /tmp/dbgflag ]];then - echo "debug mode, disabled" - exit 0 -fi - -export WZMINI_CFG=/opt/wz_mini/wz_mini.conf - -[ -f $WZMINI_CFG ] && source $WZMINI_CFG - -hostname_set() { - echo "set hostname" - hostname $CUSTOM_HOSTNAME -} - -first_run_check() { - if [ -e /opt/wz_mini/tmp/.wz_user_firstrun ]; then - echo "wz_user.sh already run once, exit." - exit 0 - fi -} - -store_mac() { - echo "store original mac" - cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/wlan0_mac -} - -wait_wlan() { -##Check if the driver has been loaded for the onboard wlan0, store the MAC. - while true - do - if ifconfig wlan0 | grep "HWaddr"; then - echo "wlan0 hwaddr is up" - store_mac - break - else - echo "wlan0 hwaddr not ready yet..." - sleep 5 - fi - done -} - -wpa_check() { -##Check if wpa_supplicant has been created by iCamera - if [ -e /tmp/wpa_supplicant.conf ]; then - wait_wlan - echo "wpa_supplicant.conf ready" - else - echo "wpa_supplicant.conf not ready, wait some time for creation." - COUNT=0 - ATTEMPTS=15 - until [[ -e /tmp/wpa_supplicant.conf ]] || [[ $COUNT -eq $ATTEMPTS ]]; do - echo -e "$(( COUNT++ ))... \c" - sleep 5 - wpa_check - done - if [[ $COUNT -eq $ATTEMPTS ]]; then - echo "time exceeded waiting for iCamera, continue potentially broken condition without network." - fi - fi -} - -wlanold_check() { -#Have we renamed interfaces yet? - if [ -d /sys/class/net/wlanold ]; then - echo "wlanold exist" - eth_wlan_up - else - echo "wlanold doesn't exist" - if [[ "$BONDING_ENABLED" == "true" ]] && ([[ "$ENABLE_USB_ETH" == "true" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]]); then - rename_interface_and_setup_bonding bond0 "$BONDING_PRIMARY_INTERFACE" "$BONDING_SECONDARY_INTERFACE" - else - rename_interface $1 - fi - fi -} - -netloop() { -##While loop for check - while true - do - wlanold_check $1 - echo "wlan0 not ready yet..." - sleep 5 - done -} - -rename_interface() { -##Fool iCamera by renaming the hardline interface to wlan0 - echo "renaming interfaces" - 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 - 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 -} - -bonding_setup() { -echo "bonding kernel module setup" -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="$1" - fi - if [[ "$BONDING_SECONDARY_INTERFACE" == "" ]]; then - BONDING_SECONDARY_INTERFACE="$2" - fi - if [[ "$BONDING_FAIL_OVER_MAC" == "" ]]; then - BONDING_FAIL_OVER_MAC="0" - 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" fail_over_mac="$BONDING_FAIL_OVER_MAC" -fi -} - -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" ]] || [[ "$ENABLE_USB_DIRECT" == "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 -} - -swap_enable() { - if [ -e /opt/wz_mini/swap ]; then - echo "Swap file exists" - if cat /proc/swaps | grep "mini" ; then - echo "Swap is already enabled" - else - echo "Enable swap" - swapon /opt/wz_mini/swap - fi - else - echo "Swap file missing!" - fi -} - -dmesg_log() { - -DMESG_LOG=/opt/wz_mini/log/dmesg -if [[ -e $DMESG_LOG.log || -L $DMESG_LOG.log ]] ; then - i=0 - while [[ -e $DMESG_LOG.log.$i || -L $DMESG_LOG.log.$i ]] ; do - let i++ - done - mv $DMESG_LOG.log $DMESG_LOG.log.$i - DMESG_LOG=$DMESG_LOG -fi -touch -- "$DMESG_LOG".log -dmesg > $DMESG_LOG.log 2>&1 - -} - -trim_logs() { - -echo "Deleting logs older than 5 boots..." - -find /opt/wz_mini/log -name '*log*' | while read file; do - [ "${file#/opt/wz_mini/log/*log.}" -gt 5 ] && rm -v "$file" -done - -} - -first_run_check -wpa_check - -#Set module dir depending on platform -if [ -f /opt/wz_mini/tmp/.T20 ]; then - KMOD_PATH="/opt/wz_mini/lib/modules/3.10.14" -else - KMOD_PATH="/opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__" -fi - -swap_enable - -if [[ "$ENABLE_IPV6" == "true" ]]; then - echo "ipv6 enabled" -else - echo "ipv6 disabled" - sysctl -w net.ipv6.conf.all.disable_ipv6=1 -fi - -if [[ "$ENABLE_NFSv4" == "true" ]]; then - insmod $KMOD_PATH/kernel/lib/oid_registry.ko - insmod $KMOD_PATH/kernel/net/dns_resolver/dns_resolver.ko - insmod $KMOD_PATH/kernel/fs/nfs/nfsv4.ko - insmod $KMOD_PATH/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko - echo nfsv4 enabled -else - echo nfsv4 disabled -fi - -if [[ "$ENABLE_IPTABLES" == "true" ]]; then - - insmod $KMOD_PATH/kernel/net/netfilter/x_tables.ko - insmod $KMOD_PATH/kernel/net/ipv4/netfilter/ip_tables.ko - insmod $KMOD_PATH/kernel/net/ipv4/netfilter/ipt_REJECT.ko - insmod $KMOD_PATH/kernel/net/ipv4/netfilter/iptable_filter.ko - insmod $KMOD_PATH/kernel/net/ipv4/netfilter/iptable_mangle.ko - echo "iptables ipv4 enabled" - - if [[ "$ENABLE_IPV6" == "true" ]]; then - insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6_tables.ko - insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6t_REJECT.ko - insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6table_filter.ko - insmod $KMOD_PATH/kernel/net/ipv6/netfilter/ip6table_mangle.ko - echo "iptables ipv6 enabled" - fi -else - echo "iptables disabled" -fi - -if [[ "$ENABLE_USB_ETH" == "true" ]]; then - - insmod $KMOD_PATH/kernel/drivers/net/usb/usbnet.ko - - # Auto-Detect an Ethernet Driver and load it - if [[ "$ENABLE_USB_ETH_MODULE_AUTODETECT" == "true" ]]; then - for DEVICE in `lsusb | awk '{print $6}'| tr '[:upper:]' '[:lower:]'`; do - case $DEVICE in - '077b:2226' | '0846:1040' | '2001:1a00' | '0b95:1720' | '07b8:420a' |\ - '08dd:90ff' | '0557:2009' | '0411:003d' | '0411:006e' | '6189:182d' |\ - '0df6:0056' | '07aa:0017' | '1189:0893' | '1631:6200' | '04f1:3008' |\ - '17ef:7203' | '0b95:772b' | '0b95:7720' | '0b95:1780' | '0789:0160' |\ - '13b1:0018' | '1557:7720' | '07d1:3c05' | '2001:3c05' | '2001:1a02' |\ - '1737:0039' | '04bb:0930' | '050d:5055' | '05ac:1402' | '0b95:772a' |\ - '14ea:ab11' | '0db0:a877' | '0b95:7e2b' | '0b95:172a' | '066b:20f9') - echo "Loading ASIX Ethernet driver..." - modprobe asix - ;; - '0b95:1790' | '0b95:178a' | '0df6:0072') - echo "Loading AX88179 Gigabit Ethernet driver..." - modprobe ax88179_178a - ;; - '1004:61aa' | '046d:c11f' | '1410:b001' | '1410:9010' | '413c:8195' |\ - '413c:8196' | '413c:819b' | '16d5:650a' | '12d1:14ac') - echo "Loading USB CDC Ethernet driver..." - modprobe cdc_ether - ;; - '0bda:8152') - echo "Loading Realtek RTL8152 driver..." - modprobe r8152 - ;; - esac - done - fi - - # Manually load any other Ethernet Drivers if asked for - if [[ "$ENABLE_USB_ETH_MODULE_MANUAL" != "" ]]; then - for i in $(echo "$ENABLE_USB_ETH_MODULE_MANUAL" | tr "," "\n") - do - insmod $KMOD_PATH/kernel/drivers/net/usb/$i.ko - done - fi - - bonding_setup eth0 wlan0 - - swap_enable - - netloop eth0 - - else - echo "USB Ethernet disabled" -fi - -if [[ "$ENABLE_USB_DIRECT" == "true" ]]; then - - HOST_MACADDR=$(echo "$CUSTOM_HOSTNAME"|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/') - - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo connect > /sys/devices/platform/jz-dwc2/dwc2/udc/dwc2/soft_connect - sleep 1 - devmem 0x10000040 32 0x0b800096 - sleep 1 - devmem 0x13500000 32 0x001100cc - else - #Set dwc2 ID_PIN driver memory - devmem 0x13500000 32 0x001100cc - devmem 0x10000040 32 0x0b000096 - #wipe the bits to set the ID_PIN, only for the V3. - devmem 0x10000040 32 0x0b000FFF - fi - - insmod $KMOD_PATH/kernel/drivers/usb/gadget/libcomposite.ko - - if [ -f /opt/wz_mini/tmp/.T31 ]; then - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/usb/gadget/u_ether.ko - insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/usb/gadget/usb_f_ncm.ko - fi - - insmod $KMOD_PATH/kernel/drivers/usb/gadget/g_ncm.ko iManufacturer=wz_mini_ncm host_addr="$HOST_MACADDR" dev_addr="$USB_DIRECT_MAC_ADDR" - - sleep 1 - - bonding_setup usb0 wlan0 - - swap_enable - - netloop usb0 - - else - echo "USB Direct disabled" -fi - -if [[ "$ENABLE_USB_RNDIS" == "true" ]]; then - if [[ "$ENABLE_USB_ETH" == "true" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]]; then - echo "RNDIS is not compatible with ENABLE_USB_ETH or ENABLE_USB_DIRECT. Please enable only ENABLE_USB_RNDIS" - else - - insmod $KMOD_PATH/kernel/drivers/net/usb/usbnet.ko - insmod $KMOD_PATH/kernel/drivers/net/usb/cdc_ether.ko - insmod $KMOD_PATH/kernel/drivers/net/usb/rndis_host.ko - - sleep 1 - - swap_enable - - netloop usb0 - - fi -else - echo "usb rndis disabled" -fi - -if [[ "$ENABLE_WIREGUARD" == "true" ]]; then - insmod $KMOD_PATH/kernel/net/ipv4/tunnel4.ko - insmod $KMOD_PATH/kernel/net/ipv4/ip_tunnel.ko - insmod $KMOD_PATH/kernel/net/wireguard/wireguard.ko - - if [[ "$WIREGUARD_IPV4" != "" ]]; then - - if [ -d /opt/wz_mini/etc/wireguard ]; then - echo "wireguard dir exists" - else - mkdir -p /opt/wz_mini/etc/wireguard - fi - - if [ ! -f /opt/wz_mini/etc/wireguard/privatekey ]; then - (umask 277 && /opt/wz_mini/bin/wg genkey | /opt/wz_mini/bin/busybox tee /opt/wz_mini/etc/wireguard/privatekey | /opt/wz_mini/bin/wg pubkey > /opt/wz_mini/etc/wireguard/publickey) - fi - - /opt/wz_mini/bin/busybox ip link add dev wg0 type wireguard - /opt/wz_mini/bin/busybox ip address add dev wg0 "$WIREGUARD_IPV4" - /opt/wz_mini/bin/wg set wg0 private-key /opt/wz_mini/etc/wireguard/privatekey - /opt/wz_mini/bin/busybox ip link set wg0 up - fi - - if [[ "$WIREGUARD_PEER_PUBLIC_KEY" != "" ]] && [[ "$WIREGUARD_PEER_ALLOWED_IPS" != "" ]] && [[ "$WIREGUARD_PEER_ENDPOINT" != "" ]] && [[ "$WIREGUARD_PEER_KEEP_ALIVE" != "" ]]; then - /opt/wz_mini/bin/wg set wg0 peer "$WIREGUARD_PEER_PUBLIC_KEY" allowed-ips "$WIREGUARD_PEER_ALLOWED_IPS" endpoint "$WIREGUARD_PEER_ENDPOINT" persistent-keepalive "$WIREGUARD_PEER_KEEP_ALIVE" - /opt/wz_mini/bin/busybox ip route add "$WIREGUARD_PEER_ALLOWED_IPS" dev wg0 - fi -else - echo "wireguard disabled" -fi - -if [[ "$ENABLE_CIFS" == "true" ]]; then - insmod $KMOD_PATH/kernel/fs/cifs/cifs.ko -else - echo "cifs disabled" -fi - -if [[ "$ENABLE_USB_STORAGE" == "true" ]]; then - insmod $KMOD_PATH/kernel/drivers/scsi/scsi_mod.ko - insmod $KMOD_PATH/kernel/drivers/scsi/sd_mod.ko - insmod $KMOD_PATH/kernel/drivers/usb/storage/usb-storage.ko -else - echo "usb_storage disabled" -fi - -if [[ "$ENABLE_EXT4" == "true" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - insmod $KMOD_PATH/kernel/lib/crc16.ko - fi - - insmod $KMOD_PATH/kernel/fs/jbd2/jbd2.ko - insmod $KMOD_PATH/kernel/fs/mbcache.ko - insmod $KMOD_PATH/kernel/fs/ext4/ext4.ko -else - echo "ext4 disabled" -fi - -if [[ "$DISABLE_FW_UPGRADE" == "true" ]]; then - mkdir /tmp/Upgrade - mount -t tmpfs -o size=1,nr_inodes=1 none /tmp/Upgrade - #Setting this host causes iCamera to segfault, lets ignore it for now - #echo -e "127.0.0.1 localhost \n127.0.0.1 wyze-upgrade-service.wyzecam.com" > /opt/wz_mini/tmp/.storage/hosts - #mount --bind /opt/wz_mini/tmp/.storage/hosts /etc/hosts - /opt/wz_mini/bin/busybox inotifyd /opt/wz_mini/usr/bin/watch_up.sh /tmp:n > /dev/null 2>&1 & -else - mkdir /tmp/Upgrade - /opt/wz_mini/bin/busybox inotifyd /opt/wz_mini/usr/bin/watch_up.sh /tmp:n > /dev/null 2>&1 & -fi - -if [[ "$REMOTE_SPOTLIGHT" == "true" ]]; then - /opt/wz_mini/bin/socat pty,link=/dev/ttyUSB0,raw tcp:"$REMOTE_SPOTLIGHT_HOST":9000 & - echo "remote accessory enabled" -else - echo "remote accessory disabled" -fi - -if [[ "$ENABLE_MP4_WRITE" == "true" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "mp4_write is not supported on T20" - else - /opt/wz_mini/bin/cmd mp4write on - echo "mp4_write enabled" - fi -else - echo "mp4 write disabled" -fi - -if [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then - - if [ -f /opt/wz_mini/tmp/.T20 ]; then - HI_VIDEO_DEV="/dev/video6" - else - HI_VIDEO_DEV="/dev/video1" - fi - - swap_enable - - if [[ "$RTSP_PASSWORD" = "" ]]; then - RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac) - fi - - /opt/wz_mini/bin/cmd video 0 on - - if [[ "$RTSP_HI_RES_ENABLE_AUDIO" == "true" ]]; then - /opt/wz_mini/bin/cmd audio 0 on - AUDIO_CH="-C 1" - AUDIO_FMT="-a S16_LE" - DEVICE1="$HI_VIDEO_DEV,hw:0,0" - else - DEVICE1="$HI_VIDEO_DEV" - echo "rtsp audio disabled" - fi - -else - echo "rtsp disabled" - -fi - - -if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]; then - - if [ -f /opt/wz_mini/tmp/.T20 ]; then - LOW_VIDEO_DEV="/dev/video7" - else - LOW_VIDEO_DEV="/dev/video2" - fi - - swap_enable - - /opt/wz_mini/bin/cmd video 1 on - - if [[ "$RTSP_PASSWORD" = "" ]]; then - RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac) - fi - - if [[ "$RTSP_LOW_RES_ENABLE_AUDIO" == "true" ]]; then - /opt/wz_mini/bin/cmd audio 1 on - AUDIO_CH="-C 1" - AUDIO_FMT="-a S16_LE" - DEVICE2="$LOW_VIDEO_DEV,hw:2,0" - else - DEVICE2="$LOW_VIDEO_DEV" - echo "rtsp audio disabled" - fi - -else - echo "rtsp disabled" - -fi - -if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]] || [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then - 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 -F0 -U "$RTSP_LOGIN":"$RTSP_PASSWORD" -P "$RTSP_PORT" $DEVICE1 $DEVICE2 & - sleep 1 - echo "Set imp variables via helper" - /opt/wz_mini/usr/bin/imp_helper.sh > /dev/null 2>&1 & -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 - if [[ "$RTMP_STREAM_DISABLE_AUDIO" == "true" ]]; then - RTMP_AUDIO="no_audio" - fi - echo "delay RTMP server" - #Follow the delay from the RTSP server - sleep 5 - /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 - -if [[ "$ENABLE_LOCAL_DNS" == "true" ]]; then - dnsmasq -C /opt/wz_mini/etc/dnsmasq.conf - rm -f /tmp/resolv.conf - cp /opt/wz_mini/etc/resolv.conf /tmp/resolv.conf -fi - -if [[ "$WEB_SERVER_ENABLED" == "true" ]]; then - httpd -p 80 -h /opt/wz_mini/www -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 -sysctl -w kernel.core_pattern='|/bin/false' -dmesg_log -trim_logs -sync;echo 3 > /proc/sys/vm/drop_caches - - -if [ -f "$CUSTOM_SCRIPT_PATH" ]; then - echo "starting custom script" - $CUSTOM_SCRIPT_PATH & -else - echo "no custom script configured in wz_mini.conf" -fi - -echo "searching for custom scripts in /opt/wz_mini/etc/rc.local.d" -if [ -d "${1:-/opt/wz_mini/etc/rc.local.d}" ] ; then - for filename in $(find /opt/wz_mini/etc/rc.local.d/ -name "*.sh" | /opt/wz_mini/bin/busybox sort) ; do - if [ -f "${filename}" ] && [ -x "${filename}" ]; then - echo "running ${filename}" - "${filename}" & - fi - done -fi -echo "finished executing custom scripts from /opt/wz_mini/etc/rc.local.d" - -echo "wz_user.sh done" > /dev/kmsg diff --git a/SD_ROOT/wz_mini/etc/network.d/S01wlanhw b/SD_ROOT/wz_mini/etc/network.d/S01wlanhw new file mode 100644 index 0000000..5e7f16d --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S01wlanhw @@ -0,0 +1,25 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: WLAN HW Init check +# Description: Make sure the WLAN hardware is functional and initialized before proceeding. +### END INIT INFO + +. /opt/wz_mini/etc/rc.common + +case "$1" in + start) + echo "#####$(basename "$0")#####" + + #Wait for wlan hardware to be intitialized in app_init.sh, this must be blocking. + #Lets come up with a solution for some cameras with failed wlan hw, someone on reddit mentioned it" + echo "Waiting for wlan hw init" + + wait_for_wlan $(basename "$0") + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S03ipv6 b/SD_ROOT/wz_mini/etc/network.d/S03ipv6 new file mode 100644 index 0000000..be00483 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S03ipv6 @@ -0,0 +1,25 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Enable/Disable IPv6 +# Description: Enable/Disable IPv6 based on the user configuration +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if ! [[ "$ENABLE_IPV6" == "true" ]]; then + sysctl -w net.ipv6.conf.all.disable_ipv6=1 + echo "ipv6 disabled" + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S04wireguard b/SD_ROOT/wz_mini/etc/network.d/S04wireguard new file mode 100644 index 0000000..db5c3d2 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S04wireguard @@ -0,0 +1,50 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Wireguard support +# Description: Enable Wireguard support +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf +. /opt/wz_mini/etc/rc.common + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$ENABLE_WIREGUARD" == "true" ]]; then + + if [[ "$WIREGUARD_IPV4" != "" ]]; then + + if [ -d /opt/wz_mini/etc/wireguard ]; then + echo "Wireguard dir exists" + else + mkdir -p /opt/wz_mini/etc/wireguard + fi + + if [ ! -f /opt/wz_mini/etc/wireguard/privatekey ]; then + (umask 277 && /opt/wz_mini/bin/wg genkey | /opt/wz_mini/bin/busybox tee /opt/wz_mini/etc/wireguard/privatekey | /opt/wz_mini/bin/wg pubkey > /opt/wz_mini/etc/wireguard/publickey) + fi + + /opt/wz_mini/bin/busybox ip link add dev wg0 type wireguard + /opt/wz_mini/bin/busybox ip address add dev wg0 "$WIREGUARD_IPV4" + /opt/wz_mini/bin/wg set wg0 private-key /opt/wz_mini/etc/wireguard/privatekey + /opt/wz_mini/bin/busybox ip link set wg0 up + fi + + if [[ "$WIREGUARD_PEER_PUBLIC_KEY" != "" ]] && [[ "$WIREGUARD_PEER_ALLOWED_IPS" != "" ]] && [[ "$WIREGUARD_PEER_ENDPOINT" != "" ]] && [[ "$WIREGUARD_PEER_KEEP_ALIVE" != "" ]]; then + /opt/wz_mini/bin/wg set wg0 peer "$WIREGUARD_PEER_PUBLIC_KEY" allowed-ips "$WIREGUARD_PEER_ALLOWED_IPS" endpoint "$WIREGUARD_PEER_ENDPOINT" persistent-keepalive "$WIREGUARD_PEER_KEEP_ALIVE" + /opt/wz_mini/bin/busybox ip route add "$WIREGUARD_PEER_ALLOWED_IPS" dev wg0 + fi + else + echo "Wireguard disabled" + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S08hostname b/SD_ROOT/wz_mini/etc/network.d/S08hostname new file mode 100644 index 0000000..ceee579 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S08hostname @@ -0,0 +1,25 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Set system hostname +# Description: Set system hostname +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + + echo "Set hostname to $CUSTOM_HOSTNAME" + hostname $CUSTOM_HOSTNAME + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S09dnsmasq b/SD_ROOT/wz_mini/etc/network.d/S09dnsmasq new file mode 100644 index 0000000..135a921 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S09dnsmasq @@ -0,0 +1,34 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Start daemon at boot time +# Description: Enable service provided by daemon. +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$ENABLE_LOCAL_DNS" == "true" ]]; then + dnsmasq -C /opt/wz_mini/etc/dnsmasq.conf + rm -f /tmp/resolv.conf + cp /opt/wz_mini/etc/resolv.conf /tmp/resolv.conf + echo "dnsmasq enabled" + fi + ;; + stop) + pkill dnsmasq + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S10httpd b/SD_ROOT/wz_mini/etc/network.d/S10httpd new file mode 100644 index 0000000..e07a0cf --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S10httpd @@ -0,0 +1,32 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Basic Web Server +# Description: If enabled, start the httpd web server +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$WEB_SERVER_ENABLED" == "true" ]]; then + httpd -p 80 -h /opt/wz_mini/www + echo "httpd enabled" + fi + ;; + stop) + pkill dnsmasq + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S12remoteaccessory b/SD_ROOT/wz_mini/etc/network.d/S12remoteaccessory new file mode 100644 index 0000000..e106c53 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S12remoteaccessory @@ -0,0 +1,36 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Remote USB Accessory Support +# Description: If enabled, support remote usb accessories using socat +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +remote() { + wait_for_wlan_ip $(basename "$0") + + echo "#####$(basename "$0")#####" + + if [[ "$REMOTE_SPOTLIGHT" == "true" ]]; then + /opt/wz_mini/bin/socat pty,link=/dev/ttyUSB0,raw tcp:"$REMOTE_SPOTLIGHT_HOST":9000 & + echo "Remote accessory support enabled" + else + echo "Remote accessory support disabled" + fi +} + +case "$1" in + start) + remote & + ;; + stop) + pkill socat + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S14storemac b/SD_ROOT/wz_mini/etc/network.d/S14storemac new file mode 100644 index 0000000..1e0b753 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S14storemac @@ -0,0 +1,29 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: +# Short-Description: Store WLAN HW Address +# Description: Store the WLAN HW Address for use by other scripts +### END INIT INFO + +. /opt/wz_mini/etc/rc.common + +storemac() { + wait_for_wlan_wpa $(basename "$0") + + echo "#####$(basename "$0")#####" + + cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/wlan0_mac + echo "store original mac" +} + +case "$1" in + start) + storemac + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S15v4l2rtspserver b/SD_ROOT/wz_mini/etc/network.d/S15v4l2rtspserver new file mode 100644 index 0000000..aa05d18 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S15v4l2rtspserver @@ -0,0 +1,129 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: +# Short-Description: Start RTSP Server +# Description: Provide RTSP Streaming Video over IP +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +RTSP=/opt/wz_mini/log/v4l2rtspserver +if [[ -e $RTSP.log || -L $RTSP.log ]] ; then + i=0 + while [[ -e $RTSP.log.$i || -L $RTSP.log.$i ]] ; do + let i++ + done + mv $RTSP.log $RTSP.log.$i + RTSP=$RTSP +fi +touch -- "$RTSP".log + + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then + + if [ -f /opt/wz_mini/tmp/.T20 ]; then + HI_VIDEO_DEV="/dev/video6" + else + HI_VIDEO_DEV="/dev/video1" + fi + + if [[ "$RTSP_PASSWORD" = "" ]]; then + RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac) + fi + + echo "Enable video ch 0" + /opt/wz_mini/bin/cmd video 0 on > /dev/null + + if [[ "$RTSP_HI_RES_ENABLE_AUDIO" == "true" ]]; then + echo "Enable audio ch 0" + /opt/wz_mini/bin/cmd audio 0 on > /dev/null + AUDIO_CH="-C 1" + AUDIO_FMT="-a S16_LE" + DEVICE1="$HI_VIDEO_DEV,hw:0,0" + else + DEVICE1="$HI_VIDEO_DEV" + echo "rtsp audio disabled" + fi + + else + echo "rtsp disabled" + + fi + + + if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]; then + + if [ -f /opt/wz_mini/tmp/.T20 ]; then + LOW_VIDEO_DEV="/dev/video7" + else + LOW_VIDEO_DEV="/dev/video2" + fi + + echo "Enable video ch 1" + /opt/wz_mini/bin/cmd video 1 on > /dev/null + + if [[ "$RTSP_PASSWORD" = "" ]]; then + RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac) + fi + + if [[ "$RTSP_LOW_RES_ENABLE_AUDIO" == "true" ]]; then + echo "Enable video ch 1" + /opt/wz_mini/bin/cmd audio 1 on > /dev/null + AUDIO_CH="-C 1" + AUDIO_FMT="-a S16_LE" + DEVICE2="$LOW_VIDEO_DEV,hw:2,0" + else + DEVICE2="$LOW_VIDEO_DEV" + echo "rtsp audio disabled" + fi + + else + echo "rtsp disabled" + + fi + + if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]] || [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then + 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 + + if [[ "$RTSP_AUTH_DISABLE" == "true" ]]; then + echo "Starting RTSP server" + LD_LIBRARY_PATH=/opt/wz_mini/lib LD_PRELOAD=/system/lib/libsetunbuf.so /opt/wz_mini/bin/v4l2rtspserver $AUDIO_CH $AUDIO_FMT -F0 -P "$RTSP_PORT" $DEVICE1 $DEVICE2 > $RTSP.log 2>&1 & + else + echo "Starting RTSP server" + LD_LIBRARY_PATH=/opt/wz_mini/lib LD_PRELOAD=/system/lib/libsetunbuf.so /opt/wz_mini/bin/v4l2rtspserver $AUDIO_CH $AUDIO_FMT -F0 -U "$RTSP_LOGIN":"$RTSP_PASSWORD" -P "$RTSP_PORT" $DEVICE1 $DEVICE2 > $RTSP.log 2>&1 & + fi + + sleep 1 + echo "Set imp variables via helper" + /opt/wz_mini/usr/bin/imp_helper.sh > /dev/null 2>&1 & + fi + + sync;echo 3 > /proc/sys/vm/drop_caches + ;; + stop) + pkill v4l2rtspserver + cmd video 0 off + cmd audio 0 off + cmd video 1 off + cmd audio 1 off + pkill imp_helper.sh + + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/network.d/S16rtmp b/SD_ROOT/wz_mini/etc/network.d/S16rtmp new file mode 100644 index 0000000..585366b --- /dev/null +++ b/SD_ROOT/wz_mini/etc/network.d/S16rtmp @@ -0,0 +1,36 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Start rtsp service +# Description: Enable RTMP Streaming Video +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + echo "#####$(basename "$0")#####" + + 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 + if [[ "$RTMP_STREAM_DISABLE_AUDIO" == "true" ]]; then + RTMP_AUDIO="no_audio" + fi + echo "delay RTMP server" + #Follow the delay from the RTSP server + sleep 5 + /opt/wz_mini/bin/rtmp-stream.sh "$RMTP_STREAM_SERVICE" "$RTMP_AUDIO" & + fi + ;; + stop) + pkill dnsmasq + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.common b/SD_ROOT/wz_mini/etc/rc.common new file mode 100755 index 0000000..9eb97bf --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.common @@ -0,0 +1,81 @@ +#!/bin/sh + +source /opt/wz_mini/wz_mini.conf + +#Set module dir depending on platform +if [ -f /opt/wz_mini/tmp/.T20 ]; then + KMOD_PATH="/opt/wz_mini/lib/modules/3.10.14" +else + KMOD_PATH="/opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__" +fi + +if [[ "$ENABLE_USB_ETH" == "true" ]]; then + ALT_IFACE=eth0 +elif [[ "$ENABLE_USB_DIRECT" == "true" ]] || [[ "$ENABLE_USB_RNDIS" == "true" ]]; then + ALT_IFACE=usb0 +fi + +#Set the correct GPIO for the audio driver (T31 only) +if [ -f /opt/wz_mini/tmp/.HL_PAN2 ]; then + GPIO=7 +elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then + GPIO=63 +fi + +wait_for_wlan() { + while true; do + if ifconfig wlan0 | grep "HWaddr" > /dev/null; then + break + fi + echo "$1: Network HW not ready yet, try again in 5 seconds" + sleep 5 + done +} + +wait_for_wlan_wpa() { + while true; do + if [ -e /tmp/wpa_supplicant.conf ]; then + break + fi + echo "$1: wpa_supplicant not initialized yet, try again in 5 seconds" + sleep 5 + done +} + +wait_for_wlan_ip() { + while true; do + if ifconfig wlan0 | grep "inet addr" > /dev/null; then + break + fi + echo "$1: IP Address not acquired yet, try again in 5 seconds" + sleep 5 + done +} + +wait_for_icamera() { + while ! pgrep -f "/system/bin/iCamera" > /dev/null; do + sleep 5 + done +} + +gateway_supervisor() { + count=0 + while [ true ]; do + if ! ping -c1 -W 2 `/opt/wz_mini/bin/busybox ip route | awk '/default/ { print $3 }'` >& /dev/null; then + echo "$1: Unable to reach default route via USB Direct Link, ifdown usb0..." + count=0 + ifconfig usb0 down + sleep 10 + else + if [[ $count -ne 1 ]] + then + #echo "Connected." + count=1 + sleep 5 + fi + sleep 1 + fi + + done +} + diff --git a/SD_ROOT/wz_mini/etc/rc.d/K01network b/SD_ROOT/wz_mini/etc/rc.d/K01network new file mode 100644 index 0000000..7518fd9 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/K01network @@ -0,0 +1,67 @@ +#!/bin/sh + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +if [ -e /tmp/dbgflag ]; then + echo "debug enabled, network.d disabled." + exit 0 +fi + +wait_for_wlan $(basename "$0") + +for i in /opt/wz_mini/etc/network.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; +esac +done + +wait_for_wlan_ip $(basename "$0") + +for i in /opt/wz_mini/etc/rc.local.d/* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; +esac +done + + +if [ -f "$CUSTOM_SCRIPT_PATH" ]; then + echo "Starting custom script" + $CUSTOM_SCRIPT_PATH & +else + echo "No custom script configured in wz_mini.conf" +fi + +/opt/wz_mini/etc/rc.d/K15logging + +echo "wz_mini done" > /dev/kmsg diff --git a/SD_ROOT/wz_mini/etc/init.d/wz_cam.sh b/SD_ROOT/wz_mini/etc/rc.d/K02webcam old mode 100755 new mode 100644 similarity index 77% rename from SD_ROOT/wz_mini/etc/init.d/wz_cam.sh rename to SD_ROOT/wz_mini/etc/rc.d/K02webcam index 3b8c1c3..9ee667c --- a/SD_ROOT/wz_mini/etc/init.d/wz_cam.sh +++ b/SD_ROOT/wz_mini/etc/rc.d/K02webcam @@ -2,12 +2,12 @@ LOG_NAME=/opt/wz_mini/log/wz_cam if [[ -e $LOG_NAME.log || -L $LOG_NAME.log ]] ; then - i=0 - while [[ -e $LOG_NAME.log.$i || -L $LOG_NAME.log.$i ]] ; do - let i++ - done - mv $LOG_NAME.log $LOG_NAME.log.$i - LOG_NAME=$LOG_NAME + i=0 + while [[ -e $LOG_NAME.log.$i || -L $LOG_NAME.log.$i ]] ; do + let i++ + done + mv $LOG_NAME.log $LOG_NAME.log.$i + LOG_NAME=$LOG_NAME fi touch -- "$LOG_NAME".log exec 1> $LOG_NAME.log 2>&1 @@ -16,21 +16,19 @@ export WZMINI_CFG=/opt/wz_mini/wz_mini.conf [ -f $WZMINI_CFG ] && source $WZMINI_CFG -set -x - echo "welcome to wz_cam.sh" echo "PID $$" - if [ -f /opt/wz_mini/tmp/.T31 ]; then +if [ -f /opt/wz_mini/tmp/.T31 ]; then cp /opt/wz_mini/etc/uvc.config /opt/wz_mini/usr/bin/uvc.config if [[ "WEB_CAM_FPS_RATE" != "" ]]; then - sed -i "s/fps_num :30/fps_num :$WEB_CAM_FPS_RATE/" "/opt/wz_mini/usr/bin/uvc.config" + sed -i "s/fps_num :30/fps_num :$WEB_CAM_FPS_RATE/" "/opt/wz_mini/usr/bin/uvc.config" fi if [[ "WEB_CAM_BIT_RATE" != "" ]]; then - sed -i "s/bitrate :8000/bitrate :$WEB_CAM_BIT_RATE/" "/opt/wz_mini/usr/bin/uvc.config" + sed -i "s/bitrate :8000/bitrate :$WEB_CAM_BIT_RATE/" "/opt/wz_mini/usr/bin/uvc.config" fi echo 1 > /proc/sys/vm/overcommit_memory @@ -49,10 +47,10 @@ echo "PID $$" sleep 1 - #Set dwc2 ID_PIN driver memory + echo "Set dwc2 ID_PIN driver memory" devmem 0x13500000 32 0x001100cc devmem 0x10000040 32 0x0b000096 - #wipe the bits to set the ID_PIN + echo "Wipe dwc2 memory bits to set the ID_PIN" devmem 0x10000040 32 0x0b000FFF sleep 1 @@ -71,11 +69,11 @@ else cp /opt/wz_mini/etc/uvc_v2.config /opt/wz_mini/usr/bin/uvc.config if [[ "WEB_CAM_FPS_RATE" != "" ]]; then - sed -i "s/fps_num :30/fps_num :$WEB_CAM_FPS_RATE/" "/opt/wz_mini/usr/bin/uvc.config" + sed -i "s/fps_num :30/fps_num :$WEB_CAM_FPS_RATE/" "/opt/wz_mini/usr/bin/uvc.config" fi if [[ "WEB_CAM_BIT_RATE" != "" ]]; then - sed -i "s/bitrate :8000/bitrate :$WEB_CAM_BIT_RATE/" "/opt/wz_mini/usr/bin/uvc.config" + sed -i "s/bitrate :8000/bitrate :$WEB_CAM_BIT_RATE/" "/opt/wz_mini/usr/bin/uvc.config" fi mount --bind /opt/wz_mini/usr/bin /system/bin diff --git a/SD_ROOT/wz_mini/etc/rc.d/K03rcd b/SD_ROOT/wz_mini/etc/rc.d/K03rcd new file mode 100644 index 0000000..dd1b293 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/K03rcd @@ -0,0 +1,27 @@ +#!/bin/sh + +if [ -e /tmp/dbgflag ]; then + echo "debug enabled, rc.d disabled." + exit 0 +fi + +for i in /opt/wz_mini/etc/rc.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; +esac +done diff --git a/SD_ROOT/wz_mini/etc/rc.d/K15logging b/SD_ROOT/wz_mini/etc/rc.d/K15logging new file mode 100644 index 0000000..544e8fc --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/K15logging @@ -0,0 +1,23 @@ +#!/bin/sh + +source /opt/wz_mini/wz_mini.conf + +echo "Store dmesg logs" + +DMESG_LOG=/opt/wz_mini/log/dmesg +if [[ -e $DMESG_LOG.log || -L $DMESG_LOG.log ]] ; then + i=0 + while [[ -e $DMESG_LOG.log.$i || -L $DMESG_LOG.log.$i ]] ; do + let i++ + done + mv $DMESG_LOG.log $DMESG_LOG.log.$i + DMESG_LOG=$DMESG_LOG +fi +touch -- "$DMESG_LOG".log +dmesg > $DMESG_LOG.log 2>&1 + +echo "Deleting logs older than 5 boots..." + +find /opt/wz_mini/log -name '*log*' | while read file; do +[ "${file#/opt/wz_mini/log/*log.}" -gt 5 ] && rm -v "$file" +done diff --git a/SD_ROOT/wz_mini/etc/rc.d/S01swap b/SD_ROOT/wz_mini/etc/rc.d/S01swap new file mode 100644 index 0000000..6662633 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S01swap @@ -0,0 +1,45 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Extract Swap archive +# Description: Enable required swap file for system. System will crash without it. +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf +. /opt/wz_mini/etc/rc.common + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + + if [ -e /opt/wz_mini/swap.gz ]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/wz_mini/usr/share/audio/swap_v2.wav $AUDIO_PROMPT_VOLUME + else + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0 + /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/swap.wav $AUDIO_PROMPT_VOLUME + rmmod audio + fi + echo "Swap archive present, extracting" + gzip -d /opt/wz_mini/swap.gz + mkswap /opt/wz_mini/swap + sync;echo 3 > /proc/sys/vm/drop_caches + else + echo "Swap archive missing, not extracting" + fi + + if [[ "$ENABLE_SWAP" == "true" ]] && [[ -e /opt/wz_mini/swap ]]; then + echo "Swap file found, enable" + /opt/wz_mini/bin/busybox swapon /opt/wz_mini/swap + else + echo "Swap file missing" + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S03ethernet b/SD_ROOT/wz_mini/etc/rc.d/S03ethernet new file mode 100644 index 0000000..e985eea --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S03ethernet @@ -0,0 +1,71 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: USB Ethernet Support +# Description: Enable USB Ethernet adapter support and kernel module +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + + if [[ "$ENABLE_USB_ETH" == "true" ]]; then + + insmod $KMOD_PATH/kernel/drivers/net/usb/usbnet.ko + + echo "Auto-Detect an Ethernet Driver and load it" + if [[ "$ENABLE_USB_ETH_MODULE_AUTODETECT" == "true" ]]; then + for DEVICE in `lsusb | awk '{print $6}'| tr '[:upper:]' '[:lower:]'`; do + case $DEVICE in + '077b:2226' | '0846:1040' | '2001:1a00' | '0b95:1720' | '07b8:420a' |\ + '08dd:90ff' | '0557:2009' | '0411:003d' | '0411:006e' | '6189:182d' |\ + '0df6:0056' | '07aa:0017' | '1189:0893' | '1631:6200' | '04f1:3008' |\ + '17ef:7203' | '0b95:772b' | '0b95:7720' | '0b95:1780' | '0789:0160' |\ + '13b1:0018' | '1557:7720' | '07d1:3c05' | '2001:3c05' | '2001:1a02' |\ + '1737:0039' | '04bb:0930' | '050d:5055' | '05ac:1402' | '0b95:772a' |\ + '14ea:ab11' | '0db0:a877' | '0b95:7e2b' | '0b95:172a' | '066b:20f9') + echo "Loading ASIX Ethernet driver..." + modprobe asix + ;; + '0b95:1790' | '0b95:178a' | '0df6:0072') + echo "Loading AX88179 Gigabit Ethernet driver..." + modprobe ax88179_178a + ;; + '1004:61aa' | '046d:c11f' | '1410:b001' | '1410:9010' | '413c:8195' |\ + '413c:8196' | '413c:819b' | '16d5:650a' | '12d1:14ac') + echo "Loading USB CDC Ethernet driver..." + modprobe cdc_ether + ;; + '0bda:8152') + echo "Loading Realtek RTL8152 driver..." + modprobe r8152 + ;; + esac + done + fi + + echo "Manually load any other Ethernet Drivers if asked for" + if [[ "$ENABLE_USB_ETH_MODULE_MANUAL" != "" ]]; then + for i in $(echo "$ENABLE_USB_ETH_MODULE_MANUAL" | tr "," "\n") + do + insmod $KMOD_PATH/kernel/drivers/net/usb/$i.ko + done + fi + + cat /sys/class/net/eth0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/eth0_mac + + else + echo "USB Ethernet disabled" + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S04usbdirect b/SD_ROOT/wz_mini/etc/rc.d/S04usbdirect new file mode 100644 index 0000000..f542217 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S04usbdirect @@ -0,0 +1,54 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: USB Direct Networking +# Description: Enable USB Direct Networking kernel modules and support +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$ENABLE_USB_DIRECT" == "true" ]]; then + + HOST_MACADDR=$(echo "$CUSTOM_HOSTNAME"|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/') + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo connect > /sys/devices/platform/jz-dwc2/dwc2/udc/dwc2/soft_connect + sleep 1 + devmem 0x10000040 32 0x0b800096 + sleep 1 + devmem 0x13500000 32 0x001100cc + else + echo "Set dwc2 ID_PIN driver memory" + devmem 0x13500000 32 0x001100cc + devmem 0x10000040 32 0x0b000096 + echo "wipe dwc2 memory bits to set the ID_PIN, only for the V3" + devmem 0x10000040 32 0x0b000FFF + fi + + insmod $KMOD_PATH/kernel/drivers/usb/gadget/libcomposite.ko + + if [ -f /opt/wz_mini/tmp/.T31 ]; then + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/usb/gadget/u_ether.ko + insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/usb/gadget/usb_f_ncm.ko + fi + + insmod $KMOD_PATH/kernel/drivers/usb/gadget/g_ncm.ko iManufacturer=wz_mini_ncm host_addr="$HOST_MACADDR" dev_addr="$USB_DIRECT_MAC_ADDR" + + echo "USB Direct enabled" + + else + echo "USB Direct disabled" + + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S05rndis b/SD_ROOT/wz_mini/etc/rc.d/S05rndis new file mode 100644 index 0000000..09fc0e7 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S05rndis @@ -0,0 +1,35 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: USB RNDIS Tethering Support +# Description: Enable USB RNDIS Tethering kernel modules and support +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + if [[ "$ENABLE_USB_RNDIS" == "true" ]]; then + if [[ "$ENABLE_USB_ETH" == "true" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]]; then + echo "RNDIS is not compatible with ENABLE_USB_ETH or ENABLE_USB_DIRECT. Please enable only ENABLE_USB_RNDIS" + else + + insmod $KMOD_PATH/kernel/drivers/net/usb/usbnet.ko + insmod $KMOD_PATH/kernel/drivers/net/usb/cdc_ether.ko + insmod $KMOD_PATH/kernel/drivers/net/usb/rndis_host.ko + + fi + + echo "USB RNDIS enabled" + else + echo "USB RNDIS disabled" + + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac diff --git a/SD_ROOT/wz_mini/etc/rc.d/S06networkalt b/SD_ROOT/wz_mini/etc/rc.d/S06networkalt new file mode 100644 index 0000000..5c28d2c --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S06networkalt @@ -0,0 +1,51 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Configure alternate networking +# Description: Configure networking that is not onboard WLAN +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +alternate_iface() { + + if [[ "$ENABLE_USB_ETH" == "true" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]] || [[ "$ENABLE_USB_RNDIS" == "true" ]]; then + wait_for_wlan_wpa $(basename "$0") + + echo "#####$(basename "$0")#####" + + echo "Renaming interfaces" + ifconfig $ALT_IFACE 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 $ALT_IFACE name wlan0 + + 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 + + else + echo "No alternate iface enabled" + fi + +} + +case "$1" in + start) + + if ! [[ "$BONDING_ENABLED" == "true" ]]; then + alternate_iface & + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S07bonding b/SD_ROOT/wz_mini/etc/rc.d/S07bonding new file mode 100644 index 0000000..679abe4 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S07bonding @@ -0,0 +1,98 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Network bonding support +# Description: Enable bonding support as configured by user +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +bonding_setup() { + + echo "#####$(basename "$0")#####" + + echo "waiting until wlan0 is up with the modified HWaddr" + wait_for_wlan_wpa $(basename "$0") + + ##Fool iCamera by renaming the hardline interface to wlan0 + + ## $1 Bonding Interface, $2 Primary Interface, $3 Secondary Interface + echo "renaming interfaces" + + #Prevent iCamera from cycling the wlan0 interface + mount --bind /opt/wz_mini/usr/bin/restart_wlan0.sh /system/bin/restart_wlan0.sh + + # Bring all interfaces down + ifconfig bond0 down + ifconfig $BONDING_PRIMARY_INTERFACE down + ifconfig $BONDING_SECONDARY_INTERFACE down + + # Have to bring bonding interface up to be able to bond our slaves. + /opt/wz_mini/bin/busybox ip link set bond0 up + + # Rename the real wlan0 interface if needed/used + if [[ "$BONDING_PRIMARY_INTERFACE" == "wlan0" ]]; then + /opt/wz_mini/bin/busybox ip link set $BONDING_PRIMARY_INTERFACE name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold + BONDING_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 "$BONDING_PRIMARY_INTERFACE" > /sys/devices/virtual/net/bond0/bonding/primary + fi + if [[ "$BONDING_SECONDARY_INTERFACE" == "wlan0" ]]; then + /opt/wz_mini/bin/busybox ip link set $BONDING_SECONDARY_INTERFACE name wlanold + /opt/wz_mini/bin/busybox ip addr flush dev wlanold + BONDING_SECONDARY_INTERFACE="wlanold" + fi + + # Enslave the Ethernet and Original Wifi interfaces + # under the bonding interface. + /opt/wz_mini/tmp/.bin/ifenslave bond0 $BONDING_PRIMARY_INTERFACE $BONDING_SECONDARY_INTERFACE + + # Have to bring bonding interface down to be rename the interface + /opt/wz_mini/bin/busybox ip link set bond0 down + + # Name the bonding interface to be the "new" wlan0 interface + /opt/wz_mini/bin/busybox ip link set bond0 name wlan0 + + # Bring the newly renamed wlan0 (actually the bond interface) back up in the next step + + #Run the 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" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]]); then + echo "Restarting wpa_supplicant due to bonding" + /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 + + echo "Run network monitor for USB Direct" + /opt/wz_mini/usr/bin/netmon.sh & + +} + + +case "$1" in + start) + if [[ "$BONDING_ENABLED" == "true" ]] && ([[ "$ENABLE_USB_ETH" == "true" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]]); then + bonding_setup & + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S09coredump b/SD_ROOT/wz_mini/etc/rc.d/S09coredump new file mode 100644 index 0000000..28f967a --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S09coredump @@ -0,0 +1,31 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Disable coredump +# Description: Disable dumpload and disable kernel coredump support +### END INIT INFO + +. /opt/wz_mini/etc/rc.common + +core() { + wait_for_wlan_wpa $(basename "$0") + + echo "#####$(basename "$0")#####" + + echo "Killing dumpload" + /opt/wz_mini/bin/busybox pkill -f dumpload + + echo "Setting kernel core pattern" + sysctl -w kernel.core_pattern='|/bin/false' > /dev/null +} + +case "$1" in + start) + core & + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S10firmware b/SD_ROOT/wz_mini/etc/rc.d/S10firmware new file mode 100644 index 0000000..1625734 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S10firmware @@ -0,0 +1,34 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: FW Upgrade Intercept +# Description: Intercept FW Upgrades from vendor +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + echo "#####$(basename "$0")#####" + + if [[ "$DISABLE_FW_UPGRADE" == "true" ]]; then + mkdir /tmp/Upgrade + mount -t tmpfs -o size=1,nr_inodes=1 none /tmp/Upgrade + #Setting this host causes iCamera to segfault, lets ignore it for now + #echo -e "127.0.0.1 localhost \n127.0.0.1 wyze-upgrade-service.wyzecam.com" > /opt/wz_mini/tmp/.storage/hosts + #mount --bind /opt/wz_mini/tmp/.storage/hosts /etc/hosts + /opt/wz_mini/bin/busybox inotifyd /opt/wz_mini/usr/bin/watch_up.sh /tmp:n > /dev/null 2>&1 & + echo "Firmware updates disabled" + else + echo "Firmwware updates enabled, monitor script running" + mkdir /tmp/Upgrade + /opt/wz_mini/bin/busybox inotifyd /opt/wz_mini/usr/bin/watch_up.sh /tmp:n > /dev/null 2>&1 & + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S13mp4write b/SD_ROOT/wz_mini/etc/rc.d/S13mp4write new file mode 100644 index 0000000..9bfb081 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S13mp4write @@ -0,0 +1,38 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: MP4WRITE Support +# Description: Prevent system trashing with mp4write support provided by libcallback, temporary video files are written direct to media instead of /tmp +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +mp4write() { + + wait_for_icamera + + echo "#####$(basename "$0")#####" + + if [[ "$ENABLE_MP4_WRITE" == "true" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "mp4_write is not supported on T20" + else + /opt/wz_mini/bin/cmd mp4write on > /dev/null + echo "mp4_write enabled" + fi + else + echo "mp4_write disabled" + fi +} + +case "$1" in + start) + mp4write & + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S14nightdrop b/SD_ROOT/wz_mini/etc/rc.d/S14nightdrop new file mode 100644 index 0000000..be2d29b --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S14nightdrop @@ -0,0 +1,25 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Enable NightDrop support +# Description: Prevent the system from dropping FPS during night mode +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + if [[ "$NIGHT_DROP_DISABLE" == "true" ]]; then + echo "Night Drop Disable, Enabled" + touch /opt/wz_mini/tmp/.nd + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S17motor b/SD_ROOT/wz_mini/etc/rc.d/S17motor new file mode 100644 index 0000000..b02271d --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S17motor @@ -0,0 +1,27 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Disable Motor +# Description: Disable Motor on specified devices +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + echo "#####$(basename "$0")#####" + + if [[ "$DISABLE_MOTOR" == "true" ]]; then + echo "Motor Disabled" + touch /opt/wz_mini/tmp/.ms + else + echo "Motor enabled" + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S18fps b/SD_ROOT/wz_mini/etc/rc.d/S18fps new file mode 100644 index 0000000..a39c09c --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S18fps @@ -0,0 +1,39 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Set system FPS +# Description: Set system FPS if greater than factory defaults +### END INIT INFO + +. /opt/wz_mini/wz_mini.conf + +case "$1" in + start) + + echo "#####$(basename "$0")#####" + + echo "Seting system FPS if greater than default" + + if [ $RTSP_HI_RES_FPS -gt 20 ]; then + if cat /configs/.user_config | grep fps; then + sed -i "s/fps.*/fps\=$RTSP_HI_RES_FPS/" /configs/.user_config + else + sed -i "/\[SETTING\].*/a fps=$RTSP_HI_RES_FPS" /configs/.user_config + fi + + elif [ $RTSP_LOW_RES_FPS -gt 20 ]; then + if cat /configs/.user_config | grep fps; then + sed -i "s/fps.*/fps\=$RTSP_LOW_RES_FPS/" /configs/.user_config + else + sed -i "/\[SETTING\].*/a fps=$RTSP_LOW_RES_FPS" /configs/.user_config + fi + + fi + + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S20cron b/SD_ROOT/wz_mini/etc/rc.d/S20cron new file mode 100644 index 0000000..0284a26 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S20cron @@ -0,0 +1,31 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Start cron daemon +# Description: Enable cron service +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +autostart_crond() { + wait_for_wlan_ip $(basename "$0") + + echo "#####$(basename "$0")#####" + + /opt/wz_mini/tmp/.bin/crond -b -c /opt/wz_mini/etc/cron/ +} + + +case "$1" in + start) + if [[ "$ENABLE_CRONTAB" == "true" ]]; then + autostart_crond & + fi + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.d/S21syslog b/SD_ROOT/wz_mini/etc/rc.d/S21syslog new file mode 100644 index 0000000..fc16b70 --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.d/S21syslog @@ -0,0 +1,43 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Short-Description: Store syslogs +# Description: Enable storing of syslogs to media +### END INIT INFO + +. /opt/wz_mini/etc/rc.common +. /opt/wz_mini/wz_mini.conf + +syslog_save() { + wait_for_icamera + + echo "#####$(basename "$0")#####" + + if [[ "$ENABLE_SYSLOG_SAVE" == "true" ]]; then + echo "Store syslog logs" + + SYSLOG_LOG=/opt/wz_mini/log/syslog + if [[ -e $SYSLOG_LOG.log || -L $SYSLOG_LOG.log ]] ; then + i=0 + while [[ -e $SYSLOG_LOG.log.$i || -L $SYSLOG_LOG.log.$i ]] ; do + let i++ + done + mv $SYSLOG_LOG.log $SYSLOG_LOG.log.$i + SYSLOG_LOG=$SYSLOG_LOG + fi + touch -- "$SYSLOG_LOG".log + logread -F > $SYSLOG_LOG.log & + fi + +} + +case "$1" in + start) + syslog_save & + ;; + *) + echo "Usage: $0 {start}" + exit 1 + ;; +esac + diff --git a/SD_ROOT/wz_mini/etc/rc.local b/SD_ROOT/wz_mini/etc/rc.local new file mode 100644 index 0000000..77abb3d --- /dev/null +++ b/SD_ROOT/wz_mini/etc/rc.local @@ -0,0 +1,5 @@ +#!/bin/sh + +#This file executes last, after rc.local.d/ + + diff --git a/SD_ROOT/wz_mini/etc/wz_mini.conf.dist b/SD_ROOT/wz_mini/etc/wz_mini.conf.dist index c9916b4..6444b3e 100644 --- a/SD_ROOT/wz_mini/etc/wz_mini.conf.dist +++ b/SD_ROOT/wz_mini/etc/wz_mini.conf.dist @@ -68,6 +68,8 @@ RTSP_LOW_RES_MAX_BITRATE="" RTSP_LOW_RES_TARGET_BITRATE="" RTSP_LOW_RES_ENC_PARAMETER="" +RTSP_AUTH_DISABLE="false" + #####RTMP STREAMING##### #### REQUIRES RTSP #### ### AND RTSP AUDIO ### @@ -93,12 +95,14 @@ DISABLE_MOTOR="false" ENABLE_FSCK_ON_BOOT="false" ENABLE_CAR_DRIVER="false" ENABLE_LOCAL_DNS="false" +ENABLE_CRONTAB="false" #####DEBUG##### #drops you to a shell via serial, doesn't load app_init.sh DEBUG_ENABLED="false" DEBUG_INITRAMFS_ENABLED="false" DEBUG_PASSWORD="false" +ENABLE_SYSLOG_SAVE="false" ####WEB#### WEB_SERVER_ENABLED="false" diff --git a/SD_ROOT/wz_mini/usr/bin/app.ver b/SD_ROOT/wz_mini/usr/bin/app.ver index 2f2d4e4..6306afd 100644 --- a/SD_ROOT/wz_mini/usr/bin/app.ver +++ b/SD_ROOT/wz_mini/usr/bin/app.ver @@ -1 +1 @@ -Wed Aug 3 07:53:41 PM PDT 2022 +Sun Aug 7 06:32:44 PM PDT 2022 \ No newline at end of file diff --git a/SD_ROOT/wz_mini/usr/bin/imp_helper.sh b/SD_ROOT/wz_mini/usr/bin/imp_helper.sh index 12760b3..d2a8492 100755 --- a/SD_ROOT/wz_mini/usr/bin/imp_helper.sh +++ b/SD_ROOT/wz_mini/usr/bin/imp_helper.sh @@ -9,146 +9,146 @@ export WZMINI_CFG=/opt/wz_mini/wz_mini.conf [ -f $WZMINI_CFG ] && source $WZMINI_CFG DELAY_BETWEEN=2 -RE_RUN_DELAY=45 +RE_RUN_DELAY=60 PARM=1 hi_res_monitor() { -if [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then + if [[ "$RTSP_HI_RES_ENABLED" == "true" ]]; then - if [[ "$RTSP_HI_RES_ENC_PARAMETER" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - if [[ $RTSP_HI_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then - /system/bin/impdbg --enc_rc_s 0:0:4:$RTSP_HI_RES_ENC_PARAMETER - sleep $DELAY_BETWEEN - PARM=$((PARM+1)) - else - echo "Invalid encoder value" - fi - else - if [[ $RTSP_HI_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then - /system/bin/impdbg --enc_rc_s 0:44:4:$RTSP_HI_RES_ENC_PARAMETER - sleep $DELAY_BETWEEN - PARM=$((PARM+1)) - else - echo "Invalid encoder value" - fi - fi - fi + if [[ "$RTSP_HI_RES_ENC_PARAMETER" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + if [[ $RTSP_HI_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then + /system/bin/impdbg --enc_rc_s 0:0:4:$RTSP_HI_RES_ENC_PARAMETER + sleep $DELAY_BETWEEN + PARM=$((PARM+1)) + else + echo "Invalid encoder value" + fi + else + if [[ $RTSP_HI_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then + /system/bin/impdbg --enc_rc_s 0:44:4:$RTSP_HI_RES_ENC_PARAMETER + sleep $DELAY_BETWEEN + PARM=$((PARM+1)) + else + echo "Invalid encoder value" + fi + fi + fi - if [[ "$RTSP_HI_RES_MAX_BITRATE" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - /system/bin/impdbg --enc_rc_s 0:28:4:$RTSP_HI_RES_MAX_BITRATE + if [[ "$RTSP_HI_RES_MAX_BITRATE" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + /system/bin/impdbg --enc_rc_s 0:28:4:$RTSP_HI_RES_MAX_BITRATE sleep $DELAY_BETWEEN PARM=$((PARM+1)) - else - /system/bin/impdbg --enc_rc_s 0:52:4:$RTSP_HI_RES_MAX_BITRATE + else + /system/bin/impdbg --enc_rc_s 0:52:4:$RTSP_HI_RES_MAX_BITRATE sleep $DELAY_BETWEEN PARM=$((PARM+1)) - fi - fi + fi + fi - if [[ "$RTSP_HI_RES_TARGET_BITRATE" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "not supported on T20" - else - /system/bin/impdbg --enc_rc_s 0:48:4:$RTSP_HI_RES_TARGET_BITRATE + if [[ "$RTSP_HI_RES_TARGET_BITRATE" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "not supported on T20" + else + /system/bin/impdbg --enc_rc_s 0:48:4:$RTSP_HI_RES_TARGET_BITRATE sleep $DELAY_BETWEEN PARM=$((PARM+1)) - fi - fi + fi + fi - if [[ "$RTSP_HI_RES_FPS" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - /system/bin/impdbg --enc_rc_s 0:8:4:$RTSP_HI_RES_FPS + if [[ "$RTSP_HI_RES_FPS" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + /system/bin/impdbg --enc_rc_s 0:8:4:$RTSP_HI_RES_FPS sleep $DELAY_BETWEEN PARM=$((PARM+1)) - else - /system/bin/impdbg --enc_rc_s 0:80:4:$RTSP_HI_RES_FPS + else + /system/bin/impdbg --enc_rc_s 0:80:4:$RTSP_HI_RES_FPS sleep $DELAY_BETWEEN PARM=$((PARM+1)) - fi - fi + fi + fi - if [ $PARM == 1 ]; then - echo "No Hi-Res imp variables enabled, check Low-Res" + if [ $PARM == 1 ]; then + echo "No Hi-Res imp variables enabled, check Low-Res" + fi + + low_res_monitor + else + echo "Hi-Res RTSP not enabled" + low_res_monitor fi - - low_res_monitor -else - echo "Hi-Res RTSP not enabled" - low_res_monitor -fi } low_res_monitor () { -if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]; then + if [[ "$RTSP_LOW_RES_ENABLED" == "true" ]]; then - if [[ "$RTSP_LOW_RES_ENC_PARAMETER" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - if [[ $RTSP_LOW_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then - /system/bin/impdbg --enc_rc_s 1:0:4:$RTSP_LOW_RES_ENC_PARAMETER - sleep $DELAY_BETWEEN - PARM=$((PARM+1)) - else - echo "Invalid encoder value" - fi - else - if [[ $RTSP_LOW_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then - /system/bin/impdbg --enc_rc_s 1:44:4:$RTSP_LOW_RES_ENC_PARAMETER - sleep $DELAY_BETWEEN - PARM=$((PARM+1)) - else - echo "Invalid encoder value" - fi - fi - fi + if [[ "$RTSP_LOW_RES_ENC_PARAMETER" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + if [[ $RTSP_LOW_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then + /system/bin/impdbg --enc_rc_s 1:0:4:$RTSP_LOW_RES_ENC_PARAMETER + sleep $DELAY_BETWEEN + PARM=$((PARM+1)) + else + echo "Invalid encoder value" + fi + else + if [[ $RTSP_LOW_RES_ENC_PARAMETER =~ "^[0|1|2|4|8]$" ]]; then + /system/bin/impdbg --enc_rc_s 1:44:4:$RTSP_LOW_RES_ENC_PARAMETER + sleep $DELAY_BETWEEN + PARM=$((PARM+1)) + else + echo "Invalid encoder value" + fi + fi + fi - if [[ "$RTSP_LOW_RES_MAX_BITRATE" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - /system/bin/impdbg --enc_rc_s 1:28:4:$RTSP_LOW_RES_MAX_BITRATE + if [[ "$RTSP_LOW_RES_MAX_BITRATE" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + /system/bin/impdbg --enc_rc_s 1:28:4:$RTSP_LOW_RES_MAX_BITRATE sleep $DELAY_BETWEEN PARM=$((PARM+1)) - else - /system/bin/impdbg --enc_rc_s 1:52:4:$RTSP_LOW_RES_MAX_BITRATE + else + /system/bin/impdbg --enc_rc_s 1:52:4:$RTSP_LOW_RES_MAX_BITRATE sleep $DELAY_BETWEEN PARM=$((PARM+1)) - fi - fi + fi + fi - if [[ "$RTSP_LOW_RES_TARGET_BITRATE" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - echo "not supported on T20" - else - /system/bin/impdbg --enc_rc_s 1:48:4:$RTSP_LOW_RES_TARGET_BITRATE + if [[ "$RTSP_LOW_RES_TARGET_BITRATE" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + echo "not supported on T20" + else + /system/bin/impdbg --enc_rc_s 1:48:4:$RTSP_LOW_RES_TARGET_BITRATE sleep $DELAY_BETWEEN PARM=$((PARM+1)) - fi - fi + fi + fi - if [[ "$RTSP_LOW_RES_FPS" != "" ]]; then - if [ -f /opt/wz_mini/tmp/.T20 ]; then - /system/bin/impdbg --enc_rc_s 1:8:4:$RTSP_LOW_RES_FPS + if [[ "$RTSP_LOW_RES_FPS" != "" ]]; then + if [ -f /opt/wz_mini/tmp/.T20 ]; then + /system/bin/impdbg --enc_rc_s 1:8:4:$RTSP_LOW_RES_FPS sleep $DELAY_BETWEEN PARM=$((PARM+1)) - else - /system/bin/impdbg --enc_rc_s 1:80:4:$RTSP_LOW_RES_FPS + else + /system/bin/impdbg --enc_rc_s 1:80:4:$RTSP_LOW_RES_FPS sleep $DELAY_BETWEEN PARM=$((PARM+1)) - fi - fi + fi + fi - if [ $PARM == 1 ]; then - echo "No Low-Res imp variables enabled, exit" - break - fi -else - echo "Low-Res RTSP not enabled" - if [[ "$RTSP_HI_RES_ENABLED" == "true" ]] && [ $PARM -gt 1 ]; then - hi_res_monitor + if [ $PARM == 1 ]; then + echo "No Low-Res imp variables enabled, exit" + break + fi else - break + echo "Low-Res RTSP not enabled" + if [[ "$RTSP_HI_RES_ENABLED" == "true" ]] && [ $PARM -gt 1 ]; then + hi_res_monitor + else + break + fi fi -fi } while true; do diff --git a/SD_ROOT/wz_mini/usr/bin/netmon.sh b/SD_ROOT/wz_mini/usr/bin/netmon.sh new file mode 100644 index 0000000..883cd7a --- /dev/null +++ b/SD_ROOT/wz_mini/usr/bin/netmon.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +. /opt/wz_mini/wz_mini.conf +. /opt/wz_mini/etc/rc.common + +if [[ "$ENABLE_USB_DIRECT" == "true" ]]; then + wait_for_wlan_ip $(basename "$0") + sleep 5 + gateway_supervisor $(basename "$0") & +fi + +echo "kill udhcpc extra" +kill $(pgrep -f 'udhcpc -i wlan0 -H WyzeCam') + diff --git a/SD_ROOT/wz_mini/usr/bin/restart_wlan0.sh b/SD_ROOT/wz_mini/usr/bin/restart_wlan0.sh new file mode 100644 index 0000000..67cc543 --- /dev/null +++ b/SD_ROOT/wz_mini/usr/bin/restart_wlan0.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "up" diff --git a/SD_ROOT/wz_mini/wz_mini.conf b/SD_ROOT/wz_mini/wz_mini.conf index c9916b4..6444b3e 100644 --- a/SD_ROOT/wz_mini/wz_mini.conf +++ b/SD_ROOT/wz_mini/wz_mini.conf @@ -68,6 +68,8 @@ RTSP_LOW_RES_MAX_BITRATE="" RTSP_LOW_RES_TARGET_BITRATE="" RTSP_LOW_RES_ENC_PARAMETER="" +RTSP_AUTH_DISABLE="false" + #####RTMP STREAMING##### #### REQUIRES RTSP #### ### AND RTSP AUDIO ### @@ -93,12 +95,14 @@ DISABLE_MOTOR="false" ENABLE_FSCK_ON_BOOT="false" ENABLE_CAR_DRIVER="false" ENABLE_LOCAL_DNS="false" +ENABLE_CRONTAB="false" #####DEBUG##### #drops you to a shell via serial, doesn't load app_init.sh DEBUG_ENABLED="false" DEBUG_INITRAMFS_ENABLED="false" DEBUG_PASSWORD="false" +ENABLE_SYSLOG_SAVE="false" ####WEB#### WEB_SERVER_ENABLED="false" diff --git a/file.chk b/file.chk index 8db59c5..5fdd2ca 100644 --- a/file.chk +++ b/file.chk @@ -21,21 +21,63 @@ e344ffc55222c029c5d324037a5aa1f3 SD_ROOT/wz_mini/www/car/car.js 540acfdf2638c341e1d168f1af5203de SD_ROOT/wz_mini/www/car/car.css 63b23f78d6703f0c9a2e970604104996 SD_ROOT/wz_mini/www/car/car.html bd11d9a8352eca6a16554c87be50b2f5 SD_ROOT/wz_mini/www/index.html +ad5cdda7609e706adb152c0c05e4133e SD_ROOT/wz_mini/etc/network.d/S16rtmp +a09fe94aa6f18319db58947a1f252c3f SD_ROOT/wz_mini/etc/network.d/S09dnsmasq +b77697b15e4d6e32e6e2c8c07cbceee2 SD_ROOT/wz_mini/etc/network.d/S04wireguard +8951687f507171ad88e79ad29aba4388 SD_ROOT/wz_mini/etc/network.d/S12remoteaccessory +5a3469d5e53cac8d59a0fb2feffaa9e3 SD_ROOT/wz_mini/etc/network.d/S15v4l2rtspserver +d3ac671f88b6d639926b9f5f9a40da6e SD_ROOT/wz_mini/etc/network.d/S01wlanhw +6621e94ec289678afff70a2b51b42f77 SD_ROOT/wz_mini/etc/network.d/S10httpd +9969970dc82daa31b41730ee460514b0 SD_ROOT/wz_mini/etc/network.d/S03ipv6 +edebe65d895650235f05291618814ebe SD_ROOT/wz_mini/etc/network.d/S08hostname +9f59e3c2c3a4c9b6600eb5385e29720c SD_ROOT/wz_mini/etc/network.d/S14storemac 32373fa3531a11c1aad41d12830b9c04 SD_ROOT/wz_mini/etc/dnsmasq.conf 34c6a4c3a941ff2becd9f487826d7692 SD_ROOT/wz_mini/etc/uvc.config -ad7d1a2f9db3079617731b5854ce3b6a SD_ROOT/wz_mini/etc/init.d/wz_cam.sh -f97ffcb1482d564bf2557684a4c68846 SD_ROOT/wz_mini/etc/init.d/wz_init.sh -4a423cfe7bd91090480da83b85a248b9 SD_ROOT/wz_mini/etc/init.d/wz_user.sh -4eaf541a47e60035992435b115463541 SD_ROOT/wz_mini/etc/init.d/wz_post.sh +071acd61334923a9a3e5b799e012697e SD_ROOT/wz_mini/etc/init.d/S09firstboot +d59a0e8db7cec700c7ce4e7b2882e25e SD_ROOT/wz_mini/etc/init.d/S11configbackup +1b4037ffff5b86b31939ef20f2ec2a2c SD_ROOT/wz_mini/etc/init.d/S10kmod +0e868d15fb8b09915975bab48f5a78f2 SD_ROOT/wz_mini/etc/init.d/S06car +5e27d90e6888f9665da2fb442ebd500c SD_ROOT/wz_mini/etc/init.d/S08passwd +8d9b5da920bf9c739517de3843631334 SD_ROOT/wz_mini/etc/init.d/S12ssh +b947e5bcb9cccaaf7d970f03732fab67 SD_ROOT/wz_mini/etc/init.d/S05mount +0113d8e9beb7d393c61959889193ba0e SD_ROOT/wz_mini/etc/init.d/S01bind +74f398e735e66f91bb5ff1ea42c3760d SD_ROOT/wz_mini/etc/init.d/S03busybox +a27d4a0dd6582ae51db92c35cf396ac3 SD_ROOT/wz_mini/etc/init.d/wz_init.sh +93ac3cc23a532f73921244aa61b62362 SD_ROOT/wz_mini/etc/init.d/S16factorycheck +c457995a14d408c18bf03c6b0d613b58 SD_ROOT/wz_mini/etc/init.d/S04model +df3911f5443239982e184af022a15815 SD_ROOT/wz_mini/etc/init.d/S14terminfo +9427dddfbba0d1f3931ee8fcb1f22347 SD_ROOT/wz_mini/etc/init.d/S07inject +ce899168f0a576809238b338dec6a666 SD_ROOT/wz_mini/etc/init.d/S02tmpfs e3034eac02d8eda9902ca9cf89f0a586 SD_ROOT/wz_mini/etc/inittab 840aa9c26726201f7cffbf001bee193a SD_ROOT/wz_mini/etc/uvc_jxf22.config d41d8cd98f00b204e9800998ecf8427e SD_ROOT/wz_mini/etc/rc.local.d/.gitignore -ac436b39b69f26fb65e993c2dfefb421 SD_ROOT/wz_mini/etc/wz_mini.conf.dist +99a800721bfe8a1b0e98f039175c12fd SD_ROOT/wz_mini/etc/wz_mini.conf.dist 4291fb00ec609b5b007ff9b3048e9248 SD_ROOT/wz_mini/etc/hosts +b23d0f3527ce4a13419981af52a449a2 SD_ROOT/wz_mini/etc/rc.common 8b5e58acfcbb20034dc4873a08b45fd9 SD_ROOT/wz_mini/etc/profile +574a0198606cf3a2255843cd1ed7860a SD_ROOT/wz_mini/etc/cron/root 2c2df1b9cb603f9c31c46162d6ac307f SD_ROOT/wz_mini/etc/alsa/alsa.conf +482483f68e5f41e0c3792b2e77fc1028 SD_ROOT/wz_mini/etc/rc.d/S18fps +80650d58c240c642295448a72a49ad45 SD_ROOT/wz_mini/etc/rc.d/K01network +ca8d8d8a60b3dc255133151ba33e0eb3 SD_ROOT/wz_mini/etc/rc.d/S17motor +03ca145794cedfe4748692dd6341839e SD_ROOT/wz_mini/etc/rc.d/S10firmware +5e81ec81999790b247ef2af25cc34cb6 SD_ROOT/wz_mini/etc/rc.d/K03rcd +ebfa49291afc96c4dd306101b7dec31c SD_ROOT/wz_mini/etc/rc.d/K02webcam +60d4ae31b12857888ae1643c89ef3a53 SD_ROOT/wz_mini/etc/rc.d/S07bonding +de825dae173ec43983d6ffa1a293060e SD_ROOT/wz_mini/etc/rc.d/S06networkalt +10908c95aa008ffa6ae53c6583d16ad2 SD_ROOT/wz_mini/etc/rc.d/S14nightdrop +264bd2ac40adf4c24c081b53f9763996 SD_ROOT/wz_mini/etc/rc.d/S03ethernet +282e4e0ce3be2740403466bea0c380d9 SD_ROOT/wz_mini/etc/rc.d/S20cron +c64a9651df819401b04708736c29cf30 SD_ROOT/wz_mini/etc/rc.d/S13mp4write +28ddd36f07b39500630eccd16d9938aa SD_ROOT/wz_mini/etc/rc.d/S05rndis +8cd393bb2cda585061961dba143ae2bd SD_ROOT/wz_mini/etc/rc.d/S01swap +17ab0c2db34671e4dcc05cc4e6b440ee SD_ROOT/wz_mini/etc/rc.d/K15logging +55dfb3a95dec09663df5ae9da8e7a602 SD_ROOT/wz_mini/etc/rc.d/S21syslog +e76b57b067bc349fd3e977447b0316f4 SD_ROOT/wz_mini/etc/rc.d/S04usbdirect +70e289c992f46d69954f72b7550b9876 SD_ROOT/wz_mini/etc/rc.d/S09coredump 9e5591da95042bcca910403bde25dc60 SD_ROOT/wz_mini/etc/fstab 3962900301ef8743c68e42ecef4d2811 SD_ROOT/wz_mini/etc/passwd +775b92a2052189e3e407cbceb548cae7 SD_ROOT/wz_mini/etc/rc.local c838ac76efbe3d3fc3c4805789a6519f SD_ROOT/wz_mini/etc/uvc_jxf23.config 9dafc0f6aa1ea4f8e7ccf0caafd5e28d SD_ROOT/wz_mini/etc/resolv.dnsmasq d41d8cd98f00b204e9800998ecf8427e SD_ROOT/wz_mini/etc/configs/.gitignore @@ -86,7 +128,7 @@ e6a6a9dd8ce138686083a3d4303cea40 SD_ROOT/wz_mini/bin/iperf3 79d69cd251a8cdadd9957cdaec2034fc SD_ROOT/wz_mini/bin/rtmp-stream.sh 5d1359af0c7c5d326b8682a62f910620 SD_ROOT/wz_mini/bin/strace 516118bfcc0f0ddc93fb9339b3c6a315 SD_ROOT/wz_mini/bin/xtables-multi -9be9aab45620d83fecc8b963954cf4f1 SD_ROOT/wz_mini/bin/gather_wz_logs.sh +ba7475184c364fee8bba1f45b7c42070 SD_ROOT/wz_mini/bin/gather_wz_logs.sh 097cd91a56f2b0caea1dd87ae0e51a54 SD_ROOT/wz_mini/bin/screen fbbc2a8f362d05fc31557b1a534b42c6 SD_ROOT/wz_mini/bin/wget 35420095a770c9bb6177788842f55bba SD_ROOT/wz_mini/bin/dropbearconvert @@ -105,14 +147,16 @@ eaf86f91cb1b15b2191a8845ae88e3c8 SD_ROOT/wz_mini/usr/share/audio/init_v2.wav 02fed0e4b2382d839f630ce0477aba26 SD_ROOT/wz_mini/usr/share/audio/init.wav 5754f767c1334df202983aed2a20a050 SD_ROOT/wz_mini/usr/share/audio/binbin_v3.wav 6e01838f67f7e6e51a6891e1c411318a SD_ROOT/wz_mini/usr/share/audio/honk.wav +71b26aa98e14c4a1f5798b3e3a2d9bab SD_ROOT/wz_mini/usr/bin/restart_wlan0.sh ac9f3a5d097d25d5d972c3d2ad288df9 SD_ROOT/wz_mini/usr/bin/ucamera_v2 7626ba23cc36b88491b010dd6eff72de SD_ROOT/wz_mini/usr/bin/iCamera 1e64fdad40c82ecce420f71701ec3d6d SD_ROOT/wz_mini/usr/bin/watch_up.sh b339aee882a5d1c943ad08e4282ec3fd SD_ROOT/wz_mini/usr/bin/iCamera-dbg -0de553a920d30d1e9d84c9ab4136df0d SD_ROOT/wz_mini/usr/bin/ucamera -3777d9e80c8b517c01a124e6360b6525 SD_ROOT/wz_mini/usr/bin/imp_helper.sh +20b061689308b2cee7edf3b9b906bca7 SD_ROOT/wz_mini/usr/bin/ucamera +071b974925501c4b83f2dd546d90febd SD_ROOT/wz_mini/usr/bin/netmon.sh +3e15a736b79854c35abb7fd4f7207064 SD_ROOT/wz_mini/usr/bin/imp_helper.sh 580b1b6e91e72b4a4fef7b21d8954403 SD_ROOT/wz_mini/usr/bin/getSensorType -bd20117feddea81a3db3bb4471a088db SD_ROOT/wz_mini/usr/bin/app.ver +9f367ddd445aa9645d99e7467a5ce5e0 SD_ROOT/wz_mini/usr/bin/app.ver 4c780f0455481d106d47d89f0ae04ed5 SD_ROOT/wz_mini/lib/uClibc.tar 9afeb088e4cbabbe0b04033b560204d0 SD_ROOT/wz_mini/lib/libimp.so 4100755cb6cc6e3b76da20c7e3690e16 SD_ROOT/wz_mini/lib/libalog.so @@ -261,7 +305,7 @@ c6a2e765996b4a8bfe351757785fb989 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 -ac436b39b69f26fb65e993c2dfefb421 SD_ROOT/wz_mini/wz_mini.conf +99a800721bfe8a1b0e98f039175c12fd SD_ROOT/wz_mini/wz_mini.conf d41d8cd98f00b204e9800998ecf8427e SD_ROOT/wz_mini/tmp/.gitignore 283fca97d62c1c199eb2b04877998879 v2_install/compile_image.sh 53db8da5b90bc9b219dbb1d58e934bda v2_install/fw_tool.sh diff --git a/src/initramfs/init_t31 b/src/initramfs/init_t31 deleted file mode 100644 index 95b3ae7..0000000 --- a/src/initramfs/init_t31 +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -# devtmpfs does not get automounted for initramfs - -set -x - -mount -t devtmpfs devtmpfs /dev -mount -t proc proc /proc -mount -t sysfs sysfs /sys - -sleep 1 - -mkdir -p /sdcard -mount -t vfat /dev/mmcblk0p1 /sdcard -o rw,umask=0000,dmask=0000 - -mkdir /v3 -mount -t squashfs /dev/mtdblock2 /v3 - -if [ ! -f /sdcard/wz_mini/etc/init.d/v3_init.sh ]; then - -echo "v3_init not found, booting stock" - -mount --move /dev /v3/dev -mount --move /sys /v3/sys -mount --move /proc /v3/proc - -umount /sdcard - -exec busybox switch_root /v3 /linuxrc - - -else - -mkdir -p /v3/dev -mkdir -p /v3/sys - - -mount --move /dev /v3/dev -mount --move /sys /v3/sys -mount --move /proc /v3/proc - -#mkdir -p /v3/media/mmc -mount --move /sdcard /v3/opt - -#exec busybox switch_root /v3 /linuxrc -exec busybox switch_root /v3 /opt/wz_mini/etc/init.d/v3_init.sh - -fi diff --git a/src/initramfs/init_v2 b/src/initramfs/init_v2 deleted file mode 100644 index 6e23a88..0000000 --- a/src/initramfs/init_v2 +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/sh - -set -x - -# devtmpfs does not get automounted for initramfs -mount -t devtmpfs devtmpfs /dev -mount -t proc proc /proc -mount -t sysfs sysfs /sys - -#Required delay on T20/T31 -sleep 1 - -echo "Check for T20 platform" - -if [ -b /dev/mtdblock10 ]; then - - echo "Found T20" - - #T20: Need to export the sd card enable gpio manually - echo 43 > /sys/class/gpio/export - echo in > /sys/class/gpio/gpio43/direction - - #T20: Insert required delay for sd card init - sleep 3 - -else - echo "Not T20" -fi - -mkdir -p /sdcard -mount -t vfat /dev/mmcblk0p1 /sdcard -o rw,umask=0000,dmask=0000 - -initram_init() { - -mkdir /v3 -mount -t squashfs /dev/mtdblock2 /v3 - -if [ ! -f /sdcard/wz_mini/etc/init.d/v3_init.sh ]; then - - echo "wz_mini not found, booting stock" - - mount --move /dev /v3/dev - mount --move /sys /v3/sys - mount --move /proc /v3/proc - - umount /sdcard - - exec busybox switch_root /v3 /linuxrc - -else - - echo "Loading wz_mini..." - - mkdir -p /v3/dev - mkdir -p /v3/sys - - - mount --move /dev /v3/dev - mount --move /sys /v3/sys - mount --move /proc /v3/proc - - #mkdir -p /v3/media/mmc - mount --move /sdcard /v3/opt - - #exec busybox switch_root /v3 /linuxrc - exec busybox switch_root /v3 /opt/wz_mini/etc/init.d/v3_init.sh - -fi - -} - -if [ -f /sdcard/wz_mini/wz_mini.conf ]; then - - source /sdcard/wz_mini/wz_mini.conf - - if [[ "$DEBUG_INITRAMFS_ENABLED" == "true" ]]; then - /bin/sh - #exit 0 - else - echo "initramfs debug disabled" - initram_init - fi -else - initram_init -fi