IXUS 30 / SD200 (1.00k) port

  • 8 Replies
  • 2569 Views
*

Offline srsa_4c

  • ******
  • 3104
  • Publish
    IXUS 30 / SD200 (1.00k) port
    « on: 13 / October / 2011, 21:25:54 »
    Advertisements
    Hi!

    Here's an alpha release for this ancient camera.
    I've made some discoveries which might interest Ixus 40 / SD300 CHDK users.
    Details in the following text.
    Binary release is attached below.

    Quote
    This port is based on fishpepper's ixus 40 port.

    Alpha release 1, 2011-10-14

    - most parts of the firmware are identical in ixus 30 and 40
    - fun fact: camera recognizes (chdk) raw+jpeg pair (but can't handle it, shows small thumbnail with "raw" written below)

    VIDEO
    - video quality override is partly supported, in 15 steps total (not fully tested)
      at minimum quality the frames are not as compressed as in other cameras (A410... etc)
    - 1G video size limit removed (not tested yet)
    - there's no zoom during video
    - no afscan in video either, but manual focus works during recording
    - no manual exposure control during video

    PHOTO
    - raw, dng works (dng color profile is simply a copy, not correct)
    - control of dark frame subtraction is available
    - creation of badpixel.bin doesn't work (the process either fails or creates 0 length file)
    - continuous shooting not tested
    - overrides are only applied on the actual shooting (no effect on half-shoot, this might cause trouble...)
    - iso override seems to work, values under a lower limit (around 50-100 (?)) cause the camera to crash
      "market" ISO seems to be higher than the "true" value
    - ND-filter control works
    - histogram works
    - zebra display is not correct for playback, but works correctly in shooting mode (may be my fault)
    - flash override not tested
    - shutter speed override works (no extra long exposures yet)
    - bracketing not tested
    - custom auto ISO not tested
    - subject distance override seems to work

    GENERAL
    - some buffer addresses are not entirely correct (no fast md possible)
    - the memory dump debug feature only works with uncached addresses (!), chdk code uses cached addresses...
    - the usual romlog stuff doesn't work (some functions are missing AND it appears to me that logging is disabled by default)
    - the camera's firmware is almost 8MB, last MB seems to contain a second OS (lots of duplicated functions) for debugging
      purposes, I guess
    - the firmware only knows ver.req, firmware version lacks the GM prefix
    - serious issue with the time() function of the firmware: it counts at about 1/7 speed in chdk.
      I created a workaround for that. (Ixus 40 chdk users, anyone experiencing problems with the clock?)
    - haven't touched the custom keyboard code of the ixus 40 (aside from porting it)
    - can't test the existence of usb remote functionality because of hardware issues on my part ;)
    - some enhancements over the original ixus 40 port:
     - (flash) params mystery solved (flash parameters use a slightly different structure)
     - the first parameter for GetParameterData(), SetParameterData() is _exactly_ the parameter number, no need for adding 0x4000
     - the location for the raw hook in capt_seq.c had to be changed, without the change one would get either corrupt jpeg or
       corrupt dng when image size is less than "L" (the condition only affected dng, not raw)
     - dark frame subtraction control
     - video support
      - no zoom during video (missing firmware function)
      - no af-scan in video (missing firmware function)
     - 1G video size limit removed (not tested, my battery would not last that long)
     - simple (and coarse, 15 steps only) quality override support for video (constant quality only)


    Definitions for RAW:

        #define CAM_RAW_ROWPIX              2144
        #define CAM_RAW_ROWS                1564

        // pattern
        #define cam_CFAPattern 0x02010100 // Red  Green  Green  Blue

        // color
        #define CAM_COLORMATRIX1                                 \
          652674,  1000000, -172074, 1000000, -107575,  1000000, \
          -139063, 1000000, 594517,  1000000,  60252,   1000000, \
          -9088,   1000000, 82013,   1000000,  238080,  1000000

        #define cam_CalibrationIlluminant1 1 // Daylight

        // cropping
        #define CAM_JPEG_WIDTH  2048
        #define CAM_JPEG_HEIGHT 1536
        #define CAM_ACTIVE_AREA_X1 12
        #define CAM_ACTIVE_AREA_Y1 12
        #define CAM_ACTIVE_AREA_X2 2100
        #define CAM_ACTIVE_AREA_Y2 1562

    Also attached is the source diff against trunk rev. 1362.
    « Last Edit: 13 / November / 2011, 05:48:15 by srsa_4c »

  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #1 on: 19 / November / 2011, 18:28:15 »
    Thank you very very much for getting back on this old IxusModel. It really works great and I was looking forward for it for all the years...! You made my day :-)

    *

    Offline srsa_4c

    • ******
    • 3104
  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #2 on: 19 / November / 2011, 18:58:38 »
    Wow, I'm really glad to hear that  :)  Feedback is really rare concerning these old models.
    If you find something not working as expected, feel free to leave a message here.

  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #3 on: 28 / November / 2011, 16:40:23 »
    Wow, I never thought this day would come!  I have two SD200 cameras, one still new in box.  Love this camera to death, since it was my very first digital.  Can't wait to try out this firmware.  I joined this forum today just to say thank you.  :)


    *

    Offline srsa_4c

    • ******
    • 3104
  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #4 on: 30 / November / 2011, 15:23:54 »
    Wow, I never thought this day would come!  I have two SD200 cameras, one still new in box.  Love this camera to death, since it was my very first digital.  Can't wait to try out this firmware.  I joined this forum today just to say thank you.  :)
    Since the "big brother" of this camera, the Ixus40/SD300 has (at least) two firmware revisions, there is a possibility that not all Ixus30's have the 1.00K firmware. If CHDK doesn't start on your camera(s) or misbehaves, try to find out, which firmware your camera has. I'd also like to ask you to report if it works or if it doesn't.

  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #5 on: 30 / November / 2011, 15:29:33 »
    Wow, I never thought this day would come!  I have two SD200 cameras, one still new in box.  Love this camera to death, since it was my very first digital.  Can't wait to try out this firmware.  I joined this forum today just to say thank you.  :)
    Since the "big brother" of this camera, the Ixus40/SD300 has (at least) two firmware revisions, there is a possibility that not all Ixus30's have the 1.00K firmware. If CHDK doesn't start on your camera(s) or misbehaves, try to find out, which firmware your camera has. I'd also like to ask you to report if it works or if it doesn't.

    I checked mine before CHDK, it was on 1.00K.

  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #6 on: 08 / January / 2012, 09:21:43 »
    Nice work, thanks for this.  It breathes new life into one of my favorite cameras.  I had lost hope that it would ever be implemented for the sd200.

    *

    Offline srsa_4c

    • ******
    • 3104
  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #7 on: 27 / January / 2013, 19:44:20 »
    The port is now in autobuild.

    I've attached the firmware dump, as it's not in the "collection" yet.

    The following Canon Basic script can be used to dump the ROM to a file. However, the attached dump was made with udumper (in 2011).
    Code: [Select]
    ' dump PRIMARY to A/PRIMARY.BIN

    DIM startaddr=0xFF810000

    private sub Initialize
    SystemEventInit
    Wait(100)
    ExecuteEventProcedure("SystemEventInit")
    Wait(100)
    ExecuteEventProcedure("UI_RegistDebugEventProc")
    Wait(100)
    romsize = 0xFFFFFFFC - startaddr
    dumpfile = creat("A/PRIMARY.BIN",2)
    write(dumpfile,startaddr,romsize)
    close(dumpfile)
    end sub

    edit: attachment removed, the dump is now in the official repo
    « Last Edit: 29 / January / 2013, 10:58:51 by srsa_4c »


    *

    Offline fe50

    • ******
    • 3033
    • IXUS50 & 860, SX10 Star WARs-Star RAWs
      • fe50
  • Publish
    Re: IXUS 30 / SD200 (1.00k) port
    « Reply #8 on: 28 / January / 2013, 02:29:16 »
    I've attached the firmware dump, as it's not in the "collection" yet.
    Thanks.

    Added the
    • IXUS 30 / SD200 1.00K
    full 8MB dump (dumped with cBasic udumper) by srsa_4c from this forum post to the CHDK P&S FW dumps repository.

     

    Related Topics