Difference between revisions of "10393 manual"

From ElphelWiki
Jump to: navigation, search
(Firmware images)
(Proper shutdown)
(21 intermediate revisions by the same user not shown)
Line 10: Line 10:
 
|[[File:NC393-CS marked ports.jpeg|thumb|200px|Fig.1 10393 interfaces]]
 
|[[File:NC393-CS marked ports.jpeg|thumb|200px|Fig.1 10393 interfaces]]
 
|}
 
|}
* Power supply wall adapter (default: 18-75V, optional: 12-36V (excludes 18-75V), [[10393_power|more information]] on power supply options)
+
* Power supply wall adapter (options: '''18-75V''' (default) or '''12-36V''' - [[10393_power|more information]])
 
* CAT6 network cable
 
* CAT6 network cable
 
* μUSB-to-USB cable
 
* μUSB-to-USB cable
Line 70: Line 70:
  
 
==<font color="blue">Command line access</font>==
 
==<font color="blue">Command line access</font>==
* ssh from PC terminal:
+
* ssh from PC's terminal:
  $ ssh root@192.168.0.9
+
<font size='2em'>
 
+
  user@hostname:~$ ssh root@192.168.0.9
 
+
</font>
  
 
==<font color="blue">Serial console access</font>==
 
==<font color="blue">Serial console access</font>==
Line 79: Line 79:
  
 
* In Linux the '''minicom''' program can be used
 
* In Linux the '''minicom''' program can be used
 +
<font size='2em'>
 
  $ minicom -c on
 
  $ minicom -c on
 +
</font>
 
Most likely the device will be <b>/dev/ttyUSB0</b>. Settings:
 
Most likely the device will be <b>/dev/ttyUSB0</b>. Settings:
 
* <b>115200 8N1, no</b> for hardware/software flow control
 
* <b>115200 8N1, no</b> for hardware/software flow control
Line 104: Line 106:
  
 
====browser====
 
====browser====
 +
<font size='2'>
 
  port 0: http://192.168.0.9:2323/img
 
  port 0: http://192.168.0.9:2323/img
 
  port 1: http://192.168.0.9:2324/img
 
  port 1: http://192.168.0.9:2324/img
 
  port 2: http://192.168.0.9:2325/img
 
  port 2: http://192.168.0.9:2325/img
 
  port 3: http://192.168.0.9:2326/img
 
  port 3: http://192.168.0.9:2326/img
 
+
</font>
 
====command line====
 
====command line====
 +
<font size='2'>
 
  wget http://192.168.0.9:2323/img -O filename.jpeg
 
  wget http://192.168.0.9:2323/img -O filename.jpeg
 
  wget http://192.168.0.9:2324/img -O filename.jpeg
 
  wget http://192.168.0.9:2324/img -O filename.jpeg
 
  wget http://192.168.0.9:2325/img -O filename.jpeg
 
  wget http://192.168.0.9:2325/img -O filename.jpeg
 
  wget http://192.168.0.9:2326/img -O filename.jpeg
 
  wget http://192.168.0.9:2326/img -O filename.jpeg
 
+
</font>
 
 
  
 
==<font color="blue">Video</font>==
 
==<font color="blue">Video</font>==
 
===Display===
 
===Display===
 
====Multipart JPEG stream====
 
====Multipart JPEG stream====
 +
<font size='2'>
 
  http://192.168.0.9:2323/mimg
 
  http://192.168.0.9:2323/mimg
 
  http://192.168.0.9:2324/mimg
 
  http://192.168.0.9:2324/mimg
 
  http://192.168.0.9:2325/mimg
 
  http://192.168.0.9:2325/mimg
 
  http://192.168.0.9:2326/mimg
 
  http://192.168.0.9:2326/mimg
 
+
</font>
 
====RTSP====
 
====RTSP====
 
* turn on:
 
* turn on:
  ~root@elphel393:~# /usr/bin/str
+
<font size='2'>
 +
  root@elphel393:~# /usr/bin/str
 +
</font>
 
* url:
 
* url:
 +
<font size='2'>
 
  rtsp://192.168.0.9:554
 
  rtsp://192.168.0.9:554
 
  rtsp://192.168.0.9:556
 
  rtsp://192.168.0.9:556
 
  rtsp://192.168.0.9:558
 
  rtsp://192.168.0.9:558
 
  rtsp://192.168.0.9:560
 
  rtsp://192.168.0.9:560
 
+
</font>
 
====GStreamer====
 
====GStreamer====
 
<font size='2'>
 
<font size='2'>
Line 185: Line 192:
 
====command line====
 
====command line====
 
* start:
 
* start:
 +
<font size='2'>
 
  root@elphel393:~# cat /dev/imu > /path/filename.log
 
  root@elphel393:~# cat /dev/imu > /path/filename.log
 +
</font>
 
* stop - CTRL-C or kill the process
 
* stop - CTRL-C or kill the process
  
Line 202: Line 211:
 
* http://192.168.0.9/parsedit.php - read/write parameters:
 
* http://192.168.0.9/parsedit.php - read/write parameters:
 
** POST request
 
** POST request
 +
<font size='2'>
 
  Read:  http://192.168.0.9/parsedit.php?sensor_port=0&PAR1&PAR2
 
  Read:  http://192.168.0.9/parsedit.php?sensor_port=0&PAR1&PAR2
 
  Change: http://192.168.0.9/parsedit.php?sensor_port=0&PAR1&PAR2 - update values - submit form
 
  Change: http://192.168.0.9/parsedit.php?sensor_port=0&PAR1&PAR2 - update values - submit form
 
+
</font>
 
** GET request - XML response
 
** GET request - XML response
 +
<font size='2'>
 
  Read:  http://192.168.0.9/parsedit.php?immediate&sensor_port=0&PAR1&PAR2
 
  Read:  http://192.168.0.9/parsedit.php?immediate&sensor_port=0&PAR1&PAR2
 
  Change: http://192.168.0.9/parsedit.php?immediate&sensor_port=0&PAR1=VAL1&PAR2=VAL2
 
  Change: http://192.168.0.9/parsedit.php?immediate&sensor_port=0&PAR1=VAL1&PAR2=VAL2
 
+
</font>
 
Note 1: if the parameter's value is specified in URL it will be applied. The call can have mixed specified and unspecified parameters.
 
Note 1: if the parameter's value is specified in URL it will be applied. The call can have mixed specified and unspecified parameters.
  
Line 215: Line 226:
 
Example:
 
Example:
 
* set 10 fps and enable output trigger signal
 
* set 10 fps and enable output trigger signal
 +
<font size='2'>
 
  http://192.168.0.9/parsedit.php?sensor_port=0&immediate&TRIG_CONDITION=0&TRIG_OUT=0x66555&TRIG_PERIOD=10000000&TRIG=4
 
  http://192.168.0.9/parsedit.php?sensor_port=0&immediate&TRIG_CONDITION=0&TRIG_OUT=0x66555&TRIG_PERIOD=10000000&TRIG=4
 
+
</font>
 
[[Parsedit.php|'''More information''']]
 
[[Parsedit.php|'''More information''']]
  
Line 225: Line 237:
 
** if opened w/o sensor_port specified the page will show links to available ports
 
** if opened w/o sensor_port specified the page will show links to available ports
 
** '''sensor_port=x''', where x=0..3 - in the address string - for a single sensor camera it is normally 0
 
** '''sensor_port=x''', where x=0..3 - in the address string - for a single sensor camera it is normally 0
 
 
  
 
==<font color="blue">Image formats</font>==
 
==<font color="blue">Image formats</font>==
Line 259: Line 269:
 
==<font color="blue">Proper shutdown</font>==
 
==<font color="blue">Proper shutdown</font>==
 
* if not properly shutdown - &mu;SD might get corrupted (run '''sync''' at least)
 
* if not properly shutdown - &mu;SD might get corrupted (run '''sync''' at least)
 +
<font size='2'>
 
  shutdown -hP now
 
  shutdown -hP now
 +
</font>
 
Same effect:
 
Same effect:
 +
<font size='2'>
 
  http://192.168.0.9/autocampars.php?reboot
 
  http://192.168.0.9/autocampars.php?reboot
 +
</font>
  
 
==<font color="blue">Firmware/software update</font>==
 
==<font color="blue">Firmware/software update</font>==
Line 276: Line 290:
 
===Change default ip address===
 
===Change default ip address===
 
* '''nano''' or '''vi'''
 
* '''nano''' or '''vi'''
 +
<font size='2'>
 
  ssh root@192.168.0.9
 
  ssh root@192.168.0.9
 
  ''pass''
 
  ''pass''
 
  root@elphel393:~# nano /etc/elphel393/init_elphel393.py
 
  root@elphel393:~# nano /etc/elphel393/init_elphel393.py
 
  ''edit - save''
 
  ''edit - save''
 
+
</font>
 
'''or'''
 
'''or'''
 
* '''sed'''
 
* '''sed'''
 +
<font size='2'>
 
  root@elphel393:~# sed -i.bkp 's/192.168.0.9/10.xx.xx.xx/' /etc/elphel393/init_elphel393.py
 
  root@elphel393:~# sed -i.bkp 's/192.168.0.9/10.xx.xx.xx/' /etc/elphel393/init_elphel393.py
 
  root@elphel393:~# sed -i.bkp 's/255.255.255.0/xxx.xxx.xxx.xxx/' /etc/elphel393/init_elphel393.py
 
  root@elphel393:~# sed -i.bkp 's/255.255.255.0/xxx.xxx.xxx.xxx/' /etc/elphel393/init_elphel393.py
 
+
</font>
Then:  
+
Then:
 +
<font size='2'>
 
  #boot from NAND flash?
 
  #boot from NAND flash?
 
  root@elphel393:~# overlay_sync 1  
 
  root@elphel393:~# overlay_sync 1  
Line 295: Line 312:
 
  root@elphel393:~# sync
 
  root@elphel393:~# sync
 
  root@elphel393:~# reboot -f
 
  root@elphel393:~# reboot -f
 
+
</font>
 
===Set up histogram window and autoexposure parameters===
 
===Set up histogram window and autoexposure parameters===
 
[[Autoexposure|Read article]]
 
[[Autoexposure|Read article]]
Line 317: Line 334:
 
===Pointers monitor===
 
===Pointers monitor===
 
* Displays sensor, compressor and buffer states per 10393 port:
 
* Displays sensor, compressor and buffer states per 10393 port:
 +
<font size='2'>
 
  http://192.168.0.9/pointers/
 
  http://192.168.0.9/pointers/
 +
</font>
 +
 
===Powering from batteries (12V or 48V)===
 
===Powering from batteries (12V or 48V)===
 
[[10393_power#Powering_from_batteries| 12V and 48V power options]]
 
[[10393_power#Powering_from_batteries| 12V and 48V power options]]
 
===Accessing raw pixel values===
 
===Accessing raw pixel values===
 
[[Working_with_raw_image_data|Working with raw pixel data]]
 
[[Working_with_raw_image_data|Working with raw pixel data]]
 +
===Photo finish (linescan mode)===
 +
[[Photo-finish|Photo Finish]] (works for JP4 image format)
  
 
==<font color="blue">Known problems</font>==
 
==<font color="blue">Known problems</font>==
* [solved] Vertical artifacts in jpegs. Images are ok at 100% quality. Fixed, testing.
+
* <font color='green'>'''[SOLVED]'''</font> Vertical artifacts in jpegs. Images are ok at 100% quality. Fixed, testing.
 
* http://192.168.0.9:232x/noexif/mimg - multipart jpeg displays corrupted frames from time to time. Reason: network bandwidth?
 
* http://192.168.0.9:232x/noexif/mimg - multipart jpeg displays corrupted frames from time to time. Reason: network bandwidth?
* [solved] Sometimes on power-on (NAND flash boot) cannot mount the card's rootfs partition. Kernel Panics. Power off/on. Soft "reboot -f" works ok.
+
* <font color='green'>'''[SOLVED]'''</font> Sometimes on power-on (NAND flash boot) cannot mount the card's rootfs partition. Kernel Panics. Power off/on. Soft "reboot -f" works ok.
 +
<font size='2'>
 
  ...
 
  ...
 
  <b>Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)</b>
 
  <b>Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)</b>
 
  ...
 
  ...
 +
</font>
 
[[VFS:_Unable_to_mount_root_fs_on_unknown-block(179,2)|More info]]
 
[[VFS:_Unable_to_mount_root_fs_on_unknown-block(179,2)|More info]]
 
* Changing exposure/quality/gains - can corrupt images - needs testing.
 
* Changing exposure/quality/gains - can corrupt images - needs testing.
  
 
* After rewriting rootfs to &mu;SD card - some of the cards get a corrupted partition - re-partitioning (reformatting?) solves the problem.
 
* After rewriting rootfs to &mu;SD card - some of the cards get a corrupted partition - re-partitioning (reformatting?) solves the problem.
 +
<font size='2'>
 
  On the camera the rootfs is mounted as RW and some of the files are changed (also links created) -
 
  On the camera the rootfs is mounted as RW and some of the files are changed (also links created) -
 
  most of the changes are now moved to tmpfs but something might have been missed.
 
  most of the changes are now moved to tmpfs but something might have been missed.
 
+
</font>
 
 
  
 
==<font color="blue">Notes</font>==
 
==<font color="blue">Notes</font>==
Line 345: Line 369:
 
** /mnt/sda1 exists in lower layer: /tmp/rootfs.ro/tmp
 
** /mnt/sda1 exists in lower layer: /tmp/rootfs.ro/tmp
 
** upper layer is mounted to "/"
 
** upper layer is mounted to "/"
 +
<font size='2'>
 
  # rmdir /mnt/sda1
 
  # rmdir /mnt/sda1
 
  # mkdir /mnt/sda1
 
  # mkdir /mnt/sda1
 
  mkdir: cannot create directory '/mnt/sda1': Operation not supported
 
  mkdir: cannot create directory '/mnt/sda1': Operation not supported
 
+
</font>
 
[[Category:393]]
 
[[Category:393]]

Revision as of 16:49, 19 January 2018

Important Notes


In the package

  • 10393 camera system
Fig.1 10393 interfaces
  • Power supply wall adapter (options: 18-75V (default) or 12-36V - more information)
  • CAT6 network cable
  • μUSB-to-USB cable
  • Recovery μSD card
  • If the camera is calibrated the calibration data will be on a separate storage media or on the internal SSD (likely /mnt/sda1)

Interfaces

See Fig.1:

GigE gigabit network
μSD micro SD card slot - boot or storage
console serial console port, use μUSB-to-USB cable
eSATA+USB 2-in-1. Connect USB or eSATA device. USB2.0 host
μUSB USB2.0 host
sync sync multiple cameras or other devices - input/output trigger signal through a 4-conductor 2.5mm audio plug with cable (example: digikey)


Power on

  • Plug in the power supply
  • Connect to LAN using the network cable

Notes

  • Boot time: ~30s
  • The default boot is from the on-board NAND flash. More information on available boot options and recovery boot.


Defaults

IP Address 192.168.0.9
User root
Password pass
  • The default IP address is set in the /etc/elphel393/init_elphel393.py.
  • If present the internal SSD will be formatted into 2 partitions:
    • /dev/sda1 - ext4 (~64-100GB)
    • /dev/sda2 - raw partition (no file system) for fast recording

Command line access

  • ssh from PC's terminal:

user@hostname:~$ ssh root@192.168.0.9

Serial console access

  • Use a microUSB-USB cable to connect console μUSB port (see Fig.1) to PC - the cable's end should be thin enough otherwise interferes with an inserted mmc (multi media card = μSD card).
  • In Linux the minicom program can be used

$ minicom -c on

Most likely the device will be /dev/ttyUSB0. Settings:

  • 115200 8N1, no for hardware/software flow control

Refer to the following article for more details on using minicom: Using minicom to connect to Elphel393 camera

Web user interface (camvc)

http://192.168.0.9/ (if not found - http://192.168.0.9/closeme.html (type in the browser address bar - will be changed soon)):

  • The page contains links to camvc user interface for each individual camera port.
  • camvc was ported from the 10353 camera series:
    • change parameters like image format, resolution, auto exposure, auto white balance and more. Alternative way to change parameters is described below.
    • pause compressor and search within buffered images
    • help tips available - see Fig.2 - select then mouse over a control element of interest
Fig.2 enable camvc help tips
Fig.3 camvc controls

Download live images

camvc

  • For a currently opened port (displayed in the window title and as "...sensor_port=0..." in the URL):
Fig.4 Acquire an image from the Camera Control Interface

browser

port 0: http://192.168.0.9:2323/img
port 1: http://192.168.0.9:2324/img
port 2: http://192.168.0.9:2325/img
port 3: http://192.168.0.9:2326/img

command line

wget http://192.168.0.9:2323/img -O filename.jpeg
wget http://192.168.0.9:2324/img -O filename.jpeg
wget http://192.168.0.9:2325/img -O filename.jpeg
wget http://192.168.0.9:2326/img -O filename.jpeg

Video

Display

Multipart JPEG stream

http://192.168.0.9:2323/mimg
http://192.168.0.9:2324/mimg
http://192.168.0.9:2325/mimg
http://192.168.0.9:2326/mimg

RTSP

  • turn on:

root@elphel393:~# /usr/bin/str

  • url:

rtsp://192.168.0.9:554
rtsp://192.168.0.9:556
rtsp://192.168.0.9:558
rtsp://192.168.0.9:560

GStreamer

gst-launch-1.0 souphttpsrc is-live=true location=http://192.168.0.9:2323/mimg ! jpegdec ! xvimagesink 

Record

  • Recording is done by the camogm program
  • If recording to internal or external SSD, please, read about eSATA port switching
  • important: Event logger (GPS, IMU, IMG, EXT) recording is started/stopped separately. See instructions below.
  • For SATA devices camogm supports:
    • recording to a partition with a file system - up to 80MB/s
    • (default) faster recording to a partition without a file system (raw partition) avoiding OS calls - up to 220MB/s
  • To extract data from a raw partition use dd or these scripts to get the data and split it into images. Follow this link for details.
  • Can record to an mmc partiton or usb.
  • More info
  • If the prefix parameter, which is absolute path + prefix, for a channel is not set the file will be written somewhere to rootfs.
    • if prefix is empty then the absolute path must end with a slash.

browser

Example 1: (provide a correct media mount point - /mnt/sda1/)

Follow this link for GUI description.

command line

Example:

  • /home/root, file prefix=test_, 1GB or 10min files whichever occurs first
    • setup and start (in one line):
echo "format=mov;status=/var/tmp/camogm.status;prefix=/home/root/test_;duration=600;length=1073741824;start" > /var/volatile/camogm_cmd
    • stop recording:
echo "stop" > /var/volatile/camogm_cmd
sync

Event Logger (GPS, IMU, IMG & EXT)

Record

web

  • Start:

http://192.168.0.9/logger_launcher.php?cmd=start&file=/mnt/sda1/test.log&index=1&n=10000000

  • Stop:

http://192.168.0.9/logger_launcher.php?cmd=stop

  • Help:

http://192.168.0.9/logger_launcher.php

command line

  • start:

root@elphel393:~# cat /dev/imu > /path/filename.log

  • stop - CTRL-C or kill the process

Read


Change parameters

More information

Read:   http://192.168.0.9/parsedit.php?sensor_port=0&PAR1&PAR2
Change: http://192.168.0.9/parsedit.php?sensor_port=0&PAR1&PAR2 - update values - submit form

    • GET request - XML response

Read:   http://192.168.0.9/parsedit.php?immediate&sensor_port=0&PAR1&PAR2
Change: http://192.168.0.9/parsedit.php?immediate&sensor_port=0&PAR1=VAL1&PAR2=VAL2

Note 1: if the parameter's value is specified in URL it will be applied. The call can have mixed specified and unspecified parameters.

Note 2: The new value is read on the next call.

Example:

  • set 10 fps and enable output trigger signal

http://192.168.0.9/parsedit.php?sensor_port=0&immediate&TRIG_CONDITION=0&TRIG_OUT=0x66555&TRIG_PERIOD=10000000&TRIG=4

More information


Notes:

  • parsedit.php and autocampars.php were ported from 353 camera series. There are a few changes from the originals related to 4x sensor ports:
    • parameters are individual for each sensor port - writing parameters to multiple port at once is controlled with a (bit-)mask input box
    • if opened w/o sensor_port specified the page will show links to available ports
    • sensor_port=x, where x=0..3 - in the address string - for a single sensor camera it is normally 0

Image formats

jpeg

  • color: YCbCr 4:2:0, 3x3 pixels
  • mono6: monochrome - color YCbCr 4:2:0 with zeroed out color components
  • mono : monochrome - color YCbCr 4:0:0 with omitted color components

Note: Is not the best for processing since a lot of information is lost at demosaicing

jp4 raw

Temperature monitor

10393 hwmon.jpeg


eSATA port switching

  • requres 10389
  • available connections:
    • camera <=> internal SSD (default)
    • camera <=> external drive (external drive will need a separate power source)
    • PC <=> internal SSD
  • More information


Proper shutdown

  • if not properly shutdown - μSD might get corrupted (run sync at least)

shutdown -hP now

Same effect:

http://192.168.0.9/autocampars.php?reboot

Firmware/software update

More information

Firmware images

Other info

Change default ip address

  • nano or vi

ssh root@192.168.0.9
pass
root@elphel393:~# nano /etc/elphel393/init_elphel393.py
edit - save

or

  • sed

root@elphel393:~# sed -i.bkp 's/192.168.0.9/10.xx.xx.xx/' /etc/elphel393/init_elphel393.py
root@elphel393:~# sed -i.bkp 's/255.255.255.0/xxx.xxx.xxx.xxx/' /etc/elphel393/init_elphel393.py

Then:

#boot from NAND flash?
root@elphel393:~# overlay_sync 1 
root@elphel393:~# shutdown -hP now
#powercycle
#boot from card?
root@elphel393:~# sync
root@elphel393:~# reboot -f

Set up histogram window and autoexposure parameters

Read article

Tools for calibrated systems

  • Install ImageJ plugins
    • decode jp4 raw format
    • aberrations correction
    • distortion correction (pixel mapping)
    • rectification and projection
    • JP46 Reader camera - decode JP4/JP46
    • Eyesis correction - post-process JP4s using calibration data

Switch between ERS and GRR modes in MT9P006

External/internal trigger and FPS control

SSD/MMC/USB formatting

Boot modes

Pointers monitor

  • Displays sensor, compressor and buffer states per 10393 port:

http://192.168.0.9/pointers/

Powering from batteries (12V or 48V)

12V and 48V power options

Accessing raw pixel values

Working with raw pixel data

Photo finish (linescan mode)

Photo Finish (works for JP4 image format)

Known problems

  • [SOLVED] Vertical artifacts in jpegs. Images are ok at 100% quality. Fixed, testing.
  • http://192.168.0.9:232x/noexif/mimg - multipart jpeg displays corrupted frames from time to time. Reason: network bandwidth?
  • [SOLVED] Sometimes on power-on (NAND flash boot) cannot mount the card's rootfs partition. Kernel Panics. Power off/on. Soft "reboot -f" works ok.

...
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)
...

More info

  • Changing exposure/quality/gains - can corrupt images - needs testing.
  • After rewriting rootfs to μSD card - some of the cards get a corrupted partition - re-partitioning (reformatting?) solves the problem.

On the camera the rootfs is mounted as RW and some of the files are changed (also links created) -
most of the changes are now moved to tmpfs but something might have been missed.

Notes

  • In case rootfs is on flash, it might make sense (or maybe not as the history is updated only once on session exit) to disable bash sessions command history - disable bash history
  • When using overlays, deleting, existing in the lower layer, dirs can cause errors (hopefully it gets fixed someday), example:
    • /mnt/sda1 exists in lower layer: /tmp/rootfs.ro/tmp
    • upper layer is mounted to "/"

# rmdir /mnt/sda1
# mkdir /mnt/sda1
mkdir: cannot create directory '/mnt/sda1': Operation not supported