mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			179 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			179 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/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 10
 | |
|   cli -s .isp.aGain 8
 | |
|   cli -s .isp.dGain 8
 | |
|   cli -s .video0.size 1920x1080
 | |
|   cli -s .video0.fps 90
 | |
|   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
 |