diff --git a/README.md b/README.md index 6c5b5aa49..49b14fc8e 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ G.Craftsman GCA50 T31ZX GC4653 - NOR_16M done EC37-T11 T20L SC2232 RTL8188FU_USB MOR_16M in progress H3C TC2101 SSC337 JXQ03 RTL8188FU_USB NOR_16M done HB-WIFI-Z6 v1.2 T10 JXH62 RTL8188EU_USB NOR_8M in progress +Heimvision HM202 SSC325 GC2063 RTL8188FU_USB NOR_8M video-ok, wifi-ok, ir-ok, pan/tilt-ok (74HC595) iFlytek XFP301-M T31ZX JXQ03 RTL8188FU_USB NOR_16 research Imilab EC3 CMSXJ25A SSC325 GC2053 MT7603UN_? NOR_16M in progress Dahua IPC-HFW1230SP-V2 SSC335DE GC2053 NOR_16M done @@ -132,6 +133,8 @@ Model names Our firmware Dahua IPC-HFW1230SP-V3 => Dahua IPC-HFW1230SP-V2 Dahua IPC-C22C-LC => Imou IPC-С22CP +Heimlink HM202 => Heimvision HM202 +Heimvision HM202A => Heimvision HM202 Imou IPC-С22EP-A => Imou IPC-С22CP Imou IPC-F22AP => Imou IPC-С22CP Switcam HS303 v3 => Qtech QVC-IPC-136W diff --git a/devices/ssc325_lite_heimvision-hm202/br-ext-chip-sigmastar/configs/ssc325_lite_heimvision-hm202_defconfig b/devices/ssc325_lite_heimvision-hm202/br-ext-chip-sigmastar/configs/ssc325_lite_heimvision-hm202_defconfig new file mode 100644 index 000000000..303f8de8e --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/br-ext-chip-sigmastar/configs/ssc325_lite_heimvision-hm202_defconfig @@ -0,0 +1,76 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=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-musleabihf" +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)/infinity6-ssc009a.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_XZ=y + +# Filesystem +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL)/package/busybox/busybox.config" +BR2_PACKAGE_EXFATPROGS=y +BR2_PACKAGE_UBOOT_TOOLS=y +BR2_PACKAGE_ZLIB=y +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +# BR2_PACKAGE_MOSQUITTO is not set +# BR2_PACKAGE_MOSQUITTO_BROKER is not set +BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y +BR2_PACKAGE_WIREGUARD_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y + +# OpenIPC +BR2_OPENIPC_SOC_VENDOR="sigmastar" +BR2_OPENIPC_SOC_MODEL="ssc325" +BR2_OPENIPC_SOC_FAMILY="infinity6" +BR2_OPENIPC_VARIANT="lite" +BR2_OPENIPC_FLASH_SIZE="8" +BR2_OPENIPC_SNS_MODEL="gc2053" + +# Packages +BR2_PACKAGE_DROPBEAR_OPENIPC=y +BR2_PACKAGE_EXFAT_OPENIPC=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_MBEDTLS_OPENIPC=y +BR2_PACKAGE_OPUS_OPENIPC=y +BR2_PACKAGE_OPUS_OPENIPC_FIXED_POINT=y +BR2_PACKAGE_QUIRC_OPENIPC=y +BR2_PACKAGE_RTL8188FU_OPENIPC=y +BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6=y +BR2_PACKAGE_VTUND_OPENIPC=y +BR2_PACKAGE_YAML_CLI=y +BR2_PACKAGE_GPIOSTEP_OPENIPC=y +BR2_PACKAGE_MAJESTIC_AF=y +BR2_PACKAGE_RESET_BUTTON=y diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/gpiostep.conf b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/gpiostep.conf new file mode 100644 index 000000000..d3e8b3ec2 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/gpiostep.conf @@ -0,0 +1,18 @@ +# Heimvision HM202 pan/tilt head, read by majestic-af's gpiostep actuator. The +# coils sit on a 74HC595 (gpiostep sr_gpios=53,47,52, see /etc/modules). +# Travel from one gearbox stop to the other, in gpiostep steps: the vendor +# driver's hmotor_upbound / vmotor_upbound. +pan_travel=520 +tilt_travel=180 +# Raw +steps turn the head left and down, in the sensor's own orientation (the +# WebUI maps its arrows through image.mirror/flip). +pan_left=1 +tilt_up=-1 +pan_delay_us=833 +tilt_delay_us=833 +# Find both stops once per boot, then centre the head. +home=1 +# Steps per frame width/height at 1920x1080, measured by image shift +# (about 13 px a pan step, 15 px a tilt step). +pan_frame_steps=148 +tilt_frame_steps=72 diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/modules b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/modules new file mode 100644 index 000000000..d17c378d6 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/modules @@ -0,0 +1,3 @@ +vfat +exfat +gpiostep sr_gpios=53,47,52 diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/network/interfaces.d/wlan0 b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/network/interfaces.d/wlan0 new file mode 100644 index 000000000..d88b32085 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/network/interfaces.d/wlan0 @@ -0,0 +1,10 @@ +# The HM202's antenna sits badly for some head positions and the RTL8188FU +# driver never leaves an access point on its own, so a camera can stay on a +# far one after a dropout: let wpa_supplicant scan below -60 dBm and roam. +# A copy of OpenIPC/firmware's general/overlay/etc/network/interfaces.d/wlan0 +# with the bgscan line added; keep it in step with that file. +iface wlan0 inet dhcp + pre-up wlan_conf "$(fw_printenv -n wlanssid)" "$(fw_printenv -n wlanpass)" > /tmp/wpa_supplicant.conf + pre-up sed -i 's/^\tscan_ssid=1$/\tscan_ssid=1\n\tbgscan="simple:30:-60:300"/' /tmp/wpa_supplicant.conf + pre-up wpa_supplicant -B -i wlan0 -D nl80211,wext -c /tmp/wpa_supplicant.conf + post-down killall -q wpa_supplicant diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/wireless/usb b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/wireless/usb new file mode 100755 index 000000000..abe4e71f6 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/etc/wireless/usb @@ -0,0 +1,24 @@ +#!/bin/sh + +# Heimvision HM202: LB-Link BL-M8188FU3 (RTL8188FTV) on USB. +if [ "$1" = "rtl8188fu-heimvision-hm202" ]; then + # GPIO 17 powers the module, active low. The SD driver also drives it as + # the card's power switch, hard-wired to that pad: off at probe when no + # card is in. The EHCI here does not see a device that turns up after its + # probe, so power the module and probe the controller again if it is not + # there. + gpio clear 17 > /dev/null + if [ ! -e /sys/bus/usb/devices/1-1 ]; then + sleep 3 + echo soc:Sstar-ehci-1 > /sys/bus/platform/drivers/Sstar-ehci-1/unbind + sleep 1 + echo soc:Sstar-ehci-1 > /sys/bus/platform/drivers/Sstar-ehci-1/bind + sleep 4 + fi + # The driver's own power saving holds every packet for up to a beacon + # interval: 50-350 ms pings and a stalling stream. iwconfig shows it off. + modprobe 8188fu rtw_power_mgnt=0 rtw_ips_mode=0 + exit 0 +fi + +exit 1 diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/customizer.sh b/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/customizer.sh new file mode 100755 index 000000000..fcff56c14 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/customizer.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Perform basic settings on a known IP camera +# +# Heimvision HM202, also sold as HM202A and as Heimlink HM202 (vendor firmware +# EYEPLUS eyeplus_ipc_ms_002): SSC325, GalaxyCore GC2063 (ID 0x2053, driven as +# gc2053), 8 MB NOR, LB-Link BL-M8188FU3 USB WiFi, pan/tilt steppers on a +# 74HC595, speaker and microphone, reset button. +# +# +# Set custom upgrade url +# +fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/ssc325_lite_heimvision-hm202-nor.tgz' +# +# +# Set wlan device and credentials if need +# +fw_setenv wlandev rtl8188fu-heimvision-hm202 +#fw_setenv wlanssid Router +#fw_setenv wlanpass 12345678 +# +# +# Set custom majestic settings +# +# The sensor sits upside down for a camera standing on its foot. +cli -s .image.mirror true +cli -s .image.flip true +# The WebUI's pan/tilt pad reads mirror, flip and rotate, and refuses every +# move while one of them is missing; this majestic has no rotate of its own. +cli -s .image.rotate 0 +# IR-cut: a pulse on 78 takes the filter out, on 79 puts it back. IR LEDs on 44. +cli -s .nightMode.irCutPin1 78 +cli -s .nightMode.irCutPin2 79 +cli -s .nightMode.backlightPin 44 +cli -s .nightMode.lightMonitor true +# The exposure-based trigger never fires here: the ISP never reports its +# exposure as maxed (isp_exposureismax stays 0 at 99 % and 64x gain in the +# dark). Switch on gain instead; 64x is the most this sensor gives. +cli -s .nightMode.autoNightGain 32 +cli -s .audio.speakerPin 62 +# Pan/tilt through majestic-af's gpiostep actuator (/ptz, ONVIF, WebUI). +cli -s .ptz.enabled true +cli -s .ptz.actuator gpiostep +fw_setenv ptz_control gpiostep +fw_setenv ptz_caps 'pan tilt' + +exit 0 diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/gpio.conf b/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/gpio.conf new file mode 100644 index 000000000..e9dd0a4d1 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/gpio.conf @@ -0,0 +1,13 @@ +alarm_in=-1 +alarm_out=-1 +button=66 +ircut1=78 +ircut2=79 +led1=-1 +led2=-1 +light_ir=44 +light_wl=-1 +light_sensor=-1 +mmc_pwr=-1 +speaker=62 +usb=17 diff --git a/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/muxes.sh b/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/muxes.sh new file mode 100644 index 000000000..13353c607 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/overlay/usr/share/openipc/muxes.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +### unmute the microphone ### +# GPIO 16 mutes it while high, and nearly so when left floating as an input. +# The vendor app drives it low once the mic is on. +gpio clear 16 diff --git a/devices/ssc325_lite_heimvision-hm202/general/scripts/excludes/ssc325_lite.list b/devices/ssc325_lite_heimvision-hm202/general/scripts/excludes/ssc325_lite.list new file mode 100644 index 000000000..f13ce0aa6 --- /dev/null +++ b/devices/ssc325_lite_heimvision-hm202/general/scripts/excludes/ssc325_lite.list @@ -0,0 +1,5 @@ +/lib/modules/4.9.84/kernel/fs/lockd/lockd.ko +/lib/modules/4.9.84/kernel/fs/nfs/nfs.ko +/lib/modules/4.9.84/kernel/fs/nfs/nfsv3.ko +/lib/modules/4.9.84/kernel/fs/nfs_common/grace.ko +/lib/modules/4.9.84/kernel/net/sunrpc/sunrpc.ko