Help - Detailed

Note:The new application name for DevWare is "DevWareX".

DevWareX is a multi-platform implementation of DevWare, created with a more flexible GUI-generation tool. It has the same layout and controls as DevWare, but with additional features.
Here's a link to a description of DevWareX, and its new features.

The documentation in on this page still applies to DevWareX.

1. Welcome to DevWare

Application setup:
           Installation(See 2.1.1)
           Running the Application(See 2.1.2)
Application layout and options:
           Menu Commands(See 2.2.1)
           Toolbar Buttons(See 2.2.2)
           Display Screen (See 2.2.3)
Main Dialogs:
           Info Dialog (See 2.2.5)
           Sensor Control Pages(See 2.2.4)
           Presets Dialog (See 2.2.6)
           Register Dialog(See 2.2.7)
           Register Log Dialog(See 2.2.8)
           Analysis Graph Dialog(See 2.2.9)
           Magnifier(See 2.2.10)
           Peek & Poke(See 2.2.12)
           Watch Dialog (See 2.2.13)
           Embedded Data Viewer(See 2.2.14)
           Options Dialog (See 2.2.15)
           Warning Messages(See 2.2.16)
           Troubleshooting(See 2.2.17)
           Reporting a Bug(See 2.2.18) (mail to:

2. DevWare Help

2.1 Using the Application

2.1.1 Installation

Please refer to the document titled "DevSuite Quick-Start Guide", found in the "doc" folder and through the "Docs" shortcut.

2.1.2 Windows XP / 2000: Running the Application

It is best to read through and follow the instructions in the "DevSuite Quick-Start Guide" as to the proper sequence of installation and running of the DevSuite software.

After installing the software, use the following instructions to install the USB driver.

  1. Plug the kit into your computer using a USB cable. After a few seconds, your computer should detect new hardware and start the "Found New Hardware Wizard" application to prompt you for the location of an appropriate USB driver. Please follow the instructions found in DevWareX USB Drivers User Guide and then the USB XP Driver User Guide.
  2. When completed, you will able to run the DevSuite software.

The program can now be opened by going to the start menu and selecting "Programs" then "Aptina Imaging" then "DevWare". A popup window will appear while DevWare probes for attached devices. Then the main DevWare window and a dialog box will appear that is slightly different for each sensor. Select the appropriate settings and click finish. Unless an error occurs(See 2.2.17) the application will open the display dialog and start capturing and displaying sensor images.
Note: Sensor data files can be manually loaded. Click the esc key to exit automatic probe. Make sure that the box next to "Automatically probe at startup" is unchecked. Click on "Sensor..." to browse for the corresponding sensor data (sdat) file. The file will be found in C:\Aptina Imaging\sensor_data.

2.1.3 Windows 7 / Windows Vista: Additional Information

DevSuite is ready to use on the Vista and Windows 7 operating systems when installed in the correct folder, but there is a requirement that the Demo2X demo board have a FW version of 28 or newer to match to the USB driver.
Note; the Demo3 FW is already Windows 7 compatible.
Firmware Upgrade
Note that a demo board with FW older than version 28 can only be upgraded on an XP operating system since only the XP-based USB driver supports the older versions of the FW. As of May of 2010, all newly delivered Demo2X boards will have version 28 of the FW. Demo2X boards received earlier than that may have an older FW version, and the FW version should be verified on an XP-based system before proceeding.
If you aren't sure that your FW has version 28 or newer, install the DevSuite SW on an XP-based system by following the instructions thru the section titled "Starting Up the Software" as found in "DevSuite Quick-Start Guide", which can be accessed from the DevWare menu item "Documents". Then follow the FW upgrade instructions as found in "Demo FW User Guide", which can be accessed from the DevWare menu item "Documents -> User Guides".
If you are fairly sure that your FW has version 28 or newer, then install the DevSuite SW on your Vista or Windows 7-based system by follow the instructions thru "Starting Up the Software" section of the Quick-Start guide. Once the USB cable is connected to the Demo2X demo board, Vista and Windows 7 will automatically attempt to download the matching USB driver from the Microsoft driver web site; if the driver installs correctly then your FW is current and no further action is required - continue with the instructions found in the Quick-Start guide.
If the USB driver download fails, it is either due to downgraded FW or a network problem. You can attempt to load the USB driver manually by following the instructions in the "Aptina Drivers User Guide", which can be accessed from the DevWare menu item "Documents -> User Guides".
If the USB driver installs correctly then your FW is current and no further action is required - continue with the instructions found in the Quick-Start guide.
If the USB driver manual load failed, you will need to use an XP-based operating system to upgrade your Demo2X demo board as described earlier in this document. 
Software Installation
Do not install DevSuite in "C:\Program Files", due to the strict system security checking performed by Vista and Windows7.
The installer defaults to the recommended installation location of "C:\Aptina Imaging". If necessary this can be changed when prompted for the installation location.

2.1.4 Windows 8: Additional Information

onsemi will not be getting the USB drivers certified to run on Windows 8. In the mean time, please follow the instructions in Windows8 USB3 Driver Usage instructions to be able to install and enable the drivers.

2.1.5 Windows 10: Additional Information

These USB drivers are certified, so once you plug in the Demo plug-and-play should download and installer the driver.  If not, follow the instructions in Windows10 USB3 Driver Usage instructions.

2.1.6 Command Line Parameters

Command line parameters can be used with DevWare.
Open a "CMD" window, navigate to the installation folder of C:\Aptina Imaging, and provide any of the following parameters.Note that parameters can be in all upper-case or all lower-case, and can be provided in any order.

devwarex [/help | ?] [/ini=["]filename["]]  [/preset=["]name["]]  [/camera=decimal number]  [/probe=0 | 1]  [/fullauto[=0 | 1]]  [/mono[=0 | 1]][/play[=0 | 1]]  [<sensor_sdat_file>.xsdat] [/nul]

  • /help or ? - Display this page.  You are given the option to continue to DevWareX or to exit.  Note: if "?" is used, all other parameters are ignored.
  • /ini=filename or /ini="filename" - Specify the INI file to be used, overriding the one selected by DevWare if "Probe" is enabled.
  • /preset[=name] or /preset[="name"] - Run the optionally supplied specified preset. Note that the Startup Wizard dialog will be skipped whether or not the preset name is supplied.
  • /checksensor[=0 | 1 (default if not supplied)] - Disable | Force reading of sensor registers at startup. Disabled gives faster startup.
  • /camera=<number in decimal> - Force a specific camera id selection, in case more than one camera was detected.
  • /probe[=0 | 1 (default if not supplied)] - Disable | Force a "Probe". Note: ignored if SDAT filename is provided, and no "Probe" is performed if the parameter itself is not supplied.
  • /fullauto[=0 | 1 (default if not supplied)] - Disable | Force "Full Auto" option on the Startup Wizard. Note: enabled if parameter itself is not supplied.
  • /mono[=0 | 1 (default if not supplied)] - Disable | Force "Monochrome" option on the Startup Wizard. Note: disabled if parameter itself is not supplied.
  • /play[=0 | 1 (default if not supplied)] - Disable | Force "Play on Start" option on the Startup Wizard. Note: enabled if parameter itself is not supplied.
  • <sensor_sdat_file>.sdat - Specify the SDAT file to be used, overriding the one selected by DevWare if "Probe" is enabled.
  • /nul - start without HW needing to be attached. An SDAT file can be loaded, and Presets can be run as long as it doesn't expect register reads to provide valid data.
  • /detfar - detect FAR sensor on start.
  • /warnings=filename - Specify the warnings file name.
  • /restorepresets - 1 to restore the additional Presets windows from the last session, 0 to not restore the windows.
  • /suppressallwindows - Start DevWareX will all windows suppressed - only the image display is enabled.
  • /startfullscreen - Start DevWareX in full screen mode.
  • /dll=DLLname. Include a new Transport DLL. And alternative is to copy the DLL to the Plugins folder.
  • <sensor_sdat_file>.xsdat - if opening an .xsdat file with no directory path given and the file doesn't exist, the sensor_data directory will be searched.

2.2 Application Layout and Options

2.2.1 Menu Commands

File(See 4.2)

Sensor handling functions.

Edit(See 4.9)Image and Preset Edit Options

View(See 4.6)

Toolbars and dialogs.


Activate plug-in dialogs (the contents of this menu vary).

Command(See 4.1)

Commands like Play, Pause and Reset.

User ToolbarLists all of the Custom Toolbars for the currently-active INI file

Select(See 4.4)

Mouse selection (used with the Analysis Dialog).

Documents(See 4.8)Relevant Documents

Help(See 4.3)

Access the help library. About Plug-ins

The DevWare application framework includes the ability to extend and customize its behavior.  Two types of extensions are supported:

  1. Dialog Plug-in - a dynamically linked library (DLL) which can be integrated with DevWare and can be used to:
    • Display custom user interfaces.
    • Access and run DevWare INI presets.
    • Access sensor registers.
    • Process the image data.

For details on how to write your own dialog plug-ins, refer to the document DevWare Plugin Development Guide.  You can also refer to a fully functional implementation example under the folder samples\DialogDLL.

  1. Midlib Transport DLL - a DLL which can be integrated with the midlib library in order to create a "driver" for midlib/DevWare in order to support new devices.  With a midlib Transport DLL you can:
    • Support an ON Semiconductor sensor on a device other than the Demo System camera so DevWare or any other midlib-based application will work with the device.
    • Create a software simulated camera and sensor, simulating either an existing sensor or new sensor, and be able to use DevWare as the user interface for the simulation.

For details on how to write your own midlib transport DLLs, refer to the document Midlib Transport Interface.  You can also refer to a fully functional implementation example under the folder samples\TransportDLL.
Shipping Plugins
The DevSuite plug-ins and transport DLL's are located under the Plugins folder of your installation.  Below is the list of items under the Plugins folder that are shipped in DevSuite:

Module name

"*" = separate User Guide


ActiveAlignment.dllInterfaces with Matlab scripts to give dynamic plotting of x, y z, alpha, beta and theta values to help with  lens positioning. Details are here.
AwbTuningMap.dllFor ICP2 (AP1300) and ICP3 (AP1302), this plug-in is used for advanced AWB tuning.
DemoTune.dll *
This plug-in automates the Lens Shading Correction process.

Dewarp.dll *

Dialog plug-in for lens warping correction (Dewarp) of wide angle lenses.  This module is loaded only with MT9V126/128 (MI-356SOC) and ASX344.

FocusModuleUniversalDlg.dll *
This plug-in implements manual and automatic focus on non-SOC sensors and modules.
GainExposureSweep.dllAllows a sweep of a set of exposures for a given number of gain settings, along with option to capture images.
HorizontalDistortionCorrectionDlg.dllFor ASX353, plot distortion for lens profiles correction.
HostCommandInterface_plugin.dllFor automotive parts that use the Host Command Interface, this plug-in allows the user to compose and issue host commands.
InterestPoint.dllThis plug-in implements the detection of Interest Points, and allows the user to control various configuration parameters.


An initialization file for the Macbeth color overlay dialog plug-in (see below).


An initialization file for the Macbeth color overlay dialog plug-in (see below).  This file supports SMPTE color charts instead of Macbeth charts.


Dialog plug-in for color analysis using the Macbeth and SMPTE color charts.

PresenceDetection.dllFor the SOC1040 (MT9M114) and SOC2340 (AS0260), this plug-in is used to demonstrate the sensor's ability to detect ambient light and if a person is present.
RgbIR4x4Pipe.dllFor AR0237IR, subtract IR for strong IR light sources.
STEDlg.dllFor AP0100/AP0102/AP0200 parts only, generates transforms that will eventually be burned in to Flash memory.
SystemCurve.dllFor AP0101 parts only, generates gamma (ALTM), gamma, ALTM, and linear data for the given scene.
uart_transport.dllTransportDLL for parts that have a UART.

2.2.2 Toolbar Buttons

The toolbar is displayed across the top of the application window, below the menu bar. The toolbar provides quick access to many tools used in DevWare.
To hide or display the Toolbar, choose Toolbar from the View menu (ALT-V, T).


Open or close the Info Dialog. The Info Dialog(See 2.2.5) contains an information window, Display Format choices and the current Mouse Selection choice.

 <F2> or <Ctrl-I>


Open or close the Sensor Control Dialog(See 2.2.4). This set of pages gives access to a variety of image sensor registers through a user friendly interface.

 <F3> or <Ctrl-S>


Open or close the Preset Dialog(See 2.2.6). This dialog can be used to load or save the current state of the sensors (registers and color pipe settings).



Open or close the Register Dialog(See 2.2.7). The Register Dialog allows the user to read and write registers on the image sensor.

 <F4> or <Ctrl-R>


Open or close the Register Log Dialog(See 2.2.8). This dialog logs sensor register writes.



Open or close the Analysis Dialog(See 2.2.9). The Analysis Dialog displays a graphical interpretation of a selected area of the display.



Open or close the Magnifying Glass(See 2.2.10).  Allows user to magnify a section of the display window.


Opens the Image Navigation(See 2.2.11) window.  Useful for navigating an image whose output size is larger than display area.


Opens the Watch Dialog(See 2.2.13) that allows the user to monitor volatile registers by re-reading them at a set time period.


Opens the Options Dialog(See 2.2.15).


Start displaying the image stream.


Pause the image stream.


Stop displaying the image stream.


(Soft) Reset the sensor to the power-on-defaults. This option loads the [reset] section from the appropriate .ini file.
Note: After resetting the sensor the user should re-load the default register settings by clicking the 'Init' button on the toolbar.


Load the initialization register settings for the sensor. The register settings can be found in the [Demo Initialization] section from the appropriate .ini file.

Full Auto

Enable the default software color processing options.
Note: For Bayer sensors only.


Toggle the sensor between Preview (viewfinder), snapshot mode, and for sensors that support it video mode via a pull-down.
Note: Typically not supported for VGA size and smaller sensors.


Capture the displayed sensor image to hard disk or cancel an image capture.


LockFor sensors that support it,  simulates half-press of a camera shutter to lock auto-functions such as AE, AWB, and Auto Focus.


Capture the "full resolution" image to hard disk or cancel an image capture.
For sensors that support them, there is a pull-down where features such as SnapShot-and-lock, Zero shutter lag, and Snapshot Over Video can be demonstrated



Records the image stream to hard disk.
Note: The video is uncompressed and will take significant hard disk space. This mode is for characterization only.

A Power-Point remote clicker's page-down and page-up buttons can be to start/stop recording when the PC is equipped with the IR interface.

 <F8> or

page-down = record start

page-up =
record stop


Zoom in on the displayed image.
Note: Zooming beyond 2x might not be supported by your graphics adapter and could lead to image artifacts and potentially to program instability.



Zoom out on the displayed image.



Displays the image in a full screen mode. This feature supports the following standard display modes:
640x480, 800x600, 1024x768, 1280x1024, 1600x1200 and 2048x1536
If the image from the sensor is not one of these sizes, the full screen mode will use the next larger size and fill in the extra area with black pixels. If the image is larger than the maximum size supported by the display device, it will shrink the image to fit. To return back to windowed mode, hit any key or click the mouse.



Generates a bug report that collects information directly related to the camera setup which is useful for debugging.


Opens the ON Semiconductor homepage ( in your browser.

2.2.3 Display

This area is where the sensor images are displayed.
If an image is not displayed here (when expected), please refer to the troubleshooting(See 2.2.17) pages.

Note that processed video streams, such as JPEG and H.264, will be slower than Bayer or RGB due to Software-based processing.
These same types of video streams will also have some "lag" (delay), again to due to the Software-based processing.  This is most notable with H.264.

Images and Videos can be loaded for viewing, either by drag-and-drop method, or via the "File" menu via "Open Image or Video File".
Most image and video types can be viewed, including 32-bit BMP file format. See the Sensor Control dialogs of "Image Save Options" and "Video Record" for specifics.

2.2.4 Control Dialog (Sensor Control)

This is the main control page. The dialog provides a set of tab pages that give user friendly access to logically grouped sensor registers or color pipe state settings. To access the registers directly use the Register Dialog(See 2.2.7)
The available tab pages depend on the type of image sensor you are using.
SOC Image Sensor Control Pages (See
AP010x Sensor Control Pages (See
SOC JPEG Image Sensor Control Pages (See
Bayer Image Sensor Control Pages (See
All sensors also share the following pages:
Capture Sensor Control Pages (See
Diagnostics Sensor Control Pages (See

There are also other pages available for most parts, and are simple to use.

HDMI Output 
For Demo3 only, enable/disables the HDMI output port. 
Focus Assist 
SW implementation of a focus score.  This "score" is a relative value, having no meaning other than a higher value indicates a crisper image focus.

The focus score is calculated as;

The value of a pixel is R/4 + G/2 + B/4.
At each pixel in the ROI, the following filter kernel is applied to the pixel values:
0 0 -64 0 0
0 0 0 0 0
-64 0 256 0 -64
0 0 0 0 0
0 0 -64 0 0
Then take absolute value, and divide by the value of the center pixel. (Pixels of value 0 are skipped.)
Add the results for all pixels in the ROI.
"Enable Audio FeedBack" allows the user to focus a module using sounds as a feedback method.
Select the "Enable Audio FeedBack" check-box, and then select "Keep Going" (a "Ping") and "Switch Directions" (a "Buzzer") to hear the sounds that will be issued.
You can either us the "Universal Auto Focus" plug-in to manually focus the module, and physically focus it.

Image Orientation 
Set flip/mirror of the image. Developer-only Pages

There are some pages that are only available in our internal version (available only to ON Semiconductor employees).

Diagnostics/Noise vs. Exposure 
This page will evaluate noise and exposure over a given number of frames. 

If you want to measure the effect of a particular image processing function on noise level, then manually activate that function.  To measure noise at the output of the sensor, turn off all image processing, except black level.
Also, make sure auto is disabled, and integration time set to a predefined value, and make sure software gain set to 1.

And in both cases, select "Raw Bayer Color". 

For "'Raw Bayer Color - Sensor Output", disable all DevWare ColorPipe options.

Bayer Bypass/SW FRF Advanced 
This page implements a Flat Region Filter using Sigma, Edge, and Chroma thresholds.. 
Bayer Bypass/SW Green Balance 
This page allows the user to enable Green Balance Correction for the DevWare SW ColorPipe and adjust Highlights and Shadows.
Bayer Bypass/SW Black Color Kill
This page allows the user to enable Black Color Kill for the DevWare SW ColorPipe and adjust its thresholds. Bayer Sensor Pages

These sensor control pages are only displayed for Bayer sensors. For example, the: A-0360, A-0366, A-1300, A-1310, A-2010, A-3100, etc. For the most part, they control software image processing algorithms in DevWare.
Note: The available sensor control pages and features depend on the type and version of the image sensor.
Data Interpretation Page
This page gives some control over the demosaicing algorithms that are used to convert the bayer image into an RGB color image.

For sensors with clear pixels (RCCB, RyyB, RGBC, RCCC), use "RGB (fast-linear)" to convert to a viewable RGB image.
This setting interpolates each of the four channels to get R, G1, G2, and B for each pixel. It then averages G1 and g2 together to get G. The result is RGB for each pixel.
SW Color Correction Page
The software color correction page allows the user to enable several digital image processing features to enhance the image.
Exposure Page
The Exposure page allows the user to change the Exposure and gain settings for the image sensor.
SW Auto Exposure Page
The Auto Exposure page allows the user to change the Auto Exposure and some noise related settings.
High Dynamic Range
For sensors that support High Dynamic Range, settings for data format, and noise reduction and tonal mapping.  Details can be found here.
For sensors that support triggers from Demo3 or an external source.  Details can be found here.
SW White Balance Page
The white balance and color correction algorithms allow the application to regain color characteristics from the Bayer image beyond simple interpolation. More Color Correction controls can be found on the SW Color Correction page (see above), and see Gray Checker for usage information.
Lens Correction or SW Lens Correction Page
On sensor with built-in lens shading correction circuits this page lets you calibrate the lens shading registers. On sensors with no lens shading hardware this page enables a software lens correction algorithm. The calibration data can be saved to a file, or on some demo headboards an EEPROM on the headboard.
SW Noise and Defects Page
Algorithms for improving image SNR and automatically removing defective pixels.
The High/Low Algorithm can be combined with one of the Average-Near, Adapting Average-Near, or Flat Region Fliter algorithms.
Mouse-over each algorithm for a detailed description of its operation.

A Temporal Depth of "-2" will perform 2 Frame differencing.
Output Size Page
For selecting the sensor output window, skip mode, bit depth and other settings that affect the size and format of the output image.
Binning Page
The use of binning mode can reduce the impact of aliasing introduced by skip mode usage. AP010x Sensor Pages

These sensor control pages are only displayed for the AP010x Companion Chips. Note: only the differences between the AP010x page and the SOC page are listed - SOC Sensor Control Pages(See
This page gives some control over the Hue and Saturation. Select a rectangular region, wait for ROI sampleing to complete, and then adjustments can be made.
Gamma Curve
A custom Gamma Curve can be set via interpolation between the user-supplied 32 points for the X axis, and then adjustment of the Y axis.
Color Kill
Adjustments to Color Kill can be made for the 3 zones using SNR and/or Gain.
Zoom Pan Control page
Available on on AP0101AT/CS, controls for sensor readout window and image reduction. SOC Sensor Pages

These sensor control pages are only displayed for SOC sensors. Note: The available sensor control pages and features depend on the type and version of the image sensor.
Data Interpretation Page
This page gives some control over the way the sensor data is interpreted for the display.
Auto Exposure Page
Sensor auto exposure features. For a detailed description of these register settings please refer to the developers guide or the register specification document.
Exposure Page
This page is provided to allow manual control of exposure and analog gain of the image sensor. NOTE: Besides Auto Exposure there are two more algorithms that have the ability to influence the exposure registers. To be absolutely sure that the sensors exposure registers stay untouched the user should also disable Auto White Balance and the Auto Flicker Detection registers.
White Balance Page
Primary auto white balance controls. Note: This page may not be available on some sensors.
Gamma page
This page allows the user to set the registers for gamma correction and related controls. Gamma correction allows for correcting the voltage input signal distortion by the monitor. The gamma correction value is typically converted into a gamma curve that is approximated by a piece-wise linear gamma curve on the sensor. Please refer to the developers guide or the sensor specification document for detailed information about the gamma curve algorithm.
Enhancement page
Extra image color saturation and sharpening controls. Newer sensors adjust these settings automatically according to lighting conditions.
Lens Correction page
This page is for calibrating and possibly fine-tuning the lens correction registers on an SOC sensor. When tuning lens correction you should have the camera aimed at a uniform white or gray target, and turn off auto exposure, auto white balance and gamma correction so they don't interfere with the calibration. Tuning lens correction is more complex than it appears, and a full treatment of the subject is beyond the scope of this document.
Effects Page
The effects page simulates photographic film exposure techniques used in the darkroom to manipulate light in creative ways.
Context Control Page
Controls for setting image format and other settings independently for Preview and Capture modes.
Zoom Pan or Auto Zoom Control page
Controls for sensor readout window and image reduction. Not available on all sensors. SOC Sensor JPEG Image Pages

These sensor control pages are only displayed for SOC sensors with JPEG capability. The available pages and features depend on the type and version of the image sensor.
Controls for JPEG color format and compression settings.Note: for best JPEG decoding performance, enable JPEG "restart markers" on the SOC.
Thumbnail Page
Controls for activating and selecting the size of embedded thumbnail images.
Q Table Page
Manual control of the quantization table. Normally you do not need to adjust the table, the firmware on the sensor will control the quantization tables.
 SOC Sensor Control Pages(See Capture Pages

Click on the "Control" button on the menu bar. The Sensor Control window will display. There are several dialog pages for setting Capture options.

There are two distinct modes of still capture. In the Current Displayed Image mode the still capture only freezes the currently displayed image and lets you save it to a file. No sensor registers are affected.
In the Full Resolution Image mode DevWare will perform a still capture procedure on the sensor. It could involve changing the image size, using global shutter mode, activating a flash lamp and so on. On an SOC it would involve activating the still image sequence on the sensor.

Still Image Format

The software is transport-independent and supports parallel, HiSPi, and other interface types that don't even have a byte-wise representation.
MIPI is byte-wise, but the FPGA on the Demo3 parses the MIPI stream and unpacks the pixels. There is no way to get the MIPI stream exactly as it comes from the sensor.

RAW still files are always 8-bit, 16-bit or 32-bit per pixel. If the bit depth is not one of those values, then the smallest format big enough to hold the data is chosen and the data is in the least significant bits
This is how the data normally comes across from the device driver, and also has the advantage that it's easy to read with various software libraries and tools (Matlab, numpy, etc.).

For 20-bit depth, each pixel occupies 4 bytes, stored LSB first. The pixel value is in the 20 low bits.
For compressed formats, our software by default expands the pixels before saving the RAW file, so the RAW file has linear data.

2-byte covering 12-bit words:   (1 2 3 4   5 6 7 8) (9 10 11 12    0 0 0 0)
4-byte covering 20-bit words:   (1 2 3 4   5 6 7 8) (9 10 11 12    13 14 15 16) (17 18 19 20    0 0 0 0) (0 0 0 0    0 0 0 0)

Snapshot Page
Select various options related to still image capture. Note that "Average into One Frame" does not work with JPEG output format.  The Average is pixel-wise temporal mean.

Image Save Options Page
This dialog is used to set the various image save options that are available.
The "Save Options" selection allows the user to select the type of data to be written to files. Raw Data is the unprocessed data coming from the sensor, which will be in the format the sensor is outputting, for example Bayer or YCbCr data. The Processed Data is RGB output data which has been converted from Bayer or YCbCr by DevWare. The image will also include any of the image processing pipeline that has been enabled. The Processed Data can be saved in either a 24bpp Bitmap file or 48bpp TIFF file. By default the register information is saved in the accompanying .TXT file.
Also available are the options on where to save the images. Note; if both "Auto File Name Increment and Save" and "Hold Still Image in Main Window" are disabled, the "Grab" and "Snapshot" will not be able to actual provide images to save.
After a Still Image is captured, the "Filmstrip" dialog appears if the "Hold Still Image in Main Window" option is selected. This dialog shows thumbnails of the captured image(s). The user can then right-click on the image for various options, including opening the image for view, saving the image, and selecting the type of image.
"Save Mouse Selection Rectangle Only"; only the saved image will show the rectangle-only - the filmstrip will show the full image.

Note: Overlays (Watch and/or Embedded Data) will not appear on a .raw image.  Instead, they will appear on RGB-type image formats.

Reg Capture Page
This advanced feature allows the user to record the state of specific registers when performing a still image capture. A single register or a range or registers can be selected at once and added to the list. Multiple entries can be added to the list and each can be grouped into custom named categories.
Normally, when the Capture button on the Toolbar(See 2.2.2) is pushed and the "TXT (registers)" option is checked on the Save Options page a "capture####_info.txt" file is created. This file contains a variety of information, among which is the entire sensor register state at the time of the capture. For some purposes this may be more information than is necessary. The Reg Capture page allows the user to record only the register states they are interested in during the capture and simplifies subsequent locating or viewing within the .txt file.
Reg Capture appends any user defined categories to the end of the .txt file. To ease viewing and reduce the filesize, the user can remove the full register state dump. Expand the General category in the list box and uncheck the "All Registers" entry. By default this option is enabled (checked).

Video Record Page
To capture a video stream press the Record button on the Toolbar(See 2.2.2).
NOTE: If Capture to RAM is unchecked, video is streamed directly to disk. The performance will depend on the speed of the hard disk and could result in dropped frames.
NOTE: The video formats are uncompressed and will take a significant amount of hard disk space.
NOTE: If Preview is disabled then the Color Pipe functions are skipped while live frames are accumulating. There will be no AE, nor any other Color Pipe processing.
You can save data in MPEG-4, AVI (2GB limit), WMV, or RAW format. RAW format requires no image processing and usually takes less disk space. If you don't have a compatible WMV codec installed, you'll be prompted with a URL to download one when you select that format. 
You can also save data as "PNG Raw Files" or "PNG RGB Files", which is the ability to save a video as a sequence of PNG files in either Raw or RGB format. Note that Raw only supports Bayer or similar (not YCbCr).

You can use WMV instead of AVI for unlimited file length. DevWare does not use compression with AVI. Usually the codec is just RGB-24. WMV is compressed in software.

  • There is a frame rate value stored in the wmv file. There is a check box and numerical entry on the Sensor Control -> Video Record dialog page where you can provide a frame rate to put in the file. If that is not checked DevWare uses the Display FPS.
  • But that value comes from before recording started. During recording there could be considerable disk overhead or compression overhead so that the actual frame rate during recording is lower than it was before recording started. In that case the frame rate in the file will not match the actual frame rate of the recording.

The compression quality for MPEG-4 or WMV recording can be controlled with the "VidCap Quality" STATE variable.

Recording to H264 converts the original stream to RGB, and encodes to H264. If the original stream is H264 then it will do a decode and encode.
If the original stream is H264 and you want to just record that directly then record as RAW.

RAW video files of 10-bit, 12-bit or 20-bit pixels are packed to conserve space. 10-bit is packed four pixels to five bytes, 12-bit is packed two pixels to three bytes, and 20-bit is packed two pixels to five bytes. The packing is like this:

The end of each image row is padded up to the next byte boundary if needed.
Note: to record without compression, on Sensor Control -> Video Record, unselect "Packed".

If the sensor supports Companding, use Sensor Control → Video Record "Decompand" to enable/disable it.

How to record Recording high resolution video without dropping frames

  • Record to RAM - usually your best option.
    • Under "Video Record" select "Record to RAM on the PC, then save to file".

    • You can then choose one of the 3 options on what to do when RAM is full - most useful option is "When RAM is full, write to disk and stop".

    • To find the maximum amount of RAM available, enter "Resource Monitor" in the search bar.
      At the bottom is "Available", in MB. It is recommended to use no more than 80% to 90% of this value in the "RAM buffer size" field.

  • A PC with an SSD may be able to record at-speed to a file. When recording to a file you will get the best recording frame rates by recording in RAW format and turning off preview while recording.

Some additional helpful info;

  • RAW files will play back in DevWare, but will need to be converted to AVI to be imported into other applications. You can use DevWare as a RAW to AVI file converter. Load the RAW file in DevWare and verify that the image looks correct. On the Video Capture dialog page select AVI recording format and turn off Capture to RAM. Click the Stop button on the Toolbar(See 2.2.2). Click the Record button on the Toolbar(See 2.2.2).
  • The "Frame rate" listed in the info.txt file (RAW only) is the rate displayed on the Info Panel "FPS (Display)".
    A specific frame rate can be set via Sensor Control / Video Record "Specify playback frame rate", or via the INI file using the STATE commands "VidCap Auto Play FPS" and "VidCap Play FPS".
  • “Specify playback frame rate”; DevWare video playback speed is not precise.
  • MPEG-4 requires at least 20 frames to be recorded. 

Single Button Image Capture
To enable the ability to perform a single-button image capture, do the following;- On the "Snapshot" page, enable "Camera Sound Effects". - On the "Image Save Options" - Use <F9> (for a "Grab") or <Ctrl-F9> (for a "Snapshot") to capture an image with a single button. Diagnostic Pages

Noise Measurement Page and Noise vs. Exposure

User Guide can be found here.

The Noise Measurement tool runs a series of noise analysis computations, and reports signal levels and different kinds of noise measurements.
After the analysis completes, the results are displayed here in plain text, tab-separated format.

Measurement is performed on linearized data. This enabled HDR noise measurement and removes dependence on most ColorPipe states.

Image Data Type Selection
SOCs and ISPs;  Raw YCbCr means the YCbCr data (the output of the SOC/ISP) is analyzed. "RGB (Processed)" means the RGB data (what you see on the monitor) is analyzed.
Bayer sensors;   Raw Bayer Color means the data directly from the sensor. "RGB (Processed)" means the RGB data (what you see on the monitor) is analyzed.


Auto functions may adjust gain or exposure while the noise measurement is in progress, therefore you should disable auto functions while doing noise measurement. If you want to measure the effect of a particular image processing function on noise level, then manually activate that function. To measure noise at the output of the sensor, turn off all image processing, except black level.


The report window supports editing, so you can add notes if desired. You can cut-and-paste the data from this window into Excel.
There are seven columns of data in the analysis results report:

  • RMS Dyn - Root-Mean-Square Dynamic (temporal)
  • Avg Dyn - Average Dynamic (temporal)
  • FPN - Fixed Pattern Noise
  • Col FPN - Column-wise Fixed Pattern Noise
  • ColLFPN - Column-wise Local Fixed Pattern Noise
  • Row FPN - Row-wise Fixed Pattern Noise
  • RowLFPN - Row-wise Local Fixed Pattern Noise
  • Col Dyn - Column-wise Dynamic
  • Row Dyn - Row-wise Dynamic

A report will look something like this:
Noise Levels (std. dev.) Signal Full Range = 255
Channel Signal RMS Dyn Avg Dyn FPN Col FPN Row FPN Col Dyn Row Dyn
Y 128.0 0.674 0.669 0.340 0.112 0.218 0.540 0.546
Cb 127.9 0.672 0.669 0.389 0.184 0.116 0.227 0.278
Cr 128.6 0.505 0.502 0.282 0.101 0.079 0.200 0.213

The formulas for the calculations are as follows. The noise measurement process captures N frames of W x H pixels, creating a 3-dimensional data set of W*H*N pixel values. Pixel values are denoted as
p(x, y, i) wherex = 0 .. W-1y = 0 .. H-1i = 0 .. N-1
Define also the following intermediate values:
pavg(x, y) = [Σ p(x, y, 0..N-1) ] / N
σ(x, y) = sqrt( [Σ (p(x, y, 0..N-1) - pavg(x, y))2 ] / N)
h(y, i) =  [ Σ p(0..W-1, y, i) ] / W
h(y) =  [ Σ p(0..W-1, y, 0..N-1) ] / (W*N)
v(x, i) =  [ Σ p(x, 0..H-1, i) ] / H
v(x) =  [ Σ p(x, 0..H-1, 0..N-1) ] / (H*N)
The analysis results are calculated as follows:
Signal = [Σ p(0..W-1, 0...H-1, 0..N-1) ] / (W*H*N)
RMS Dyn = sqrt( [Σ σ2(0..W-1, 0..H-1) ] / (W*H) )
Avg Dyn = [Σ σ(0..W-1, 0..H-1) ] / (W*H)
FPN = sqrt( [Σ (pavg(0..W-1,0..H-1) - Signal)2] / (W*H) )
Col FPN = sqrt( [Σ (v(0..W-1) - Signal)2 ] / W )
Col LFPN = same as Col FPN except Signal is calculated from the nearby columns only, instead of the whole analysis area.
Row FPN = sqrt( [Σ (h(0..H-1) - Signal)2  ] / H )
Row LFPN = same as Row FPN except Signal is calculated from the nearby columns only, instead of the whole analysis area.
Col Dyn = sqrt( [Σ ( v(0..W-1, 0..N-1) - v(0..W-1) )2] / (W*N) )
Row Dyn = sqrt( [Σ ( h(0..H-1, 0..N-1) - h(0..H-1) )2] / (H*N) )

Fuse ID Reader Page
The Fuse ID Reader page is used to get and save the Fuse ID information for each sensor, by reading register combinations specific to each sensor and saving this information.
Sensor Advanced

This dialog allows for override of settings that DevWareX usually determines on its own via reading sensor register settings.

  • Sensor; these check-boxes control hard-wired lines from the Demo3 to the sensor; Power, Reset, and Shutdown.
  • Sensor Clock Speed; sets the Input clock speed from Demo3 to sensor headboard (assuming the headboard is jumpered for external clock), and Array clock.
    • Use the "Apply" to set the values, and "Detect" to display the current settings.
  • Sensor Base Address; use "Detect" to discover the current I2C value, and the pull-down and then "Apply" to assign a new value (where applicable).
  • Color Filter Array (CFA); displays the current CFA, and use the pull-down to force the DevWareX ColorPipe to use this CFA.
  • Sensor Output; use "Detect" to discover the current width/height and pixel format, and "Apply" to set new ones.
  • Check-boxes; use these to change the pixel order/format.


Gives you access and control to features of the baseboard. - The onboard oscillator can be set via the XMCLK field. The "Image Buffers" select the type of buffering used by the Demo3. And "GPIO Pins" allows the enable / disable and level (on/off).

Serial Receiver

This dialog controls the various settings of the image sensor output format to the Demo3.  The actual controls are self-explanatory as it assumes the user knows these advanced settings.

2.2.5 Info Dialog

The Info dialog appears at the left edge of the DevWare window and displays information about the image sensor, the frames displayed and the mouse position. Additionally, it has list box controls to change the mouse selection area (for use with the Analysis Dialog(See 2.2.9)) and to select between multiple sensors (only appearing if more than one sensor is attached).
Property fields:


The ON Semiconductor Imaging sensor being used.

Part number

The ON Semiconductor part number for this sensor.

Sensor version

The version of the image sensor.

Sensor type

Either 'Bayer' or 'SOC' sensor.


Build name

The version and type of build (either Release or Beta).

Build version

The full version number ( of the DevWare application.

Build date

Date the software was compiled. (MM/DD/YYYY)

Demo Board:

Type of Demo board being used (for example: DEMO2X or DEMO3).
Note: The FPGA version is displayed in parentheses.


The version of the Firmware code on the Demo board.

Array Clock

The oscillator frequency being used (in MHz).
Note: This value can be modified by the user through the Options Dialog(See 2.2.15).

Pixel Clock

The pixel clock output as calculated by DevWare based on the specific configuration of the attached device.
It is intended to be the pixel rate at the sensor output.
DevWare has different ways of deriving clocks from each other.  In most cases, array clock was derived from external clock, and then pixel clock was derived from array clock.

Array Clock is nominally the sensor array clock. It's the clock used to calculate row time, exposure time, etc.
Pixel Clock is PIXCLK for the parallel interface, or the pixel rate. There is also Input Clock which is the clock input to the sensor.

Normally, the clock rates are re-measured when a PLL register is changed. Depending on the demo kit configuration, it may not be possible to measure the clocks from software. Demo2X can measure PIXCLK if the sensor is streaming in parallel mode. Demo3 can measure Input Clock if it is hooked up to the Demo3 clock sense line. Once one of the clocks is measured, the other two can be calculated from the PLL settings.

The clock speed on the Options dialog sets the Array Clock value (in case DevWare can't measure it), and Pixel Clock and Input Clock will be automatically calculated according to the PLL settings.


The pixel width of the displayed sensor image.


The pixel height of the displayed sensor image.


The current sensor image format (for example 'YCbCr', 'Bayer 8', 'Bayer 10', etc.).


A frame counter that gets increased for each displayed sensor image.

Dropped frames

Dropped frames are possible under the following circumstances:

  • The application couldn't determine the end-of-frame because of a change in the data flow (this is not a sensor issue).
  • The image data is sent faster then the computer can handle. This can happen on slower PC's/laptops or when other applications are slowing down the computer.
    To view the dropped (incomplete) frames regardless, go to the Options Dialog(See 2.2.15) and enable 'Debug Mode (show dropped frames)'.

FPS (Sensor)

The computed number of Frames Per Second that the sensor is running at based on register settings and oscillator (see Clock above) value.
Note: SOC sensors dynamically change the frame rate for exposure purposes. To update the FPS number click the 'Refresh' button at the bottom of the main Sensor Control dialog(See 2.2.4).

FPS (Datalink)

The number of Frames Per Second that the camera sends to the host computer via USB (or other data link). This number can be influenced by the speed of the computer, or the host controller and drivers.

FPS (Display)

The number of Frames Per Second that are displayed on the computer. A camera frame is first converted from its native format (see above) to a 32bit RGB image and finally converted to the display adapter's resolution (preferably also 32 bit). Software image processing can slow down the display frame rate. The display frame rate is also affected by the host computer's display drivers. The Accelerated selection on the Options(See 2.2.15) dialog can help.

Cursor pos

The mouse cursor position when the mouse is over the display area. Expressed as a positive (width, height) value relative to the upper-right most pixel (0,0).

Raw Data

The unprocessed sensor data at the mouse cursor position. For SOC sensors the data is separated into Y, Cb, and Cr values. For Bayer sensors there is a single data value, with the Bayer color pattern position indicated in parentheses (R, Gr, Gb, or B).

R: Output

The value of the Red component of the displayed image at the mouse cursor position.

G: Output

The value of the Green component of the displayed image at the mouse cursor position.

B: Output

The value of the Blue component of the displayed image at the mouse cursor position.

Mouse Selection (used in conjunction with the Analysis Dialog(See 2.2.9)):


No area selected. The whole image is used for analysis.


Only the selected rectangle is used for analysis (typically used with the analysis-histogram graph).
Note: You can do an Intensity plot in any direction.


Only the selected column is used for analysis (typically used with the analysis-intensity graph).


Only the selected row is used for analysis (typically used with the analysis-intensity graph).


Only a single point is used for analysis (typically used with the analysis-noise graph).

Press and hold the left mouse button (while over the Display(See 2.2.3) area) to change the selection area.

2.2.6 Preset Dialog

 This dialog can be used to load or save the current state of the sensor registers and color pipe settings. This information is stored within an .ini file which is loaded for each version of the sensor. For example, the file for the MT9V112 REV3 would be located in C:\Aptina Imaging\apps_data\MT9V112-REV3.ini. All sensors have a 'Demo Initialization' preset. Bayer Sensors typically have a 'Color Processing ON' and 'Color Processing OFF' Preset as well.
INI files are plain text and can be edited by the user. See the INI File Users's Guide for more information about ini files and the command syntax.
Save Options:
The Save Options sub-dialog allows software settings and/or specific groupings of registers to be saved.

2.2.7 Register Dialog

The Register Dialog allows the user to read and write registers on the image sensor. For a more user-friendly way to access registers use the Sensor Control Dialog(See 2.2.4) .
The drop-list box and tabs at the top of the Dialog (Sensor Core, Color Pipe, etc.) are used for sensors that have multiple address spaces/pages/register categories. To choose an address space, select it from the drop-list or click the appropriate tab. The tabs hold the six most recently used pages. Sensors with only one address space do not have any tabs.

To switch the Address or Value columns between hexadecimal and decimal format, click on the column header. The column's current value format will be displayed in parentheses.

This table describes the displays and controls under the Address Column;

A writable register

A register with separate bitfields below it. Double click this button to collapse the bitfields for this register.

A register with bitfields that are hidden. Double click this button to expand the display for the bitfields for this register.

A read-only register.

A bitfield for the register immediately above it.

Hide all the register bitfields in the register list.

Show all the register bitfields in the register list.

If a Display Name is red, it indicates that it is confidential.

If a Value is red, it indicates the value is different from its default.

2.2.8 Register Log Dialog

This dialog logs the values that are written to the sensor registers. All registers are logged regardless of whether they are written with the Register Dialog(See 2.2.7) or Sensor Control Dialog(See 2.2.4) . The log information is in the same format as the .ini file. You can select, cut, and paste from this dialog to an ini file. For example:
REG=1, 0x12, 0x3FEF    // DEFECT_BUF_WRITE_PORT2 [2]
means that the value 0x3FEF was written to register 0x12 in address space 1. The [2] means that this register was written 2 times and that the latest value written was 0x3FEF.

2.2.9 Analysis Graph Dialog

The Analysis dialog displays a choice of real-time analysis graphs that allow the user to view some simple characterization schemes for the image sensor.

  • Use the Mouse Selection(See 4.4) tool to select which pixels to analyze.
  • Image type can be selected via the Radio buttons on the left, as are Colors, and optionally Axis minimums and maximums.
  • Right-click on the graph to various data presentation options.
  • Left-click on the graph to create reference lines.
  • To save the graph image to a BMP file, right-click on the graph and select Save Graph Image As....

The Intensity graph displays the intensity (on the vertical-axis) of each of the selected pixels (horizontal-axis). Right-click on the graph for more options. To save the intensity data to a file (tab-separated text) right-click on the graph and select Save Graph Data As.... The Intensity graph only works when you use the Mouse Selection tool to select a Row, Column or Rectangle (for use with diagonal measurement).
The X-axis represents the actual pixel being measured.  Row and Column Means require a Rectangle (or Off to use the entire image as the Rectangle).
Note; when using Row on a Bayer image, two rows are used so all four channels.
It plots an even rows and an odd row, so if on on even row it adds the row below, and if on an odd row it adds the row above.

The Histogram collects the total amount of pixels (vertical-axis) for each of the possible intensity values (horizontal-axis) for each of the color channels. The histogram is taken over the currently selected area and works best for a small rectangular selection(See 4.4).
Right-click on the graph for more options. To save the histogram data to a file (tab-separated text) right-click on the graph and select Save Graph Data As....
When the histogram is being displayed, if you right-click on the graph and select Show Control Window the following Analysis Graph Controls are available.
By default the histogram data is displayed in Combined RGB mode. The Analysis Graph Controls can be used to display a luminance graph as well. When displaying a luminance graph the user has the option to display additional data characteristics.

The graph calculates approximate mean from the histogram. So the precision is limited by the size of the histogram bins. That's why it says " ~161 ". Likewise for the other statistical calculations on the graph.

The Noise graph shows the intensity (vertical-axis) of a single pixel for each frame for all color channels. The old values remain so an intensity-over-time (horizontal-axis) graph appears. This display wraps around and shows approximately 640 time slices. The text at the top display computed temporal SNR in dB. (If there is no fluctuation in the data, the readout shows 0.0.)
Additional Data displayed;

The equation for each is the same, but each column (or row) is only compared to the average of the five columns (or rows) before and after it, instead of to the whole image. This prevents uneven lighting from adding to the noise value.

Note: this only works when using "Point" as the mouse selection. If something other than Point is selected, then Noise works on the upper left corner of the selected area.

The Vectorscope graph shows the distribution of the chrominance signal in the selected area. You will need to aim the camera at a color reference chart.
NOTE: DevWare only uses 8-bit output for Bayer Sensors by Default. To switch to 10-bit output, go to the 'Sensor Output' Bayer Image Sensor Control Pages (See

2.2.10 Magnifier

Right-click anywhere in the display(See 2.2.3) area to magnify the pixels at that location. A window will appear showing the magnified pixels. A green rectangle on the main image indicates what portion is being magnified. The Magnifier window can be resized and the level of magnification can be adjusted by the scroll bar on the right side.

2.2.11 Image Navigation

This window shows the entire current image output (as indicated in the Info Dialog(See 2.2.5) pane). The viewable portion of the image, that which fits into the current display area, is shown within a red box.  Note:  If the display area can accomodate the entire image, you will not see a red box.
This feature is useful for image outputs that are larger than the current display area.  It allows for navigation by right-clicking or right-clicking and dragging within the Image Navigation window.  Either action will cause the main display area to adjust the field of view accordingly. The Image Navigation window may be resized or relocated for convenience.
For example:  If your sensor output is 1024x768, but you can only see 640x480 at any given time, the Image Navigation window will show the full 1027x764 image.  The current 640x480 viewable area is indicated by a red-box and this portion can be moved by clicking within the window.

2.2.12 Peek & Poke

Directly access a registers on any I2C controlled device on the DEMO system. For sensor registers, using the Registers panel is preferred.
NOTE: This tool is provided for developers who have a good understanding of the sensor specifications. Using this tool might make the application unstable because it allows for changes of data size from the sensor that the application is unaware of. Please be cautious when changing the address space selector (page register) with this tool.

2.2.13 Watch Dialog

The watch page allows the user to monitor volatile registers by re-reading them at a set time period.
Adding Registers to Watch
There are three ways to add a register to "Watch".

  • By right-clicking on a register (or bitfield) item in the Register dialog, then choosing "Add to Watch" from a popup menu.
  • By right-clicking on a register (or bitfield( item in the Log dialog, then choosing "Add to Watch" from a popup menu.
  • By using the Save/Load button to load a previously save watch list. DevWare remembers your watch list when it exits and restores it when it starts up again.

Record to csv File
During monitoring, user can also record register values to a csv file.  The number of entries per second is sensor frame rate.
Save/Load (Watch REG Preset Dialog)
The Watch REG Preset Dialog can be used to load a "watch" preset defined in an .ini file or to create a new "watch" preset to an .ini file. This allows the user to save and load the watched registers between sessions. The default .ini file used for the presets will be used for the watch presets. Another .ini file can be selected using the Browse button. All the preset names in list box will be pre-appended with "Watch REG:" in the .ini file to differentiate them from standard presets.

Watching Registers on the Demo3
Watch assumes register addresses refer to the sensor.
You can still monitor it on the Watch dialog using the Python function feature.

On the Watch dialog click Non-Register…, click Next, for def put MipiFrameCRC, in the box put

   return demo3.MipiFrameCRC.value

(including the leading spaces).  Then click Test Function, click Finish.

2.2.14 Embedded Data Viewer

Enable decoding and dislaying of the SMIA register data (not available for SOC sensors).
Record to csv File

  • Browse... - Select the file/path for the .csv file.
  • Start - Begin recording to .csv file.

SMIA Register List Control
Right click anywhere in the list window in order to copy the selected lines into the clipboard or in order to disable or enable the registers that are going to be overlayed on the image.
Overlay Style

  • Embedded in image - Overlay status, CRC and/or SMIA registers in image data.
  • Floating in Image Viewer - Overlay status, CRC and/or SMIA registers over the image view so that the text size will adjust to the Zoom level. Overlayed data in this manner will not be saved along with image data.

Embedded SMIA data

  • Decode Embedded Data - Select to enable decoding of embedded data. SMIA data is embedded inside of the captured image.
  • Overlay Data on Image - Select to overlay the embedded data on the image.

Overlay Checksum
Enable I2C CRC overlay in the image data/view.
Allows the customer to add a title to the data overlay.

2.2.15 Options Dialog

This dialog is for miscellaneous items including user interface options, error logging functions, and high-level sensor overrides (clock speed, I2C base address and image data format).

Most fields have "Tool Tips" that can be scrolled-over for usage and INI file information.

  • Sensor Array Clock Speed : allows the user to inform the application that\nthe oscillator on the Demo board has been\nchanged from the factory installed oscillator.
  • Log FIle : enables various types of logging output, from DevWare internal errors to USB traffic.
  • Sensor Base Address : allows the detected I2C address to be overridden or detected.
  • Debug Settings : enables debugging of displayed images.
    • Show Dropped Frames : very useful in displaying images that aren't in the expected format, or corrupted frames such as JPEG.
  • Sensor Output : allows the detected width/height/format to be overridden or detected.
  • Display : selects the display format - for remote display of DevWare select "No DirectX".
  • Miscellaneous : various settings that could be enabled or disables as seen in the figure above.
  • Warning Dialogs : renables various warning messages that were disabled when their associated dialogs appeared.
  • Reset All : resets all settings to their defaults.

2.2.16 Warning Messages

When a warning message box appears the application has:

  • hit an unexpected result.
  • come upon an area where continuing might lead to unexpected results.

    If presented with a choice we strongly recommend that the user follows the direction the warning message box suggests.
    If the warning message box is unexpected please refer to the trouble shooting guide.

2.2.17 Troubleshooting

When the program does not behave the way intended, or you experience problems that are not covered in the help files you may wish to file a bug report(See 2.2.18) .
Check to see if any of the following sections help with the problems you encounter.
I have problems starting the application and see one of the following warning message boxes:

-> Check if the USB drivers are installed properly. Refer to the driver installation document under "Start>All Programs->Aptina Imaging->Docs->User Guides->USB Drivers User Guide".
--> Check if the cables are attached to the image sensor properly. If the image sensor worked before, unplug-and-plug the cables and try again.

--> Check if the application is started from the same place that holds the sensor_data directory (holding the sensor data(See 4.5) files)
The application starts without errors, but there is no image:
--> Some register settings might lead to stop the sensor from sending valid data. Quit the application and reset the sensor by unplugging it and plugging it back in.
My frame rate is really low:
--> The amount of data that is being processed is quite significant or a lot of image processing function are turned on. Reduce the size of the image on the Output Size or Context page of Sensor Control. On the Options dialog, select the Accelerated Display option. Turn off extra image processing. 
When setting registers the application freezes up:
 -->Changing registers on the image sensor might lead to changes in the data flow resulting in unexpected lockups of the application. Terminate the application as best as possible and reset the sensor by unplugging it and plugging it back in.

2.2.18 Reporting a Bug

  • If the trouble shooting(See 2.2.17) pages did not help solve the problem you are having you may wish to email a bug report as follows:
  • In DevWare, go to the menu Help -> Bug Report or select the picture of the "bug" from the toolbar.
  • Provide as detailed as possible a bug description (mention bug symptoms like 'no image', 'distorted image', etc.)
  • Provide information on how to reproduce the bug (what registers did you change, what buttons did you press before the bug showed up, etc)
  • Copy the contents of the system information window to the clipboard by pressing the Copy to Clipboard button.
  • Start an email and paste (Ctrl-V) the clipboard contents of system information into the text portion of the email. Edit this information as you see fit, see the note below.
  • Send the email to
      NOTE: The system information that is gathered to help us solve the problems you encountered consists of the following sections: Application version info, Camera info, Windows Operating System info, Processor info, USB Host Controllers info and Image Sensor Register settings. The application only gathers this information and does not send anything. Please look through the information and edit it as you see fit before emailing it.

    3. About ON Semiconductor's Developer Suite

    The following list provides details about folders of interest installed in C:\Aptina Imaging

    appsApplications that use specialized libraries


    .INI files for ON Semiconductor sensors


    Data files for ON Semiconductor demo boards


    Storage location of DevWare captured images

    DevWareFiles specific to DevWare.exe


    Documents, schematics, and BOM's

    driversUSB drivers and User Guide


    Demo board firmware files


    Flash Tool for automotive products


    Demo board FPGA files


    Include files for imaging applications

    imageformatsImage format .dll files


    ON Semiconductor Imaging library (midlib) files


    DevWare plug-in files


    Sample imagine application code


    ON Semiconductor sensor data (.SDAT) files

    "Start Menu" Index
    Here is a list of folders and their contents, that are accessible from the Windows Start menu.


    Start->All Programs->Aptina Imaging->Docs
    Links for all documentation and schematics.


    Start->All Programs->Aptina Imaging->SDK
    Links provided to sample applications to help users develop their own imaging applications.


    Start->All Programs->Aptina Imaging->Tools
    Links for tools such as HardwareUpdate, RegPoke, Flashtool, etc.)

    3.1 HardwareUpdate Tool

    This is a Window's application that updates the firmware and FPGA code on the ON Semiconductor Imaging baseboard (Demo2X or Demo3). The tool is located in: Start menu -> All Programs -> Aptina Imaging -> Tools .

    Usage and Tips
  • A complete User Guide is available under the "Start" menu, via Docs -> User Guides.
  • Launch the tool, then follow the on-screen instructions when the Hardware Update Wizard appears.
  • The Chooser page will allow you to select between checking for firmware or FPGA code updates. It is recommended to check/update the firmware first.
  • DO NOT unplug the USB cable during the programming process as it may render the board useless.
  • After any programming has be performed, it is necessary to close the HardwareUpdate Tool and detach/reattach the USB cable to the baseboard. If this is not done, the HardwareUpdate Tool will not reflect recent programming changes. When updating both firmware and FPGA, it will be necessary to do this after each update. I.e. update firmware, close tool, detach/reattach USB, then update FPGA, close tool, and detach/reattach USB.

3.2 SideBySide Application

This application allows two ON Semiconductor Demo cameras to be simultaneously displayed side-by-side. It is useful for comparing differences in equal sized sensors, although dissimilar sensors may also be used together. Synchronous control of both images is provided for panning, zooming and play-state.
Usage and Tips

  • Connect two Aptina Imaging Demo cameras to the system. Make sure the cameras are recognized and the drivers are installed.
  • Launch SideBySide from the desktop shortcut. The application will automatically start two instances of DevWare and size the display windows evenly. The initial startup takes a little more time than normal, but requires no user interaction. Please be patient.
  • All DevWare toolbars and dialogs are hidden by the application. They can be manually re-enabled if access to a specific control is needed.
  • Selecting Quit from the SideBySide control bar will close all DevWare instances, it is not necessary to close each one separately.

4. Addenda

4.1 Command menu commands


Start displaying the image stream


Pause the image stream


Stop displaying the image stream


(Soft) Reset the sensor to the power-on-defaults. This option loads the [reset] section from the appropriate. ini file.
Note: after resetting the sensor the user should re-load the default register settings by clicking the 'Init' button on the toolbar or picking the 'Initialize' menu option below.


Load the recommended register settings for the sensor. The recommended register settings can be found in the [Demo Initialization] section from the appropriate. ini file.

Full Auto

Enable the recommended software color processing options
Note: for Bayer sensors only

Preview mode

Toggle the sensor between preview (viewfinder) and snapshot mode.
Note: typically not supported for VGA size and smaller sensors  

Check Sensor

Re-evaluate the current state of the sensor. This can help you recover from a situation where DevWare is dropping all frames.

4.2 File menu commands

Open Sensor Data File 

Open a specific sensor data (SDAT) file for the current sensor.

Open Image or Video File

Open an image file and display the image, instead of a sensor.

Open Default Presets

Open an INI file as the default presets file. (same as the Browse... button on the Presets dialog).

Open Additional Presets

Open an INI file as an additional presets file. This INI file will not affect the dfault presets file, and it will not be used to specify the actions of the DevWare toolbar.

Refresh Register List

Reopen a specific sensor data (SDAT) file for the current sensor(Using file browse).

Probe for Devices

Re-run the device probe that will determine what sensor you have attached and automatically select the right SDAT file.

Capture Image

Capture the currently displayed sensor image to hard disk <F9 >.

Take Snapshot

Capture the sensor image to hard disk <Ctrl-F9 >.

Record Video

Record the image stream to hard disk Note: the video is uncompressed and will take significant hard disk space. This mode is for characterization only.


Exit the application. <Alt-F4>.

4.3 Help menu commands

The Help menu offers the following commands, which provide you assistance with this application:

Help Topics

Offers you an index to topics on which you can get help.

Tutorial VideosPoints to our YouTube channel. The video support link is

Bug report

When you find a problem with this software, please file for a bug report by following the information in the Bug Report Dialog.

System DumpOpens system information in Bug Report pop up window.
Performance OverlayPerformance log is displayed as overlay on the image or view finder.
Performance DumpPerformance Dump is displayed as part of overlay
Check for updatesDisplays the latest DevSuite daily build that could be installed
Internet Home Page
Opens the page


Version and copyright information.

4.4 Mouse Selection commands


The whole display area is selected.


A rectangular area is selected. Hold down the left-mouse button and drag the cursor around in the display to make your selection. This is specifically useful for the Analysis-History graph


A single column is selected. Hold down the left-mouse button and drag it around to select the column. This is specifically useful for the Analysis-Intensity graph .


A single row is selected. Hold down the left-mouse button and drag it around to select the row. This is specifically useful for the Analysis-Intensity graph .


A single point is selected. Hold down the left-mouse button and drag it around to select the point. This is specifically useful for the Analysis-Noise graph .

The Mouse Selection coordinates are in terms of the rows shown on the screen only. If you hide some rows then 'last row' (from the Mouse Selection) will be less than the total number of rows from the sensor, 'height'.

This only occurs when you hide extra rows. In your table below the only case where you used the 'Hide' option is the right-most column, 'AR0220AT/hidden'. In all other columns you have not used the 'Hide' option, so the 'last row' is 'height' - 1.


Not using 'Hide' option: 'last row' = 'height' - 1
Using 'Hide' option: 'last row' = 'height' - number_of_hidden_extra_rows - 1

Whether the sensor outputs embedded data rows is different from whether DevWare hides them.






Emb. Data on





Emb. Data hidden










Last row





Height - last row

1 (unhidden)

1 (unhidden)

1 (unhidden)


4.5 Sensor data (.XSDAT) files

The sensor data files with extension .xsdat hold information about the registers of each of ON Semiconductor image sensors. These files are used to auto-detect the image sensor that is attached to the computer.
NOTE:   The application expects the sensor_data directory to be in the same directory from where the application is started.

A detailed description of the SDAT files can be found here.

4.6 View menu commands


Show or hide the Toolbar(See 2.2.2).

Status Bar

Show or hide the Status Bar that appears along the bottom of the DevWare main window. This bar may provide brief infomation about the currently selected feature, status of various Caps/Scroll/Num lock keys, etc.

 User Toolbar

Show or hide User Toolbar below the menu bar.

User Toolbar 2Show or hide User Toolbar in the right side of DevWare to enable adding desired shortcuts needed by user.
Plugins ToolbarShow or hide Plugins menu(See
Toolbar LabelsShow or hide labels for the options in the toolbar.
Default PresetsDisplays the default presets file corresponding to the sensor connected.

Info Dialog

Open or Close the Info(See 2.2.5) Dialog . This dialog contains Demo System information, display format choices and the current mouse selection(See 4.4) choice. <F2> or <Ctrl-I>

Sensor Control

Open or Close the Sensor Control(See 2.2.4) pages. This set of pages provides access to a variety of image sensor registers through a user friendly interface. <F3> or <Ctrl-S>

Preset Dialog

Open or Close the Presets(See 2.2.6) dialog. This dialog can be used to load or save the current state of the sensors (registers and color pipe settings). <Ctrl-P>

Register Dialog

Open or Close the Register(See 2.2.7) Dialog. This dialog allows the user to read and write registers on the image sensor. <F4> or <Ctrl-R>

Register Data sheetOpen or Close Register Data Sheet window containing register bit information.

Log Dialog

Open or Close the Register Log(See 2.2.8) Dialog. This dialog allows the user to view and log all the register changes that are happening. This could be useful when manipulating higher-level user interfaces on the Sensor Control pages. <Ctrl-L>

Peek & Poke

Opens the Peek & Poke(See 2.2.12) dialog. This dialog allows the user to quickly read or write registers by specifying specific addresses and values.

Analysis Graphs

Open or Close the Analysis(See 2.2.9) Dialog. This dialog displays a graphical interpretation of a selected area of the display. <F5>


Open or Close the Magnifier(See 2.2.10) window. This feature allows user to zoom a desired section of the display area.

Image NavigatorOpen or Close Image Navigator Window.


Open or Close the Watch(See 2.2.13) Dialog. This dialog allows the user to add individual registers and track their value in real time.

Embedded Data ViewerOpens or Closes Embedded Data Viewer which could be used to log embedded data to a desired .csv file.
Captured ImagesOpens or closes captured images window showing the images captured in the particular instance of DevWare.
Python ConsoleOpens the Python console where commands could be entered.
Debug ConsoleOpens Debug console.
EEPROM PresetsOpens EEPROM Presets console.
View sensordata FileOpens the sensor data file for the connected sensor.

Zoom in

Zoom in on the display image. <F10>

Zoom out

Zoom out on the display image. <F11>

Full Screen

Switches the display into FullScreen Mode. To return back to windowed mode, hit any key. <F12 >


Open or Close the Options(See 2.2.15) Dialog.

4.7 Gray Checker

Problem Description

One of the most widely used methods of sampling pixels for AWB statistic is white-point estimation method, when we take only pixels which are close to white-points curve for given sensor. White-points curve can be defined in different coordinates. Most wide used coordinates are B/G vs. R/G, Log(B/G) vs. Log(R/B), Y vs. X, (R-B)/Y vs. (R+B-2G)/Y

Fig.1 demonstrates Log(B/G) vs. Log(R/G) diagram for each GretagMcBeth color squares. Series number corresponds to McBeth color square number. B/G and R/G ratios were calculated for row data received after applying unity analog and digital gain to each color channel at four different color temperatures covering temperature range from 2800K to 6500K. Series 19-22 were received from gray McBeth chart zones and define white-points aria.

Fig.1 Log2(B/G) vs LOG2(R/G) diagram for GretagMcBeth colors received for A-3120 sensor.

White-points aria has to be specified for certain sensor and every pixel considering for WB statistic has to be tested for belong to the white aria. The given document describes method estimating distance from any point in 2-D space (current pixel) to white-points curve specified in this space by piece-wise linear curve. The given method is independent from type of coordinates and does not require a lot of resources for implementation.

Algorithm Description

The given algorithm describes method estimating shortest distance from certain point P0 with known coordinates [X0,Y0] in 2D space to piece-wise linear curve defined by set of nodes P1[X1,Y1], P2[X2,Y2], P3[X3,Y3], P4[X4,Y4].


1. Define procedure DIST(A,B) which estimates the distance between points A and B. If point A has coordinates [Xa,Ya] and point B [Xb,Yb] equation defining distance between these two points is DIST(A,B) = SQRT[(Xa - Xb)2 + (Ya - Yb)2]. Implementation of this equation might be difficult and costly in RTL, therefore we use approximation which can be easily implemented and provides less than 10% error in distance detection.

        1.1     dX = |Xa ? Xb|; dY = |Ya ? Yb|
        1.2     D = dX + dY;
        1.3     if (dX > dY) then
                       Min = dY;
                       Max1 = dX;
                       Max2 = dX / 2;
                       Max3 = dX / 4;
                       Max8 = dX / 8;
                       Min = dX;
                       Max1 = dY;
                       Max2 = dY / 2;
                       Max3 = dY / 4;
                       Max8 = dY / 8;
        1.4     if (min <= max8)
                               DIST = D;
                       If (max8 < min <= max4)
                               DIST = D/2 + D/4 + D/8;
                       If (min > max4)
                               DIST = D/2 + D/4;

2. Calculate distance between point P0 and every node point P1, P2, P3, P4 using routine DIST(A,B) defined above.

        Dis1 = DIST(P0,P1),
        Dis2 = DIST(P0,P2),
        Dis3 = DIST(P0,P3),
        Dis4 = DIST(P0,P4),

And find two closest nodes to point P0.

3. Assume that two closest nodes to point P0 are P1 and P2 as shown on fig.3. Then we divide interval [P1,P2] into four equal intervals [P1,P3] = [P3,P4] = [P4,P5] = [P5,P2]

Coordinates for nodes P3, P4 and P5 will be defined as:

        X3 = X1 + deltaX/4;
        X4 = X1 + deltaX/2;
        X5 = X1 + deltaX/2 + deltaX/4;
        Y3 = Y2 + deltaY/2 + deltaY/4;
        Y4 = Y2 + deltaY/2;
        Y5 = Y2 + deltaY/4;

Where: deltaX = X2 ? X1 and deltaY = Y1 ? Y2

4. Calculate distance between point P0 and every node point P1, P2, P3, P4, P5 using routine DIST(A,B) defined above.

        d1 = DIST(P0,P1),
        d2 = DIST(P0,P2),
        d3 = DIST(P0,P3),
        d4 = DIST(P0,P4),
        d5 = DIST(P0,P5),

5. Minimal number among d1, d2, d3, d4, d5 is shortest distance between point P0 and piece-wise linear curve.


4.8 Documents menu commands

Data Sheets

Points to DataSheet Info page

Developement Guides

Contains links to our various Development Guides

DevSuite Quick Start Guide

Opens up DevSuite-Quick Start Guide.pdf .

Hardware Documents

Points to various BOMs , Lens Drawings and Schematics.


Has a sub option "Software License" which inturn opens up the software license as a word document.

Release NotesOpens Release Notes.pdf pertaining the the release version in use.
User GuidesContains links to our various User Guides.

4.9 Edit menu commands

Copy Image

Copies image to clip Board.

Edit Image in Aptina Viewer

Opens the image in Aptina Viewer to allow editing.

Edit Raw Image in Aptina Viewer

Opens the Raw image in Aptina Viewer so that it can be Edited.

Search Registers

Opens the Search Registers window to search for desired registers.

Edit Default Presets File

Opens the preset file(corresponding to the sensor connected) in not pad to allow editing.

4.10 DevWare Register "Spying"

DevWare spies on register writes, and if something that affects DevWare changes, such as image format, then DevWare adjusts automatically.

This includes writing to the attached device, any auxiliary boards (e.g. Dual Lane MIPI), and/or the basebase (Demo2X or Demo3).

This is normally what you want, but it can adversely affect test scripts.

To disable this spying (and all automatic register accesses), follow  these steps;

  1. In the Options Dialog, unselect "Allow Register Spying" and "Allow Sensor Frame Rate Polling", and "Allow FAR register access" if present.
  2. In the Watch Dialog, clear all items via the "Clear All" button.

The INI commands to do the Option Dialog settings are;
OPTION = Reg Control, 0                      // Disable Register Spying
STATE = Allow Update Sensor, 0          // Disable Allow Sensor Frame Rate Polling
STATE = Allow FAR Access, 0              // Disable Allow FAR register access