diff --git a/README.md b/README.md index cf7408d8e..e8f6e29ad 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ _(based on Buildroot)_ ### List of known and supported devices ``` +Anxinshi ASRIH698T HI3516DV100 IMX291 - NOR_8M testing, pan/tilt (pelco-d UART1) Aoni EP01J05 T31L ? RTL8188FU_USB NOR_16M new Azarton C1 T20X JXF23 RTL8189FS_SDIO NOR_16M done Azarton C1 T31X GC2053 RTL8189FS_SDIO NOR_16M done diff --git a/devices/hi3516dv100_lite_anxinshi-asrih698t/br-ext-chip-hisilicon/configs/hi3516dv100_lite_anxinshi-asrih698t_defconfig b/devices/hi3516dv100_lite_anxinshi-asrih698t/br-ext-chip-hisilicon/configs/hi3516dv100_lite_anxinshi-asrih698t_defconfig new file mode 100644 index 000000000..30799ff18 --- /dev/null +++ b/devices/hi3516dv100_lite_anxinshi-asrih698t/br-ext-chip-hisilicon/configs/hi3516dv100_lite_anxinshi-asrih698t_defconfig @@ -0,0 +1,65 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABI=y +BR2_ARM_FPU_NEON_VFPV4=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/openipc/firmware/releases/download/$(OPENIPC_TOOLCHAIN).tgz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-openipc-linux-musleabi" +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y +BR2_TOOLCHAIN_EXTERNAL_CXX=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)/hi3516dv100.generic.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_XZ=y + +# Filesystem +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config" +BR2_PACKAGE_UBOOT_TOOLS=y +BR2_PACKAGE_ZLIB=y +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y +BR2_PACKAGE_WIREGUARD_TOOLS=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y + +# OpenIPC +BR2_OPENIPC_SOC_VENDOR="hisilicon" +BR2_OPENIPC_SOC_MODEL="hi3516dv100" +BR2_OPENIPC_SOC_FAMILY="hi3516av100" +BR2_OPENIPC_VARIANT="lite" +BR2_OPENIPC_FLASH_SIZE="8" + +# Packages +BR2_PACKAGE_DROPBEAR_OPENIPC=y +BR2_PACKAGE_HISILICON_OPENSDK=y +BR2_PACKAGE_HISILICON_OSDRV_HI3516AV100=y +BR2_PACKAGE_IPCTOOL=y +BR2_PACKAGE_LIBCURL_OPENIPC=y +BR2_PACKAGE_LIBCURL_OPENIPC_CURL=y +# 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_LIBEVENT_OPENIPC=y +BR2_PACKAGE_LIBOGG_OPENIPC=y +BR2_PACKAGE_MAJESTIC_FONTS=y +BR2_PACKAGE_MAJESTIC_WEBUI=y +BR2_PACKAGE_MAJESTIC=y +BR2_PACKAGE_MAJESTIC_AF=y +BR2_PACKAGE_MBEDTLS_OPENIPC=y +BR2_PACKAGE_MOTORS=y +BR2_PACKAGE_OPUS_OPENIPC=y +BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y +BR2_PACKAGE_VTUND_OPENIPC=y +BR2_PACKAGE_YAML_CLI=y diff --git a/devices/hi3516dv100_lite_anxinshi-asrih698t/general/overlay/usr/share/openipc/customizer.sh b/devices/hi3516dv100_lite_anxinshi-asrih698t/general/overlay/usr/share/openipc/customizer.sh new file mode 100755 index 000000000..4755363f5 --- /dev/null +++ b/devices/hi3516dv100_lite_anxinshi-asrih698t/general/overlay/usr/share/openipc/customizer.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Perform basic settings on a known IP camera +# +# Anxinshi ASRIH698T-020-20X speed dome: the XiongMai HI3516D_N81820 main +# board (hi3516dv100 + Sony IMX291 on the DC/parallel interface) in a 20x +# pan/tilt dome. Pan/tilt is an MCU in the base that speaks Pelco-D, address +# 1, 9600 8N1, over RS-485 on UART1 (OpenIPC/firmware#2385). muxes.sh puts +# UART1 on its pads and holds the transceiver in transmit on every boot. +# +# The zoom/focus lens is the board's MS41908M on SPI, as on the varifocal +# hi3516dv100_lite_xm-n81820. majestic drives one motor actuator, and here it +# is the pan/tilt head, so the lens is not driven by majestic on this image. +# +# +# Set sensor. IMX291 on this board is the DC/parallel variant, so pin its ini +# explicitly (the MIPI default would give no video). +# +fw_setenv sensor imx291 +cli -s .isp.sensorConfig /etc/sensors/imx291_i2c_dc_1080p.ini +# +# Set custom upgrade url +# +fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/hi3516dv100_lite_anxinshi-asrih698t-nor.tgz' +# +# +# PTZ: Pelco-D pan/tilt on UART1. ptz_caps narrows the WebUI pad to what the +# base does; a Pelco-D zoom frame reaches it and is ignored. +# +fw_setenv ptz_control pelco-d +fw_setenv ptz_port /dev/ttyAMA1 +fw_setenv ptz_speed 9600 +fw_setenv ptz_caps 'pan tilt' +cli -s .ptz.enabled true +# +# +# Reboot so the environment takes effect. +# +(sleep 3 ; reboot -f) & +# + +exit 0 diff --git a/devices/hi3516dv100_lite_anxinshi-asrih698t/general/overlay/usr/share/openipc/muxes.sh b/devices/hi3516dv100_lite_anxinshi-asrih698t/general/overlay/usr/share/openipc/muxes.sh new file mode 100755 index 000000000..ee0cfa98e --- /dev/null +++ b/devices/hi3516dv100_lite_anxinshi-asrih698t/general/overlay/usr/share/openipc/muxes.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Anxinshi ASRIH698T-020-20X pinmux preset; S30customizer runs it on every +# boot, before majestic opens the port. +# +# The pan/tilt MCU sits behind an RS-485 transceiver on UART1. The stock +# firmware muxes UART1 RXD/TXD and keeps the UART1_RTSN ball as GPIO9_2, +# driven as the transceiver's direction pin (Hi3516A/D datasheet table 2-48; +# OpenIPC/firmware#2385). GPIO9_2 resets low, which is receive, so nothing +# majestic sends would reach the bus. Pan/tilt frames need no reply, so the +# pin is held high. +# + +devmem 0x200f0078 32 0 +devmem 0x200f007c 32 1 +devmem 0x200f0084 32 1 + +dir=$(devmem 0x201d0400) +devmem 0x201d0400 32 $((dir | 0x4)) +devmem 0x201d0010 32 0x4 diff --git a/devices/hi3516dv100_lite_anxinshi-asrih698t/general/scripts/excludes/hi3516dv100_lite.list b/devices/hi3516dv100_lite_anxinshi-asrih698t/general/scripts/excludes/hi3516dv100_lite.list new file mode 100644 index 000000000..dce445ed3 --- /dev/null +++ b/devices/hi3516dv100_lite_anxinshi-asrih698t/general/scripts/excludes/hi3516dv100_lite.list @@ -0,0 +1,27 @@ +/usr/lib/sensors/libsns_ar0330_dc.so +/usr/lib/sensors/libsns_imx122.so +/usr/lib/sensors/libsns_imx224.so +/usr/lib/sensors/libsns_imx225.so +/usr/lib/sensors/libsns_imx290.so +/usr/lib/sensors/libsns_imx291.so +/usr/lib/sensors/libsns_imx385.so +/usr/lib/sensors/libsns_os05a10.so +/usr/lib/sensors/libsns_ov2718.so +/usr/lib/sensors/libsns_sc2310.so +/usr/lib/sensors/libsns_sc5235.so +# +/etc/sensors/ar0237_i2c_dc_1080p.ini +/etc/sensors/ar0330_i2c_3M.ini +/etc/sensors/ar0330_i2c_dc_3M.ini +/etc/sensors/gc2053_i2c_1080p.ini +/etc/sensors/imx123_i2c_lvds_3M.ini +/etc/sensors/imx178_i2c_lvds_5M.ini +/etc/sensors/imx185_i2c_1080p.ini +/etc/sensors/imx307_i2c_2l_1080p.ini +/etc/sensors/imx335_i2c_4M.ini +/etc/sensors/imx385_i2c_1080p.ini +/etc/sensors/os05a_i2c_5M.ini +/etc/sensors/ov4689_i2c_1080p.ini +/etc/sensors/ov4689_i2c_4M.ini +/etc/sensors/ov5658_i2c_5M.ini +/etc/sensors/sc4236_i2c_3M.ini