|
|
@@ -1,5 +1,10 @@
|
|
|
#!/bin/sh
|
|
|
|
|
|
+exec 1> /opt/wz_mini/log/run_mmc.log 2>&1
|
|
|
+
|
|
|
+echo "welcome to run_mmc.sh"
|
|
|
+echo "PID $$"
|
|
|
+
|
|
|
set -x
|
|
|
|
|
|
HOSTNAME="WCV3"
|
|
|
@@ -16,6 +21,10 @@ ENABLE_IPV6="false"
|
|
|
|
|
|
ENABLE_WIREGUARD="false"
|
|
|
|
|
|
+ENABLE_IPTABLES="false"
|
|
|
+
|
|
|
+ENABLE_NFSv4="false"
|
|
|
+
|
|
|
#####ACCESSORIES#####
|
|
|
REMOTE_SPOTLIGHT="false"
|
|
|
REMOTE_SPOTLIGHT_HOST="0.0.0.0"
|
|
|
@@ -28,6 +37,7 @@ RTSP_PASSWORD=""
|
|
|
RTSP_PORT="8554"
|
|
|
|
|
|
#####GENERAL#####
|
|
|
+ENABLE_SWAP="true"
|
|
|
ENABLE_USB_STORAGE="false"
|
|
|
ENABLE_EXT4="false"
|
|
|
ENABLE_CIFS="false"
|
|
|
@@ -43,100 +53,186 @@ DEBUG_ENABLED="false"
|
|
|
|
|
|
echo "run_mmc.sh start" > /dev/kmsg
|
|
|
|
|
|
-echo "store original mac"
|
|
|
-cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/wlan0_mac
|
|
|
+hostname_set() {
|
|
|
+ echo "set hostname"
|
|
|
+ hostname $HOSTNAME
|
|
|
+}
|
|
|
|
|
|
-swap_enable() {
|
|
|
- if [[ -e /media/mmc/wz_mini/swap ]]; then
|
|
|
- echo "swap exists, enable"
|
|
|
- swapon /media/mmc/wz_mini/swap
|
|
|
- else
|
|
|
- echo "swap missing, system stability with usb potentially comprimised"
|
|
|
- fi
|
|
|
+first_run_check() {
|
|
|
+ if [[ -e /opt/wz_mini/tmp/.run_mmc_firstrun ]]; then
|
|
|
+ echo "run_mmc.sh already run once, exit."
|
|
|
+ exit 0
|
|
|
+ fi
|
|
|
}
|
|
|
|
|
|
-if [[ "$ENABLE_USB_RNDIS" == "true" ]]; then
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/usbnet.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/cdc_ether.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/rndis_host.ko
|
|
|
+wait_sdroot() {
|
|
|
+##Stall execution if the micro-sd card isn't mounted yet, iCamera controls this internally.
|
|
|
+ while true
|
|
|
+ do
|
|
|
+ if [[ -d /media/mmc/wz_mini ]]; then
|
|
|
+ echo "sd card ready"
|
|
|
+ break
|
|
|
+ fi
|
|
|
+ echo "sdcard not ready yet..."
|
|
|
+ sleep 5
|
|
|
+ done
|
|
|
|
|
|
- swap_enable
|
|
|
+}
|
|
|
|
|
|
- ifconfig usb0 down
|
|
|
- ifconfig wlan0 down
|
|
|
+wait_wlan() {
|
|
|
+##Check if the driver has been loaded for the onboard wlan0, store the MAC.
|
|
|
+ while true
|
|
|
+ do
|
|
|
+ if ifconfig wlan0 | grep "inet addr";
|
|
|
+ then
|
|
|
+ echo "store original mac"
|
|
|
+ cat /sys/class/net/wlan0/address | tr '[:lower:]' '[:upper:]' > /opt/wz_mini/tmp/wlan0_mac
|
|
|
+ break
|
|
|
+ elif [[ "$ENABLE_USB_ETH" == "true" || "$ENABLE_USB_DIRECT" == "true" ]]; then
|
|
|
+ break
|
|
|
+ fi
|
|
|
+ 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
|
|
|
/media/mmc/wz_mini/bin/busybox ip link set wlan0 name wlanold
|
|
|
/media/mmc/wz_mini/bin/busybox ip addr flush dev wlanold
|
|
|
- /media/mmc/wz_mini/bin/busybox ip link set usb0 name wlan0
|
|
|
+ /media/mmc/wz_mini/bin/busybox ip link set $1 name wlan0
|
|
|
+ eth_wlan_up
|
|
|
+}
|
|
|
|
|
|
+eth_wlan_up() {
|
|
|
+##Run DHCP client, and bind mount our fake wpa_cli.sh to fool iCamera
|
|
|
+ if [[ "$ENABLE_USB_DIRECT" == "true" ]]; then
|
|
|
+ /media/mmc/wz_mini/bin/busybox ip link set wlan0 address $USB_DIRECT_MAC_ADDR
|
|
|
+ fi
|
|
|
ifconfig wlan0 up
|
|
|
- pkill udhcpc
|
|
|
+ pkill udhcpc
|
|
|
udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b
|
|
|
-# sleep 5
|
|
|
mount -o bind /media/mmc/wz_mini/bin/wpa_cli.sh /bin/wpa_cli
|
|
|
+ break
|
|
|
+}
|
|
|
|
|
|
-else
|
|
|
- echo "rndis disabled"
|
|
|
-fi
|
|
|
+wpa_check() {
|
|
|
+#Check if wpa_supplicant has been created by iCamera
|
|
|
+ if [[ -e /tmp/wpa_supplicant.conf ]]; then
|
|
|
+ echo "wpa_supplicant.conf ready"
|
|
|
+ wlanold_check $1
|
|
|
+ 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
|
|
|
+ done
|
|
|
+ [[ $COUNT -eq $ATTEMPTS ]] && echo "time exceeded waiting for iCamera, continue potentially broken condition without network." && wlanold_check $1
|
|
|
+ fi
|
|
|
+}
|
|
|
|
|
|
-if [[ "$ENABLE_WIREGUARD" == "true" ]]; then
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/tunnel4.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/ip_tunnel.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/wireguard/wireguard.ko
|
|
|
-else
|
|
|
- echo "wireguard disabled"
|
|
|
-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"
|
|
|
+ rename_interface $1
|
|
|
+ fi
|
|
|
+}
|
|
|
|
|
|
-if [[ "$ENABLE_CIFS" == "true" ]]; then
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/cifs/cifs.ko
|
|
|
-else
|
|
|
- echo "cifs disabled"
|
|
|
+netloop() {
|
|
|
+##While loop for check
|
|
|
+ while true
|
|
|
+ do
|
|
|
+ wpa_check $1
|
|
|
+ echo "wlan0 not ready yet..."
|
|
|
+ sleep 5
|
|
|
+ done
|
|
|
+}
|
|
|
+
|
|
|
+swap_enable() {
|
|
|
+ if [[ -e /media/mmc/wz_mini/swap ]]; then
|
|
|
+ echo "Swap exists, enable"
|
|
|
+ swapon /media/mmc/wz_mini/swap
|
|
|
+ else
|
|
|
+ echo "Swap file missing!"
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+first_run_check
|
|
|
+hostname_set
|
|
|
+wait_sdroot
|
|
|
+wait_wlan
|
|
|
+
|
|
|
+
|
|
|
+if [[ "$ENABLE_SWAP" == "true" ]]; then
|
|
|
+ if cat /proc/swaps | grep "mini" ; then
|
|
|
+ echo "Swap is already enabled"
|
|
|
+ else
|
|
|
+ echo "Swap not enabled, enabling"
|
|
|
+ swap_enable
|
|
|
+ fi
|
|
|
fi
|
|
|
|
|
|
-if [[ "$ENABLE_USB_STORAGE" == "true" ]]; then
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/scsi/scsi_mod.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/scsi/sd_mod.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/usb/storage/usb-storage.ko
|
|
|
+if [[ "$ENABLE_IPV6" == "true" ]]; then
|
|
|
+ echo "ipv6 enabled"
|
|
|
else
|
|
|
- echo "usb_storage disabled"
|
|
|
+ echo "ipv6 disabled"
|
|
|
+ sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
|
|
fi
|
|
|
|
|
|
-if [[ "$ENABLE_EXT4" == "true" ]]; then
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/jbd2/jbd2.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/mbcache.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/ext4/ext4.ko
|
|
|
+if [[ "$ENABLE_NFSv4" == "true" ]]; then
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/lib/oid_registry.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/dns_resolver/dns_resolver.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/nfs/nfsv4.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
|
|
|
+ echo nfsv4 enabled
|
|
|
else
|
|
|
- echo "ext4 disabled"
|
|
|
+ echo nfsv4 disabled
|
|
|
fi
|
|
|
|
|
|
-if [[ "$ENABLE_IPV6" == "true" ]]; then
|
|
|
-echo "ipv6 enabled"
|
|
|
-else
|
|
|
-echo "ipv6 disabled"
|
|
|
-sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
|
|
+if [[ "$ENABLE_IPTABLES" == "true" ]]; then
|
|
|
+
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/netfilter/x_tables.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/netfilter/ip_tables.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/netfilter/ipt_REJECT.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/netfilter/iptable_filter.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/netfilter/iptable_mangle.ko
|
|
|
+ echo "iptables ipv4 enabled"
|
|
|
+
|
|
|
+ if [[ "$ENABLE_IPV6" == "true" ]]; then
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv6/netfilter/ip6_tables.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv6/netfilter/ip6table_filter.ko
|
|
|
+ insmod /lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv6/netfilter/ip6table_mangle.ko
|
|
|
+ echo "iptables ipv6 enabled"
|
|
|
+ fi
|
|
|
+ else
|
|
|
+ echo "iptables disabled"
|
|
|
fi
|
|
|
|
|
|
if [[ "$ENABLE_USB_ETH" == "true" ]]; then
|
|
|
|
|
|
- swap_enable
|
|
|
-
|
|
|
insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/usbnet.ko
|
|
|
- insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/asix.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/asix.ko
|
|
|
|
|
|
- ifconfig eth0 down
|
|
|
- ifconfig wlan0 down
|
|
|
+ if [[ "$ENABLE_SWAP" == "true" ]]; then
|
|
|
+ echo "swap already enabled"
|
|
|
+ else
|
|
|
+ swap_enable
|
|
|
+ fi
|
|
|
|
|
|
- /media/mmc/wz_mini/bin/busybox ip link set wlan0 name wlanold
|
|
|
- /media/mmc/wz_mini/bin/busybox ip addr flush dev wlanold
|
|
|
- /media/mmc/wz_mini/bin/busybox ip link set eth0 name wlan0
|
|
|
+ netloop eth0
|
|
|
|
|
|
- ifconfig wlan0 up
|
|
|
- pkill udhcpc
|
|
|
- udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b
|
|
|
-# sleep 5
|
|
|
- mount -o bind /media/mmc/wz_mini/bin/wpa_cli.sh /bin/wpa_cli
|
|
|
else
|
|
|
- echo "usb ethernet disabled"
|
|
|
+ echo "usb ethernet disabled"
|
|
|
fi
|
|
|
|
|
|
if [[ "$ENABLE_USB_DIRECT" == "true" ]]; then
|
|
|
@@ -154,20 +250,76 @@ if [[ "$ENABLE_USB_DIRECT" == "true" ]]; then
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
- ifconfig usb0 down
|
|
|
- ifconfig wlan0 down
|
|
|
- /media/mmc/wz_mini/bin/busybox ip link set wlan0 name wlanold
|
|
|
- /media/mmc/wz_mini/bin/busybox ip addr flush dev wlanold
|
|
|
- /media/mmc/wz_mini/bin/busybox ip link set usb0 name wlan0
|
|
|
- /media/mmc/wz_mini/bin/busybox ip link set wlan0 address $USB_DIRECT_MAC_ADDR
|
|
|
+ if [[ "$ENABLE_SWAP" == "true" ]]; then
|
|
|
+ echo "swap already enabled"
|
|
|
+ else
|
|
|
+ swap_enable
|
|
|
+ fi
|
|
|
|
|
|
- ifconfig wlan0 up
|
|
|
- pkill udhcpc
|
|
|
- udhcpc -i wlan0 -x hostname:$HOSTNAME -p /var/run/udhcpc.pid -b
|
|
|
- sleep 5
|
|
|
- mount -o bind /media/mmc/wz_mini/bin/wpa_cli.sh /bin/wpa_cli
|
|
|
+ #loop begin
|
|
|
+ while true
|
|
|
+ do
|
|
|
+ wpa_check usb0
|
|
|
+ echo "wlan0 not ready yet..."
|
|
|
+ sleep 1
|
|
|
+ done
|
|
|
+ else
|
|
|
+ echo "usb direct disabled"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ "$ENABLE_USB_RNDIS" == "true" ]]; then
|
|
|
+
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/usbnet.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/cdc_ether.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/net/usb/rndis_host.ko
|
|
|
+
|
|
|
+ sleep 1
|
|
|
+
|
|
|
+ if [[ "$ENABLE_SWAP" == "true" ]]; then
|
|
|
+ echo "swap already enabled"
|
|
|
else
|
|
|
- echo "usb direct disabled"
|
|
|
+ swap_enable
|
|
|
+ fi
|
|
|
+
|
|
|
+ #loop begin
|
|
|
+ while true
|
|
|
+ do
|
|
|
+ wpa_check usb0
|
|
|
+ echo "wlan0 not ready yet..."
|
|
|
+ sleep 1
|
|
|
+ done
|
|
|
+ else
|
|
|
+ echo "usb direct disabled"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ "$ENABLE_WIREGUARD" == "true" ]]; then
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/tunnel4.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/ipv4/ip_tunnel.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/net/wireguard/wireguard.ko
|
|
|
+else
|
|
|
+ echo "wireguard disabled"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ "$ENABLE_CIFS" == "true" ]]; then
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/cifs/cifs.ko
|
|
|
+else
|
|
|
+ echo "cifs disabled"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ "$ENABLE_USB_STORAGE" == "true" ]]; then
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/scsi/scsi_mod.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/scsi/sd_mod.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/drivers/usb/storage/usb-storage.ko
|
|
|
+else
|
|
|
+ echo "usb_storage disabled"
|
|
|
+fi
|
|
|
+
|
|
|
+if [[ "$ENABLE_EXT4" == "true" ]]; then
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/jbd2/jbd2.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/mbcache.ko
|
|
|
+ insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/kernel/fs/ext4/ext4.ko
|
|
|
+else
|
|
|
+ echo "ext4 disabled"
|
|
|
fi
|
|
|
|
|
|
if [[ "$DISABLE_FW_UPGRADE" == "true" ]]; then
|
|
|
@@ -181,17 +333,26 @@ else
|
|
|
fi
|
|
|
|
|
|
if [[ "$REMOTE_SPOTLIGHT" == "true" ]]; then
|
|
|
- { sleep 10; /media/mmc/wz_mini/bin/socat pty,link=/dev/ttyUSB0,raw tcp:$REMOTE_SPOTLIGHT_HOST:9000; } &
|
|
|
-
|
|
|
+ /media/mmc/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 [[ "$RTSP_ENABLED" == "true" ]]; then
|
|
|
+
|
|
|
+ if [[ "$ENABLE_SWAP" == "true" ]]; then
|
|
|
+ echo "swap already enabled"
|
|
|
+ else
|
|
|
swap_enable
|
|
|
+ fi
|
|
|
+
|
|
|
mkdir /tmp/alsa
|
|
|
cp /media/mmc/wz_mini/etc/alsa.conf /tmp/alsa
|
|
|
/opt/wz_mini/bin/cmd video on
|
|
|
/opt/wz_mini/bin/cmd audio on
|
|
|
|
|
|
+
|
|
|
if [[ "$RTSP_PASSWORD" = "" ]]; then
|
|
|
RTSP_PASSWORD=$(cat /opt/wz_mini/tmp/wlan0_mac)
|
|
|
fi
|
|
|
@@ -206,9 +367,8 @@ if [[ "$RTSP_ENABLED" == "true" ]]; then
|
|
|
echo "rtsp disabled"
|
|
|
fi
|
|
|
|
|
|
-echo "set hostname"
|
|
|
-hostname $HOSTNAME
|
|
|
-
|
|
|
+touch /opt/wz_mini/tmp/.run_mmc_firstrun
|
|
|
+sync;echo 3 > /proc/sys/vm/drop_caches
|
|
|
sleep 3
|
|
|
|
|
|
#################################################
|