Obsah

Vocore 2 Lite

http://vocore.io/v2.html

Development env: https://www.youtube.com/watch?v=ocl6yFtKSNs

USB2TTL UART console

Default VoCore2 SSID WiFi

Výchozí WiFi AP je bez autentizace, stačí se připojit.

Výchozí přístup do OpenWrt LuCI

Aktualizace firmware

Firmware: http://vonger.cn/misc/vocore2/20170211L.bin

Přes web UI

Boot info/upgrade firmware

Přes sériovou linku

Např. při následující chybě při bootu často nezbude jiná možnost než flash firmware přes sériovou linku. Přenos je dost pomalý, ale naštěstí není firmware velký.

*** Warning - bad CRC, using default environment

Při boot zvolit možnost 0: Load system code then write to Flash via SERIAL.

============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Jun 25 2016  Time:22:30:18
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768
RESET MT7628 PHY!!!!!!
Please choose the operation:
   0: Load system code then write to Flash via SERIAL.
   1: Load system code to SDRAM via TFTP.
   2: Load system code then write to Flash via TFTP.
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   5: Load system code then write to Flash via USB Storage.
   7: Load Boot Loader code then write to Flash via Serial.
   8: Start Web Server to load system code.
   9: Load Boot Loader code then write to Flash via TFTP.
 8
You chose 0

 0


0: System Load Linux then write to Flash via Serial.
## Ready for binary (kermit) download to 0x80100000 at 115200 bps...

Následně např. v Tera Term (Win) poslat firmware do sériové linky

Přes USB Flash disk

Flash firmware přes USB Flash disk je rychlý, vyžaduje však mít z Vocore 2 vyveden USB konektor.

  1. naformátovat USB Flash disk na FAT32
  2. přejmenovat stažený firmware 20170211L.bin na root_uImage
  3. zkopírovat root_uImage na USB Flash disk
  4. připojit do USB portu Vocore 2 USB Flash disk
  5. připojit a spustit Vocore 2 přes sériovou linku
  6. zvolit možnost 5: Load system code then write to Flash via USB Storage.

Access Point WPA2

LuCI neumožňuje nastavení přístupového bodu s WPA2, proto je zapotřebí použít konzoli.

root@OpenWrt:/# uci set wireless.ap.ssid="vfpv"
root@OpenWrt:/# uci set wireless.ap.key="--tajne-heslo--"
root@OpenWrt:/# uci set wireless.ap.encryption=psk2
root@OpenWrt:/# uci commit
root@OpenWrt:/# /etc/init.d/network restart

Případně přímou modifikací konfiguračního souboru.

/etc/config/wireless
config wifi-device 'radio0'
        option type 'ralink'
        option variant 'mt7628'
        option country 'CN'
        option hwmode '11g'
        option channel 'auto'
 
config wifi-iface 'ap'
        option device 'radio0'
        option mode 'ap'
        option network 'lan'
        option ifname 'ra0'
        option ssid 'vfpv'
        option disabled '0'
        option key '--tajne-heslo--'
        option encryption 'psk2'
 
config wifi-iface 'sta'
        option device 'radio0'
        option mode 'sta'
        option network 'wwan'
        option ifname 'apcli0'
        option led 'mediatek:orange:wifi'
        option ssid 'UplinkAp'
        option key 'SecretKey'
        option encryption 'psk'
        option disabled '1'
 
config 0 'disabled'

Client mode

Postup nastavení klientského módu pro připojení k přístupovému bodu.

shell# uci set wireless.sta.ssid=mojeap
shell# uci set wireless.sta.key=heslo-k-moje-ap
shell# uci set wireless.sta.network=wwan
shell# uci set wireless.sta.disabled=0
shell# uci commit
shell# /etc/init.d/network restart
shell# sleep 10
shell# uci set wireless.sta.disabled=1
shell# uci commit

FPV TEST

Instalace motion

Vocore 2 Lite má pouze 8 MB NOR storage. Proto je zapotřebí nějaké programy odinstalovat smazat něco z /overlay, co považujeme za nepotřebné, abychom získali místo pro instalaci motion a mohli zrealizovat stream z web kamery. Pro nahrávání videa by bylo zapotřebí nainstalovat ffmpeg, který mám kolem 5 MB a na interní storage jej nedostaneme. Proto by byl vhodnější Vocore 2, kde je 16 MB NOR storage. Nicméně je možné připojit SD kartu a ffmpeg umístit na ni a dále zrealizovat potřebné symbolické linky. Toto, ale nemám vyzkoušené.

Pro instalaci je zapotřebí připojit se na přístupový bod, který zprostředkuje připojení k internetu. Je tedy nutné se přepnout do klientského módu a nakonfigurovat klienta. To provedeme přes sériovou konzoli, protože změnou se zruší Vocore AP bude tedy nedostupné SSH.

shell# opkg remove –force-removal-of-dependent-packages lua samba36-server openvpn-polarssl (neúčinné, neuvolní dostatečné místo v /overlay)

Nejdříve update balíčkovacího systému

root@OpenWrt:/# opkg update
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/base/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_base.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/base/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/linkit/Packages.gz.
wget: server returned error: HTTP/1.1 404 Not Found
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/linkit/Packages.sig.
wget: server returned error: HTTP/1.1 404 Not Found
Signature check failed.
Remove wrong Signature file.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/luci/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_luci.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/luci/Packages.sig.
Signature check passed.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_packages.
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/packages/Packages.sig.
Signature check passed.
Collected errors:
 * opkg_download: Failed to download http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/linkit/Packages.gz, wget returned 1.
 * opkg_download: Failed to download http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/linkit/Packages.sig, wget returned 1.

Smažu mnou domnělý nepotřebný SW z /overlay, pro uvolnění místa

root@OpenWrt:/# rm /overlay/upper/usr/bin/ir-keytable

Instalace motion

root@OpenWrt:/# opkg install motion
Installing motion (3.4.0-20141018-9479d910f2149b5558788bb86f97f26522794212-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/packages/motion_3.4.0-20141018-9479d910f2149b5558788bb86f97f26522794212-1_ramips_24kec.ipk.
Configuring motion.

Instalace v4l-utils

root@OpenWrt:/# opkg install v4l-utils
Installing v4l-utils (1.6.2-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/packages/v4l-utils_1.6.2-1_ramips_24kec.ipk.
Installing libv4l (1.6.2-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/packages/libv4l_1.6.2-1_ramips_24kec.ipk.
Installing uclibcxx (0.2.4-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/base/uclibcxx_0.2.4-1_ramips_24kec.ipk.
Configuring libv4l.
Configuring uclibcxx.
Configuring v4l-utils.

Instalace uvcdynctrl

root@OpenWrt:/# opkg install uvcdynctrl
Installing uvcdynctrl (0.2.4) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7628/packages/packages/uvcdynctrl_0.2.4_ramips_24kec.ipk.
Configuring uvcdynctrl.

Trust SpotLight Webcam Pro

Informace o zařízení

Výstup do serial konzole po připojení USB kamery

[ 1167.480000] usb 1-1: USB disconnect, device number 2
[ 1170.410000] usb 1-1: new high-speed USB device number 3 using ehci-platform
[ 1170.600000] usb 1-1: no of_node; not parsing pinctrl DT
[ 1170.610000] uvcvideo 1-1:1.0: no of_node; not parsing pinctrl DT
[ 1170.610000] uvcvideo: Found UVC 1.00 device Trust Webcam (0c45:6340)
[ 1170.640000] input: Trust Webcam as /devices/101c0000.ehci/usb1/1-1/1-1:1.0/input/input1

USB info

shell# lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 0c45:6340 Microdia
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

V4L info

shell# v4l2-ctl --all
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : Trust Webcam
        Bus info      : usb-101c0000.ehci-1
        Driver version: 3.18.29
        Capabilities  : 0x84000001
                Video Capture
                Streaming
                Device Capabilities
        Device Caps   : 0x04000001
                Video Capture
                Streaming
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height  : 640/480
        Pixel Format  : 'YUYV'
        Field         : None
        Bytes per Line: 1280
        Size Image    : 614400
        Colorspace    : SRGB
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 640, Height 480
        Default     : Left 0, Top 0, Width 640, Height 480
        Pixel Aspect: 1/1
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 25.000 (25/1)
        Read buffers     : 0
                     brightness (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation (int)    : min=1 max=128 step=1 default=64 value=64
                            hue (int)    : min=-40 max=40 step=1 default=0 value=0
                          gamma (int)    : min=72 max=500 step=1 default=100 value=100
                           gain (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency (menu)   : min=0 max=2 default=1 value=1
                      sharpness (int)    : min=0 max=6 step=1 default=2 value=2
         backlight_compensation (int)    : min=0 max=2 step=1 default=1 value=1
                  exposure_auto (menu)   : min=0 max=3 default=3 value=3
                     brightness (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast (int)    : min=0 max=64 step=1 default=32 value=32
                     saturation (int)    : min=1 max=128 step=1 default=64 value=64
                            hue (int)    : min=-40 max=40 step=1 default=0 value=0
                          gamma (int)    : min=72 max=500 step=1 default=100 value=100
                           gain (int)    : min=0 max=100 step=1 default=0 value=0
           power_line_frequency (menu)   : min=0 max=2 default=1 value=1
                      sharpness (int)    : min=0 max=6 step=1 default=2 value=2
         backlight_compensation (int)    : min=0 max=2 step=1 default=1 value=1

Konfigurace motion

# Rename this distribution example file to motion.conf
#
# This config file was generated by motion 3.4.0-Git-78ba2da
 
 
############################################################
# Daemon
############################################################
 
# Start in daemon (background) mode and release terminal (default: off)
daemon off
 
# File to store the process ID, also called pid file. (default: not defined)
process_id_file /var/run/motion/motion.pid
 
############################################################
# Basic Setup Mode
############################################################
 
# Start in Setup-Mode, daemon disabled. (default: off)
setup_mode off
 
 
# Use a file to save logs messages, if not defined stderr and syslog is used. (default: not defined)
;logfile /tmp/motion.log
 
# Level of log messages [1..9] (EMR, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL). (default: 6 / NTC)
log_level 0
 
# Filter to log messages by type (COR, STR, ENC, NET, DBL, EVT, TRK, VID, ALL). (default: ALL)
log_type all
 
###########################################################
# Capture device options
############################################################
 
# Videodevice to be used for capturing  (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video0
 
# v4l2_palette allows to choose preferable palette to be use by motion
# to capture from those supported by your videodevice. (default: 17)
# E.g. if your videodevice supports both V4L2_PIX_FMT_SBGGR8 and
# V4L2_PIX_FMT_MJPEG then motion will by default use V4L2_PIX_FMT_MJPEG.
# Setting v4l2_palette to 2 forces motion to use V4L2_PIX_FMT_SBGGR8
# instead.
#
# Values :
# V4L2_PIX_FMT_SN9C10X : 0  'S910'
# V4L2_PIX_FMT_SBGGR16 : 1  'BYR2'
# V4L2_PIX_FMT_SBGGR8  : 2  'BA81'
# V4L2_PIX_FMT_SPCA561 : 3  'S561'
# V4L2_PIX_FMT_SGBRG8  : 4  'GBRG'
# V4L2_PIX_FMT_SGRBG8  : 5  'GRBG'
# V4L2_PIX_FMT_PAC207  : 6  'P207'
# V4L2_PIX_FMT_PJPG    : 7  'PJPG'
# V4L2_PIX_FMT_MJPEG   : 8  'MJPEG'
# V4L2_PIX_FMT_JPEG    : 9  'JPEG'
# V4L2_PIX_FMT_RGB24   : 10 'RGB3'
# V4L2_PIX_FMT_SPCA501 : 11 'S501'
# V4L2_PIX_FMT_SPCA505 : 12 'S505'
# V4L2_PIX_FMT_SPCA508 : 13 'S508'
# V4L2_PIX_FMT_UYVY    : 14 'UYVY'
# V4L2_PIX_FMT_YUYV    : 15 'YUYV'
# V4L2_PIX_FMT_YUV422P : 16 '422P'
# V4L2_PIX_FMT_YUV420  : 17 'YU12'
#
#v4l2_palette 17
v4l2_palette 15
 
# Tuner device to be used for capturing using tuner as source (default /dev/tuner0)
# This is ONLY used for FreeBSD. Leave it commented out for Linux
; tunerdevice /dev/tuner0
 
# The video input to be used (default: -1)
# Should normally be set to 0 or 1 for video/TV cards, and -1 for USB cameras
input -1
 
# The video norm to use (only for video capture and TV tuner cards)
# Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
norm 0
 
# The frequency to set the tuner to (kHz) (only for TV tuner cards) (default: 0)
frequency 0
 
# Rotate image this number of degrees. The rotation affects all saved images as
# well as movies. Valid values: 0 (default = no rotation), 90, 180 and 270.
rotate 0
 
# Image width (pixels). Valid range: Camera dependent, default: 352
width 320
#width 640
#width 1024
#width 1280
 
# Image height (pixels). Valid range: Camera dependent, default: 288
height 240
#height 480
#height 768
#height 1024
 
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 25
 
# Minimum time in seconds between capturing picture frames from the camera.
# Default: 0 = disabled - the capture rate is given by the camera framerate.
# This option is used when you want to capture images at a rate lower than 2 per second.
minimum_frame_time 0
 
# URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// mjpg:// rtsp:// mjpeg:// or file:///)
# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined
; netcam_url value
 
# Username and password for network camera (only if required). Default: not defined
# Syntax is user:password
; netcam_userpass value
 
# The setting for keep-alive of network socket, should improve performance on compatible net cameras.
# off:   The historical implementation using HTTP/1.0, closing the socket after each http request.
# force: Use HTTP/1.0 requests with keep alive header to reuse the same connection.
# on:    Use HTTP/1.1 requests that support keep alive as default.
# Default: off
netcam_keepalive off
 
# URL to use for a netcam proxy server, if required, e.g. "http://myproxy".
# If a port number other than 80 is needed, use "http://myproxy:1234".
# Default: not defined
; netcam_proxy value
 
# Set less strict jpeg checks for network cameras with a poor/buggy firmware.
# Default: off
netcam_tolerant_check off
 
# RTSP connection uses TCP to communicate to the camera. Can prevent image corruption.
# Default: on
rtsp_uses_tcp on
 
# Let motion regulate the brightness of a video device (default: off).
# The auto_brightness feature uses the brightness option as its target value.
# If brightness is zero auto_brightness will adjust to average brightness value 128.
# Only recommended for cameras without auto brightness
auto_brightness off
 
# Set the initial brightness of a video device.
# If auto_brightness is enabled, this value defines the average brightness level
# which Motion will try and adjust to.
# Valid range 0-255, default 0 = disabled
brightness 0
 
# Set the contrast of a video device.
# Valid range 0-255, default 0 = disabled
contrast 0
 
# Set the saturation of a video device.
# Valid range 0-255, default 0 = disabled
saturation 0
 
# Set the hue of a video device (NTSC feature).
# Valid range 0-255, default 0 = disabled
hue 0
 
 
############################################################
# Round Robin (multiple inputs on same video device name)
############################################################
 
# Number of frames to capture in each roundrobin step (default: 1)
roundrobin_frames 1
 
# Number of frames to skip before each roundrobin step (default: 1)
roundrobin_skip 1
 
# Try to filter out noise generated by roundrobin (default: off)
switchfilter off
 
 
############################################################
# Motion Detection Settings:
############################################################
 
# Threshold for number of changed pixels in an image that
# triggers motion detection (default: 1500)
threshold 1500
 
# Automatically tune the threshold down if possible (default: off)
threshold_tune off
 
# Noise threshold for the motion detection (default: 32)
noise_level 32
 
# Automatically tune the noise threshold (default: on)
noise_tune on
 
# Despeckle motion image using (e)rode or (d)ilate or (l)abel (Default: not defined)
# Recommended value is EedDl. Any combination (and number of) of E, e, d, and D is valid.
# (l)abeling must only be used once and the 'l' must be the last letter.
# Comment out to disable
despeckle_filter EedDl
 
# Detect motion in predefined areas (1 - 9). Areas are numbered like that:  1 2 3
# A script (on_area_detected) is started immediately when motion is         4 5 6
# detected in one of the given areas, but only once during an event.        7 8 9
# One or more areas can be specified with this option. Take care: This option
# does NOT restrict detection to these areas! (Default: not defined)
; area_detect value
 
# PGM file to use as a sensitivity mask.
# Full path name to. (Default: not defined)
; mask_file value
 
 Dynamically create a mask file during operation (default: 0)
# Adjust speed of mask changes from 0 (off) to 10 (fast)
smart_mask_speed 0
 
# Ignore sudden massive light intensity changes given as a percentage of the picture
# area that changed intensity. Valid range: 0 - 100 , default: 0 = disabled
lightswitch 0
 
# Picture frames must contain motion at least the specified number of frames
# in a row before they are detected as true motion. At the default of 1, all
# motion is detected. Valid range: 1 to thousands, recommended 1-5
minimum_motion_frames 1
 
# Specifies the number of pre-captured (buffered) pictures from before motion
# was detected that will be output at motion detection.
# Recommended range: 0 to 5 (default: 0)
# Do not use large values! Large values will cause Motion to skip video frames and
# cause unsmooth movies. To smooth movies use larger values of post_capture instead.
pre_capture 0
 
# Number of frames to capture after motion is no longer detected (default: 0)
post_capture 0
 
# Event Gap is the seconds of no motion detection that triggers the end of an event.
# An event is defined as a series of motion images taken within a short timeframe.
# Recommended value is 60 seconds (Default). The value -1 is allowed and disables
# events causing all Motion to be written to one single movie file and no pre_capture.
# If set to 0, motion is running in gapless mode. Movies don't have gaps anymore. An
# event ends right after no more motion is detected and post_capture is over.
event_gap 60
 
# Maximum length in seconds of a movie
# When value is exceeded a new movie file is created. (Default: 0 = infinite)
max_movie_time 0
 
# Always save images even if there was no motion (default: off)
emulate_motion off
 
 
############################################################
# Image File Output
############################################################
 
# Output 'normal' pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# When set to 'first', only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to 'best'.
# Picture with motion nearest center of picture is saved when set to 'center'.
# Can be used as preview shot for the corresponding movie.
output_pictures off
 
# Output pictures with only the pixels moving object (ghost images) (default: off)
output_debug_pictures off
 
# The quality (in percent) to be used by the jpeg compression (default: 75)
quality 75
 
# Type of output images
# Valid values: jpeg, ppm (default: jpeg)
picture_type jpeg
 
############################################################
# FFMPEG related options
# Film (movies) file output, and deinterlacing of the video input
# The options movie_filename and timelapse_filename are also used
# by the ffmpeg feature
############################################################
 
# Use ffmpeg to encode movies in realtime (default: off)
ffmpeg_output_movies off
 
# Use ffmpeg to make movies with only the pixels moving
# object (ghost images) (default: off)
ffmpeg_output_debug_movies off
 
# Use ffmpeg to encode a timelapse movie
# Default value 0 = off - else save frame every Nth second
ffmpeg_timelapse 0
 
# The file rollover mode of the timelapse video
# Valid values: hourly, daily (default), weekly-sunday, weekly-monday, monthly, manual
ffmpeg_timelapse_mode daily
 
# Bitrate to be used by the ffmpeg encoder (default: 400000)
# This option is ignored if ffmpeg_variable_bitrate is not 0 (disabled)
ffmpeg_bps 400000
 
# Enables and defines variable bitrate for the ffmpeg encoder.
# ffmpeg_bps is ignored if variable bitrate is enabled.
# Valid values: 0 (default) = fixed bitrate defined by ffmpeg_bps,
# or the range 2 - 31 where 2 means best quality and 31 is worst.
ffmpeg_variable_bitrate 0
 
# Codec to used by ffmpeg for the video compression.
# Timelapse videos have two options.
#   swf - Creates swf file with mpeg-2 encoding.
#     If motion is shutdown and restarted, new pics will be appended
#     to any previously created file with name indicated for timelapse.
#   mpeg4 - Creates avi file with the default encoding.
#     If motion is shutdown and restarted, new pics will create a
#     new file with the name indicated for timelapse.
# Supported formats are:
# mpeg4 or msmpeg4 - gives you files with extension .avi
# msmpeg4 is recommended for use with Windows Media Player because
# it requires no installation of codec on the Windows client.
# swf - gives you a flash film with extension .swf
# flv - gives you a flash video with extension .flv
# ffv1 - FF video codec 1 for Lossless Encoding ( experimental )
# mov - QuickTime ( testing )
# ogg - Ogg/Theora ( testing )
ffmpeg_video_codec mpeg4
 
# Use ffmpeg to deinterlace video. Necessary if you use an analog camera
# and see horizontal combing on moving objects in video or pictures.
# (default: off)
ffmpeg_deinterlace off
 
############################################################
# SDL Window
############################################################
 
# Number of motion thread to show in SDL Window (default: 0 = disabled)
#sdl_threadnr 0
############################################################
# External pipe to video encoder
# Replacement for FFMPEG builtin encoder for ffmpeg_output_movies only.
# The options movie_filename and timelapse_filename are also used
# by the ffmpeg feature
#############################################################
 
# Bool to enable or disable extpipe (default: off)
use_extpipe off
 
# External program (full path and opts) to pipe raw video to
# Generally, use '-' for STDIN...
;extpipe mencoder -demuxer rawvideo -rawvideo w=320:h=240:i420 -ovc x264 -x264encopts bframes=4:frameref=1:subq=1:scenecut=-1:nob_adapt:threads=1:keyint=1000:8x8dct:vb
v_bufsize=4000:crf=24:partitions=i8x8,i4x4:vbv_maxrate=800:no-chroma-me -vf denoise3d=16:12:48:4,pp=lb -of   avi -o %f.avi - -fps %fps
 
 
 
############################################################
# Snapshots (Traditional Periodic Webcam File Output)
############################################################
 
# Make automated snapshot every N seconds (default: 0 = disabled)
snapshot_interval 0
 
 
############################################################
# Text Display
# %Y = year, %m = month, %d = date,
# %H = hour, %M = minute, %S = second, %T = HH:MM:SS,
# %v = event, %q = frame number, %t = thread (camera) number,
# %D = changed pixels, %N = noise level, \n = new line,
# %i and %J = width and height of motion area,
# %K and %L = X and Y coordinates of motion center
# %C = value defined by text_event - do not use with text_event!
# You can put quotation marks around the text to allow
# leading spaces
############################################################
 
# Locate and draw a box around the moving object.
# Valid values: on, off, preview (default: off)
# Set to 'preview' will only draw a box in preview_shot pictures.
locate_motion_mode off
 
# Set the look and style of the locate box if enabled.
# Valid values: box, redbox, cross, redcross (default: box)
# Set to 'box' will draw the traditional box.
# Set to 'redbox' will draw a red box.
# Set to 'cross' will draw a little cross to mark center.
# Set to 'redcross' will draw a little red cross to mark center.
locate_motion_style box
 
# Draws the timestamp using same options as C function strftime(3)
# Default: %Y-%m-%d\n%T = date in ISO format and time in 24 hour clock
# Text is placed in lower right corner
text_right %Y-%m-%d\n%T-%q
 
# Draw a user defined text on the images using same options as C function strftime(3)
# Default: Not defined = no text
# Text is placed in lower left corner
; text_left CAMERA %t
 
# Draw the number of changed pixed on the images (default: off)
# Will normally be set to off except when you setup and adjust the motion settings
# Text is placed in upper right corner
text_changes off
 
# This option defines the value of the special event conversion specifier %C
# You can use any conversion specifier in this option except %C. Date and time
# values are from the timestamp of the first image in the current event.
# Default: %Y%m%d%H%M%S
# The idea is that %C can be used filenames and text_left/right for creating
# a unique identifier for each event.
text_event %Y%m%d%H%M%S
 
# Draw characters at twice normal size on images. (default: off)
text_double off
 
 
# Text to include in a JPEG EXIF comment
# May be any text, including conversion specifiers.
# The EXIF timestamp is included independent of this text.
;exif_text %i%J/%K%L
 
############################################################
# Target Directories and filenames For Images And Films
# For the options snapshot_, picture_, movie_ and timelapse_filename
# you can use conversion specifiers
# %Y = year, %m = month, %d = date,
# %H = hour, %M = minute, %S = second,
# %v = event, %q = frame number, %t = thread (camera) number,
# %D = changed pixels, %N = noise level,
# %i and %J = width and height of motion area,
# %K and %L = X and Y coordinates of motion center
# %C = value defined by text_event
# Quotation marks round string are allowed.
############################################################
 
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /tmp/motion
 
# File path for snapshots (jpeg or ppm) relative to target_dir
# Default: %v-%Y%m%d%H%M%S-snapshot
# Default value is equivalent to legacy oldlayout option
# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-snapshot
# File extension .jpg or .ppm is automatically added so do not include this.
# Note: A symbolic link called lastsnap.jpg created in the target_dir will always
# point to the latest snapshot, unless snapshot_filename is exactly 'lastsnap'
snapshot_filename %v-%Y%m%d%H%M%S-snapshot
 
# File path for motion triggered images (jpeg or ppm) relative to target_dir
# Default: %v-%Y%m%d%H%M%S-%q
# Default value is equivalent to legacy oldlayout option
# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q
# File extension .jpg or .ppm is automatically added so do not include this
# Set to 'preview' together with best-preview feature enables special naming
# convention for preview shots. See motion guide for details
picture_filename %v-%Y%m%d%H%M%S-%q
 
# File path for motion triggered ffmpeg films (movies) relative to target_dir
# Default: %v-%Y%m%d%H%M%S
# File extensions(.swf .avi) are automatically added so do not include them
movie_filename %v-%Y%m%d%H%M%S
 
# File path for timelapse movies relative to target_dir
# Default: %Y%m%d-timelapse
# File extensions(.swf .avi) are automatically added so do not include them
timelapse_filename %Y%m%d-timelapse
 
############################################################
# Global Network Options
############################################################
# Enable or disable IPV6 for http control and stream (default: off )
ipv6_enabled off
 
############################################################
# Live Stream Server
############################################################
 
# The mini-http server listens to this port for requests (default: 0 = disabled)
stream_port 8081
 
# Quality of the jpeg (in percent) images produced (default: 50)
stream_quality 50
 
# Output frames at 1 fps when no motion is detected and increase to the
# rate given by stream_maxrate when motion is detected (default: off)
stream_motion on
 
# Maximum framerate for stream streams (default: 1)
stream_maxrate 25
 
# Restrict stream connections to localhost only (default: on)
stream_localhost off
 
# Limits the number of images per connection (default: 0 = unlimited)
# Number can be defined by multiplying actual stream rate by desired number of seconds
# Actual stream rate is the smallest of the numbers framerate and stream_maxrate
stream_limit 0
 
# Set the authentication method (default: 0)
# 0 = disabled
# 1 = Basic authentication
# 2 = MD5 digest (the safer authentication)
stream_auth_method 0
 
# Authentication for the stream. Syntax username:password
# Default: not defined (Disabled)
; stream_authentication username:password
 
 
############################################################
# HTTP Based Control
############################################################
 
# TCP/IP port for the http server to listen on (default: 0 = disabled)
webcontrol_port 8080
 
# Restrict control connections to localhost only (default: on)
webcontrol_localhost off
 
# Output for http server, select off to choose raw text plain (default: on)
webcontrol_html_output on
 
# Authentication for the http based control. Syntax username:password
# Default: not defined (Disabled)
; webcontrol_authentication username:password
 
 
############################################################
# Tracking (Pan/Tilt)
#############################################################
 
# Type of tracker (0=none (default), 1=stepper, 2=iomojo, 3=pwc, 4=generic, 5=uvcvideo, 6=servo)
# The generic type enables the definition of motion center and motion size to
# be used with the conversion specifiers for options like on_motion_detected
track_type 0
 
# Enable auto tracking (default: off)
track_auto off
 
# Serial port of motor (default: none)
;track_port /dev/ttyS0
 
# Motor number for x-axis (default: 0)
;track_motorx 0
 
# Set motorx reverse (default: 0)
;track_motorx_reverse 0
 
# Motor number for y-axis (default: 0)
;track_motory 1
 
# Set motory reverse (default: 0)
;track_motory_reverse 0
 
# Maximum value on x-axis (default: 0)
;track_maxx 200
 
# Minimum value on x-axis (default: 0)
;track_minx 50
 
# Maximum value on y-axis (default: 0)
;track_maxy 200
 
# Minimum value on y-axis (default: 0)
;track_miny 50
 
# Center value on x-axis (default: 0)
;track_homex 128
 
# Center value on y-axis (default: 0)
;track_homey 128
 
# ID of an iomojo camera if used (default: 0)
track_iomojo_id 0
 
# Angle in degrees the camera moves per step on the X-axis
# with auto-track (default: 10)
# Currently only used with pwc type cameras
track_step_angle_x 10
 
# Angle in degrees the camera moves per step on the Y-axis
# with auto-track (default: 10)
# Currently only used with pwc type cameras
track_step_angle_y 10
 
# Delay to wait for after tracking movement as number
# of picture frames (default: 10)
track_move_wait 10
# Speed to set the motor to (stepper motor option) (default: 255)
track_speed 255
 
# Number of steps to make (stepper motor option) (default: 40)
track_stepsize 40
 
 
############################################################
# External Commands, Warnings and Logging:
# You can use conversion specifiers for the on_xxxx commands
# %Y = year, %m = month, %d = date,
# %H = hour, %M = minute, %S = second,
# %v = event, %q = frame number, %t = thread (camera) number,
# %D = changed pixels, %N = noise level,
# %i and %J = width and height of motion area,
# %K and %L = X and Y coordinates of motion center
# %C = value defined by text_event
# %f = filename with full path
# %n = number indicating filetype
# Both %f and %n are only defined for on_picture_save,
# on_movie_start and on_movie_end
# Quotation marks round string are allowed.
############################################################
 
# Do not sound beeps when detecting motion (default: on)
# Note: Motion never beeps when running in daemon mode.
quiet on
 
# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by event_gap
; on_event_start value
 
# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option event_gap.
; on_event_end value
 
# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
; on_picture_save value
 
# Command to be executed when a motion frame is detected (default: none)
; on_motion_detected value
 
# Command to be executed when motion in a predefined area is detected
# Check option 'area_detect'.   (default: none)
; on_area_detected value
 
# Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_start value
 
# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_end value
 
# Command to be executed when a camera can't be opened or if it is lost
# NOTE: There is situations when motion don't detect a lost camera!
# It depends on the driver, some drivers dosn't detect a lost camera at all
# Some hangs the motion thread. Some even hangs the PC! (default: none)
; on_camera_lost value
 
#####################################################################
# Common Options for database features.
# Options require database options to be active also.
#####################################################################
 
# Log to the database when creating motion triggered picture file  (default: on)
; sql_log_picture on
 
# Log to the database when creating a snapshot image file (default: on)
; sql_log_snapshot on
 
# Log to the database when creating motion triggered movie file (default: off)
; sql_log_movie off
 
# Log to the database when creating timelapse movies file (default: off)
; sql_log_timelapse off
 
# SQL query string that is sent to the database
# Use same conversion specifiers has for text features
# Additional special conversion specifiers are
# %n = the number representing the file_type
# %f = filename with full path
# Default value:
# Create tables :
##
# Mysql
# CREATE TABLE security (camera int, filename char(80) not null, frame int, file_type int, time_stamp timestamp(14), event_time_stamp timestamp(14));
#
# Postgresql
# CREATE TABLE security (camera int, filename char(80) not null, frame int, file_type int, time_stamp timestamp without time zone, event_time_stamp timestamp without t
ime zone);
#
# insert into security(camera, filename, frame, file_type, time_stamp, text_event) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
; sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
 
 
############################################################
# Database Options
############################################################
 
# database type : mysql, postgresql, sqlite3 (default : not defined)
; database_type value
 
# database to log to (default: not defined)
; database_dbname value
 
# The host on which the database is located (default: localhost)
; database_host value
 
# User account name for database (default: not defined)
; database_user value
 
# User password for database (default: not defined)
; database_password value
 
# Port on which the database is located
#  mysql 3306 , postgresql 5432 (default: not defined)
; database_port value
 
############################################################
# Database Options For SQLite3
############################################################
 
# SQLite3 database (file path) (default: not defined)
; sqlite3_db value
 
 
 
############################################################
# Video Loopback Device (vloopback project)
############################################################
 
# Output images to a video4linux loopback device
# The value '-' means next available (default: not defined)
; video_pipe value
 
# Output motion images to a video4linux loopback device
# The value '-' means next available (default: not defined)
; motion_video_pipe value
 
 
##############################################################
# Thread config files - One for each camera.
# Except if only one camera - You only need this config file.
# If you have more than one camera you MUST define one thread
# config file for each camera in addition to this config file.
##############################################################
 
# Remember: If you have more than one camera you must have one
# thread file for each camera. E.g. 2 cameras requires 3 files:
# This motion.conf file AND thread1.conf and thread2.conf.
# Only put the options that are unique to each camera in the
# thread config files.
; thread /usr/etc/motion/thread1.conf
; thread /usr/etc/motion/thread2.conf
; thread /usr/etc/motion/thread3.conf
; thread /usr/etc/motion/thread4.conf

Spuštění motion

shell# motion -c /etc/motion.conf

Sledování na http://ip-vocore-2:8081

Stream test

Framerate a stream_maxrate nastaveno na 25 snímků dle výchozích parametrů kamery. Při rozlišení 320×240 byl stream vcelku plynulý. Při rozlišení 640×480 již docházelo k framedrop a vytížení procesoru často dosahovalo 100%. Procesor nestíhal zpracování. Snížením framerate by se procesoru ulevilo, ale je otázka zda o snímky přicházet. Tak či tak se zhorší plynulost obrazu při streamování.

Microsoft LifeCam Cinema WebCam 720p

Kamerka má automatické ostření!

Informace o zařízení

Výstup do serial konzole po připojení USB kamery

[   98.030000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[   98.190000] usb 1-1: no of_node; not parsing pinctrl DT
[   98.210000] uvcvideo 1-1:1.0: no of_node; not parsing pinctrl DT
[   98.210000] uvcvideo: Found UVC 1.00 device Microsoft® LifeCam Cinema(TM) (045e:075d)
[   98.230000] input: Microsoft® LifeCam Cinema(TM) as /devices/101c0000.ehci/usb1/1-1/1-1:1.0/input/input0

USB info

shell# lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 045e:075d Microsoft Corp. LifeCam Cinema
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

V4L info

shell# v4l2-ctl --all
Driver Info (not using libv4l2):
        Driver name   : uvcvideo
        Card type     : Microsoft® LifeCam Cinema(TM)
        Bus info      : usb-101c0000.ehci-1
        Driver version: 3.18.29
        Capabilities  : 0x84000001
                Video Capture
                Streaming
                Device Capabilities
        Device Caps   : 0x04000001
                Video Capture
                Streaming
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height  : 640/480
        Pixel Format  : 'YUYV'
        Field         : None
        Bytes per Line: 1280
        Size Image    : 939638784
        Colorspace    : SRGB
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 640, Height 480
        Default     : Left 0, Top 0, Width 640, Height 480
        Pixel Aspect: 1/1
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 0.012 (3125/262144)
        Read buffers     : 0
                     brightness (int)    : min=30 max=255 step=1 default=133 value=133
                       contrast (int)    : min=0 max=10 step=1 default=5 value=5
                     saturation (int)    : min=0 max=200 step=1 default=83 value=83
 white_balance_temperature_auto (bool)   : default=1 value=1
           power_line_frequency (menu)   : min=0 max=2 default=2 value=2
      white_balance_temperature (int)    : min=2800 max=10000 step=1 default=4500 value=4500 flags=inactive
                      sharpness (int)    : min=0 max=50 step=1 default=25 value=25
         backlight_compensation (int)    : min=0 max=10 step=1 default=0 value=1
                  exposure_auto (menu)   : min=0 max=3 default=1 value=3
              exposure_absolute (int)    : min=5 max=20000 step=1 default=156 value=156 flags=inactive
                   pan_absolute (int)    : min=-201600 max=201600 step=3600 default=0 value=0
                  tilt_absolute (int)    : min=-201600 max=201600 step=3600 default=0 value=0
                 focus_absolute (int)    : min=0 max=40 step=1 default=0 value=6 flags=inactive
                     focus_auto (bool)   : default=0 value=1
                  zoom_absolute (int)    : min=0 max=10 step=1 default=0 value=0
                     brightness (int)    : min=30 max=255 step=1 default=133 value=133
                       contrast (int)    : min=0 max=10 step=1 default=5 value=5
                     saturation (int)    : min=0 max=200 step=1 default=83 value=83
 white_balance_temperature_auto (bool)   : default=1 value=1
           power_line_frequency (menu)   : min=0 max=2 default=2 value=2
      white_balance_temperature (int)    : min=2800 max=10000 step=1 default=4500 value=4500 flags=inactive
                      sharpness (int)    : min=0 max=50 step=1 default=25 value=25
         backlight_compensation (int)    : min=0 max=10 step=1 default=0 value=1

Konfigurace motion

Konfigurace

Spuštění motion

shell# motion -c /etc/motion.conf

Sledování na http://ip-vocore-2:8081

Stream test

Framerate a stream_maxrate nastaveno na 25 snímků. Při rozlišení 320×240 byl stream perfektně plynulý i při pohybu kamery. Automatické ostření! Při rozlišení 640×480 již docházelo k velkému framedrop a vytížení procesoru na 100%. Procesor nestíhal zpracování. Snížením framerate by se procesoru ulevilo, ale je otázka zda o snímky přicházet. Tak či tak se zhorší plynulost obrazu při streamování.

FPV Final s Microsoft LifeCam Cinema WebCam 720p

Instalace motion

Nastavení/úprava konfigurace motion, ostatní jsem ponechal výchozí.

/etc/motion.conf
# V4L2_PIX_FMT_YUYV    : 15 'YUYV'
v4l2_palette 15
 
# Image width (pixels). Valid range: Camera dependent, default: 352
width 320
 
# Image height (pixels). Valid range: Camera dependent, default: 288
height 240
 
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 25
 
# disable save images, no space left
output_pictures off
 
# Maximum framerate for stream streams (default: 1)
stream_maxrate 25
 
# Restrict stream connections to localhost only (default: on)
stream_localhost off

Nastavení přístupové bodu WPA2, nastavit si vlastní ssid (název AP) a key (heslo).

/etc/config/wireless
config wifi-device 'radio0'
        option type 'ralink'
        option variant 'mt7628'
        option country 'CN'
        option hwmode '11g'
        option channel 'auto'
 
config wifi-iface 'ap'
        option device 'radio0'
        option mode 'ap'
        option network 'lan'
        option ifname 'ra0'
        option ssid 'vfpv'
        option disabled '0'
        option key '--tajne-heslo--'
        option encryption 'psk2'
 
config wifi-iface 'sta'
        option device 'radio0'
        option mode 'sta'
        option network 'wwan'
        option ifname 'apcli0'
        option led 'mediatek:orange:wifi'
        option ssid 'UplinkAp'
        option key 'SecretKey'
        option encryption 'psk'
        option disabled '1'
 
config 0 'disabled'

Konfigurace služby pro motion, start AP, start SSH serveru, start motion stream

/etc/init.d/motion
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
 
START=10
STOP=15
 
start() {
        echo start
        # commands to launch application
        /etc/init.d/network start; sleep 5; /etc/init.d/dropbear start; sleep 5; cd /tmp; motion -c /etc/motion.conf
}
 
stop() {
        echo stop
        # commands to kill application
}

Automatický start při bootu

root@OpenWrt:# chmod +x /etc/init.d/motion
root@OpenWrt:# /etc/init.d/motion enable

Stream je dostupný po připojení k AP Vocore2 Lite na URL.

http://192.168.61.1:8081

Ve výsledku to může vypadat nějak takto.

Sledování na ovladači s RPi zero

fpv.sh
#!/bin/bash
 
omxplayer -r --live -b 'http://192.168.61.1:8081' --win 240,120,560,360