blob: 063b7dcafcfd01fd8bd9b9336281c7f3405a28ff [file] [log] [blame]
#!/bin/sh
##############################################################################################################
# Default settings:
##############################################################################################################
CAMERA=ov9650
if [ -f /boot/sensor ]; then CAMERA=`tail -1 /boot/sensor`; fi
use_usbserial=1 # Allow using a serial-over-USB to communicate with JeVois command-line interface
use_usbsd=1 # Allow exposing the JEVOIS partition of the microSD as a USB drive
use_serialtty=0 # Use a TTY on the hardware serial and do not use it in jevois-daemon
use_usbserialtty=0 # Use a TTY on the serial-over-USB and do not use it in jevois-daemon
use_maxbandwidth=1 # Use 100% of isochronous bandwidth to minimize latency; disable to connect several cameras
use_quietcmd=0 # Do not say OK after every good command when true
use_nopython=0 # Disable python to save memory when true
if [ -f /boot/nousbserial ]; then use_usbserial=0; echo "JeVois serial-over-USB disabled"; fi
if [ -f /boot/nousbsd ]; then use_usbsd=0; echo "JeVois microSD access over USB disabled"; fi
if [ -f /boot/multicam ]; then use_maxbandwidth=0; echo "JeVois multi-camera mode enabled"; fi
if [ -f /boot/quietcmd ]; then use_quietcmd=1; echo "JeVois quiet command-line mode enabled"; fi
if [ -f /boot/nopython ]; then use_nopython=1; echo "JeVois python support disabled"; fi
# Block device we present to the host as a USB drive, or empty to not present it at start:
usbsdfile=""
if [ -f /boot/usbsdauto ]; then usbsdfile="/dev/mmcblk0p3"; echo "JeVois microSD access over USB is AUTO"; fi
# Login prompts over hardware serial or serial-over-USB:
if [ -f /boot/serialtty ]; then use_serialtty=1; echo "Using tty on JeVois hardware serial"; fi
if [ "X${use_usbserial}" != "X1" ]; then use_usbserialtty=0;
elif [ -f /boot/usbserialtty ]; then use_usbserialtty=1; echo "Using tty on JeVois serial-over-USB"; fi
##############################################################################################################
# Load all required kernel modules:
##############################################################################################################
cd /lib/modules/3.4.39
for m in videobuf-core videobuf-dma-contig videodev vfe_os vfe_subdev v4l2-common v4l2-int-device \
cci ${CAMERA} vfe_v4l2 ump disp mali ; do
if [ $m = "vfe_v4l2" ]; then
echo "### insmod ${m}.ko sensor=${CAMERA} ###"
insmod ${m}.ko sensor="${CAMERA}"
else
echo "### insmod ${m}.ko ###"
insmod ${m}.ko
fi
done
##############################################################################################################
# Install any new packages:
##############################################################################################################
cd /jevois
for f in packages/*.jvpkg; do
if [ -f "${f}" ]; then
echo "### Installing package ${f} ###"
bzcat "${f}" | tar xvf -
sync
rm -f "${f}"
sync
fi
done
##############################################################################################################
# Find any newly unpacked postinstall scripts, run them, and delete them:
##############################################################################################################
for f in modules/*/*/postinstall; do
if [ -f "${f}" ]; then
echo "### Running ${f} ###"
d=`dirname "${f}"`
cd "${d}"
sh postinstall
sync
rm -f postinstall
sync
cd /jevois
fi
done
##############################################################################################################
# Build a default videomappings.cfg, if missing:
##############################################################################################################
if [ ! -f /jevois/config/videomappings.cfg ]; then
echo 'YUYV 640 360 30.0 YUYV 320 240 30.0 JeVois JeVoisIntro *' > /jevois/config/videomappings.cfg
echo 'YUYV 640 480 30.0 YUYV 320 240 30.0 JeVois JeVoisIntro' >> /jevois/config/videomappings.cfg
fi
##############################################################################################################
# Get a list of all our needed library paths:
##############################################################################################################
LIBPATH="/lib:/usr/lib"
for d in `find /jevois/lib -type d -print`; do LIBPATH="${LIBPATH}:${d}"; done
export LD_LIBRARY_PATH=${LIBPATH}
##############################################################################################################
# Insert the gadget driver:
##############################################################################################################
echo "### Insert gadget driver ###"
MODES=`/usr/bin/jevois-module-param ${CAMERA}`
echo $MODES
insmodopts=""
if [ "X${use_usbsd}" = "X1" ]; then insmodopts="${insmodopts} file=${usbsdfile}"; fi
insmod /lib/modules/3.4.39/g_jevoisa33.ko modes=${MODES} use_serial=${use_usbserial} \
use_storage=${use_usbsd} max_bandwidth=${use_maxbandwidth} ${insmodopts}
echo insmod /lib/modules/3.4.39/g_jevoisa33.ko modes=${MODES} use_serial=${use_usbserial} \
use_storage=${use_usbsd} max_bandwidth=${use_maxbandwidth} ${insmodopts}
##############################################################################################################
# Launch jevois-daemon:
##############################################################################################################
/jevois/deploy/launch.sh
echo "### Start jevois daemon ###"
opts=""
if [ "X${use_usbserial}" != "X1" -o "X${use_usbserialtty}" = "X1" ]; then opts="${opts} --usbserialdev="; fi
if [ "X${use_serialtty}" = "X1" ]; then opts="${opts} --serialdev="; fi
if [ "X${use_maxbandwidth}" != "X1" ]; then opts="${opts} --multicam=1"; fi
if [ "X${use_quietcmd}" = "X1" ]; then opts="${opts} --quietcmd=1"; fi
if [ "X${use_nopython}" = "X1" ]; then opts="${opts} --python=0"; fi
if [ "X${CAMERA}" != "X" ]; then opts="${opts} --camerasens=${CAMERA}"; fi
if [ ! -f /tmp/do_not_export_sd_card ]; then
sync
echo "### FALLBACK remount ###"
mount -o remount,ro /jevois || exit
echo "### FALLBACK disk publish (Device is unusable after this point...) ###"
echo /dev/mmcblk0p3 > /sys/devices/platform/sunxi_usb_udc/gadget/lun0/file
fi
# Start the jevois daemon:
echo /usr/bin/jevois-daemon ${opts}
/usr/bin/jevois-daemon ${opts}