CHDK Wiki
(Added known issues section)
(Updated details and ND-filter issue)
Line 54: Line 54:
   
 
* Powering on via on/off button results in playback mode (instead of the shooting mode that you get without CHDK).
 
* Powering on via on/off button results in playback mode (instead of the shooting mode that you get without CHDK).
* ND-filter state: usage causes crash. Crash is solved, but actual functionality still has to be located in firmware. (Current work.)
+
* ND-filter state: usage causes crash. Fixed.
   
   
Line 63: Line 63:
   
 
The port for the IXUS 870 IS is based on the one for [[SX10]] (1.01a).
 
The port for the IXUS 870 IS is based on the one for [[SX10]] (1.01a).
  +
  +
Offset of firmware dump is 0xFF810000. The "DryOS singlerun" scripts for IDA can be used but they leave a few function tables untouched and related strings are often not recognised correctly. This is correctable by selecting the relevant lines, right-clicking and selecting "Analyze selected area".
   
 
Below are some lists of what still needs to be done.
 
Below are some lists of what still needs to be done.
Line 76: Line 78:
 
** Check JogDial_CW and JogDial_CCW
 
** Check JogDial_CW and JogDial_CCW
 
* platform/ixus870_sd880/main.c
 
* platform/ixus870_sd880/main.c
  +
** Fix mode_get; playrec_mode does not change when recording (and neither does physw_status)
** Check modemap
 
** Check mode_set
 
 
** Check fl_tbl
 
** Check fl_tbl
 
** Check CF_EFL
 
** Check CF_EFL
 
** Check zoom_points
 
** Check zoom_points
** Find correct values for get_vbatt_min and get_vbatt_max
+
** Find correct values for get_vbatt_min and get_vbatt_max (observed so far: min 3205, max 3875)
 
* platform/ixus870_sd880/shooting.c
 
* platform/ixus870_sd880/shooting.c
 
** Check PARAM_FILE_COUNTER
 
** Check PARAM_FILE_COUNTER
Line 89: Line 90:
 
** Check iso_table
 
** Check iso_table
 
** Check circle_of_confusion
 
** Check circle_of_confusion
* platform/ixus870_sd880/wrappers.c
 
** Check to see if we have a better solution for lens_get_focus_pos_from_lense
 
 
* platform/ixus870_sd880/sub/1.01a/lib.c
 
* platform/ixus870_sd880/sub/1.01a/lib.c
 
** Check values used in:
 
** Check values used in:
Line 105: Line 104:
 
** Check recreview_hold
 
** Check recreview_hold
 
* platform/ixus870_sd880/sub/1.01a/stubs_entry_2.S
 
* platform/ixus870_sd880/sub/1.01a/stubs_entry_2.S
** Check that entries with null sub behind them really should be this way and whether actual address is good for null subs
+
** Check that entries with null sub behind them really should be this way
** Check GetZoomLensCurrentPoint
 
** Check MoveLensWithPoint
 
 
** Check kbd_pwd_off
 
** Check kbd_pwd_off
   

Revision as of 02:31, 22 April 2009

The Canon Digital IXUS 870 IS is known as PowerShot SD880 in America and as IXY DIGITAL 920 IS in Japan.

Attention

The IXUS 870 IS port is pre-BETA; download available in forum thread

Sd880is all

Powershot SD880 Color Options

20080917 loRes sd880is silver front

Powershot SD880 IS Front

20080917 loRes sd880is silver back

Powershot SD880 IS Back

Reviews: DPReview review, Steve's DigiCams, DCRP, Photographyblog Review

Technical data

  • DryOS operating system
  • Digic IV image processor.
  • 10.0 effective Megapixel CCD
  • 4X optical zoom lens, equivalent to 28-112 mm, F2.8-5.8
  • Optical image stabilization
  • 3-inch LCD display, 230,000 pixels, no optical viewfinder
  • NB-5L lithium-ion battery, 310 shots per charge (CIPA standard)

Firmware info

As in other Canon PS case, the ver.req file works as well in this model. Press FUNCSET and DISP simultaneously: It shows the following:

Canon DIGITAL IXUS 870 IS
P-ID:3196  PAL D
Firmware Ver GM1.01A
NoError
Oct 15 2008   18:36:07

subsequent press of DISP (while still holding FUNCSET) reveals:

Adj. Ver.008.001


and another press of DISP (while still holding FUNCSET) brings up this:

Adj. Ver.008.001
IS Firm Ver.   2.09
IS Param Ver.  2.07

Older Version information

Canon DIGITAL IXUS 870 IS
P-ID:3196     PAL D

Firmware Ver GM1.00E
NoError
Aug 22 2008 10:57:30


Known Issues

The lastest version of this port has the following known issues. Note that some items may indicate that a problem is solved; this means that the fix will be in the next version.

  • Powering on via on/off button results in playback mode (instead of the shooting mode that you get without CHDK).
  • ND-filter state: usage causes crash. Fixed.


For developers

Porting

Porting thread: http://chdk.setepontos.com/index.php/topic,3309.0.html

The port for the IXUS 870 IS is based on the one for SX10 (1.01a).

Offset of firmware dump is 0xFF810000. The "DryOS singlerun" scripts for IDA can be used but they leave a few function tables untouched and related strings are often not recognised correctly. This is correctable by selecting the relevant lines, right-clicking and selecting "Analyze selected area".

Below are some lists of what still needs to be done.

Important:

  • core/kbd.c:
    • Check that used nTxtbl is right
  • include/camera.h:
    • Check all defines that have a XXX behind them
  • platform/ixus870_sd880/lib.c
    • Check ubasic_set_led
    • Check JogDial_CW and JogDial_CCW
  • platform/ixus870_sd880/main.c
    • Fix mode_get; playrec_mode does not change when recording (and neither does physw_status)
    • Check fl_tbl
    • Check CF_EFL
    • Check zoom_points
    • Find correct values for get_vbatt_min and get_vbatt_max (observed so far: min 3205, max 3875)
  • platform/ixus870_sd880/shooting.c
    • Check PARAM_FILE_COUNTER
    • Check PARAM_EXPOSURE_COUNTER
    • Check aperture_sizes_table
    • Check shutter_speeds_tables
    • Check iso_table
    • Check circle_of_confusion
  • platform/ixus870_sd880/sub/1.01a/lib.c
    • Check values used in:
      • vid_get_bitmap_screen_width
      • vid_get_bitmap_screen_height
      • vid_get_viewport_height
      • vid_get_bitmap_buffer_width
      • vid_get_bitmap_buffer_height
    • Check to see if we have a better implementation for vid_get_viewport_width than the generic one
  • platform/ixus870_sd880/sub/1.01a/movie_rec.c
    • Check change_video_tables
    • Check set_quality
  • platform/ixus870_sd880/sub/1.01a/stubs_min.S
    • Check recreview_hold
  • platform/ixus870_sd880/sub/1.01a/stubs_entry_2.S
    • Check that entries with null sub behind them really should be this way
    • Check kbd_pwd_off


Other:

  • loader/ixus870_sd880/entry.S
    • Find out what SD-Card power trick is for and if it is really needed (seems to work without)
  • platform/ixus870_sd880/kbd.c
    • Check that DELAY_TIMEOUT is ok
  • Check all entries in stubs_entry.S that are not preceded by "Best match". They should be ok, but you never know.


Special addresses

#define LED_DP   0xC02200D4    // direct-print (blue)
#define LED_IO_G 0xC0220136    // IO indicator LED (green state)
#define LED_IO_R 0xC0220133    // IO indicator LED (red state)
#define LED_AF   0xC0223030    // Auto-focus LED (very bright...)
#define POWER    0xC022001C    // use to turn off power

N.B.: Turning both LED_IO_G and LED_IO_R on gives orange.


Firmware Dump

Saveas64

Download location for firmware dumps:
P&S firmware dumps mirror

Official Canon Firmware Update

Canon has released a official firmware update on February 5, 2009 for the SD880 camera (Canon Version 1.0.1.0).

The firmware update and support information can be found in the links below: