So, there will be a flurry of activity at first for this firmware hacking project of mine. Here are a couple of the first steps I took and a quick brain dump of my first thoughts on this.
Sigma has released 8 versions of the SD14 firmware so far Ver 1.01 -> ver1.07. Ver 1.07 actually has two versions with it, 1.07_0 and 1.07_1. Once upon a time you could download all of them from Sigma’s website, though it looks like the early ones are not available any more. Good thing I kept a copy laying around.
The first and easiest thing to do is to open them with a hex editor and see whats inside. Perhaps we’ll get lucky and something will be readable. I used Okteta or KHexEdit, depending on which machine I’m on (I use linux, Fedora usually)
Sure enough, the folks at Sigma were kind enough to leave much of the file readable. There is a wealth of debug information in the files, for example, s14v101.bin opens with the following text:
Hm, looks like this is Sigma Co’s SD14 firmware version 1.01 made on 04-11-2007 Easy enough. Surprising, a lot of information can be gathered just by looking at the firmware like this. as I noted here, the firmware contains a lot of debug information, in particular I found this to be interesting:
Specify which steps to skip in the Image Processing pipeline.
Skip AutoAdjust = 0x00000001
Skip LinLUT = 0x00000002
Skip ColumnFilter = 0x00000004
Skip ColumnFilterSegCapacitance = 0x00000008
Skip SpatialGain = 0x00000010
Skip ISOGain = 0x00000020
Skip DriftCorrection = 0x00000040
Skip FlareCorrection = 0x00000080
Skip SatDetect = 0x00000100
Skip BadPix = 0x00000200
Skip RedSharp = 0x00000400
Skip NeutHilitePixel = 0x00000800
Skip NeutHiliteNeighbors = 0x00001000
Skip NeutHiliteSmoothNeighbors = 0x00002000
Skip Despeckle = 0x00004000
Skip SpatialDQ = 0x00008000
Skip ChromaBlur = 0x00010000
Skip ColorDQ = 0x00020000
Skip CorrectionMatrix = 0x00040000
Skip ToneGamma = 0x00080000
Skip Sharpen = 0x00100000
These appear to be the descrete steps in the image processing pipeline. You can find this at offset 0×0AA846 in s14101.bin. Boy, I wonder what algorithms are going on behind the scenes there
So, as I said, much can be learned just by opening up the firmware in a hex editor and poking around.Thats what I’ll start off with. Open the firmware and see if there is anything I can pick out.