User Tools

Firmware revision history

Compatibility matrix

  • - fully compatible
  • - mostly compatible (a feature or two may be inaccessible but otherwise "ol iz vel")
  • empty cell - not supported (major differences in how the two modules interact with each other)
\(_{FX3}\) \ \(^{FPGA}\) 70 71 72 73
51
52
53
54
55
56
57
58

FX3

Upcoming:

  • USB descriptors
    • USB descriptors now correctly conform to UVC 1.1 standard
    • Explicitly specify the Color mode in UVC descriptors
    • the camera is now properly classified as a USB “Composite device”
    • Set the end-point bulk service interval parameter to 0 for Video IN EP (as per USB spec)
    • Preliminary work on supporting (upcoming) USB 2.x High (480 Mbps) and Full (12 Mbps) speeds
      • Specified USB 2.x USB descriptors and supporting structures
      • added handler for GetDescriptor() for “other configuration”
    • Preliminary work on supporting driver-less Windows operation via the use of WINUSB device type
    • Correct the USB BOS descriptor's alignment and padding
    • Correct the VideoProbeAndControl's alignment and padding
    • Correct the MS OS Platform Capability descriptor's alignment and padding
    • Fixed a few issues reported by USB-IF's “CV testing” conformance testing tool
  • Bug fixes
    • (FINALLY!) Found the root cause for one of the longest standing “random bugs” that was causing video start issues
    • DPC calibration procedure no longer forces the on-board fan to be turned off
    • Fixed a bug in FPGA re-programming 1)
  • UVC functionality
    • set YUY2 as the preferred video format (instead of NV12) for both USB and SDI/HDMI output
    • introducing support for UVC GAIN control (of course manually modifying the UVC GAIN causes the Auto-exposure to get turned off)
    • Auto white-balance is greatly simplified (and performs better)
      • when turning AWB on - set the initial gains to sensible defaults
      • AWB is noticeably less hectic with the introduction of hysteresis use
      • AWB is not “temperature table-based” and is far less likely to misinterpret the “true white color” even in the craziest of environments lit by some random color LEDs ;-)
    • AE and AWB are much more responsive (for a short time) when a need for correction is detected (dynamically adapt the effective interval based on activity)
    • fixed stroboscope effect caused by ISP running way too fast for its own good (auto-exposure)
    • do not auto-restart the video when handling Clear Feature endpoint request
    • removed UVC eXtension Unit (currently unused)
  • New features and improvements
    • Improved detection of SFP+ module insertion
    • (Better) support for FPGA version 73
      • re-worked ISP defaults for the new video pipeline implementation
      • LVL color grading is now much-much faster
        • With new LVL defaults
    • New API to store Color Grading defaults on FX3 2) 3)
    • a few rounds of stability improvements
    • finally figured out a usable way to display API error code in fatalError() handler by using flashing LED, where red flashes are for the “hundreds” of the error number, green ones are for the number of “tens”, and the blue pulses are for single digits of that API error code. So it is now humanly possible to tell the actual internal API error code when the device goes fubar (see “Debugging” section for how to manually trigger an internal fatal error with a code
  • Debugging (you don't really care about this one)
    • a new API 4) is introduced for debugging purposes that allows access to various USB descriptors
    • (internal) improvements to logging
    • performance stats are available via API (spec to be finalized)
    • yet another new API (spec to be finalized) to access internal global state variables of the FX3 code
    • writing a value into wValue during “BL check” calls fatalError() with the provided code - mostly for debugging

Cancelled: 58

  • Preliminary work on supporting USB 2.x High (480 Mbps) and Full (12 Mbps) speeds
  • Preliminary work on supporting driver-less Windows operation via the use of WINUSB device type
  • LVL color grading is now much-much faster (requires FPGA version 73)
  • New “Debug” APIs, refer to API spec
  • Fixed a bug in FPGA re-programming (the code was failing to re-init the I/O matrix to allow the re-programming)
  • Correct the USB BOS descriptor's alignment and padding
  • Correct the VideoProbeAndControl's alignment and padding
  • Correct the MS OS Platform Capability descriptor's alignment and padding
  • New LVL defaults
  • New API to store Color Grading defaults on FX3 (in a centralized place, accessible by SUB2r-lib and, consequently, client UI, like SCC)
  • YUY2 is now the preferred video format (was NV12)
  • Explicitly specify the Color mode in UVC descriptors
  • Set the end-point bulk service interval parameter to 0 for Video IN EP (as per USB spec)
  • Fixed a few issues reported by USB-IF's “CV testing” conformance testing tool

2020-06-01: 57

  • DPC calibration procedure no longer forces the on-board fan to be turned off
  • introducing support for UVC GAIN control (of course manually modifying the UVC GAIN causes the Auto-exposure to get turned off)
  • USB descriptors now correctly conform to UVC 1.1 standard
  • the camera is now properly classified as a USB “Composite device”
  • EP0 control transfer max packet size has been increased from 512 to 1024 bytes for USB SuperSpeed mode
  • (internal) improvements to logging
  • another round of stability improvements
  • prep. work is done for (upcoming) USB 2.0 support
  • a new (for now undocumented) API is introduced for debugging purposes that allows access to various USB descriptors

2020-05-05: 56

  • a whole slew of additional FPS options
  • removed unnecessary video pipeline start when handling USB CLEAR FEATURE request, improving the stability somewhat
  • fixed an issue with FPGA firmware upgrade code

2020-04-29: 55

  • Color Grading “bulk” API (a single table's load time is reduced 10x, from 23ms to 2ms along with replacing 193 separate USB calls with a single one!) requires SCC v.2.4.2+
  • fixed 4K@30fps NV12 video streaming
  • (final?) massive code refactoring
  • start FPGA in “off” mode until a request for a video stream comes in (keep the device a bit cooler!)
  • make the initial CG tables' load onto FPGA an asynchronous task

2020-04-19: 54

  • bugfix - there was a regression in 53 that caused FPS to be lower than expected as a result of UVC's probe-control negotiation caused by incorrect USB speed values (by mistake a USB 2.0 speed was used for USB 3 calculations!)

2020-04-16: 53

  • “SysInfo” API
  • UVC White Balance temperature limit increased to 7000°K
  • improved stability (no more race condition in UVC handler code)
  • on-board fan now turns on if a module is plugged into SFP+ cage and is active (requires FPGA v.72+)
  • a lot of code refactoring

2020-03-15: 52

  • Previous camera settings' files (*.fws)are INCOMPATIBLE with this new release
  • Support for the “true” 2×2 binning done on the sensor itself (requires FPGA v. 71+)
  • Color Grading writes into FPGA are now processed asynchronously (for example an LVL full load results in 1,345 I²C bus requests!)
  • UVC “powerline frequency” support (50/60Hz)
  • UVC “white balance temperature control” support in range 2000°..6500°K
  • AWB and AE are now auto-disabled when users directly adjust specific sensor's registers (for example AWB goes off if a red gain is changed)
  • UVC handlers' cleanup (based on 1.5 spec quite a few are not necessary as their results can be, and are, inferred from others. Like RES can be inferred from MIN/MAX in many cases)
  • UVC autoexposure was working more or less accidentally - fixed now by properly using spec-defined control values
  • UVC API handling is now done synchronously (Cypress's sample implementation was introducing rare race conditions when host was issuing UVC write requests in a rapid succession)
  • Flexible FPS (SCC v. 2.4.0+) support, including via API VR 0xB0 (using an IEEE-754 float x86 LE 4-byte buffer value)
  • Separate DPC for 4K and 1080p modes (support for this is coming “soon” in SCC)
  • Various sensor configuration tables are now consolidated into a manageable set and sorted out and finally made sense of
  • LED is now used to indicate some internal error codes (more work on that is planned to be done in the next few releases)
  • An internal fatal error now reboots the device after turning LED red and a short delay
  • Massive FX3 code cleanup and refactoring, dead code removal, global singletons' elimination, bit manipulations are mostly replaced with the use of structs and unions, improved const-correctness, and more along those lines
  • code improvement for raw-video support
  • sensor standby mode is now either immediate or at frame boundary, depending on where it is needed to be set in the code
    • for video switching the sensor is now put on vblank standby
  • properly set UVC defaults
  • correct a bunch of UVC controls' “info” responses
  • removed quite a few seemingly non-functional delays sprinkled throughout the code
  • a number of sensor updates are now governed by a “write group” access pattern for atomicity (gain and exposure are a few such examples)
  • improvements in debug logging
  • main UVC handler is re-worked to be an easy-to-follow modular code instead of thousands of lines of copy-paste blocks
  • autoexposure was broken for extremely dark images (when an “average” Y value was at 0)
  • new Color Grading defaults

FPGA

upcoming:

  • Added SVS and HVL color grading modes (requires FX3 v. 58+)
  • LVL interpolation is now done in FPGA, moved from FX3 (requires FX3 v. 58+)
  • New UVC and Color Grading defaults
  • UVC Brightness + UVC Contrast + CG LVL are now combined together (optimization) and are at the front of the imaging pipeline
  • A fix for the “first column” de-bayering to get rid of the unwanted visual artifacts
  • LVL and HVL color gradings now operate on relative (adjustment) values, instead of absolute (replace) ones. This is a breaking change for saved config files

2020-04-16: 72

  • on-board fan is now controlled via bit #6 of control register (0x06)
  • the code is now built using Vivado 2019 (and uses some fewer transistors as a result)

2020-03-15: 71

  • Support for the “true” 2×2 binning done on the sensor itself (requires FX3 v. 52+)
  • Corrected “timing” issues introduced some time ago by HSL pipeline implementation
  • Saturation is no longer done as Vibrancy - that change affected UVC, HVS, LVS
  • ground work is done for “FPGA test patterns” - similar to “sensor test patterns” but generated at various key points in the FPGA imaging pipeline
  • .gitignore enhancements in an effort to bring the size of the repo significantly down
1)
the code was failing to re-init the I/O matrix to allow the re-programming
2)
in a centralized place, accessible by SUB2r-lib and, consequently, client UI, like SCC
3)
utilizes Bulk CG API to facilitate this

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information