#!/bin/sh chip=$(ipcinfo -c) family=$(ipcinfo -f) vendor=$(ipcinfo -v) if ! [ ${chip} = "hi3536dv100" ]; then sensor=$(ipcinfo -s) fi basic() { # set boot delay fw_setenv bootdelay 0 # don't load f2fs module (disabled in kernel) sed -i "s!f2fs!#f2fs!g" /etc/modules # freely uart for telemetry sed -i "s!console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL!#console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL!g" /etc/inittab # tune socket buffer echo "net.core.rmem_default=512000" >> /etc/sysctl.conf } prefix=${family} hisi_goke() { if [ ${vendor} = "hisilicon" ]; then prefix="open" fi # remove unneeded modules sed -i "s!insmod ${prefix}_rgn.ko!#insmod ${prefix}_rgn.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_jpege.ko!#insmod ${prefix}_jpege.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_ive.ko save_power=0!#insmod ${prefix}_ive.ko save_power=0!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_aio.ko!#insmod ${prefix}_aio.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_ai.ko!#insmod ${prefix}_ai.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_ao.ko!#insmod ${prefix}_ao.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_aenc.ko!#insmod ${prefix}_aenc.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_adec.ko!#insmod ${prefix}_adec.ko!g" /usr/bin/load_${vendor} sed -i "s!insmod ${prefix}_acodec.ko!#insmod ${prefix}_acodec.ko!g" /usr/bin/load_${vendor} # change fps 25 -> 30 sed -i "s!Isp_FrameRate=25!Isp_FrameRate=30!g" /etc/sensors/imx307_i2c_2l_1080p.ini sed -i "s!Isp_FrameRate=25!Isp_FrameRate=30!g" /etc/sensors/smtsec_imx307_i2c_4l_1080p.ini sed -i "s!Isp_FrameRate=25!Isp_FrameRate=30!g" /etc/sensors/imx335_i2c_4M.ini } sigmastar() { sed -i "s!serial=/dev/ttyAMA0!serial=/dev/ttyS0!g" /etc/telemetry.conf sed -i "s!Device = /dev/ttyAMA0!Device = /dev/ttyS0!g" /etc/mavlink.conf } majestic_generic() { cli -s .isp.slowShutter disabled # enable digital image stabilization # cli -s .isp.dis true cli -s .image.contrast 50 cli -s .image.luminance 50 cli -s .video0.size 1920x1080 cli -s .video0.fps 30 cli -s .video0.bitrate 5120 cli -s .video0.codec h264 cli -s .video0.rcMode cbr cli -s .video0.gopSize 1.5 # lowdelay support only imx307 sensor if [ ${sensor} = "imx307" ]; then cli -s .isp.lowDelay true # cli -s .video0.sliceUnits 4 fi if [ ${sensor} = "imx335" ]; then cli -s .isp.drc 350 cli -s .isp.sensorConfig /etc/sensors/imx335_i2c_4M.ini fi cli -s .hls.enabled false cli -s .netip.enabled false cli -s .jpeg.enabled false } majestic_sigmastar() { cli -s .isp.exposure 20 cli -s .isp.aGain 40 cli -s .isp.sensorConfig /etc/sensors/imx415_fpv.bin cli -s .video0.size 1920x1080 cli -s .video0.fps 60 cli -s .video0.rcMode cbr cli -s .jpeg.enabled false } streamer() { if [ -f /usr/bin/majestic ]; then if [ ${vendor} = "sigmastar" ]; then majestic_sigmastar else majestic_generic fi # outgoing rtp stream to udp cli -s .outgoing.enabled true cli -s .outgoing.server udp://127.0.0.1:5600 fi if [ -f /usr/bin/venc ]; then if [ ${sensor} = "imx335" ]; then sed -i "s!version=200_imx307B!version=300_imx335B!g" /etc/venc.conf sed -i "s!size=720p!size=1292x972!g" /etc/venc.conf fi fi } finish() { # complete tweaks and add marker touch /etc/system.ok echo "Preparing system done." reboot } case "$1" in gk7205v200 | gk7205v210 | hi3516ev200) echo "Preparing system tweaks for ${chip}..." # set custom config if [ ${chip} = "gk7205v200" ] && [ ${sensor} = "imx307" ]; then echo "switch to custom sensor config" # cli -s .isp.sensorConfig /etc/sensors/60fps/720p_imx307_i2c_2l.ini fi # fix osmem in bootargs bootargs=$(fw_printenv -n bootargs) if echo ${bootargs} | grep -q "32M"; then newbootargs="mem=\${osmem} "$(echo ${bootargs} | cut -d " " -f2-) fw_setenv bootargs ${newbootargs} fw_setenv osmem 40M fi # remove unneeded to reduce some memory rm -f /etc/init.d/S60crond /etc/init.d/S49ntpd /etc/init.d/S02klogd basic hisi_goke streamer finish ;; gk7205v300 | hi3516ev300) echo "Preparing system tweaks for ${chip}..." # increase osmem mem=$(fw_printenv -n osmem) && [ "${mem}" = "32M" ] && fw_setenv osmem 64M && set_allocator cma || echo "Memory allocated for the system:" ${mem} # set sensor config for smtsec board if [ ${chip} = "gk7205v300" ] && [ ${sensor} = "imx307" ]; then cli -s .isp.sensorConfig /etc/sensors/smtsec_imx307_i2c_4l_1080p.ini fi basic hisi_goke streamer finish ;; t31l | t31n | t31x | t31zx) echo "Preparing system tweaks for ${chip}..." basic streamer finish ;; hi3536dv100) echo "Preparing system tweaks for ${chip}..." finish ;; ssc33x) echo "Preparing system tweaks for ${chip}..." basic sigmastar streamer finish ;; *) echo "Usage: $0 {gk7205v200|gk7205v210|gk7205v300|hi3516ev200|hi3516ev300|t31l|t31n|t31x|t31zx|hi3536dv100|ssc33x}" exit 1 ;; esac