Merge branch 'master' of github2:OpenIPC/firmware

pull/1887/head
Signor Pellegrino (from Citadel PC) 2024-10-20 15:20:47 +03:00
commit 83fa5ba904
58 changed files with 897 additions and 259 deletions

View File

@ -4,7 +4,7 @@ on:
branches:
- master
schedule:
- cron: '30 23 * * *'
- cron: '30 22 * * *'
workflow_dispatch:
env:
@ -37,6 +37,7 @@ jobs:
# Sigmastar [I6C]
- {"platform": "ssc377", "release": "lite"}
- {"platform": "ssc377d", "release": "lite"}
- {"platform": "ssc377de", "release": "lite"}
- {"platform": "ssc378de", "release": "lite"}

60
.github/workflows/image.yml vendored 100644
View File

@ -0,0 +1,60 @@
name: image
on:
schedule:
- cron: '30 23 * * *'
workflow_dispatch:
env:
SIGMASTAR: ssc30kd ssc30kq ssc325 ssc333 ssc335 ssc335de ssc337 ssc337de ssc338q ssc377 ssc377d ssc377de ssc378de
INGENIC: t10 t10l t20 t20l t20x t21n t30a t30a1 t30l t30n t30x t31a t31al t31l t31lc t31n t31x
jobs:
toolchain:
name: Image
runs-on: ubuntu-latest
steps:
- name: Prepare
run: |
link=https://github.com/openipc/firmware/releases/download/latest
create() {
uboot=u-boot-$1-nor.bin
firmware=openipc.$2-nor-$3.tgz
release=images/openipc-$1-nor-$3.bin
mkdir -p images output
if ! wget -nv $link/$uboot -O output/$1.bin; then
echo -e "Download failed: $link/$uboot\n"
return 0
fi
if ! wget -nv $link/$firmware -O output/$2.tgz; then
echo -e "Download failed: $link/$firmware\n"
return 0
fi
tar -xf output/$2.tgz -C output
dd if=/dev/zero bs=1K count=5000 status=none | tr '\000' '\377' > $release
dd if=output/$1.bin of=$release bs=1K seek=0 conv=notrunc status=none
dd if=output/uImage.$2 of=$release bs=1K seek=320 conv=notrunc status=none
dd if=output/rootfs.squashfs.$2 of=$release bs=1K seek=2368 conv=notrunc status=none
rm -rf output
echo -e "Created: $release\n"
}
for soc in $SIGMASTAR; do
create $soc $soc lite
create $soc $soc ultimate
done
for soc in $INGENIC; do
create $soc ${soc:0:3} lite
create $soc ${soc:0:3} ultimate
done
- name: Upload
uses: softprops/action-gh-release@v2
with:
tag_name: images
make_latest: false
files: images/*.bin

View File

@ -108,7 +108,6 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -108,7 +108,6 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -122,7 +122,6 @@ BR2_PACKAGE_ZEROTIER_ONE=y
# BR2_PACKAGE_NABTO is not set
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -108,7 +108,6 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -110,7 +110,6 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -108,7 +108,6 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -114,7 +114,6 @@ BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVFWD=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -111,7 +111,6 @@ BR2_PACKAGE_WIREGUARD_TOOLS=y
# BR2_PACKAGE_ONVIF_SIMPLE_SERVER is not set
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -128,7 +128,6 @@ BR2_PACKAGE_ZEROTIER_ONE=y
# BR2_PACKAGE_NABTO is not set
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -109,7 +109,6 @@ BR2_PACKAGE_WIREGUARD_TOOLS=y
# BR2_PACKAGE_ONVIF_SIMPLE_SERVER is not set
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -108,7 +108,6 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y
BR2_PACKAGE_WIREGUARD_TOOLS=y
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -119,7 +119,6 @@ BR2_PACKAGE_ZEROTIER_ONE=y
# BR2_PACKAGE_NABTO is not set
# DEBUG
BR2_PACKAGE_LOGCAT=y
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set

View File

@ -89,11 +89,11 @@ BR2_PACKAGE_ZLIB=y
# Wireless
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
# BR2_PACKAGE_WPA_SUPPLICANT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_CLI is not set
# BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_NL80211 is not set
# BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE is not set
BR2_PACKAGE_RTL8812AU_OPENIPC=y
BR2_PACKAGE_RTL88X2EU_OPENIPC=y
@ -102,6 +102,7 @@ BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y
# BR2_PACKAGE_MAVLINK_ROUTER is not set
BR2_PACKAGE_MAVFWD=y
BR2_PACKAGE_MSPOSD=y
# Debug
# BR2_PACKAGE_HOST_GDB is not set

View File

@ -94,11 +94,11 @@ BR2_PACKAGE_ZLIB=y
# Wireless
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
# BR2_PACKAGE_WPA_SUPPLICANT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_CLI is not set
# BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_NL80211 is not set
# BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE is not set
# BR2_PACKAGE_RTL8733BU_OPENIPC is not set
BR2_PACKAGE_RTL8812AU_OPENIPC=y
BR2_PACKAGE_RTL88X2EU_OPENIPC=y
@ -108,6 +108,7 @@ BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y
# BR2_PACKAGE_MAVLINK_ROUTER is not set
BR2_PACKAGE_MAVFWD=y
BR2_PACKAGE_MSPOSD=y
# Debug
# BR2_PACKAGE_HOST_GDB is not set

View File

@ -0,0 +1,116 @@
# Architecture
BR2_arm=y
BR2_cortex_a35=y
BR2_ARM_EABIHF=y
BR2_ARM_FPU_NEON_VFPV4=y
BR2_ARM_INSTRUCTIONS_THUMB2=y
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="5.10.61"
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y
# Toolchain
BR2_PER_PACKAGE_DIRECTORIES=y
BR2_GCC_VERSION_13_X=y
BR2_TOOLCHAIN_USES_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_LIBC="musl"
BR2_TOOLCHAIN_BUILDROOT_CXX=y
# BR2_TOOLCHAIN_BUILDROOT_LOCALE is not set
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/openipc/linux/archive/$(OPENIPC_KERNEL).tar.gz"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(EXTERNAL_VENDOR)/board/$(OPENIPC_SOC_FAMILY)/kernel/infinity6c-ssc027a.config"
BR2_LINUX_KERNEL_UIMAGE=y
BR2_LINUX_KERNEL_XZ=y
# OpenIPC
BR2_OPENIPC_SOC_VENDOR="sigmastar"
BR2_OPENIPC_SOC_MODEL="ssc377d"
BR2_OPENIPC_SOC_FAMILY="infinity6c"
BR2_OPENIPC_VARIANT="lite"
BR2_OPENIPC_FLASH_SIZE="8"
# Filesystem
# BR2_TARGET_TZ_INFO is not set
BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_SQUASHFS=y
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL)/overlay"
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL)/scripts/rootfs_script.sh"
# OpenIPC configuration
BR2_TOOLCHAIN_BUILDROOT_VENDOR="openipc"
BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC"
BR2_TARGET_GENERIC_HOSTNAME="openipc-ssc377d"
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL)/package/all-patches"
# OpenIPC packages
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config"
BR2_PACKAGE_DROPBEAR_OPENIPC=y
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
# BR2_PACKAGE_FDK_AAC_OPENIPC is not set
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_IPCTOOL=y
BR2_PACKAGE_JSON_C=y
BR2_PACKAGE_JSONFILTER=y
BR2_PACKAGE_LIBCURL_OPENIPC=y
BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y
# BR2_PACKAGE_LIBCURL_OPENIPC_VERBOSE is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_PROXY_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_COOKIES_SUPPORT is not set
# BR2_PACKAGE_LIBCURL_OPENIPC_EXTRA_PROTOCOLS_FEATURES is not set
BR2_PACKAGE_LIBCURL_OPENIPC_MBEDTLS=y
BR2_PACKAGE_LIBEVENT_OPENIPC=y
BR2_PACKAGE_LIBEVENT_OPENIPC_REMOVE_PYSCRIPT=y
BR2_PACKAGE_LIBOGG_OPENIPC=y
BR2_PACKAGE_LIBYAML=y
BR2_PACKAGE_MAJESTIC=y
BR2_PACKAGE_MAJESTIC_FONTS=y
BR2_PACKAGE_MAJESTIC_WEBUI=y
BR2_PACKAGE_MBEDTLS_OPENIPC=y
# BR2_PACKAGE_MBEDTLS_OPENIPC_PROGRAMS is not set
# BR2_PACKAGE_MBEDTLS_OPENIPC_COMPRESSION is not set
# BR2_PACKAGE_MINI_SNMPD is not set
# BR2_PACKAGE_MOTORS is not set
BR2_PACKAGE_OPUS_OPENIPC=y
BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y
BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6C=y
BR2_PACKAGE_EXFAT_OPENIPC=y
BR2_PACKAGE_EXFATPROGS=y
# BR2_PACKAGE_SSHPASS is not set
# BR2_PACKAGE_UACME_OPENIPC is not set
BR2_PACKAGE_VTUND_OPENIPC=y
BR2_PACKAGE_YAML_CLI=y
BR2_PACKAGE_ZLIB=y
# Wireless
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WIRELESS_REGDB=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
# BR2_PACKAGE_RTL8188FU_OPENIPC is not set
# Debug
# BR2_PACKAGE_HOST_GDB is not set
# BR2_PACKAGE_GDB is not set
# CCACHE
BR2_CCACHE=y
BR2_CCACHE_DIR="$(HOME)/.ccache"
BR2_OPTIMIZE_S=y
# External
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-openipc-linux-musleabihf"
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10=y
BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/openipc/firmware/releases/download/$(OPENIPC_TOOLCHAIN).tgz"

View File

@ -91,11 +91,11 @@ BR2_PACKAGE_ZLIB=y
# Wireless
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WIRELESS_REGDB=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
# BR2_PACKAGE_WPA_SUPPLICANT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_CLI is not set
# BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT is not set
# BR2_PACKAGE_WPA_SUPPLICANT_NL80211 is not set
# BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE is not set
BR2_PACKAGE_RTL8812AU_OPENIPC=y
BR2_PACKAGE_RTL88X2EU_OPENIPC=y
@ -104,6 +104,7 @@ BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y
# BR2_PACKAGE_MAVLINK_ROUTER is not set
BR2_PACKAGE_MAVFWD=y
BR2_PACKAGE_MSPOSD=y
# Debug
# BR2_PACKAGE_HOST_GDB is not set

View File

@ -48,6 +48,14 @@ if [ "$1" = "mt7601u-gk7205v200-camhi" ]; then
exit 0
fi
# GK7205V300 CamHi
if [ "$1" = "mt7601u-gk7205v300-camhi" ]; then
devmem 0x100C0080 32 0x530
set_gpio 7 0
modprobe mt7601u
exit 0
fi
# GK7205V200 CamHi
if [ "$1" = "rtl8733bu-gk7205v200-camhi" ]; then
set_gpio 9 0

View File

@ -1,6 +1,6 @@
#!/bin/sh
#
# OpenIPC.org | v.20220722
# OpenIPC.org | v.20241008
#
set -e
@ -18,7 +18,7 @@ prepare() {
ittb_folder="ittb_V1.0.1.2"
;;
gk7205v200 | gk7205v300)
gk7205v200 | gk7205v210 | gk7205v300)
echo -e "\n\e[1;31mA supported processor with unknown MPP was found...\e[0m\n"
echo -e "\n\e[1;31mDownload PQTools from https://github.com/widgetii/pqtools/raw/master/gk7205v200/PQTools.tgz\e[0m\n"
ittb_url="https://raw.githubusercontent.com/widgetii/pqtools/master/gk7205v200/ittb_V1.0.2.0.tgz"

View File

@ -3,7 +3,7 @@
# OpenIPC.org | 2024
#
scr_version=1.0.41
scr_version=1.0.42
args=" $@"
@ -93,8 +93,8 @@ download_firmware() {
[ -z "$url" ] && url=$(fw_printenv -n upgrade || echo "https://github.com/OpenIPC/firmware/releases/download/${branch}/openipc.${build}.tgz")
echo "Download from $url"
[ -z "$HASERLVER" ] && progress="-#" || progress="-s"
[ "$(curl -o /dev/null -s -w '%{http_code}\n' "$url")" = "000" ] && die "Check your network!"
curl --connect-timeout 30 -s -m 120 -L "$url" ${progress} -o - | gzip -d | tar xf - -C /tmp && echo_c 32 "Received and unpacked" || die "Cannot retrieve $url"
[ "$(curl -o /dev/null -s -k -w '%{http_code}\n' "$url")" = "000" ] && die "Check your network!"
curl --connect-timeout 30 -s -k -m 120 -L "$url" ${progress} -o - | gzip -d | tar xf - -C /tmp && echo_c 32 "Received and unpacked" || die "Cannot retrieve $url"
if [ "1" != "$skip_md5" ]; then
(cd /tmp && md5sum -s -c *.md5sum) || die "Wrong checksum!"
fi

View File

@ -57,7 +57,6 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/libsrtp-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/libwebsockets-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/linux-firmware-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/linux-patcher/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/logcat/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/lshell/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-fonts/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-plugins/Config.in"
@ -70,6 +69,7 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/microsnander/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/mini-snmpd-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/mini/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/motors/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/msposd/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/mt7601u-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/nabto/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/node-exporter/Config.in"
@ -111,6 +111,7 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/vtund-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/webui/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/webrtc-audio-processing-openipc/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/wifibroadcast/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/wifibroadcast-ng/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/xiongmai-opensdk-xm510/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/xiongmai-osdrv-xm510/Config.in"
source "$BR2_EXTERNAL_GENERAL_PATH/package/xiongmai-osdrv-xm530/Config.in"

View File

@ -6,6 +6,29 @@ if [ -e /etc/datalink.conf ]; then
. /etc/datalink.conf
fi
start_lte() {
echo "Starting fpv datalink..."
if [ "$usb_modem" = "true" ]; then
echo "Starting lte modem configuration..."
fi
if [ "$use_zt" = "true" ]; then
echo "Starting ZeroTier-One daemon..."
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 to authorize my.zerotier.com!"
fi
fi
if [ "$telemetry" = "true" ]; then
telemetry start
fi
exit 0
}
case "$1" in
start)
if [ -n "$(fw_printenv -n wlandev)" ]; then
@ -16,39 +39,17 @@ case "$1" in
tweaksys "$chip"
fi
echo "Starting fpv datalink..."
if [ "$fw" = "lte" ]; then
if [ "$usb_modem" = "true" ]; then
echo "Starting lte modem configuration..."
fi
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 to authorize my.zerotier.com!"
fi
fi
if [ "$telemetry" = "true" ]; then
telemetry start
fi
else
echo "Starting wifibroadcast service..."
wifibroadcast start
start_lte
fi
echo "Starting wifibroadcast service..."
wifibroadcast start
;;
stop)
echo "Stopping fpv datalink service..."
killall -q wfb_tx
killall -q wfb_rx
killall -q telemetry_rx
killall -q telemetry_tx
killall -q mavlink-routerd
killall -q mavfwd
echo "Stopping wifibroadcast service..."
wifibroadcast stop
;;
*)

View File

@ -1,5 +1,6 @@
daemon=1
telemetry=true
tunnel=false
### only for lte firmware
usb_modem=false

View File

@ -10,9 +10,9 @@ if [ -e /etc/telemetry.conf ]; then
. /etc/telemetry.conf
fi
if [ ! -f /usr/bin/telemetry_rx ] && [ ! -f /usr/bin/telemetry_tx ]; then
ln -s /usr/bin/wfb_rx /usr/bin/telemetry_rx
ln -s /usr/bin/wfb_tx /usr/bin/telemetry_tx
if [ ! -e /usr/bin/telemetry_rx ] || [ ! -e /usr/bin/telemetry_tx ]; then
ln -fs /usr/bin/wfb_rx /usr/bin/telemetry_rx
ln -fs /usr/bin/wfb_tx /usr/bin/telemetry_tx
fi
start_drone_telemetry() {
@ -39,9 +39,15 @@ case "$1" in
if [ "$router" -eq 1 ] || [ "$fw" = "lte" ]; then
mavlink-routerd -c /etc/mavlink.conf > /dev/null 2>&1 &
else
mavfwd --channels "$channels" --master "$serial" --baudrate "$baud" -p 100 -t -a "$aggregate" \
--out 127.0.0.1:$port_tx --in 127.0.0.1:$port_rx > /dev/null &
if [ "$router" -eq 2 ]; then
msposd --master "$serial" --baudrate "$baud" --channels "$channels" \
--out 127.0.0.1:14555 -osd -r "$fps" --ahi "$ahi" > /dev/null &
else
mavfwd --channels "$channels" --master "$serial" --baudrate "$baud" -p 100 -t -a "$aggregate" \
--out 127.0.0.1:$port_tx --in 127.0.0.1:$port_rx > /dev/null &
fi
fi
if [ "$fw" = "fpv" ] || [ "$fw" = "venc" ]; then
start_${unit}_telemetry
fi
@ -53,6 +59,7 @@ case "$1" in
killall -q telemetry_tx
killall -q mavlink-routerd
killall -q mavfwd
killall -q msposd
;;
*)

View File

@ -4,7 +4,7 @@ unit=drone
serial=/dev/ttyAMA0
baud=115200
### router: use simple mavfwd (0) or classic mavlink-routerd (1)
### router: use simple mavfwd (0), classic mavlink-routerd (1) or msposd instead of mavfwd (2)
router=0
wlan=wlan0
@ -27,3 +27,7 @@ aggregate=15
### for mavfwd: RC override channels to parse after first 4 and call /usr/sbin/channels.sh $ch $val, default 0
channels=8
### for msposd: OSD over video
fps=20
ahi=0

View File

@ -25,7 +25,6 @@ hisi_goke() {
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}"
@ -87,6 +86,7 @@ finish() {
}
sigmastar() {
sed -i "s|tunnel=false|tunnel=true|g" /etc/datalink.conf
sed -i "s|serial=/dev/ttyAMA0|serial=/dev/ttyS2|g" /etc/telemetry.conf
sed -i "s|Device = /dev/ttyAMA0|Device = /dev/ttyS2|g" /etc/mavlink.conf

View File

@ -0,0 +1,5 @@
config BR2_PACKAGE_GK7205V200_MOTORS
bool "gk7205v200-motors"
default n
help
Sample code to control gk7205v200 motors.

View File

@ -0,0 +1,19 @@
################################################################################
#
# gk7205v200-motors
#
################################################################################
GK7205V200_MOTORS_SITE_METHOD = local
GK7205V200_MOTORS_SITE = $(GK7205V200_MOTORS_PKGDIR)/src
define GK7205V200_MOTORS_BUILD_CMDS
$(MAKE) CC=$(TARGET_CC) -C $(@D)
endef
define GK7205V200_MOTORS_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/output/motor
endef
$(eval $(generic-package))

View File

@ -0,0 +1,3 @@
motor:
mkdir -p output
$(CC) $@.c -o output/$@ -s -Wall

View File

@ -0,0 +1,154 @@
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <linux/gpio.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#define STEP_TIME 1000
#define STEP_COUNT 1
#define SEQ_COUNT 8
typedef struct {
const char *name;
int gpio_x[4];
int gpio_y[4];
} config;
static config list[] = {
{ "gk7205v200", { 52, 53, 56, 57 }, { 69, 70, 59, 58 }, },
};
const char* dev_name[] = { "/dev/gpiochip0", "/dev/gpiochip1", "/dev/gpiochip2", "/dev/gpiochip3",
"/dev/gpiochip4", "/dev/gpiochip5", "/dev/gpiochip6", "/dev/gpiochip7",
};
static int sequence[][4] = {
{ 1, 0, 0, 0 }, { 1, 1, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 1, 0 },
{ 0, 0, 1, 0 }, { 0, 0, 1, 1 }, { 0, 0, 0, 1 }, { 1, 0, 0, 1 },
{ 1, 0, 0, 1 }, { 0, 0, 0, 1 }, { 0, 0, 1, 1 }, { 0, 0, 1, 0 },
{ 0, 1, 1, 0 }, { 0, 1, 0, 0 }, { 1, 1, 0, 0 }, { 1, 0, 0, 0 },
};
static int write_gpio(int pin, int val) {
struct gpiohandle_request rq;
struct gpiohandle_data data;
unsigned char gpiochip = ((pin >> 3) == 0) ? 0 : (pin >> 3) - 1;
pin = (int) (pin & 7);
int fd = open(dev_name[gpiochip], O_RDONLY);
if (fd < 0) {
printf("Unable to open chip: %s\n", strerror(errno));
return 1;
}
rq.lineoffsets[0] = pin;
rq.flags = GPIOHANDLE_REQUEST_OUTPUT;
rq.lines = 1;
if (ioctl(fd, GPIO_GET_LINEHANDLE_IOCTL, &rq) < 0) {
printf("Unable to request gpio %d: [%d] %s\n", pin, errno, strerror(errno));
return 1;
}
close(fd);
data.values[0] = val;
if (ioctl(rq.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data) < 0) {
printf("Unable to set value %d: %s\n", val, strerror(errno));
return 1;
}
close(rq.fd);
return 0;
}
static int motor_control(int *gpio, int count) {
for (int i = count; i < count + SEQ_COUNT; i++) {
for (int j = 0; j < 4; j++) {
if (write_gpio(gpio[j], sequence[i][j])) {
return 1;
}
usleep(STEP_TIME);
}
}
return 0;
}
static int gpio_export(int *gpio) {
for (int i = 0; i < 4; i++) {
if (write_gpio(gpio[i], 0)) {
return 1;
}
}
return 0;
}
int main(int argc, char **argv) {
if (argc < 3 || argc > 4) {
printf("Usage: %s [device] [x_step] [y_step]\n", argv[0]);
return -1;
}
int dev = -1;
for (int i = 0; i < sizeof(list) / sizeof(config); i++) {
if (strstr(argv[1], list[i].name)) {
dev = i;
break;
}
}
if (dev < 0) {
printf("Device not supported\n");
return -1;
}
int pid = open("/var/run/motor.pid", O_RDWR | O_CREAT, 0644);
if (flock(pid, LOCK_EX | LOCK_NB)) {
printf("Control in progress\n");
close(pid);
return -1;
}
int x = argv[2] ? atoi(argv[2]) : 0;
int y = argv[3] ? atoi(argv[3]) : 0;
if (gpio_export(list[dev].gpio_x) || gpio_export(list[dev].gpio_y)) {
close(pid);
return -1;
}
int count_x = abs(x) ? STEP_COUNT : 0;
int count_y = abs(y) ? STEP_COUNT : 0;
while (count_x || count_y) {
if (count_x) {
if (motor_control(list[dev].gpio_x, (x < 0) ? SEQ_COUNT : 0)) {
goto reset;
}
count_x--;
}
if (count_y) {
if (motor_control(list[dev].gpio_y, (y < 0) ? 0 : SEQ_COUNT)) {
goto reset;
}
count_y--;
}
}
reset:
gpio_export(list[dev].gpio_x);
gpio_export(list[dev].gpio_y);
close(pid);
return 0;
}

View File

@ -0,0 +1,67 @@
[sensor]
Sensor_type=stSnsgc4653_2lObj
Mode=WDR_MODE_NONE
DllFile=libsns_gc4653_2l.so
[mode]
input_mode=INPUT_MODE_MIPI
raw_bitness=10
clock=27MHz
[mipi]
lane_id = 0|1|-1|-1|-1|-1|-1|-1| ;lane_id: -1 - disable
[isp_image]
Isp_FrameRate=25
Isp_Bayer=BAYER_GRBG
[vi_dev]
Input_mod=VI_MODE_MIPI
Work_mod = VI_WORK_MODE_1Multiplex
Mask_num = 2
Mask_0 = 0xFFC00000
Mask_1 = 0x0
Scan_mode = VI_SCAN_PROGRESSIVE
Data_seq = VI_DATA_SEQ_YUYV
Vsync =1 ; vertical synchronization signal
;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 =2560 ;Horizontal effetive width
Timingblank_HsyncHbb =0 ;Horizontal back blanking width
Timingblank_VsyncVfb =0 ;Vertical front blanking height
Timingblank_VsyncVact =1440 ;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)
InputDataType=1 ;VI_DATA_TYPE_YUV = 0,VI_DATA_TYPE_RGB = 1,
DataRev =FALSE ;Data reverse. FALSE = 0; TRUE = 1
DevRect_w=2560
DevRect_h=1440
DevRect_x=0
DevRect_y=0
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 */

View File

@ -0,0 +1,79 @@
[sensor]
Sensor_type=stSnsSc3335Obj
Mode=WDR_MODE_NONE
DllFile=libsns_sc3335.so
[mode]
input_mode=INPUT_MODE_MIPI
raw_bitness=10
[mipi]
lane_id = 0|2|-1|-1|-1|-1|-1|-1| ;lane_id: -1 - disable
[isp_image]
Isp_FrameRate=20
Isp_Bayer=BAYER_BGGR
[vi_dev]
Input_mod=VI_MODE_MIPI
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 =2304 ;Horizontal effetive width
Timingblank_HsyncHbb =0 ;Horizontal back blanking width
Timingblank_VsyncVfb =0 ;Vertical front blanking height
Timingblank_VsyncVact =1296 ;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)
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=2304
DevRect_h=1296
FullLinesStd=1350

View File

@ -1,4 +0,0 @@
config BR2_PACKAGE_LOGCAT
bool "logcat"
help
Logcat tool for Ingenic

View File

@ -1,21 +0,0 @@
################################################################################
#
# logcat
# https://github.com/wltechblog/logcat-mini
#
################################################################################
LOGCAT_SITE_METHOD = local
LOGCAT_SITE = $(LOGCAT_PKGDIR)/src
LOGCAT_LICENSE = MIT
LOGCAT_LICENSE_FILES = LICENSE
define LOGCAT_BUILD_CMDS
$(TARGET_CC) $(@D)/logcat.c -o $(@D)/logcat -s
endef
define LOGCAT_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/logcat
endef
$(eval $(generic-package))

View File

@ -1,125 +0,0 @@
#include <errno.h>
#include <fcntl.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#define LOGGER_ENTRY_MAX_LEN (4 * 1024)
#define LOGGER_FLUSH_LOG _IO(__LOGGERIO, 4)
#define __LOGGERIO 0xAE
struct logger_entry {
uint16_t len;
uint16_t __pad;
int32_t pid;
int32_t tid;
int32_t sec;
int32_t nsec;
char msg[4096];
} entry;
enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
ANDROID_LOG_DEFAULT,
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT,
};
int main(int argc, char *argv[]) {
int fd;
int msize;
int readsize;
int numread;
if (argc > 1) {
if (strcmp(argv[1], "-c") == 0) {
fd = open("/dev/log_main", O_WRONLY);
if (fd < 0) {
perror("Error opening /dev/log_main\n");
return -1;
}
ioctl(fd, LOGGER_FLUSH_LOG);
close(fd);
return 0;
} else {
printf("Usage: %s [-c] [-h]\n", argv[0]);
printf("Options:\n");
printf(" -c Clear the log\n");
printf(" -h Show this help\n");
return 0;
}
}
fd = open("/dev/log_main", O_RDONLY);
if (fd < 0) {
perror("Error opening /dev/log_main\n");
return -1;
}
int pos;
while (1) {
numread = read(fd, &entry, LOGGER_ENTRY_MAX_LEN);
if (numread < 1) {
perror("Error: ");
strerror(errno);
return -1;
}
char *tag = entry.msg;
char *prog = entry.msg + 1;
char *msg = entry.msg + strlen(entry.msg) + 1;
char tagbyte;
switch (*tag) {
case ANDROID_LOG_UNKNOWN:
tagbyte = 'U';
break;
case ANDROID_LOG_DEFAULT:
tagbyte = '*';
break;
case ANDROID_LOG_VERBOSE:
tagbyte = 'V';
break;
case ANDROID_LOG_DEBUG:
tagbyte = 'D';
break;
case ANDROID_LOG_INFO:
tagbyte = 'I';
break;
case ANDROID_LOG_WARN:
tagbyte = 'W';
break;
case ANDROID_LOG_ERROR:
tagbyte = 'E';
break;
case ANDROID_LOG_FATAL:
tagbyte = 'F';
break;
case ANDROID_LOG_SILENT:
tagbyte = 'S';
break;
default:
tagbyte = '?';
break;
}
printf("%c/%s(%5d): %s", tagbyte, prog, entry.pid, msg);
}
}

View File

@ -4,9 +4,8 @@
#
################################################################################
MAVFWD_SITE_METHOD = git
MAVFWD_SITE = https://github.com/openipc/mavfwd
MAVFWD_VERSION = 70da7adbdbe36d371ca849c4a3bc3cadb54498d3
MAVFWD_SITE = $(call github,openipc,mavfwd,$(MAVFWD_VERSION))
MAVFWD_VERSION = HEAD
MAVFWD_LICENSE = MIT
MAVFWD_LICENSE_FILES = LICENSE
@ -14,15 +13,15 @@ MAVFWD_LICENSE_FILES = LICENSE
MAVFWD_DEPENDENCIES = libevent-openipc
define MAVFWD_BUILD_CMDS
(cd $(@D); $(TARGET_CC) -levent_core -s mavfwd.c -o mavfwd)
$(TARGET_CC) $(@D)/mavfwd.c -o $(@D)/mavfwd -levent_core -s
endef
define MAVFWD_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 0755 -D $(@D)/mavfwd $(TARGET_DIR)/usr/bin/mavfwd
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/mavfwd
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/sbin
cp $(MAVFWD_PKGDIR)/files/channels.sh $(TARGET_DIR)/usr/sbin
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/sbin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/sbin $(MAVFWD_PKGDIR)/files/channels.sh
endef
$(eval $(generic-package))

View File

@ -0,0 +1,4 @@
config BR2_PACKAGE_MSPOSD
bool "msposd"
help
OpenIPC implementation of MSP Displayport OSD.

View File

@ -0,0 +1,37 @@
################################################################################
#
# msposd
#
################################################################################
MSPOSD_SITE = $(call github,openipc,msposd,$(MSPOSD_VERSION))
MSPOSD_VERSION = HEAD
ifeq ($(OPENIPC_SOC_FAMILY),gk7205v200)
MSPOSD_FAMILY = goke
MSPOSD_OSDRV = $(GOKE_OSDRV_GK7205V200_PKGDIR)
else ifeq ($(OPENIPC_SOC_FAMILY),hi3516ev200)
MSPOSD_FAMILY = hisi
MSPOSD_OSDRV = $(HISILICON_OSDRV_HI3516EV200_PKGDIR)
else ifeq ($(OPENIPC_SOC_FAMILY),infinity6b0)
MSPOSD_FAMILY = star6b0
MSPOSD_OSDRV = $(SIGMASTAR_OSDRV_INFINITY6B0_PKGDIR)
else
MSPOSD_FAMILY = star6e
MSPOSD_OSDRV = $(SIGMASTAR_OSDRV_INFINITY6E_PKGDIR)
endif
define MSPOSD_BUILD_CMDS
$(MAKE) CC=$(TARGET_CC) DRV=$(MSPOSD_OSDRV)/files/lib $(MSPOSD_FAMILY) OUTPUT=$(@D) -C $(@D)
endef
define MSPOSD_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/msposd
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/share/fonts
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/share/fonts $(@D)/fonts/common/font.png
$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/share/fonts $(@D)/fonts/common/font_hd.png
endef
$(eval $(generic-package))

View File

@ -0,0 +1,5 @@
config BR2_PACKAGE_WIFIBROADCAST_NG
bool "wifibroadcast-ng"
help
Long-range packet radio link based on raw WiFi radio.
https://github.com/svpcom/wfb-ng

View File

@ -0,0 +1,18 @@
#!/bin/sh
case "$1" in
start)
echo "Starting wifibroadcast..."
wifibroadcast start
;;
stop)
echo "Stopping wifibroadcast..."
wifibroadcast stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

View File

@ -0,0 +1 @@
ЛЗэn<EFBFBD>Єj<EFBFBD><EFBFBD><EFBFBD> љ<C2A0>Ю+м<><D0BC>И GВ<5F>Ќ{FФ<>a<EFBFBD>ћp<D19B>tzfш<ц@НkОЕВQSz<53>ЂtЂc

View File

@ -0,0 +1,31 @@
#!/bin/sh
finish() {
touch /etc/system.ok
echo "Restart system to apply fpv changes..."
reboot
}
sigmastar() {
cli -s .isp.sensorConfig /etc/sensors/imx415_fpv.bin
cli -s .isp.exposure 5
cli -s .video0.codec h265
cli -s .video0.size 1920x1080
cli -s .video0.fps 90
cli -s .video0.rcMode cbr
cli -s .jpeg.enabled false
cli -s .outgoing.enabled true
cli -s .outgoing.server udp://0.0.0.0:5600
}
case "$1" in
ssc33x)
sigmastar
finish
;;
*)
echo "Usage: $0 {ssc33x}"
exit 1
;;
esac

View File

@ -0,0 +1,24 @@
# Broadcast
wlan=wlan0
region=00
channel=161
txpower=1
driver_txpower_override=1
bandwidth=20
stbc=0
ldpc=0
mcs_index=1
stream=0
link_id=7669206
rcv_buf=456000
fec_k=8
fec_n=12
# Telemetry
router=2
serial=/dev/ttyS2
baud=115200
channels=8
fps=20
port_rx=14551
port_tx=14555

View File

@ -0,0 +1,111 @@
#!/bin/sh
wfb_soc=$(ipcinfo -c)
wfb_key=/etc/drone.key
if [ -e /etc/wfb.conf ]; then
. /etc/wfb.conf
else
echo "Configuration file not found"
exit 1
fi
load_modules() {
for card in $(lsusb | awk '{print $6}' | sort | uniq); do
case "$card" in
"0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012")
driver="88XXau"
modprobe 88XXau rtw_tx_pwr_idx_override="$driver_txpower_override"
;;
"0bda:a81a")
driver="8812eu"
modprobe 8812eu rtw_regd_src=1 rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0
;;
"0bda:f72b")
driver="8733bu"
modprobe 8733bu rtw_regd_src=1 rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0
;;
esac
done
if [ -z "$driver" ]; then
echo "Wireless module not detected, check the usb connection"
exit 1
else
echo "Detected driver: $driver"
fi
}
load_interface() {
ifconfig "$wlan" up
iwconfig "$wlan" mode monitor
if [ "$driver" = "8812eu" ] || [ "$driver" = "8733bu" ]; then
iw dev "$wlan" set txpower fixed $((driver_txpower_override * 50))
fi
iw reg set "$region"
iwconfig "$wlan" channel "$channel"
}
start_wfb() {
echo "Starting wfb_tx"
wfb_tx -p "$stream" -R "$rcv_buf" -K "$wfb_key" -B "$bandwidth" -M "$mcs_index" -C 8000 \
-S "$stbc" -L "$ldpc" -k "$fec_k" -n "$fec_n" -i "$link_id" "$wlan" &> /dev/null &
}
start_tunnel() {
echo "Starting wfb_tun"
wfb_rx -p 160 -u 5800 -K "$wfb_key" -i "$link_id" "$wlan" &> /dev/null &
wfb_tx -p 32 -u 5801 -K "$wfb_key" -M "$mcs_index" -S "$stbc" -L "$ldpc" \
-k "$fec_k" -n "$fec_n" -i "$link_id" "$wlan" &> /dev/null &
wfb_tun -a 10.5.0.10/24 > /dev/null &
}
start_telemetry() {
if [ "$wfb_soc" = "gk7205v200" ]; then
devmem 0x120C0010 32 0x1E04
elif [ "$wfb_soc" = "ssc33x" ]; then
devmem 0x1F207890 16 0x8
fi
if [ "$router" -eq 2 ]; then
echo "Starting msposd"
msposd --master "$serial" --baudrate "$baud" --channels "$channels" \
-osd -r "$fps" --ahi 0 --out 10.5.0.1:"$port_tx" > /dev/null &
else
echo "Starting mavfwd"
mavfwd --master "$serial" --baudrate "$baud" --channels "$channels" -p 100 -t \
-a 15 --in 0.0.0.0:"$port_rx" --out 10.5.0.1:"$port_tx" > /dev/null &
fi
}
case "$1" in
start)
if [ ! -e /etc/system.ok ]; then
echo "Preparing system tweaks for $wfb_soc..."
tweaksys "$wfb_soc"
fi
load_modules
load_interface
start_wfb
start_tunnel
start_telemetry
;;
stop)
killall -q wfb_rx
killall -q wfb_tx
killall -q wfb_tun
killall -q msposd
killall -q mavfwd
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

View File

@ -0,0 +1,29 @@
################################################################################
#
# wifibroadcast-ng
#
################################################################################
WIFIBROADCAST_NG_VERSION = 3a053040442174e6c1ce76866c6da4b12c19dbb4
WIFIBROADCAST_NG_SITE = $(call github,svpcom,wfb-ng,$(WIFIBROADCAST_NG_VERSION))
WIFIBROADCAST_NG_LICENSE = GPL-3.0
WIFIBROADCAST_NG_DEPENDENCIES += libpcap libsodium iw
define WIFIBROADCAST_NG_BUILD_CMDS
$(MAKE) CC=$(TARGET_CC) CXX=$(TARGET_CXX) LDFLAGS=-s -C $(@D) all_bin
endef
define WIFIBROADCAST_NG_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc
$(INSTALL) -m 644 -t $(TARGET_DIR)/etc $(WIFIBROADCAST_NG_PKGDIR)/files/drone.key
$(INSTALL) -m 644 -t $(TARGET_DIR)/etc $(WIFIBROADCAST_NG_PKGDIR)/files/wfb.conf
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_rx
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_tx
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_tun
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(WIFIBROADCAST_NG_PKGDIR)/files/wifibroadcast
endef
$(eval $(generic-package))

View File

@ -116,6 +116,18 @@ start_gs_wfb() {
wfb_rx -c "$udp_addr" -u "$udp_port" -p "$stream" -K "$keydir/$unit.key" -i "$link_id" "$wlan" > /dev/null &
}
start_tunnel_wfb() {
if [ ! -e /usr/bin/tunnel_rx ] || [ ! -e /usr/bin/tunnel_tx ]; then
ln -fs /usr/bin/wfb_rx /usr/bin/tunnel_rx
ln -fs /usr/bin/wfb_tx /usr/bin/tunnel_tx
fi
tunnel_rx -p 160 -u 5800 -K "$keydir/$unit.key" -i "$link_id" "$wlan" > /dev/null &
tunnel_tx -p 32 -u 5801 -K "$keydir/$unit.key" -M "$mcs_index" -S "$stbc" -L "$ldpc" \
-k "$fec_k" -n "$fec_n" -i "$link_id" "$wlan" > /dev/null &
wfb_tun -a 10.5.0.10/24 > /dev/null &
}
case "$1" in
start)
if [ "$daemon" -eq 1 ]; then
@ -132,14 +144,18 @@ case "$1" in
if [ "$telemetry" = "true" ]; then
if [ "$chip" = "gk7205v200" ]; then
devmem 0x120c0010 32 0x1e04
devmem 0x120C0010 32 0x1E04
elif [ "$chip" = "ssc33x" ]; then
devmem 0x1F207890 16 0x8
fi
telemetry start
fi
if [ "$tunnel" = "true" ]; then
start_tunnel_wfb
fi
else
echo "Wifibroadcast service disabled in wfb.conf."
echo "Wifibroadcast service disabled in wfb.conf"
fi
;;
@ -147,10 +163,16 @@ case "$1" in
echo "Stopping wifibroadcast service..."
killall -q wfb_tx
killall -q wfb_rx
killall -q telemetry_rx
killall -q telemetry_tx
killall -q mavlink-routerd
killall -q mavfwd
if [ "$telemetry" = "true" ]; then
telemetry stop
fi
if [ "$tunnel" = "true" ]; then
killall -q tunnel_rx
killall -q tunnel_tx
killall -q wfb_tun
fi
;;
*)

View File

@ -4,8 +4,8 @@
#
################################################################################
WIFIBROADCAST_VERSION = 24.08.1
WIFIBROADCAST_SITE = $(call github,svpcom,wfb-ng,wfb-ng-$(WIFIBROADCAST_VERSION))
WIFIBROADCAST_VERSION = 3a053040442174e6c1ce76866c6da4b12c19dbb4
WIFIBROADCAST_SITE = $(call github,svpcom,wfb-ng,$(WIFIBROADCAST_VERSION))
WIFIBROADCAST_LICENSE = GPL-2.0
WIFIBROADCAST_UNIT = drone
@ -15,35 +15,27 @@ endif
WIFIBROADCAST_DEPENDENCIES += libpcap libsodium iw
WIFIBROADCAST_MAKE_OPTS = \
CC="$(TARGET_CC)" \
CXX="$(TARGET_CXX)"
define WIFIBROADCAST_BUILD_CMDS
$(MAKE) $(WIFIBROADCAST_MAKE_OPTS) -C $(@D) all_bin
$(MAKE) CC=$(TARGET_CC) CXX=$(TARGET_CXX) LDFLAGS=-s -C $(@D) all_bin
endef
define WIFIBROADCAST_INSTALL_TARGET_CMDS
$(INSTALL) -m 0755 -D $(@D)/wfb_tx $(TARGET_DIR)/usr/bin
$(INSTALL) -m 0755 -D $(@D)/wfb_tx_cmd $(TARGET_DIR)/usr/bin
$(INSTALL) -m 0755 -D $(@D)/wfb_rx $(TARGET_DIR)/usr/bin
$(INSTALL) -m 0755 -D $(@D)/wfb_keygen $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc
cp $(WIFIBROADCAST_PKGDIR)/files/wfb_$(WIFIBROADCAST_UNIT).conf $(TARGET_DIR)/etc/wfb.conf
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
cp $(WIFIBROADCAST_PKGDIR)/files/wifibroadcast $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc
cp $(WIFIBROADCAST_PKGDIR)/files/$(WIFIBROADCAST_UNIT).key $(TARGET_DIR)/etc/$(WIFIBROADCAST_UNIT).key
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
cp $(WIFIBROADCAST_PKGDIR)/files/setmcs $(TARGET_DIR)/usr/bin
$(INSTALL) -m 644 -D $(WIFIBROADCAST_PKGDIR)/files/$(WIFIBROADCAST_UNIT).key $(TARGET_DIR)/etc/$(WIFIBROADCAST_UNIT).key
$(INSTALL) -m 644 -D $(WIFIBROADCAST_PKGDIR)/files/wfb_$(WIFIBROADCAST_UNIT).conf $(TARGET_DIR)/etc/wfb.conf
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/firmware/ath9k_htc
cp $(WIFIBROADCAST_PKGDIR)/files/htc_9271.fw.1 $(TARGET_DIR)/lib/firmware/ath9k_htc
$(INSTALL) -m 755 -d $(TARGET_DIR)/lib/firmware/ath9k_htc
cp $(WIFIBROADCAST_PKGDIR)/files/htc_9271.fw.3 $(TARGET_DIR)/lib/firmware/ath9k_htc
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/firmware/ath9k_htc $(WIFIBROADCAST_PKGDIR)/files/htc_9271.fw.1
$(INSTALL) -m 644 -t $(TARGET_DIR)/lib/firmware/ath9k_htc $(WIFIBROADCAST_PKGDIR)/files/htc_9271.fw.3
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_rx
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_tx
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_tx_cmd
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_keygen
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_tun
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(WIFIBROADCAST_PKGDIR)/files/setmcs
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(WIFIBROADCAST_PKGDIR)/files/wifibroadcast
endef
$(eval $(generic-package))

View File

@ -14,7 +14,6 @@
/etc/sensors/iq/gc2053.ini
/etc/sensors/iq/sc2232.ini
/etc/sensors/iq/sc2335.ini
/lib/modules/4.9.37/goke/gk7205v200_rgn.ko
/lib/modules/4.9.37/goke/gk7205v200_jpege.ko
/lib/modules/4.9.37/goke/gk7205v200_ive.ko
/lib/modules/4.9.37/goke/gk7205v200_aio.ko

View File

@ -13,7 +13,6 @@
/etc/sensors/iq/gc2053.ini
/etc/sensors/iq/sc2232.ini
/etc/sensors/iq/sc2335.ini
/lib/modules/4.9.37/extra/open_rgn.ko
/lib/modules/4.9.37/extra/open_jpege.ko
/lib/modules/4.9.37/extra/open_ive.ko
/lib/modules/4.9.37/extra/open_aio.ko