mirror of
https://github.com/gtxaspec/wz_mini_hacks.git
synced 2024-11-22 05:27:24 +00:00
new init system
This commit is contained in:
parent
fcf827118d
commit
0702bb997c
20
SD_ROOT/wz_mini/etc/init.d/S01bind
Normal file
20
SD_ROOT/wz_mini/etc/init.d/S01bind
Normal file
@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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 "bind /etc/profile for local/ssh shells"
|
||||
mount --bind /opt/wz_mini/etc/profile /etc/profile
|
||||
|
||||
if [ -d /lib/modules ]; then
|
||||
echo "mount kernel modules"
|
||||
mount --bind /opt/wz_mini/lib/modules /lib/modules
|
||||
fi
|
12
SD_ROOT/wz_mini/etc/init.d/S02tmpfs
Normal file
12
SD_ROOT/wz_mini/etc/init.d/S02tmpfs
Normal file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
24
SD_ROOT/wz_mini/etc/init.d/S03busybox
Normal file
24
SD_ROOT/wz_mini/etc/init.d/S03busybox
Normal file
@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -x
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
|
||||
echo "install busybox applets"
|
||||
mkdir /opt/wz_mini/tmp/.bin
|
||||
/opt/wz_mini/bin/busybox --install -s /opt/wz_mini/tmp/.bin
|
||||
;;
|
||||
stop)
|
||||
;;
|
||||
restart|reload)
|
||||
"$0" stop
|
||||
"$0" start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $?
|
||||
|
33
SD_ROOT/wz_mini/etc/init.d/S04model
Normal file
33
SD_ROOT/wz_mini/etc/init.d/S04model
Normal file
@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
|
||||
##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
|
||||
|
||||
#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
|
7
SD_ROOT/wz_mini/etc/init.d/S05mount
Normal file
7
SD_ROOT/wz_mini/etc/init.d/S05mount
Normal file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -f /opt/wz_mini/tmp/.T20 ]; then
|
||||
mount -t jffs2 /dev/mtdblock4 /system
|
||||
elif [ -f /opt/wz_mini/tmp/.T31 ]; then
|
||||
mount /dev/mtdblock3 /system
|
||||
fi
|
9
SD_ROOT/wz_mini/etc/init.d/S06gpio
Normal file
9
SD_ROOT/wz_mini/etc/init.d/S06gpio
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
#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
|
||||
|
52
SD_ROOT/wz_mini/etc/init.d/S07inject
Normal file
52
SD_ROOT/wz_mini/etc/init.d/S07inject
Normal file
@ -0,0 +1,52 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
set -x
|
||||
|
||||
echo "copy stock rcS"
|
||||
cp /etc/init.d/rcS /opt/wz_mini/tmp/.storage/rcS
|
||||
|
||||
sed -i '/^".*/aset -x' /opt/wz_mini/tmp/.storage/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
|
||||
|
||||
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/K02_webcam &' /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
|
||||
|
||||
##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
|
27
SD_ROOT/wz_mini/etc/init.d/S09firstboot
Normal file
27
SD_ROOT/wz_mini/etc/init.d/S09firstboot
Normal file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
176
SD_ROOT/wz_mini/etc/init.d/wz_post.sh → SD_ROOT/wz_mini/etc/init.d/S10kmod
Executable file → Normal file
176
SD_ROOT/wz_mini/etc/init.d/wz_post.sh → SD_ROOT/wz_mini/etc/init.d/S10kmod
Executable file → Normal file
@ -1,78 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
### This file is called by /etc/init.d/rcS, and is run before app_init.sh
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
set -x
|
||||
|
||||
## REPLACE STOCK MODULES
|
||||
if [[ "$ENABLE_RTL8189FS_DRIVER" == "true" ]] || [[ "$ENABLE_RTL8189FS_DRIVER" == "" ]]; then
|
||||
@ -97,10 +28,9 @@ if [[ "$ENABLE_ATBM603X_DRIVER" == "true" ]] || [[ "$ENABLE_ATBM603X_DRIVER" ==
|
||||
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
|
||||
#Enable serial driver for car
|
||||
if [ -f /opt/wz_mini/tmp/.CAR ] || [[ "$ENABLE_CAR_DRIVER" == "true" ]]; then
|
||||
modprobe cp210x
|
||||
fi
|
||||
|
||||
#RTSP SERVER
|
||||
@ -132,22 +62,88 @@ if ([[ "$RTSP_HI_RES_ENABLED" == "true" ]] || [[ "$RTSP_LOW_RES_ENABLED" == "tru
|
||||
fi
|
||||
fi
|
||||
|
||||
#MOTORIZED CAMERA CONTROL
|
||||
if [[ "$DISABLE_MOTOR" == "true" ]]; then
|
||||
echo "Motor Disabled"
|
||||
touch /opt/wz_mini/tmp/.ms
|
||||
|
||||
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
|
||||
|
||||
#Enable serial driver for car
|
||||
if [ -f /opt/wz_mini/tmp/.CAR ] || [[ "$ENABLE_CAR_DRIVER" == "true" ]]; then
|
||||
modprobe cp210x
|
||||
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
|
||||
|
||||
/opt/wz_mini/etc/init.d/wz_user.sh &
|
||||
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
|
||||
fi
|
||||
|
||||
##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
|
||||
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
|
||||
fi
|
||||
|
||||
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="eth0"
|
||||
fi
|
||||
if [[ "$BONDING_SECONDARY_INTERFACE" == "" ]]; then
|
||||
BONDING_SECONDARY_INTERFACE="wlan0"
|
||||
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
|
35
SD_ROOT/wz_mini/etc/init.d/S11configbackup
Normal file
35
SD_ROOT/wz_mini/etc/init.d/S11configbackup
Normal file
@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
|
||||
#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
|
||||
|
14
SD_ROOT/wz_mini/etc/init.d/S12passwd
Normal file
14
SD_ROOT/wz_mini/etc/init.d/S12passwd
Normal file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
8
SD_ROOT/wz_mini/etc/init.d/S14terminfo
Normal file
8
SD_ROOT/wz_mini/etc/init.d/S14terminfo
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
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
|
5
SD_ROOT/wz_mini/etc/init.d/S15ssh
Normal file
5
SD_ROOT/wz_mini/etc/init.d/S15ssh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Run dropbear ssh server"
|
||||
/opt/wz_mini/bin/dropbear -R -s -g
|
||||
|
7
SD_ROOT/wz_mini/etc/init.d/S16factorycheck
Normal file
7
SD_ROOT/wz_mini/etc/init.d/S16factorycheck
Normal file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "replace factorycheck with dummy, to prevent bind unmount"
|
||||
if [ -f /opt/wz_mini/tmp/.T31 ]; then
|
||||
mount --bind /opt/wz_mini/bin/factorycheck /system/bin/factorycheck
|
||||
touch /tmp/usrflag
|
||||
fi
|
9
SD_ROOT/wz_mini/etc/init.d/S17motor
Normal file
9
SD_ROOT/wz_mini/etc/init.d/S17motor
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
#MOTORIZED CAMERA CONTROL
|
||||
if [[ "$DISABLE_MOTOR" == "true" ]]; then
|
||||
echo "Motor Disabled"
|
||||
touch /opt/wz_mini/tmp/.ms
|
||||
fi
|
199
SD_ROOT/wz_mini/etc/init.d/wz_init.sh
Executable file → Normal file
199
SD_ROOT/wz_mini/etc/init.d/wz_init.sh
Executable file → Normal file
@ -13,9 +13,8 @@ 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
|
||||
set -x
|
||||
|
||||
echo "welcome to wz_init.sh"
|
||||
echo "PID $$"
|
||||
@ -31,182 +30,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
|
||||
|
@ -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
|
13
SD_ROOT/wz_mini/etc/network/S01wlanhw
Normal file
13
SD_ROOT/wz_mini/etc/network/S01wlanhw
Normal file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
while true
|
||||
do
|
||||
if ifconfig wlan0 | grep "HWaddr"; then
|
||||
echo "wlan0 hwaddr is up"
|
||||
break
|
||||
else
|
||||
echo "wlan0 hwaddr not ready yet..."
|
||||
sleep 5
|
||||
fi
|
||||
done
|
||||
|
10
SD_ROOT/wz_mini/etc/network/S03ipv6
Normal file
10
SD_ROOT/wz_mini/etc/network/S03ipv6
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
if [[ "$ENABLE_IPV6" == "true" ]]; then
|
||||
echo "ipv6 enabled"
|
||||
else
|
||||
echo "ipv6 disabled"
|
||||
sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
||||
fi
|
32
SD_ROOT/wz_mini/etc/network/S04wireguard
Normal file
32
SD_ROOT/wz_mini/etc/network/S04wireguard
Normal file
@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
6
SD_ROOT/wz_mini/etc/network/S08hostname
Normal file
6
SD_ROOT/wz_mini/etc/network/S08hostname
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
echo "set hostname to $CUSTOM_HOSTNAME"
|
||||
hostname $CUSTOM_HOSTNAME
|
10
SD_ROOT/wz_mini/etc/network/S09dnsmasq
Normal file
10
SD_ROOT/wz_mini/etc/network/S09dnsmasq
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
8
SD_ROOT/wz_mini/etc/network/S10httpd
Normal file
8
SD_ROOT/wz_mini/etc/network/S10httpd
Normal file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
if [[ "$WEB_SERVER_ENABLED" == "true" ]]; then
|
||||
httpd -p 80 -h /opt/wz_mini/www
|
||||
fi
|
||||
|
9
SD_ROOT/wz_mini/etc/network/S14storemac
Normal file
9
SD_ROOT/wz_mini/etc/network/S14storemac
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
|
||||
wait_for_wlan_ip
|
||||
|
||||
echo "store original mac"
|
||||
cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/wlan0_mac
|
||||
|
74
SD_ROOT/wz_mini/etc/network/S15v4l2rtspserver
Normal file
74
SD_ROOT/wz_mini/etc/network/S15v4l2rtspserver
Normal file
@ -0,0 +1,74 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
||||
/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
|
||||
|
||||
/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
|
||||
|
||||
sync;echo 3 > /proc/sys/vm/drop_caches
|
14
SD_ROOT/wz_mini/etc/network/S16rtmp
Normal file
14
SD_ROOT/wz_mini/etc/network/S16rtmp
Normal file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
44
SD_ROOT/wz_mini/etc/rc.common
Executable file
44
SD_ROOT/wz_mini/etc/rc.common
Executable file
@ -0,0 +1,44 @@
|
||||
#!/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
|
||||
|
||||
if [[ "$ENABLE_USB_ETH_ORIGINAL_MAC" == "true" ]]; then
|
||||
CONFIG="inet addr"
|
||||
else
|
||||
CONFIG="HWaddr"
|
||||
fi
|
||||
|
||||
wait_for_wlan() {
|
||||
while true; do
|
||||
if ifconfig wlan0 | grep "$CONFIG"; then
|
||||
break
|
||||
fi
|
||||
|
||||
echo " network not ready yet, try again in 5"
|
||||
sleep 5
|
||||
done
|
||||
}
|
||||
|
||||
wait_for_wlan_ip() {
|
||||
while true; do
|
||||
if ifconfig wlan0 | grep "inet addr"; then
|
||||
break
|
||||
fi
|
||||
|
||||
echo " network not ready yet, try again in 5"
|
||||
sleep 5
|
||||
done
|
||||
}
|
61
SD_ROOT/wz_mini/etc/rc.d/K01network
Normal file
61
SD_ROOT/wz_mini/etc/rc.d/K01network
Normal file
@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
wait_for_wlan
|
||||
|
||||
# Start all init scripts in /etc/init.d
|
||||
# executing them in numerical order.
|
||||
#
|
||||
for i in /opt/wz_mini/etc/network/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
|
||||
|
||||
|
||||
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
|
||||
echo "wz_mini done" > /dev/kmsg
|
0
SD_ROOT/wz_mini/etc/init.d/wz_cam.sh → SD_ROOT/wz_mini/etc/rc.d/K02webcam
Executable file → Normal file
0
SD_ROOT/wz_mini/etc/init.d/wz_cam.sh → SD_ROOT/wz_mini/etc/rc.d/K02webcam
Executable file → Normal file
25
SD_ROOT/wz_mini/etc/rc.d/K03rcd
Normal file
25
SD_ROOT/wz_mini/etc/rc.d/K03rcd
Normal file
@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Start all init scripts in /etc/init.d
|
||||
# executing them in numerical order.
|
||||
#
|
||||
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
|
27
SD_ROOT/wz_mini/etc/rc.d/S01swap
Normal file
27
SD_ROOT/wz_mini/etc/rc.d/S01swap
Normal file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
||||
#SWAP FILE, REQUIRED FOR OPERATION!
|
||||
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
|
7
SD_ROOT/wz_mini/etc/rc.d/S02nightdrop
Normal file
7
SD_ROOT/wz_mini/etc/rc.d/S02nightdrop
Normal file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
if [[ "$NIGHT_DROP_DISABLE" == "true" ]]; then
|
||||
touch /opt/wz_mini/tmp/.nd
|
||||
fi
|
53
SD_ROOT/wz_mini/etc/rc.d/S03ethernet
Normal file
53
SD_ROOT/wz_mini/etc/rc.d/S03ethernet
Normal file
@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
|
||||
cat /sys/class/net/eth0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/eth0_mac
|
||||
|
||||
else
|
||||
echo "USB Ethernet disabled"
|
||||
fi
|
35
SD_ROOT/wz_mini/etc/rc.d/S04usbdirect
Normal file
35
SD_ROOT/wz_mini/etc/rc.d/S04usbdirect
Normal file
@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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"
|
||||
|
||||
else
|
||||
echo "USB Direct disabled"
|
||||
fi
|
18
SD_ROOT/wz_mini/etc/rc.d/S05rndis
Normal file
18
SD_ROOT/wz_mini/etc/rc.d/S05rndis
Normal file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
||||
else
|
||||
echo "usb rndis disabled"
|
||||
fi
|
38
SD_ROOT/wz_mini/etc/rc.d/S06networkalt
Normal file
38
SD_ROOT/wz_mini/etc/rc.d/S06networkalt
Normal file
@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
alternate_iface() {
|
||||
|
||||
wait_for_wlan
|
||||
|
||||
if ! [[ "$BONDING_ENABLED" == "true" ]]; then
|
||||
|
||||
if [[ "$ENABLE_USB_ETH" == "true" ]] || [[ "$ENABLE_USB_DIRECT" == "true" ]] || [[ "$ENABLE_USB_RNDIS" == "true" ]]; then
|
||||
|
||||
##Fool iCamera by renaming the hardline interface to wlan0
|
||||
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
|
||||
|
||||
ifconfig wlan0 up
|
||||
pkill udhcpc
|
||||
udhcpc -i wlan0 -x hostname:$CUSTOM_HOSTNAME -p /var/run/udhcpc.pid -b
|
||||
|
||||
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 alt iface enabled"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
alternate_iface &
|
77
SD_ROOT/wz_mini/etc/rc.d/S07bonding
Normal file
77
SD_ROOT/wz_mini/etc/rc.d/S07bonding
Normal file
@ -0,0 +1,77 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/etc/rc.common
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
set -x
|
||||
|
||||
bonding_setup() {
|
||||
|
||||
#we need to wait until wlan0 is up
|
||||
wait_for_wlan
|
||||
|
||||
##Fool iCamera by renaming the hardline interface to wlan0
|
||||
|
||||
## $1 Bonding Interface, $2 Primary Interface, $3 Secondary Interface
|
||||
echo "renaming interfaces"
|
||||
|
||||
# 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
|
||||
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
|
||||
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
|
||||
|
||||
|
||||
##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
|
||||
|
||||
}
|
||||
|
||||
if [[ "$BONDING_ENABLED" == "true" ]]; then
|
||||
bonding_setup &
|
||||
fi
|
10
SD_ROOT/wz_mini/etc/rc.d/S09coredump
Normal file
10
SD_ROOT/wz_mini/etc/rc.d/S09coredump
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
core() {
|
||||
while ! pgrep -f "dumpload" > /dev/null; do
|
||||
pkill -f dumpload #Kill dumpload so it won't waste cpu or ram gathering cores and uploading them when something crashes
|
||||
done
|
||||
}
|
||||
|
||||
sysctl -w kernel.core_pattern='|/bin/false'
|
||||
core &
|
15
SD_ROOT/wz_mini/etc/rc.d/S10firmware
Normal file
15
SD_ROOT/wz_mini/etc/rc.d/S10firmware
Normal file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
14
SD_ROOT/wz_mini/etc/rc.d/S11mp4write
Normal file
14
SD_ROOT/wz_mini/etc/rc.d/S11mp4write
Normal file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
10
SD_ROOT/wz_mini/etc/rc.d/S12remoteaccessory
Normal file
10
SD_ROOT/wz_mini/etc/rc.d/S12remoteaccessory
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
source /opt/wz_mini/wz_mini.conf
|
||||
|
||||
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
|
0
SD_ROOT/wz_mini/etc/rc.local
Normal file
0
SD_ROOT/wz_mini/etc/rc.local
Normal file
@ -12,6 +12,7 @@ WEB_CAM_FPS_RATE="25"
|
||||
CUSTOM_HOSTNAME="WCV3"
|
||||
|
||||
ENABLE_USB_ETH="false"
|
||||
ENABLE_USB_ETH_ORIGINAL_MAC="false"
|
||||
ENABLE_USB_ETH_MODULE_AUTODETECT="true"
|
||||
ENABLE_USB_ETH_MODULE_MANUAL=""
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user