diff --git a/translated_sandbox/gk7205v200/659A7_OpenIPC_FPV.bin b/translated_sandbox/gk7205v200/659A7_OpenIPC_FPV.bin new file mode 100644 index 0000000..a39744d Binary files /dev/null and b/translated_sandbox/gk7205v200/659A7_OpenIPC_FPV.bin differ diff --git a/translated_sandbox/gk7205v200/88XXau.ko_8812_8821 b/translated_sandbox/gk7205v200/88XXau.ko_8812_8821 new file mode 100644 index 0000000..cb42805 Binary files /dev/null and b/translated_sandbox/gk7205v200/88XXau.ko_8812_8821 differ diff --git a/translated_sandbox/gk7205v200/etc/init.d/S95majestic b/translated_sandbox/gk7205v200/etc/init.d/S95majestic new file mode 100644 index 0000000..36b272c --- /dev/null +++ b/translated_sandbox/gk7205v200/etc/init.d/S95majestic @@ -0,0 +1,84 @@ +#!/bin/sh + +DAEMON="majestic" +PIDFILE="/var/run/$DAEMON.pid" + +DAEMON_ARGS="-s" + +# shellcheck source=/dev/null +[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" + +load_majestic() { + printf 'Starting %s: ' "$DAEMON" + [ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, " + # shellcheck disable=SC2086 # we need the word splitting + [ -f /etc/coredump.conf ] && . /etc/coredump.conf + if [ "$coredump_enabled" ]; then + [ "$(cli -g .watchdog.timeout)" -lt "30" ] && cli -s .watchdog.timeout 30 + ulimit -c unlimited && echo "|/usr/sbin/sendcoredump.sh" >/proc/sys/kernel/core_pattern + fi + + cli -s .isp.sensorConfig /etc/sensors/imx307_i2c_2l_1080p.ini + cli -s .video0.size 1920x1080 + cli -s .video0.fps 30 + + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" -- $DAEMON_ARGS + + sleep .5 + + cli -s .isp.sensorConfig /etc/sensors/imx307_i2c_2l_720p_50fps.ini + cli -s .video0.size 1280x720 + cli -s .video0.fps 50 + + killall -1 majestic + + sleep 1 + gkrcparams --MaxQp 30 --MaxI 2 + + status=$? + if [ "$status" -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +# The daemon does not create a pidfile, and use "-m" to instruct start-stop-daemon to create one. +start() { + logger -s -p daemon.info -t $(ipcinfo -v) "Loading video system has started..." + export SENSOR=$(fw_printenv -n sensor) + load_majestic +} + +stop() { + printf 'Stopping %s: ' "$DAEMON" + [ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, " + start-stop-daemon -K -q -p "$PIDFILE" + status=$? + if [ "$status" -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi + return "$status" +} + +restart() { + stop + sleep 1 + reload +} + +reload() { + load_majestic +} + +case "$1" in + start|stop|restart|reload) + "$1";; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/translated_sandbox/gk7205v200/etc/init.d/S98datalink b/translated_sandbox/gk7205v200/etc/init.d/S98datalink new file mode 100644 index 0000000..a4c30db --- /dev/null +++ b/translated_sandbox/gk7205v200/etc/init.d/S98datalink @@ -0,0 +1,77 @@ +#!/bin/sh +# +# Start fpv datalink +# + +. /etc/datalink.conf + +chip=$(ipcinfo -c) +fw=$(grep "BUILD_OPTION" "/etc/os-release" | cut -d= -f2) + +start() { + if ! [ -f /etc/system.ok ]; then + killall majestic + tweaksys ${chip} + fi + + echo "Starting FPV datalink..." + if ! [ -f /etc/servicemode ]; then + echo "Start wlan0 in Service Mode (connect to your AP)" + rm -f /etc/servicemode + wpa_passphrase "ssid" "password" >/tmp/wpa_supplicant.conf + sed -i '2i \\tscan_ssid=1' /tmp/wpa_supplicant.conf + sleep 3 + wpa_supplicant -B -D nl80211 -i wlan0 -c /tmp/wpa_supplicant.conf + ifconfig wlan0 up + udhcpc -x hostname:openipc-servicemode -T 1 -t 5 -R -b -O search -i wlan0 + else + if [ ${fw} = "lte" ]; then + if [ ${usb_modem} = "true" ]; then + echo "Starting lte modem configuration..." + echo "ToDo: Running usb_modeswitch or other shit here..." + fi + # for the future + #cli -s .outgoing.url1 udp://${gs_ipaddr}:${gs_port} + if [ ${use_zt} = "true" ]; then + echo "Starting ZeroTier-One daemon..." + /usr/sbin/zerotier-one -d & + if [ ! -f /var/lib/zerotier-one/networks.d/${zt_netid}.conf ]; then + sleep 8 + zerotier-cli join ${zt_netid} &> /dev/null + echo "Don't forget authorize in the my.zerotier.com!" + fi + fi + if [ ${telemetry} = "true" ]; then + /usr/bin/telemetry start + fi + else + echo "Starting wifibroadcast service..." + /usr/bin/wifibroadcast start + fi + fi +} + +stop() { + echo "Stopping all services..." + kill -9 $(pidof wfb_tx) + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + kill -9 $(pidof mavlink-routerd) + kill -9 $(pidof mavfwd) +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/translated_sandbox/gk7205v200/etc/majestic.yaml b/translated_sandbox/gk7205v200/etc/majestic.yaml new file mode 100644 index 0000000..b69b0c8 --- /dev/null +++ b/translated_sandbox/gk7205v200/etc/majestic.yaml @@ -0,0 +1,65 @@ +system: + webAdmin: disabled + buffer: 1024 +image: + mirror: false + flip: false + rotate: none + contrast: 50 + hue: 50 + saturation: 50 + luminance: 50 +osd: + enabled: false + template: "%a %e %B %Y %H:%M:%S %Z" +nightMode: + enabled: false +records: + enabled: false + path: /mnt/mmc/%Y/%m/%d/%H.mp4 + maxUsage: 95 +video0: + enabled: true + bitrate: 6144 + codec: h265 + rcMode: cbr + gopSize: 1.0 + size: 1280x720 + fps: 50 +video1: + enabled: false +jpeg: + enabled: false +mjpeg: + size: 640x360 + fps: 5 + bitrate: 1024 +audio: + enabled: false + volume: auto + srate: 8000 +rtsp: + enabled: false + port: 554 +hls: + enabled: false +youtube: + enabled: false +motionDetect: + enabled: false + visualize: true + debug: true +ipeye: + enabled: false +watchdog: + enabled: true + timeout: 10 +isp: + slowShutter: disabled + drc: 350 + lowDelay: true + sensorConfig: /etc/sensors/imx307_i2c_2l_720p_50fps.ini +netip: + enabled: false +outgoing: +- udp://127.0.0.1:5600 diff --git a/translated_sandbox/gk7205v200/etc/sensors/imx307_i2c_2l_720p_50fps.ini b/translated_sandbox/gk7205v200/etc/sensors/imx307_i2c_2l_720p_50fps.ini new file mode 100644 index 0000000..6215491 --- /dev/null +++ b/translated_sandbox/gk7205v200/etc/sensors/imx307_i2c_2l_720p_50fps.ini @@ -0,0 +1,131 @@ +[sensor] +Sensor_type =stSnsImx307_2l_Obj ;sensor name +Mode =0 ;WDR_MODE_NONE = 0 + ;WDR_MODE_BUILT_IN = 1 + ;WDR_MODE_QUDRA = 2 + ;WDR_MODE_2To1_LINE = 3 + ;WDR_MODE_2To1_FRAME = 4 + ;WDR_MODE_2To1_FRAME_FULL_RATE = 5 + ;WDR_MODE_3To1_LINE = 6 + ;WDR_MODE_3To1_FRAME = 7 + ;WDR_MODE_3To1_FRAME_FULL_RATE = 8 + ;WDR_MODE_4To1_LINE = 9 + ;WDR_MODE_4To1_FRAME = 10 + ;WDR_MODE_4To1_FRAME_FULL_RATE = 11 +DllFile = /usr/lib/sensors/libsns_imx307_2l_720p_50fps.so ;sensor lib path + + +[mode] +input_mode =0 ;INPUT_MODE_MIPI = 0 + ;INPUT_MODE_SUBLVDS = 1 + ;INPUT_MODE_LVDS = 2 ...etc + +raw_bitness = 10 + +[mipi] +;----------only for mipi_dev--------- +data_type = DATA_TYPE_RAW_10BIT +lane_id = 0|2|-1|-1|-1|-1|-1|-1| ;lane_id: -1 - disable + +[isp_image] +Isp_x =0 +Isp_y =0 +Isp_W =1280 +Isp_H =720 +Isp_FrameRate=60 +Isp_Bayer =0 ;BAYER_RGGB=0, BAYER_GRBG=1, BAYER_GBRG=2, BAYER_BGGR=3 + +[vi_dev] +Input_mod = 6 + ; VI_MODE_BT656 = 0, /* ITU-R BT.656 YUV4:2:2 */ + ; VI_MODE_BT656_PACKED_YUV, /* ITU-R BT.656 packed YUV4:2:2 */ + ; VI_MODE_BT601, /* ITU-R BT.601 YUV4:2:2 */ + ; VI_MODE_DIGITAL_CAMERA, /* digatal camera mode */ + ; VI_MODE_BT1120_STANDARD, /* BT.1120 progressive mode */ + ; VI_MODE_BT1120_INTERLEAVED, /* BT.1120 interstage mode */ + ; VI_MODE_MIPI, /* MIPI RAW mode */ + ; VI_MODE_MIPI_YUV420_NORMAL, /* MIPI YUV420 normal mode */ + ; VI_MODE_MIPI_YUV420_LEGACY, /* MIPI YUV420 legacy mode */ + ; VI_MODE_MIPI_YUV422, /* MIPI YUV422 mode */ + ; VI_MODE_LVDS, /* LVDS mode */ + ; VI_MODE_HISPI, /* HiSPi mode */ + ; VI_MODE_SLVS, /* SLVS mode */ +Work_mod =0 ;VI_WORK_MODE_1Multiplex = 0 + ;VI_WORK_MODE_2Multiplex, + ;VI_WORK_MODE_4Multiplex +Combine_mode =0 ;Y/C composite or separation mode + ;VI_COMBINE_COMPOSITE = 0 /*Composite mode */ + ;VI_COMBINE_SEPARATE, /*Separate mode */ +Comp_mode =0 ;Component mode (single-component or dual-component) + ;VI_COMP_MODE_SINGLE = 0, /*single component mode */ + ;VI_COMP_MODE_DOUBLE = 1, /*double component mode */ +Clock_edge =1 ;Clock edge mode (sampling on the rising or falling edge) + ;VI_CLK_EDGE_SINGLE_UP=0, /*rising edge */ + ;VI_CLK_EDGE_SINGLE_DOWN, /*falling edge */ +Mask_num =2 ;Component mask +Mask_0 =0xFFF00000 +Mask_1 =0x0 +Scan_mode = 1;VI_SCAN_INTERLACED = 0 + ;VI_SCAN_PROGRESSIVE, +Data_seq =2 ;data sequence (ONLY for YUV format) + ;----2th component U/V sequence in bt1120 + ; VI_INPUT_DATA_VUVU = 0, + ; VI_INPUT_DATA_UVUV, + ;----input sequence for yuv + ; VI_INPUT_DATA_UYVY = 0, + ; VI_INPUT_DATA_VYUY, + ; VI_INPUT_DATA_YUYV, + ; VI_INPUT_DATA_YVYU + +Vsync =1 ; vertical synchronization signal + ;VI_VSYNC_FIELD = 0, + ;VI_VSYNC_PULSE, +VsyncNeg=1 ;Polarity of the vertical synchronization signal + ;VI_VSYNC_NEG_HIGH = 0, + ;VI_VSYNC_NEG_LOW /*if VIU_VSYNC_E +Hsync =0 ;Attribute of the horizontal synchronization signal + ;VI_HSYNC_VALID_SINGNAL = 0, + ;VI_HSYNC_PULSE, +HsyncNeg =0 ;Polarity of the horizontal synchronization signal + ;VI_HSYNC_NEG_HIGH = 0, + ;VI_HSYNC_NEG_LOW +VsyncValid =1 ;Attribute of the valid vertical synchronization signal + ;VI_VSYNC_NORM_PULSE = 0, + ;VI_VSYNC_VALID_SINGAL, +VsyncValidNeg =0;Polarity of the valid vertical synchronization signal + ;VI_VSYNC_VALID_NEG_HIGH = 0, + ;VI_VSYNC_VALID_NEG_LOW +Timingblank_HsyncHfb =0 ;Horizontal front blanking width +Timingblank_HsyncAct =1280 ;Horizontal effetive width +Timingblank_HsyncHbb =0 ;Horizontal back blanking width +Timingblank_VsyncVfb =0 ;Vertical front blanking height +Timingblank_VsyncVact =720 ;Vertical effetive width +Timingblank_VsyncVbb=0 ;Vertical back blanking height +Timingblank_VsyncVbfb =0 ;Even-field vertical front blanking height(interlace, invalid progressive) +Timingblank_VsyncVbact=0 ;Even-field vertical effetive width(interlace, invalid progressive) +Timingblank_VsyncVbbb =0 ;Even-field vertical back blanking height(interlace, invalid progressive) + +;----- only for bt656 ---------- +FixCode =0 ;BT656_FIXCODE_1 = 0, + ;BT656_FIXCODE_0 +FieldPolar=0 ;BT656_FIELD_POLAR_STD = 0 + ;BT656_FIELD_POLAR_NSTD +DataPath =1 ;ISP enable or bypass + ;VI_PATH_BYPASS = 0,/* ISP bypass */ + ;VI_PATH_ISP = 1,/* ISP enable */ + ;VI_PATH_RAW = 2,/* Capture raw data, for debug */ +InputDataType=1 ;VI_DATA_TYPE_YUV = 0,VI_DATA_TYPE_RGB = 1, +DataRev =FALSE ;Data reverse. FALSE = 0; TRUE = 1 +DevRect_x=200 ; +DevRect_y=20 ; +DevRect_w=1280 ; +DevRect_h=720 ; +FullLinesStd=750 + +[vi_chn] +CapRect_X =320 +CapRect_Y =180 +CapRect_Width=1280 +CapRect_Height=720 +DestSize_Width=1280 +DestSize_Height=720 diff --git a/translated_sandbox/gk7205v200/etc/wfb.conf b/translated_sandbox/gk7205v200/etc/wfb.conf new file mode 100644 index 0000000..b2e7102 --- /dev/null +++ b/translated_sandbox/gk7205v200/etc/wfb.conf @@ -0,0 +1,18 @@ +wlan=wlan0 +region=BO +# By default used channel number, but, you may set freq instead. For ex: 2387M +channel=44 +#frequency=5220M +txpower=20 +driver_txpower_override=16 +bandwidth=20 +stbc=1 +ldpc=1 +mcs_index=1 +stream=0 +link_id=7669206 +udp_port=5600 +fec_k=8 +fec_n=12 +fec_timeout=0 +guard_interval=long diff --git a/translated_sandbox/gk7205v200/root/1080.sh b/translated_sandbox/gk7205v200/root/1080.sh new file mode 100644 index 0000000..cf4fa0b --- /dev/null +++ b/translated_sandbox/gk7205v200/root/1080.sh @@ -0,0 +1,8 @@ +#yaml-cli -s .isp.sensorConfig /etc/sensors/imx307_i2c_2l_1080p.ini #use this for imx307 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415.bin +yaml-cli -s .isp.exposure 10 +yaml-cli -s .video0.size 1920x1080 +yaml-cli -s .video0.fps 30 +yaml-cli -s .video0.crop 0x0x1920x1080 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/1080b.sh b/translated_sandbox/gk7205v200/root/1080b.sh new file mode 100644 index 0000000..d14d515 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/1080b.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 1920x1080 +yaml-cli -s .video0.crop 0x0x1920x1080 +yaml-cli -s .video0.fps 60 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415f.bin +yaml-cli -s .isp.exposure 20 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/1080c.sh b/translated_sandbox/gk7205v200/root/1080c.sh new file mode 100644 index 0000000..b76b609 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/1080c.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 1920x1080 +yaml-cli -s .video0.crop 0x0x1920x1080 +yaml-cli -s .video0.fps 90 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415f.bin +yaml-cli -s .isp.exposure 30 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/3K.sh b/translated_sandbox/gk7205v200/root/3K.sh new file mode 100644 index 0000000..fc79202 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/3K.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 3200x1800 +yaml-cli -s .video0.crop 250x150x2560x1440 +yaml-cli -s .video0.fps 30 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415.bin +yaml-cli -s .isp.exposure 10 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/4K.sh b/translated_sandbox/gk7205v200/root/4K.sh new file mode 100644 index 0000000..3bf5689 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/4K.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 3840x2160 +yaml-cli -s .video0.crop 575x330x2560x1440 +yaml-cli -s .video0.fps 20 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415.bin +yaml-cli -s .isp.exposure 10 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/720.sh b/translated_sandbox/gk7205v200/root/720.sh new file mode 100644 index 0000000..96d9a67 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/720.sh @@ -0,0 +1,9 @@ +#yaml-cli -s .isp.sensorConfig /etc/sensors/720p30_imx307_50.ini #use this for imx307 +#yaml-cli -s .video0.fps 50 #use thise for imx307 +yaml-cli -s .video0.size 1280x720 +yaml-cli -s .video0.fps 30 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415.bin +yaml-cli -s .isp.exposure 10 +yaml-cli -s .video0.crop 0x0x1280x720 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/720b.sh b/translated_sandbox/gk7205v200/root/720b.sh new file mode 100644 index 0000000..153ffca --- /dev/null +++ b/translated_sandbox/gk7205v200/root/720b.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 1280x720 +yaml-cli -s .video0.crop 0x0x1280x720 +yaml-cli -s .video0.fps 60 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415f.bin +yaml-cli -s .isp.exposure 20 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/720c.sh b/translated_sandbox/gk7205v200/root/720c.sh new file mode 100644 index 0000000..0cb4f2a --- /dev/null +++ b/translated_sandbox/gk7205v200/root/720c.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 1280x720 +yaml-cli -s .video0.crop 0x0x1280x720 +yaml-cli -s .video0.fps 90 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415f.bin +yaml-cli -s .isp.exposure 30 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/720d.sh b/translated_sandbox/gk7205v200/root/720d.sh new file mode 100644 index 0000000..1bff613 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/720d.sh @@ -0,0 +1,7 @@ +yaml-cli -s .video0.size 1280x720 +yaml-cli -s .video0.crop 0x0x1280x720 +yaml-cli -s .video0.fps 120 +yaml-cli -s .isp.sensorConfig /etc/sensors/imx415f.bin +yaml-cli -s .isp.exposure 30 +sleep .2 +/root/kill.sh diff --git a/translated_sandbox/gk7205v200/root/channels.sh b/translated_sandbox/gk7205v200/root/channels.sh new file mode 100644 index 0000000..e16528a --- /dev/null +++ b/translated_sandbox/gk7205v200/root/channels.sh @@ -0,0 +1,92 @@ +echo $1 $2 >>/tmp/channels.log + +#channel 5 +if [ $1 -eq 5 ]; then + if [ $2 -gt 1600 ]; then + CURRENT_SIZE=`yaml-cli -g .video0.size` + if [ $CURRENT_SIZE == '1280x720' ]; then + /root/1080.sh + sleep 3 + else + /root/720.sh + sleep 3 + fi + fi +fi + +#channel 6 +#if [ $1 -eq 6 ]; then +# if [ $2 -lt 1600 ]; then +# /root/ircut.sh off +# else +# /root/ircut.sh on +# fi +#fi + +if [ $1 -eq 6 ]; then + if [ $2 -gt 1600 ]; then + CURRENT_SIZE=`yaml-cli -g .video0.size` + CURRENT_FPS=`yaml-cli -g .video0.fps` + if [ $CURRENT_SIZE == '1280x720' ] && [ $CURRENT_FPS == '30' ] ; then + /root/720b.sh + sleep 3 + elif [ $CURRENT_SIZE == '1280x720' ] && [ $CURRENT_FPS == '60' ] ; then + /root/720c.sh + sleep 3 + elif [ $CURRENT_SIZE == '1280x720' ] && [ $CURRENT_FPS == '90' ] ; then + /root/720d.sh + sleep 3 + elif [ $CURRENT_SIZE == '1280x720' ] && [ $CURRENT_FPS == '120' ] ; then + /root/1080.sh + sleep 3 + elif [ $CURRENT_SIZE == '1920x1080' ] && [ $CURRENT_FPS == '30' ] ; then + /root/1080b.sh + sleep 3 + elif [ $CURRENT_SIZE == '1920x1080' ] && [ $CURRENT_FPS == '60' ] ; then + /root/1080c.sh + sleep 3 + elif [ $CURRENT_SIZE == '1920x1080' ] && [ $CURRENT_FPS == '90' ] ; then + /root/3K.sh + sleep 3 + elif [ $CURRENT_SIZE == '3200x1800' ]; then + /root/4K.sh + sleep 3 + else + /root/720.sh + sleep 3 + fi + fi +fi + +#channel 7 +if [ $1 -eq 7 ]; then + if [ $2 -lt 1400 ]; then + yaml-cli -s .image.luminance 50 + killall -1 majestic + elif [ $2 -gt 1400 ] && [ $2 -lt 1600 ]; then + yaml-cli -s .image.luminance 90 + killall -1 majestic + else + yaml-cli -s .image.luminance 30 + killall -1 majestic + fi +fi + +#channel 8 +if [ $1 -eq 8 ]; then + if [ $2 -gt 1600 ]; then + CURRENT_BITRATE=`yaml-cli -g .video0.bitrate` + if [ $CURRENT_BITRATE -lt 7168 ]; then + NEW_BITRATE="$(($CURRENT_BITRATE+1024))" + else + NEW_BITRATE="1024" + sleep 2 + fi + yaml-cli -s .video0.bitrate $NEW_BITRATE + sleep .2 + /root/kill.sh + fi + sleep 3 +fi + +exit 1 diff --git a/translated_sandbox/gk7205v200/root/channels2.sh b/translated_sandbox/gk7205v200/root/channels2.sh new file mode 100644 index 0000000..21e9fd2 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/channels2.sh @@ -0,0 +1,19 @@ +if [ $1 -eq 7 ]; then + if [ $2 -gt 1600 ]; then + /root/ircut.sh on + elif [ $2 -gt 1400 ] && [ $2 -lt 1600 ]; then + /root/ircut.sh off + fi +fi + +if [ $1 -eq 8 ]; then + if [ $2 -gt 1600 ]; then + killall venc + venc -p 5600 -f 30 -r 12288 -c 265cbr -v 200_imx307F -d frame --low-delay & + elif [ $2 -gt 1400 ] && [ $2 -lt 1600 ]; then + killall venc + venc -p 5600 -f 50 -r 12288 -c 265cbr -v 200_imx307B -d frame & + fi +fi + +exit 1 diff --git a/translated_sandbox/gk7205v200/root/ircut.sh b/translated_sandbox/gk7205v200/root/ircut.sh new file mode 100644 index 0000000..4e6adf0 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/ircut.sh @@ -0,0 +1,32 @@ +#use: ./ircut.sh on | off + +function gpio_setup { + if [ ! -e /sys/class/gpio/gpio$1 ]; then + echo $1 > /sys/class/gpio/export + fi + echo $2 > /sys/class/gpio/gpio$1/direction +} + +function set_gpio { + echo $2 > /sys/class/gpio/gpio$1/value +} + +function ircut_on { + set_gpio 8 0 + set_gpio 9 1 + sleep 0.1 + set_gpio 8 0 +} + +function ircut_off { + set_gpio 8 1 + set_gpio 9 0 + sleep 0.1 + set_gpio 8 0 +} + +gpio_setup 8 out +gpio_setup 9 out +ircut_$1 + + diff --git a/translated_sandbox/gk7205v200/root/kill.sh b/translated_sandbox/gk7205v200/root/kill.sh new file mode 100644 index 0000000..2f901b1 --- /dev/null +++ b/translated_sandbox/gk7205v200/root/kill.sh @@ -0,0 +1,5 @@ +killall majestic +sleep 1 +majestic +sleep 5 +gkrcparams --MaxQp 30 --MaxI 2 diff --git a/translated_sandbox/gk7205v200/u-boot-gk7205v200-universal.bin b/translated_sandbox/gk7205v200/u-boot-gk7205v200-universal.bin new file mode 100644 index 0000000..6359662 Binary files /dev/null and b/translated_sandbox/gk7205v200/u-boot-gk7205v200-universal.bin differ diff --git a/translated_sandbox/gk7205v200/usr/bin/telemetry b/translated_sandbox/gk7205v200/usr/bin/telemetry new file mode 100644 index 0000000..d32fbf2 --- /dev/null +++ b/translated_sandbox/gk7205v200/usr/bin/telemetry @@ -0,0 +1,57 @@ +#!/bin/sh +# +# Start telemetry +# + +. /etc/datalink.conf +. /etc/telemetry.conf + +keydir="/etc" + +fw=$(grep "BUILD_OPTION" "/etc/os-release" | cut -d= -f2) + +start_telemetry() { + if [ ! -f /usr/bin/telemetry_rx -a ! -f /usr/bin/telemetry_tx ]; then + ln -s /usr/bin/wfb_rx /usr/bin/telemetry_rx ; chmod +x /usr/bin/telemetry_rx + ln -s /usr/bin/wfb_tx /usr/bin/telemetry_tx ; chmod +x /usr/bin/telemetry_tx + else + if [ ${one_way} = "false" ]; then + if [ -z "${link_id}" ]; then + telemetry2_rx -r ${stream_rx} -u ${port_rx} -K ${keydir}/drone.key ${wlan} >/dev/null & + else + telemetry_rx -p ${stream_rx} -u ${port_rx} -K ${keydir}/drone.key -i ${link_id} ${wlan} >/dev/null & + fi + fi + if [ -z "${link_id}" ]; then + telemetry2_tx -r ${stream_tx} -u ${port_tx} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -p ${fec_p} ${wlan} >/dev/null & + else + telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${fec_timeout} -i ${link_id} ${wlan} >/dev/null & + fi + fi +} + +case "$1" in + start) + echo "Loading MAVLink telemetry service..." + + if [ ${router} -eq 1 ] || [ ${fw} = "lte" ]; then + /usr/bin/mavlink-routerd & + else + mavfwd --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} & + fi + if [ ${fw} = "fpv" ]; then + start_telemetry + fi + echo "Done." + ;; + stop) + echo "Stopping telemetry services..." + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + kill -9 $(pidof mavlink-routerd) + kill -9 $(pidof mavfwd) + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/translated_sandbox/gk7205v200/usr/bin/venc b/translated_sandbox/gk7205v200/usr/bin/venc new file mode 100644 index 0000000..fbf3052 Binary files /dev/null and b/translated_sandbox/gk7205v200/usr/bin/venc differ diff --git a/translated_sandbox/gk7205v200/usr/bin/wifibroadcast b/translated_sandbox/gk7205v200/usr/bin/wifibroadcast new file mode 100644 index 0000000..057a91d --- /dev/null +++ b/translated_sandbox/gk7205v200/usr/bin/wifibroadcast @@ -0,0 +1,156 @@ +#!/bin/sh +# +# Start wifibroadcast +# + +. /etc/datalink.conf +. /etc/wfb.conf + +keydir="/etc" +chip=$(ipcinfo -c) +vendor=$(ipcinfo -v) + +driver="" + +set_mcs() { + if [ ${vendor} = "ingenic" ]; then + mcs=$(ls -l /lib/firmware | grep "htc_9271" | awk {'print $11'} | cut -d "." -f3) + else + mcs=$(ls -l /lib/firmware/ath9k_htc | grep "htc_9271-1.4.0.fw" | cut -d "." -f6) + fi + if [ -z "${mcs}" ]; then + setmcs ${mcs_index} + fi + if [ ${mcs_index} -eq 1 ] || [ ${mcs_index} -eq 3 ]; then + if [ ! ${mcs_index} -eq ${mcs} ]; then + setmcs ${mcs_index} + sleep 3 + fi + fi +} + +# "0bda:8813" -> (8814) -> 8814au +# "0846:9052" -> (8811) -> 8821au + +detect_wifi_card() { + echo "Detecting wifi card vendor..." + devices=$(lsusb | cut -d ' ' -f6 | sort | uniq) + for card in ${devices} + do + case "${card}" in + "0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101") + driver="realtek" + modprobe 88XXau rtw_tx_pwr_idx_override=${driver_txpower_override} + ;; + "0cf3:9271" | "040d:3801") + driver="atheros" + set_mcs + modprobe mac80211 + modprobe ath9k_htc + ;; + esac + done + + if [ -z "${driver}" ]; then + echo "No usb wifi card detected. Check wifi stick connection, usb power or possible bad soldering." + exit + else + echo "Detected:" ${driver} + fi + + echo "Awaiting interface ${wlan} in system..." + + local n=0 + while ! $(ifconfig -a | grep -q ${wlan}) + do + if [ ${n} -ge 5 ]; then + echo "No interface ${wlan}. Check wifi stick connection, usb power or possible bad soldering." + exit + fi + sleep 0.5 + n=$(expr ${n} + 1) + done +} + +load_modules() { + modprobe cfg80211 + detect_wifi_card +} + +load_interface() { + if [ ${driver} = "realtek" ]; then + ifconfig ${wlan} up + iwconfig ${wlan} mode monitor + elif [ ${driver} = "atheros" ]; then + iwconfig ${wlan} mode monitor + ifconfig ${wlan} up + fi + + iw reg set ${region} + + if [ ! -z "${frequency}" ]; then + iwconfig ${wlan} freq ${frequency} + else + iwconfig ${wlan} channel ${channel} + fi + # dirty fix crash if txpower set. setting txpower disabled because patched driver always set txpower level 58 + # iw dev ${wlan} set txpower fixed $((${txpower} * 100)) +} + +start_wfb() { + if [ -z "${link_id}" ]; then + wfb2_tx -r ${stream} -u ${udp_port} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -p ${fec_p} ${wlan} >/dev/null & + else + wfb_tx -p ${stream} -u ${udp_port} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${fec_timeout} -i ${link_id} ${wlan} & + fi +} + +case "$1" in + start) + if [ ${daemon} -eq 1 ]; then + + echo "Loading modules and wifi card driver..." + + load_modules + + echo "Preparing interface wlan..." + + load_interface + + if ! cat ${keydir}/drone.key > /dev/null 2>&1; then + echo "Generating drone & ground station keys..." + cd ${keydir} ; wfb_keygen + else + echo "Drone key exist..." + fi + + echo "Starting Wifibroadcast service..." + + start_wfb + + echo "Done." + + if [ ${telemetry} = "true" ]; then + if [ ${chip} = "gk7205v200" ]; then + # UART2_RX mux + devmem 0x120c0010 32 0x1e04 + fi + /usr/bin/telemetry start + fi + + else + echo "Wifibroadcast service disabled in wfb.conf..." + fi + ;; + stop) + echo "Stopping all services..." + kill -9 $(pidof wfb_tx) + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + kill -9 $(pidof mavlink-routerd) + kill -9 $(pidof mavfwd) + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/translated_sandbox/gk7205v200/usr/lib/sensors/libsns_imx307_2l_720p_50fps.so b/translated_sandbox/gk7205v200/usr/lib/sensors/libsns_imx307_2l_720p_50fps.so new file mode 100644 index 0000000..e47f809 Binary files /dev/null and b/translated_sandbox/gk7205v200/usr/lib/sensors/libsns_imx307_2l_720p_50fps.so differ diff --git a/translated_sandbox/gk7205v200/usr/sbin/gkrcparams b/translated_sandbox/gk7205v200/usr/sbin/gkrcparams new file mode 100644 index 0000000..9968e10 Binary files /dev/null and b/translated_sandbox/gk7205v200/usr/sbin/gkrcparams differ