diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index c385167..8270128 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -23,6 +23,7 @@ jobs: matrix: platform: - radxa_zero3 + - radxa_rock3c - openipc_bonnet - runcam_wifilink - emax_wyvern-link diff --git a/README.md b/README.md index a954af1..1a70ac8 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ SBC-GS 2 Beta 2 and older versions will not boot squashfs-based systems. A new b - Boot the old image. - Copy the new `_u-boot.bin` to your SBC. -- Replace the bootloader on the eMMC: +- Replace the bootloader on the eMMC by executing the following command: ``` dd if=/tmp/runcam_wifilink_u-boot.bin of=/dev/mmcblk0 seek=64 status=progress ``` @@ -102,4 +102,4 @@ booti 0x03000000 - 0x05000000 See the CC branch * Radxa zero 3W/E - [v0.9-beta](https://github.com/zhouruixi/SBC-GS/releases/tag/v0.9-beta) \ No newline at end of file + [v0.9-beta](https://github.com/zhouruixi/SBC-GS/releases/tag/v0.9-beta) diff --git a/board/common/overlay/usr/bin/collect_support_data.sh b/board/common/overlay/usr/bin/collect_support_data.sh new file mode 100755 index 0000000..34c0df6 --- /dev/null +++ b/board/common/overlay/usr/bin/collect_support_data.sh @@ -0,0 +1,337 @@ +#!/bin/sh + +# Support Data Collection Script for Buildroot Devices +# Creates a zip file with system information for troubleshooting + +set -e + +# Configuration +COLLECTION_DIR="/tmp/support_data_$(date +%Y%m%d_%H%M%S)" +OUTPUT_DIR="/media/dvr" +SCRIPT_NAME="collect_support_data.sh" +OUTPUT_PREFIX="openipc_support_data" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) +OUTPUT_FILE="${OUTPUT_DIR}/${OUTPUT_PREFIX}_${TIMESTAMP}.zip" +MAX_LOG_SIZE=1048576 # 1MB max per log file + +# Colors for output (if supported) +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Create collection directory +mkdir -p "${COLLECTION_DIR}" +cd "${COLLECTION_DIR}" + +echo_colored() { + echo -e "${2}${1}${NC}" +} + +collect_file() { + local src="$1" + local dest="$2" + + if [ -e "$src" ]; then + cp "$src" "$dest" 2>/dev/null || { + echo "Warning: Could not copy $src" >&2 + echo "Permission denied or file busy" > "$dest.access_error" + } + else + echo "File not found: $src" > "$dest.not_found" + fi +} + +collect_log() { + local log_path="$1" + local dest_name="$2" + + if [ -f "$log_path" ]; then + local size=$(stat -c%s "$log_path" 2>/dev/null || echo "0") + if [ "$size" -gt "$MAX_LOG_SIZE" ]; then + echo "Log truncated (original: ${size} bytes)" > "${dest_name}" + tail -c "${MAX_LOG_SIZE}" "$log_path" >> "${dest_name}" + echo "" >> "${dest_name}" + echo "... [truncated] ..." >> "${dest_name}" + head -c 10240 "$log_path" >> "${dest_name}" + else + cp "$log_path" "${dest_name}" 2>/dev/null || { + echo "Could not copy log: $log_path" > "${dest_name}.error" + } + fi + fi +} + +echo_colored "Starting support data collection..." "$GREEN" +echo_colored "Output will be saved to: ${OUTPUT_FILE}" "$YELLOW" + +# 1. SYSTEM INFORMATION +echo_colored "Collecting system information..." "$GREEN" +mkdir -p system_info + +# Basic system info +uname -a > system_info/uname.txt 2>&1 +cat /proc/version > system_info/proc_version.txt 2>&1 +cat /etc/os-release 2>/dev/null > system_info/os_release.txt || echo "No os-release found" > system_info/os_release.txt +cat /etc/issue 2>/dev/null > system_info/issue.txt || echo "No issue file found" > system_info/issue.txt + +# CPU/Memory info +cat /proc/cpuinfo > system_info/cpuinfo.txt 2>&1 +cat /proc/meminfo > system_info/meminfo.txt 2>&1 +free -h > system_info/free.txt 2>&1 + +# Uptime and load +uptime > system_info/uptime.txt 2>&1 +cat /proc/loadavg > system_info/loadavg.txt 2>&1 + +# 2. HARDWARE INFORMATION +echo_colored "Collecting hardware information..." "$GREEN" +mkdir -p hardware + +# PCI and USB devices +lspci 2>/dev/null > hardware/lspci.txt || echo "lspci not available" > hardware/lspci.txt +lsusb 2>/dev/null > hardware/lsusb.txt || echo "lsusb not available" > hardware/lsusb.txt + +# Block devices and mounts +blkid 2>/dev/null > hardware/blkid.txt || echo "blkid not available" > hardware/blkid.txt +df -h > hardware/df.txt 2>&1 +mount > hardware/mount.txt 2>&1 +cat /proc/mounts > hardware/proc_mounts.txt 2>&1 + +# Network interfaces +ip link show > hardware/network_interfaces.txt 2>&1 +ip addr show > hardware/ip_addr.txt 2>&1 + +# 3. KERNEL AND DRIVERS +echo_colored "Collecting kernel and driver information..." "$GREEN" +mkdir -p kernel + +# Kernel modules +lsmod 2>/dev/null > kernel/lsmod.txt || echo "lsmod not available" > kernel/lsmod.txt +cat /proc/modules 2>/dev/null > kernel/proc_modules.txt || echo "No /proc/modules" > kernel/proc_modules.txt + +# Kernel messages +dmesg > kernel/dmesg.txt 2>&1 +tail -n 1000 /var/log/kern.log 2>/dev/null > kernel/kern_log.txt || echo "No kern.log" > kernel/kern_log.txt + +# Kernel parameters +cat /proc/cmdline > kernel/cmdline.txt 2>&1 +sysctl -a 2>/dev/null > kernel/sysctl.txt || echo "sysctl not available" > kernel/sysctl.txt + +# 4. NETWORK INFORMATION +echo_colored "Collecting network information..." "$GREEN" +mkdir -p network + +# Network configuration +ip route show > network/route.txt 2>&1 +cat /etc/resolv.conf 2>/dev/null > network/resolv.conf || echo "No resolv.conf" > network/resolv.conf +cat /etc/hosts 2>/dev/null > network/hosts || echo "No hosts file" > network/hosts + +# Network connections +ss -tulnp 2>/dev/null > network/ss.txt || netstat -tulnp 2>/dev/null > network/netstat.txt || echo "No network stat tool" > network/netstat.txt + +# Firewall rules +iptables -L -n -v 2>/dev/null > network/iptables.txt || echo "iptables not available" > network/iptables.txt + +# Wlan devices +iw dev 2>/dev/null > network/iw.txt || echo "iw not available" > network/iw.txt + +# 5. PROCESS INFORMATION +echo_colored "Collecting process information..." "$GREEN" +mkdir -p processes + +ps aux > processes/ps_aux.txt 2>&1 +top -b -n 1 > processes/top.txt 2>&1 + +# Service status (if systemd or init.d) +if command -v systemctl >/dev/null 2>&1; then + systemctl list-units --type=service > processes/services.txt 2>&1 + systemctl status > processes/systemctl_status.txt 2>&1 +elif [ -d "/etc/init.d" ]; then + ls -la /etc/init.d/ > processes/initd_services.txt 2>&1 +fi + +# 6. LOG FILES +echo_colored "Collecting log files..." "$GREEN" +mkdir -p logs + +# System logs +collect_log "/var/log/messages" "logs/messages.log" +collect_log "/var/log/syslog" "logs/syslog.log" +collect_log "/var/log/dmesg" "logs/dmesg.log" +collect_log "/var/log/auth.log" "logs/auth.log" +collect_log "/var/log/daemon.log" "logs/daemon.log" + +# Application logs (common locations) +for log in /var/log/*.log; do + if [ -f "$log" ]; then + base_name=$(basename "$log") + collect_log "$log" "logs/${base_name}" + fi +done + +# 7. CONFIGURATION FILES +echo_colored "Collecting configuration files..." "$GREEN" +mkdir -p configs + +# Common config files +collect_file "/etc/fstab" "configs/fstab" +collect_file "/etc/network/interfaces" "configs/network_interfaces" +for file in /etc/network/interfaces.d/*; do + mkdir -p configs/network_interfaces.d/ + collect_file "$file" "configs/network_interfaces.d/$(basename $file)" +done +for file in /etc/*wpa*.conf; do + psk=$(grep -o 'psk="[^"]*"' "$file" | sed 's/psk="//;s/"//') + if [ -n "$psk" ]; then + psk_hash=$(echo -n "$psk" | sha256sum | cut -d" " -f1) + sed "s/psk=\"$psk\"/psk=\"sha256sum($psk_hash)\"/" "$file" > "configs/$(basename $file)" + fi +done +collect_file "/etc/hostname" "configs/hostname" +collect_file "/etc/timezone" "configs/timezone" +collect_file "/etc/passwd" "configs/passwd" +collect_file "/etc/group" "configs/group" +collect_file "/etc/shadow" "configs/shadow" +collect_file "/etc/shells" "configs/shells" + +# Buildroot specific +collect_file "/etc/buildroot-version" "configs/buildroot_version" +collect_file "/etc/buildroot-build" "configs/buildroot_build" + +# 8. PACKAGE INFORMATION +echo_colored "Collecting package information..." "$GREEN" +mkdir -p packages + +# 9. ENVIRONMENT VARIABLES +echo_colored "Collecting environment information..." "$GREEN" +mkdir -p environment + +env > environment/env.txt 2>&1 +set > environment/set.txt 2>&1 +printenv > environment/printenv.txt 2>&1 + +# 10. CUSTOM CHECKS +echo_colored "Running custom checks..." "$GREEN" +mkdir -p custom_checks + +# Disk usage +du -sh / 2>/dev/null | head -5 > custom_checks/disk_usage.txt || true + +# Inode usage +df -i > custom_checks/inode_usage.txt 2>&1 + +# List filesysten +find / 2>/dev/null > custom_checks/file_list.txt + +# 11. CREATE SUMMARY REPORT +echo_colored "Creating summary report..." "$GREEN" +cat > summary_report.txt << EOF +SUPPORT DATA COLLECTION REPORT +============================= +Collection Time: $(date) +Hostname: $(hostname 2>/dev/null || echo 'unknown') +Kernel: $(uname -r) +Architecture: $(uname -m) + +SYSTEM OVERVIEW: +- Uptime: $(uptime -p 2>/dev/null || cat /proc/uptime | awk '{print int($1/86400)" days "int(($1%86400)/3600)" hours"}') +- Load Average: $(cat /proc/loadavg 2>/dev/null || echo 'N/A') +- Memory: $(free -h | awk '/^Mem:/ {print $3 "/" $2}') +- Storage: $(df -h / | awk 'NR==2 {print $3 "/" $2 " (" $5 " used)"}') + +NETWORK: +- Interfaces: $(ip link show | grep -c '^[0-9]:') +- IP Addresses: $(ip addr show | grep -c 'inet ') + +PROCESSES: +- Total: $(ps aux | wc -l) +- Users: $(ps aux | awk '{print $1}' | sort -u | wc -l) + +COLLECTED DATA: +- System Info: $(ls -1 system_info/ 2>/dev/null | wc -l) files +- Hardware Info: $(ls -1 hardware/ 2>/dev/null | wc -l) files +- Kernel Info: $(ls -1 kernel/ 2>/dev/null | wc -l) files +- Network Info: $(ls -1 network/ 2>/dev/null | wc -l) files +- Log Files: $(ls -1 logs/ 2>/dev/null | wc -l) files +- Configuration: $(ls -1 configs/ 2>/dev/null | wc -l) files + +NOTES: +This archive contains troubleshooting data from your device. +Share this file with support for assistance. + +EOF + +# 12. CREATE README +cat > README.txt << 'EOF' +DEVICE SUPPORT DATA COLLECTION +============================== + +This archive contains system information collected for troubleshooting purposes. + +CONTENTS: +1. system_info/ - Basic system information +2. hardware/ - Hardware and device information +3. kernel/ - Kernel and driver information +4. network/ - Network configuration and status +5. processes/ - Running processes and services +6. logs/ - System and application logs +7. configs/ - Configuration files +8. packages/ - Installed package information +9. environment/ - Environment variables +10. custom_checks/ - Additional diagnostic checks + +FILES: +- summary_report.txt - Overview of collected data +- collection_script.sh - Copy of the collection script + +SECURITY NOTES: +- This archive may contain sensitive information +- Review contents before sharing +- The script does not collect: + * Personal user files + * Browser history + * Passwords (except hashed from /etc/shadow) + * Encryption keys + +EOF + +# 13. SAVE THE SCRIPT ITSELF +cp "$0" "${COLLECTION_DIR}/collection_script.sh" + +# 14. CREATE ZIP ARCHIVE +echo_colored "Creating archive: ${OUTPUT_FILE}" "$GREEN" +cd "${COLLECTION_DIR}/.." +if command -v zip >/dev/null 2>&1; then + zip -rq "${OUTPUT_FILE}" "$(basename ${COLLECTION_DIR})" + echo_colored "Archive created successfully!" "$GREEN" + echo_colored "Size: $(du -h ${OUTPUT_FILE} | cut -f1)" "$YELLOW" + echo_colored "Please upload this file to support: ${OUTPUT_FILE}" "$YELLOW" +else + echo_colored "Warning: zip command not found. Creating tar archive instead." "$YELLOW" + OUTPUT_FILE="${OUTPUT_FILE%.zip}.tar.gz" + tar -cf - "$(basename ${COLLECTION_DIR})" | gzip -9 > "${OUTPUT_FILE}" + echo_colored "Archive created: ${OUTPUT_FILE}" "$GREEN" +fi + +# 15. CLEANUP +echo_colored "Cleaning up temporary files..." "$GREEN" +rm -rf "${COLLECTION_DIR}" + +# 16. FINAL INSTRUCTIONS +cat << EOF + +============================================ +SUPPORT DATA COLLECTION COMPLETE +============================================ +Archive created: ${OUTPUT_FILE} + +NEXT STEPS: +1. Check the file size is reasonable (typically 1-10MB) +2. Review the contents if privacy is a concern +3. Upload to your support portal +4. Provide this filename with your support request + +EOF + +exit 0 \ No newline at end of file diff --git a/board/emax/wyvern-link/overlay/etc/pixelpilot.yaml b/board/emax/wyvern-link/overlay/etc/pixelpilot.yaml index bd7966c..d0cc881 100644 --- a/board/emax/wyvern-link/overlay/etc/pixelpilot.yaml +++ b/board/emax/wyvern-link/overlay/etc/pixelpilot.yaml @@ -5,4 +5,9 @@ gsmenu: right: 32 up: 16 down: 18 - + actions: + ground: + - label: Toggle gadget mode + action: /usr/sbin/gadget + - label: Generate support package + action: /usr/bin/collect_support_data.sh \ No newline at end of file diff --git a/board/openipc/bonnet/overlay/etc/pixelpilot.yaml b/board/openipc/bonnet/overlay/etc/pixelpilot.yaml index 48c462c..9daf5b0 100644 --- a/board/openipc/bonnet/overlay/etc/pixelpilot.yaml +++ b/board/openipc/bonnet/overlay/etc/pixelpilot.yaml @@ -26,3 +26,8 @@ os_sensors: # cpu: auto # power: auto # temperature: auto + + actions: + ground: + - label: Generate support package + action: /usr/bin/collect_support_data.sh \ No newline at end of file diff --git a/board/radxa/rock3-c/0002-uboot-load-env-from-ext4.patch b/board/radxa/rock3-c/0002-uboot-load-env-from-ext4.patch new file mode 100644 index 0000000..b48a0ee --- /dev/null +++ b/board/radxa/rock3-c/0002-uboot-load-env-from-ext4.patch @@ -0,0 +1,28 @@ +--- a/.src/u-boot/include/configs/rk3568_common.h 2025-12-07 11:15:26.719979370 +0100 ++++ b/.src/u-boot/include/configs/rk3568_common.h 2025-12-09 08:51:50.445835523 +0100 +@@ -27,11 +27,24 @@ + "kernel_comp_addr_r=0x08000000\0" \ + "kernel_comp_size=0x2000000\0" + ++#define CONFIG_EXTRA_ENV_PREBOOT \ ++ "preboot=echo Attempting to load custom environment...;" \ ++ "if ext4load mmc 0:2 ${loadaddr} /root/boot/uboot.txt; then " \ ++ "echo Imported env from MMC0;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "elif ext4load mmc 1:2 ${loadaddr} /root/boot/uboot.txt; then " \ ++ "echo Imported env from MMC1;" \ ++ "env import -t ${loadaddr} ${filesize};" \ ++ "else " \ ++ "echo No custom environment found, using defaults;" \ ++ "fi\0" ++ + #define CFG_EXTRA_ENV_SETTINGS \ + ENV_MEM_LAYOUT_SETTINGS \ + "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ + "partitions=" PARTS_DEFAULT \ + ROCKCHIP_DEVICE_SETTINGS \ +- "boot_targets=" BOOT_TARGETS "\0" ++ "boot_targets=" BOOT_TARGETS "\0" \ ++ CONFIG_EXTRA_ENV_PREBOOT + + #endif diff --git a/board/radxa/rock3-c/overlay/boot/uboot.txt.disabled b/board/radxa/rock3-c/overlay/boot/uboot.txt.disabled new file mode 100644 index 0000000..af6193d --- /dev/null +++ b/board/radxa/rock3-c/overlay/boot/uboot.txt.disabled @@ -0,0 +1,17 @@ +bootdev=1 +display=/boot/rockchip/overlays/rock-3c-radxa-display-8hd.dtb +kernel=/boot/Image +fdtfile=/boot/rockchip/rk3566-rock-3c-aic8800ds2.dtb +fdtoverlays=/boot/rockchip/rk3566-dwc3-otg-role-switch.dtb +bootargs=quiet loglevel=1 root=PARTLABEL=rootfs ro earlycon rootwait init=/init +my_bootcmd=echo Loading custom fdtoverlays; \ + load mmc ${bootdev}:1 ${kernel_addr_r} ${kernel}; \ + load mmc ${bootdev}:1 ${fdt_addr_r} ${fdtfile}; \ + fdt addr ${fdt_addr_r}; \ + fdt resize 8192; \ + for overlay in ${fdtoverlays} ${display}; do \ + echo 'Applying overlay: ' ${overlay}; \ + load mmc ${bootdev}:1 ${fdtoverlay_addr_r} ${overlay}; \ + fdt apply ${fdtoverlay_addr_r}; \ + done; \ + booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/radxa/rock3-c/overlay/etc/pixelpilot.yaml b/board/radxa/rock3-c/overlay/etc/pixelpilot.yaml new file mode 100644 index 0000000..9e7f8a9 --- /dev/null +++ b/board/radxa/rock3-c/overlay/etc/pixelpilot.yaml @@ -0,0 +1,14 @@ +gsmenu: + enabled: true + gpio: + left: 21 + right: 29 + up: 22 + down: 24 + center: 36 + rec: 32 + + actions: + ground: + - label: Generate support package + action: /usr/bin/collect_support_data.sh \ No newline at end of file diff --git a/board/radxa/rock3-c/pre-build.sh b/board/radxa/rock3-c/pre-build.sh new file mode 100755 index 0000000..45dcc9f --- /dev/null +++ b/board/radxa/rock3-c/pre-build.sh @@ -0,0 +1,20 @@ +#!/usr/bin/bash +BSP_VERSION=main +BSP_SITE=https://github.com/radxa-repo/bsp.git + +if [ ! -d ${BUILD_DIR}/radxa-bsp-${BSP_VERSION} ] +then + cd ${BUILD_DIR} + git clone -b ${BSP_VERSION} --recurse-submodules ${BSP_SITE} radxa-bsp-${BSP_VERSION} + cd radxa-bsp-${BSP_VERSION} + ./bsp linux rk2410 --no-build + sed -i 's/^#"rock-3c"/"rock-3c"/' u-boot/latest/fork.conf + ./bsp u-boot latest rock-3c --no-build + patch -p1 -i ${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/zero3/0001-uboot-compile.patch + patch -p1 -i ${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/rock3-c/0002-uboot-load-env-from-ext4.patch + if [ "$CI" = "true" ]; then + docker image rm -f ghcr.io/radxa-repo/bsp:builder ghcr.io/radxa-repo/bsp:main + fi +else + echo "bsp already downloaded, skipping ..." +fi diff --git a/board/radxa/rock3-c/uboot_bsp_defconfig b/board/radxa/rock3-c/uboot_bsp_defconfig new file mode 100644 index 0000000..767524a --- /dev/null +++ b/board/radxa/rock3-c/uboot_bsp_defconfig @@ -0,0 +1,123 @@ +CONFIG_ARM=y +CONFIG_SKIP_LOWLEVEL_INIT=y +CONFIG_COUNTER_FREQUENCY=24000000 +CONFIG_ARCH_ROCKCHIP=y +CONFIG_TEXT_BASE=0x00a00000 +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_NR_DRAM_BANKS=2 +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000 +CONFIG_SF_DEFAULT_SPEED=24000000 +CONFIG_SF_DEFAULT_MODE=0x2000 +CONFIG_DEFAULT_DEVICE_TREE="rk3566-rock-3c" +CONFIG_ROCKCHIP_RK3568=y +CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y +CONFIG_ROCKCHIP_SPI_IMAGE=y +CONFIG_SPL_SERIAL=y +CONFIG_SPL_STACK_R_ADDR=0x600000 +CONFIG_SPL_STACK=0x400000 +CONFIG_DEBUG_UART_BASE=0xFE660000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_SPL_SPI_FLASH_SUPPORT=y +CONFIG_SPL_SPI=y +CONFIG_SYS_LOAD_ADDR=0xc00800 +CONFIG_PCI=y +CONFIG_DEBUG_UART=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_SPL_FIT_SIGNATURE=y +CONFIG_SPL_LOAD_FIT=y +CONFIG_LEGACY_IMAGE_FORMAT=y +CONFIG_SPI_BOOT=y +CONFIG_BOOTDELAY=1 +CONFIG_AUTOBOOT_KEYED=y +CONFIG_AUTOBOOT_PROMPT="Hit Ctrl+C key in %d seconds to stop autoboot...\n" +CONFIG_AUTOBOOT_STOP_STR="\x03" +CONFIG_AUTOBOOT_KEYED_CTRLC=y +CONFIG_BOOTCOMMAND="run my_bootcmd; bootflow scan; run distro_bootcmd; echo Boot failed. Reset in 3 seconds...; sleep 3; reset;" +CONFIG_USE_PREBOOT=y +CONFIG_PREBOOT="pci enum" +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3566-rock-3c.dtb" +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_ID_EEPROM=y +CONFIG_SPL_MAX_SIZE=0x40000 +CONFIG_SPL_PAD_TO=0x7f8000 +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y +CONFIG_SPL_BSS_START_ADDR=0x4000000 +CONFIG_SPL_BSS_MAX_SIZE=0x4000 +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_STACK_R=y +CONFIG_SPL_SPI_LOAD=y +CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 +CONFIG_SPL_ATF=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_GPIO_READ=y +CONFIG_CMD_PWM=y +CONFIG_CMD_GPT=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MBR=y +CONFIG_CMD_MMC=y +CONFIG_CMD_PCI=y +CONFIG_CMD_POWEROFF=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_PMIC=y +CONFIG_CMD_REGULATOR=y +# CONFIG_SPL_DOS_PARTITION is not set +CONFIG_SPL_OF_CONTROL=y +CONFIG_OF_LIVE=y +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_SPL_REGMAP=y +CONFIG_SPL_SYSCON=y +CONFIG_SATA=y +CONFIG_SCSI_AHCI=y +CONFIG_AHCI_PCI=y +CONFIG_SATA_SIL=y +CONFIG_SPL_CLK=y +CONFIG_ROCKCHIP_GPIO=y +CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_MISC=y +CONFIG_SUPPORT_EMMC_RPMB=y +CONFIG_MMC_HS200_SUPPORT=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_SDMA=y +CONFIG_MMC_SDHCI_ROCKCHIP=y +CONFIG_SF_DEFAULT_BUS=4 +CONFIG_SPI_FLASH_SFDP_SUPPORT=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_SPI_FLASH_XTX=y +CONFIG_PHY_REALTEK=y +CONFIG_DWC_ETH_QOS=y +CONFIG_DWC_ETH_QOS_ROCKCHIP=y +CONFIG_ETH_DESIGNWARE=y +CONFIG_GMAC_ROCKCHIP=y +CONFIG_NVME_PCI=y +CONFIG_PCIE_DW_ROCKCHIP=y +CONFIG_PHY_ROCKCHIP_INNO_USB2=y +CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y +CONFIG_SPL_PINCTRL=y +CONFIG_DM_PMIC=y +CONFIG_DM_PMIC_FAN53555=y +CONFIG_PMIC_RK8XX=y +CONFIG_REGULATOR_RK8XX=y +CONFIG_PWM_ROCKCHIP=y +CONFIG_SPL_RAM=y +CONFIG_SCSI=y +CONFIG_DM_SCSI=y +CONFIG_BAUDRATE=1500000 +CONFIG_DEBUG_UART_SHIFT=2 +CONFIG_SYS_NS16550_MEM32=y +CONFIG_ROCKCHIP_SFC=y +CONFIG_ROCKCHIP_SPI=y +CONFIG_SYSRESET=y +CONFIG_FS_SQUASHFS=y +CONFIG_ERRNO_STR=y diff --git a/board/radxa/zero3/overlay/etc/pixelpilot.yaml b/board/radxa/zero3/overlay/etc/pixelpilot.yaml index 8cac229..bae70e2 100644 --- a/board/radxa/zero3/overlay/etc/pixelpilot.yaml +++ b/board/radxa/zero3/overlay/etc/pixelpilot.yaml @@ -6,3 +6,10 @@ gsmenu: up: 16 down: 18 rec: 32 + + actions: + ground: + - label: Toggle gadget mode + action: /usr/sbin/gadget + - label: Generate support package + action: /usr/bin/collect_support_data.sh \ No newline at end of file diff --git a/board/runcam/wifilink/overlay/etc/pixelpilot.yaml b/board/runcam/wifilink/overlay/etc/pixelpilot.yaml index 8660ea9..68f1dba 100644 --- a/board/runcam/wifilink/overlay/etc/pixelpilot.yaml +++ b/board/runcam/wifilink/overlay/etc/pixelpilot.yaml @@ -7,3 +7,10 @@ gsmenu: down: 18 center: 11 rec: 32 + + actions: + ground: + - label: Toggle gadget mode + action: /usr/sbin/gadget + - label: Generate support package + action: /usr/bin/collect_support_data.sh \ No newline at end of file diff --git a/configs/radxa_rock3c_defconfig b/configs/radxa_rock3c_defconfig new file mode 100644 index 0000000..d988a5a --- /dev/null +++ b/configs/radxa_rock3c_defconfig @@ -0,0 +1,130 @@ +BR2_aarch64=y +BR2_cortex_a55=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_PACKAGE_OVERRIDE_FILE="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/zero3/local.mk" +BR2_TARGET_GENERIC_HOSTNAME="openipcgs" +BR2_TARGET_GENERIC_ISSUE="Welcome to OpenIPC GS" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_ROOT_PASSWD="12345" +# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set +BR2_ENABLE_LOCALE_WHITELIST="C en_US en_US.UTF-8" +BR2_GENERATE_LOCALE="C.UTF-8 en_US.UTF-8" +BR2_ROOTFS_OVERLAY="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/common/overlay ${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/zero3/overlay ${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/rock3-c/overlay ${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/local/overlay" +BR2_ROOTFS_PRE_BUILD_SCRIPT="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/rock3-c/pre-build.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/common/post-build-script.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c ${BR2_EXTERNAL}/board/common/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.1.84" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/zero3/linux.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/rk3566-rock-3c-aic8800ds2 rockchip/overlays/rock-3c-radxa-5inch-touchscreen rockchip/overlays/rock-3c-radxa-display-10hd rockchip/overlays/rock-3c-radxa-display-8hd rockchip/overlays/rock-3c-raspberrypi-7inch-touchscreen" +BR2_LINUX_KERNEL_CUSTOM_DTS_DIR="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/zero3/dts" +BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_PACKAGE_BUSYBOX_CONFIG="${BR2_EXTERNAL}/package/busybox/busybox.config" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_GSTREAMER1=y +BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP=y +BR2_PACKAGE_GST1_PLUGINS_GOOD=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y +BR2_PACKAGE_GST1_PLUGINS_BAD=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y +BR2_PACKAGE_GST1_PLUGINS_UGLY=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_GIT=y +BR2_PACKAGE_JQ=y +BR2_PACKAGE_AUTOFS=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_FBV=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X=y +BR2_PACKAGE_DT_UTILS=y +BR2_PACKAGE_PARTED=y +BR2_PACKAGE_ROCKCHIP_RKBIN=y +BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME="bin/rk35/rk3566_ddr_1056MHz_v1.23.bin" +BR2_PACKAGE_ROCKCHIP_RKBIN_BL31_FILENAME="bin/rk35/rk3568_bl31_v1.45.elf" +BR2_PACKAGE_UBOOT_TOOLS=y +BR2_PACKAGE_PYTHON3=y +BR2_PACKAGE_PYTHON3_BZIP2=y +BR2_PACKAGE_PYTHON3_CURSES=y +BR2_PACKAGE_PYTHON_BABEL=y +BR2_PACKAGE_PYTHON_FLASK=y +BR2_PACKAGE_PYTHON_MSGPACK=y +BR2_PACKAGE_PYTHON_PYROUTE2=y +BR2_PACKAGE_PYTHON_PYYAML=y +BR2_PACKAGE_PYTHON_SERIAL=y +BR2_PACKAGE_PYTHON_TWISTED=y +BR2_PACKAGE_CA_CERTIFICATES=y +BR2_PACKAGE_CAIRO_PNG=y +BR2_PACKAGE_CAIROMM=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_LIBGPIOD=y +BR2_PACKAGE_LIBGPIOD_TOOLS=y +BR2_PACKAGE_CJSON=y +BR2_PACKAGE_JSON_FOR_MODERN_CPP=y +BR2_PACKAGE_YAML_CPP=y +BR2_PACKAGE_SPDLOG=y +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_LIBCURL_CURL=y +BR2_PACKAGE_LIBCAP=y +BR2_PACKAGE_MSGPACK=y +BR2_PACKAGE_NCURSES_WCHAR=y +BR2_PACKAGE_READLINE=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_NETCAT=y +BR2_PACKAGE_NTP=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_SAMBA4=y +BR2_PACKAGE_SOCAT=y +BR2_PACKAGE_SSHPASS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y +BR2_PACKAGE_WPA_SUPPLICANT_OVERRIDES=y +BR2_PACKAGE_FILE=y +BR2_PACKAGE_COREUTILS=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_KMOD_TOOLS=y +BR2_PACKAGE_UTIL_LINUX_AGETTY=y +BR2_TARGET_ROOTFS_SQUASHFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE="${BR2_EXTERNAL_OPENIPC_SBC_GS_PATH}/board/radxa/rock3-c/uboot_bsp_defconfig" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN=y +BR2_PACKAGE_HOST_E2FSPROGS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_KMOD_XZ=y +BR2_PACKAGE_HOST_SWIG=y +BR2_PACKAGE_HOST_RKDEVELOPTOOL=y +BR2_PACKAGE_AIC8800=y +BR2_PACKAGE_RTL88X2EU=y +BR2_PACKAGE_RTL8812AU=y +BR2_PACKAGE_WIFIBROADCAST_NG=y +BR2_PACKAGE_WFB_SERVER=y +BR2_PACKAGE_PIXELPILOT=y +BR2_PACKAGE_ADAPTIVE_LINK=y +BR2_PACKAGE_YAML_CLI=y +BR2_PACKAGE_MSPOSD=y +BR2_PACKAGE_YQ=y +BR2_PACKAGE_DRM_INFO=y +BR2_PACKAGE_DVRUI=y +BR2_BOARD_GPIO_CONFIG_PIN_NAME=y +BR2_FACTORY_RESET_GPIO_PIN_NAME="PIN_29" +BR2_GADGET_MODE_GPIO_PIN_NAME="PIN_21" diff --git a/package/pixelpilot/files/gsmenu.sh b/package/pixelpilot/files/gsmenu.sh index 048fdf4..0e0e0a5 100755 --- a/package/pixelpilot/files/gsmenu.sh +++ b/package/pixelpilot/files/gsmenu.sh @@ -717,6 +717,14 @@ case "$@" in "values gs system rx_mode") echo -n -e "wfb\napfpv" ;; + "values gs system connector") + connectors="HDMI" + for overlay in /boot/rockchip/overlays/*; do + [[ -e "$overlay" ]] || continue + connectors="$connectors\nDSI: $(fdtdump $overlay | grep title| cut -d \" -f 2|sed 's/Enable //')" + done + echo -n -e $connectors + ;; "values gs system resolution") drm_info -j /dev/dri/card0 2>/dev/null | jq -r '."/dev/dri/card0".connectors[1].modes[] | select(.name | contains("i") | not) | .name + "@" + (.vrefresh|tostring)' | sort | uniq | head -c -1 ;; @@ -737,6 +745,14 @@ case "$@" in . /etc/default/msposd [ x$MSPOSD_ENABLED = x"false" ] && echo 0 || echo 1 ;; + "get gs system connector") + if [ -f /boot/uboot.txt ] ; then + overlay=$(grep display /boot/uboot.txt | cut -d = -f 2) + echo "DSI: $(fdtdump $overlay | grep title| cut -d \" -f 2|sed 's/Enable //')" + else + echo HDMI + fi + ;; "get gs system resolution") drm_info -j /dev/dri/card0 2>/dev/null | jq -r '."/dev/dri/card0".crtcs[0].mode| .name + "@" + (.vrefresh|tostring)' ;; @@ -809,6 +825,22 @@ EOF /etc/init.d/S98msposd start fi ;; + "set gs system connector"*) + if [ "$5" = "HDMI" ] + then + rm -f /boot/uboot.txt + else + cp /boot/uboot.txt.disabled /boot/uboot.txt + root_dev="/dev/$(basename $(readlink -f /dev/disk/by-partlabel/rootfs) p1)" + bootdev=$(echo $root_dev | sed 's#/dev/mmcblk##') + sed -i "s#bootdev=.*#bootdev=$bootdev#" /boot/uboot.txt + for overlay in /boot/rockchip/overlays/*; do + if [ "$5" = "DSI: $(fdtdump $overlay | grep title| cut -d \" -f 2 |sed 's/Enable //')" ]; then + sed -i "s#display=.*#display=$overlay#" /boot/uboot.txt + fi + done + fi + ;; "set gs system resolution"*) sed -i "s/^PIXELPILOT_SCREEN_MODE=.*/PIXELPILOT_SCREEN_MODE=\"$5\"/" /etc/default/pixelpilot ;; diff --git a/package/pixelpilot/pixelpilot.mk b/package/pixelpilot/pixelpilot.mk index 17951bd..ad7cb87 100644 --- a/package/pixelpilot/pixelpilot.mk +++ b/package/pixelpilot/pixelpilot.mk @@ -4,7 +4,7 @@ # ############################################################################### -PIXELPILOT_VERSION=336678bd8e0de08322c8a170522c7d6fb17508b3 +PIXELPILOT_VERSION=828a501bfaea6dd0a2c483451417298f16c5221f PIXELPILOT_SITE=https://github.com/OpenIPC/PixelPilot_rk.git PIXELPILOT_SITE_METHOD = git PIXELPILOT_GIT_SUBMODULES = YES