- 1 Background
- 2 Update on 353/363 cameras
- 3 Software Architecture of Elphel 3x3 cameras
- 3.1 Camera Interface
- 3.2 Camera Software
- 3.3 Client Software
- 4 Camera hardware
- 4.1 353/363 series
- 4.2 Basic Elphel 353 camera
- 4.3 Basic Elphel 363 camera
- 4.4 Add ons
- 4.5 USB devices tested with Elphel 353
- 4.6 Other Hardware
- 5 Active Projects
- 5.1 Alternative IO board for 10353/10363 series
- 5.2 Exif data in JPEG images
- 5.3 Synchronization of the Cameras
- 5.4 Photo-finish
- 5.5 Zeroconf for Elphel cameras
- 5.6 Elphel cameras and Zoneminder
- 5.7 USB host interface
- 5.8 Motorized lens control
- 5.9 Outdoor enclosure
- 5.10 Current enclosure design
- 5.11 Removal of distortion
- 5.12 Synchronous lighting
- 6 Known problems
- 7 Diagnostic and repair
Elphel was started in 2001 (Magna, UT USA) when I quit my job inspired by the possibilities that Free Software gives to developers (it was not so obvious for my at the time employer). All the projects were covered in LinuxDevices (complete list on the articles is available here). For several years Elphel was a one-man company, in January 2004 I wrote an article Taming of the Iron Penguin (Russian) in the largest Russain computer-related magazine Computerra and announced there a competition among the software developers for the best video streamer to run in the camera. That was a good idea and after the competition itself was over most of the developers remained in the Elphel team. At first - as volunteers, later - as full/part time employees.
Not all of these developers live in Russia - two, including the winner of the competition are from Kiev, Ukraine. But still all of them know Russian much better than English and so most of our technical discussions were on our private Russian-language forum. So far I failed to move these discussions to the broader audience but believe that Wiki technology can help. Here we will mantain most of the site in English but still have some pages/discussions in Russian, translating documents as we go. Or when somebody else needs it and is not satisfied with Babelfish automatic translation. We will try to keep English pages current - anyway even in Elphel not everybody knows Russian.
Please excuse not-so-good English of our developers and feel free to fix the errors if you see them.
--Andrey.filippov 15:34, 22 September 2005 (CST)
Update on 353/363 cameras
There is preliminary documentation for the new model 353/353 cameras hardware here
353/363 cameras use software based on Linux kernel 2.6 (currently - 2.6.15). There will be more changes in software as we used different web server (lighttpd) and included PHP (as fastCGI application).
More information on software will follow, you may already find code here:
Software Architecture of Elphel 3x3 cameras
Software in the Elphel cameras started from Axis Developer Boards Software and was amended for the camera specific functions. It was modified to work with newer hardware (models 303-313/323-333), support more features and now seems to be a good time to make a major redesign instead of applying incremental changes.
Some discussion already started in Russian here - Nc3x3
The web-based user interface can be especially useful for open hardware as it reduces the entrance threshold for the developer who would like to customize the cameras functionality - regular web development tools are sufficient for the job.
The camera now has two alternative APIs:
The original interface that supports most camera features - ccam.cgi
API compatible with Axis cameras
This (AxisAPI) makes Elphel cameras work with some third-party software
Axis based SDK for GNU/Linux on EtraxFS
Our camera have two main CPUs: EtraxFS running GNU/Linux and Xilinx Spartan 3e FPGA.
Elphel use Xilinx Spartant 3e FPGA for image/video encoding. We have currently two firmwares:
- a stable JPEG/MJPEG encoder
- and a under development OGG/Theora video encoder
The FPGA code is distributed under GNU/GPL v3 License.
VDT Eclipse plugin can be used to edit Verilog code of the camera. Xilinx WebPACK ISE is free but download is restricted, each end-user should register. What's why we did not include it in our ElphelSoftwareKit, but you can download it from Xilinx web site.
About the JPEG FPGA encoder
This section is about the JPEG FPGA encoder. We will put here a description of what is done in FPGA and what can be tuned with different softwares. (Andrey, pls comment)
About the OGG/Theora FPGA encoder
How to hack ?
If you intend to modify source code (GNU/Linux or FPGA), download ElphelSoftwareKit and live-boot, or better install it on your (descent) computer.
But where are several things you can hack already with some softwares in the camera:
By default the camera run telnetd. Login "root", password "pass". You can telnet to the camera and explore the power of a full GNU/Linux distribution.
You can use fpcf to adjust some FPGA settings. use it very carefully !! it may be dangerous and may destroy your hardware.
Andrey ? :)
Elphel 353 camera Unicast & Multicast RTSP streamer
Elphel 353 camera is capable to stream OGM/MJPEG via RTSP on Unicast or Multicast.
The streamer can be tuned truth /etc/streamer.conf & /etc/image.conf (for syntax of image.conf have a look to Ccam.cgi)
MPlayer is the main player for Elphel cameras. We have patches for MPlayer to make it compatible with 3-5MPix resolution. We are in constant contact with MPlayer's team to integrate our patches to the mainstream. Patches for source code are accessible on our Source Forge project, the compiled package is only for Debian/ubuntu on i386 architecture.
VLC is a free cross-platform media player. It supports a large number of multimedia formats, without the need for additional codecs. It can also be used as a streaming server, with extended features (video on demand, on the fly transcoding, ...)
GSTreamer is a grate free software what can be used with Elphel cameras, this first article describe how to use an Elphel 333/353 camera with MJPG in unicast or multicast stream and mux the video with PC's microphone and restream it on internet with a more suitable codec.
The second article describe how to make a movie from JPEG images using GSTreamer.
We will start a new recorder for MJPEG RTP stream. It will be small standalone program, which will take a multicast IP address and port, receive a stream and record it to files or to stdout. The most important thing with the recorder - to avoid frame drops (maybe something can be done with network buffering) and control them using timestamps. And the recorder must provide managable files (under 2GB), but with zero drops between them.
Plugins for browsers
Multiple camera view HTML page is based on GenReS plugin for Mozilla/FireFox. Currently working: scrolling by picture dragging (digital PTZ), camera selection, zoom switch, automatic detection of stream stop by timeout. List of camera adresses is now editable manually. It will be automaticaly generated in the Live CD. The page will run recording software by user request. Video will be saved to a fixed directory and split into separate files by tunable number of frames. Main parameters of video capture will be changeable from the page. The page can later be used in the #Video Server.
The Elphel Software Kit DVD contains software for camera users and developers. The live DVD is based on Ubuntu Feisty.
Currently we only have DVD for the i686 architecture.
The idea of keeping as full a Ubuntu as possible was to introduce GNU/Linux to the camera users who had never had this experience before.
One of the major additions is a preinstalled camera development environment based on Eclipse) to simplify the modification of the camera code. Again - don't forget that many of those future developers now only use Visual Studio (or whatever it is called?) and GNU/Linux can be somewhat alien to them. This environment allows them to start playing with their code without prior knowledge of the GNU/Linux software development process.
It can be useful for hardware/fpga developers too - to be able to write some code to support the hardware features without spending too much time on mastering the software development process.
Basic Elphel 353 camera
Basic Elphel 353 Network camera is composed of:
- 10353 (processor board w/ CPU and FPGA)
- 10338 (sensor board for Micron MT9P031/MT9P001 5MPix)
- standard enclosure design for 353 and C/CS mount lenses
Basic Elphel 363 camera
- 10353 (processor board w/ CPU and FPGA)
- Kodak CCD 10342 (CCD Interface Board) with 10347
- standard enclosure for Elphel 363
10359 (multi-sensor board/multifunction multiplexer)
10357 (solid state memory)
10349 (interface board: IDE, USB1.1, RS232, ...)
USB devices tested with Elphel 353
Elphel 353 camera with 10349 extension boards have 1 external and 3 internal USB 1.1 connectors.
This section of the wiki describe all USB hardware what was tested with Elphel 353 camera.
flash memory and hardrive
keyboard & mouse
This page is an open discussion about the evolution of the 10349 additional board.
Exif data in JPEG images
Exif data (Exchangeable image file format) can be included inside each JPEG image. The [[Exif] section will describe things what are possible to do with Exif data on Elphel cameras.
Synchronization of the Cameras
Sometimes you need to acquire images triggered by an extarnal event or several cameras need to be synchronized with each other. Camera Synchronization is all about this.
Photo-finish device made using Elphel model 333 camera with additional FPGA code and software - Photo-finish
Zeroconf for Elphel cameras
Elphel cameras and Zoneminder
We plan to make the model 333 camera work with Zoneminder
USB host interface
daughter board with USB and DC-DC power for lens control board 10334
Proposal for a usb audio solution : PCM2903
Motorized lens control
I'll try to retrieve what was written before on the motorized lens control. In short - C/CS mount is rather old and does not work well for interchangeable motorized lenses. We are trying to build an adapter from C/CS-mount to a bayonet type connector. And place a tiny 5mm wide PCB ring in that adapter. This 10331 PCB has a reprogrammable microcontroller and uses just 2 connections to the camera for power and data signals combined. It provides all the necessary connections for most types of motorized lenses.
lens control board 10331 DC-DC power board for motorized lens control board 10332 lens control board In System Programmer lbcontrol
Determine working setup -Does the system need a control board -CCD board needs a longer cable for minimal package when stacking lens on top of board Camera casing
Step one Test setup. Assemble all components in a setup that can record video
Components in test setup - Lens (Computar H3Z4512CS varifocal lens? using power) - Elphel USB setup. Is it possible to directly plug in a usb drive. Where does the power come from? - Battery - Usb cable or network calbe - Usb exteral harddrive or flashdrive - ON/off switch
Objective: Does it work, at all? Secondary: Battery life? Video quality?
Wooden box. Test setup 1 integrated in outside video testing setup.
Components added in test 2 - Hardboard casing
Objective: Optimize recording setup of video for ease of use Secondary: optimal settings? correct lens?
Building of waterproof casing - Amphenol plugs - Camera window - Casing camera (fibre reinforced composite) - Casing base station (battery + storage) (fibre reinforced composite)
Current enclosure design
We are switching to extruded aluminum tube (actually original 303/313 also was design for a standard aluminum profile). Model 333 RJ-45 connector is designed to fit into RJField shell .
Removal of distortion
Distortions from the non-instantaneous exposure of the frame can be done in LiVES. But first some other infrastructure must be in place:
- Camera must start a videojack server on the host machine, with the correct fps, width, height and frame palette
- Camera must activate the videojack receiver in LiVES and connect it the correct videojack server
- Camera can start to send unpackaged compressed frames to videojack server, along with an array of floats
- Floats will be in pairs for each horizontal band: the vertical compression/expansion (1.0 means no compression) and the horizontal shift (+-shift/width)
- LiVES will pull these frames and the float array from the videojack server
- LiVES will decode each frame and pass it along with the float array to a Weed effect which will apply the compress/expand/shift
- LiVES will receive the altered frame and save it to a stream
Post-processing - non realtime
CMOS sensor-specific distortions caused by the Electronic Rolling Shutter do not need to be removed realtime - the PC power may be not enough to do so. It is perfectly OK to be able to just post-process the video recorded from the camera.
--Andrey.filippov 02:39, 9 December 2005 (CST)
External light control. Synchronous lighting.
Diagnostic and repair
Diagnostic and repair page in the Cameras Manual
Changing or restoring the MAC address
The factory default MAC address of Elphel products is the same as the serial number which begin with 000E64. If you would like to use a MAC address different from the serial number you can edit the /etc/conf.d/mac file.
If the serial number has not been configured is possible to set it (but only once!). To set the serial number use the bootblocktool command on the camera:
bootblocktool -a SERNO 000E64xxxxxx
Exchange “xxxxxx” with the serial number of the board.
!As you can do it only once be careful! If you write the MAC address in a wrong format (ie with : separations) the camera will not boot any more.