CHDK Wiki
Advertisement

Canon Powershot SX1[]

Notice

CHDK is available for the SX1 with firmware versions 2.00H and 2.01A as BETA version from the Download page
read also SX1 CHDK specialities

Attention

The SX1 CHDK DOES NOT support the manual loading method through the "firmware update" mechanism !

20090217 loRes sx1is 3q

Powershot SX1 Front

20090217 loRes sx1is back

Powershot SX1 Back

Reviews & Specifications[]

Technical data[]

  • Digic IV image processor
  • DryOS operating system
  • Sensor: 10 million effective pixels, 1/2.3” new Canon CMOS
  • Lens: 28-560mm, 20x optical zoom, F2.8 - F5.7, IS (shift type)
  • LCD: 2.8 inch TFT, 230,000 pixels, vari-angle, electronic viewfinder
  • Movie clips: 1920 x 1080p (HD) @30fps, stereo sound
  • HDMI output
  • Approx. 4.0 fps continuous shooting
  • Power: 4x AA batteries, optional power supply CA-PS700
  • Dimensions: 127,5 x 88,3 x 87,7 mm; Weight: 585g (without batteries)
  • RAW support with firmware 2.0.0.0 released 18/3-09. Canon Firmwares
  • Released with the firmware 2.0.1.0 in Europe (As of 2009/12) dpreview.com

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 PowerShot SX1 IS
P-ID:3195  PAL D

Firmware Ver GM2.00H
NoError
Feb 4 2009    10:41:18

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

Adj Ver.021.000

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

SubCPU Ver. 1.01
IS Firm Ver.  3.03
IS Param Ver.  3.00
VcmCPU Ver 0.42

If you use vers.req instead of ver.req at the last screen you can see more info:

SubCPU Ver. 1.01
Total Shoot: 1020    <=- variating
Zoom Retry Count: 0
Mecha Condition: 0x00000000

If you power on in PLAY mode without ver.req on the SD card and press the FUNCSET and DISP buttons simultaneously, the screen shows:

Firmware Ver. 2.0.0.0


    [ OK ]

CHDK specialities[]

Attention

The SX1 CHDK DOES NOT support the manual loading method through the "firmware update" mechanism !

  • With CHDK the camera always starts in playback mode; press (or half press) the Shutter once or just hold POWER for ~2 seconds for record mode
  • As on other newer cameras with 12 bit sensors, the 'Custom curves' feature does not work on the SX1
  • Due to the special display width (the standard grids are just made for a 320 pixel display), this camera needs modified Grids
  • When using MD scripts: mask out the outer area to prevent continuous shooting


DNG4PS-2 Settings[]

(by philmoz, [1])

  • Run DNG4PS-2, click in the settings button, go to the camera options tab
  • Select the G7 profile and click the copy button
  • Change the settings as:
Camera Name = Canon PowerShot SX1 IS
Short Name = PowerShot SX1 IS
Sensor Size = 4152 x 2772
Jpeg size = 3648 x 2736
Active zone x1,y1 = 200, 16
Active zone x2,y2 = 4152, 2772
Black-white levels = 127, 4095
Mosaic type = Red,Green,Green,Blue
Bits per unit = 12

Color Matrix #1
Illuminant = Daylight
Matrix = 827547.000000 -290458.000000 -126086.000000 -12829.000000 530507.000000 50537.000000 5181.000000 48183.000000 245014.000000
Multiplicator = 1.0 1.0 1.0

Color Matrix #2 - leave blank
  • Click Ok, and you should be able to browse to the directory with the raw and jpeg files and run the convert
  • If have both the raw and jpeg together you will get additional EXIF data copied to the DNG file from the JPEG.

For developers[]

General info[]

  • Parts of the SX1 code are similar to the SX10, so the SX10 (and partly S5 base) should be the base for a port.
  • Loading dump in IDA:

ROM start: 0xFF810000 ROM Size: 0x003FFFFF Loading adress: 0xFF810000 Loading size: 0x003FFFFF

  • GrAnd's DryOS signatures ('CanonFW_DryOS_A-Series, "DryOS Canon Firmware; A720-based") also works on the SX10
  • The IDC files are also working
  • Since the original CHDK.idc script does not run all sub scripts correctly, i use modified versions of the IDC scripts: ida-chdk-idc-dryos-singlerun.7z. The main script CHDK.idc runs all other scripts automatically, manual definition of the ROM_START address is not required anymore (MinEA() used instead).

loader\sx1\sub\200h[]

entry.S[]

(according to ROM:FF85EC9C same as SX10 )

...
// Turn OFF SD Card power
// to support autostart
	LDR     R3, =0xC0220018
	MOV     R2, #0x44
	STR     R2, [R3]
...
  • The resetcode for SX1 is here:
ROM:FF8298F0 sub_FF8298F0

platform\sx1\sub\200h[]

stubs_entry_2.c[]

#include "stubs_asm.h"

NHSTUB(AllocateUncacheableMemory, 0xFF82806C)
NHSTUB(GetDrive_ClusterSize, 0xFF85E284)
NHSTUB(GetDrive_TotalClusters, 0xFF85E2B8)
NHSTUB(GetDrive_FreeClusters, 0xFF85E2EC)
NHSTUB(SetPropertyCase, 0xFF87DAC4)
NHSTUB(kbd_read_keys, 0xFF821AF4)
NHSTUB(platformsub_kbd_fetch_data, 0xFF84D880)  
NHSTUB(kbd_read_keys_r2, 0xFF84D130)
NHSTUB(qsort, 0xFFAE3D50)   
NHSTUB(strchr, 0xFF8A0820)
NHSTUB(strrchr, 0xFF9FCED8)  
NHSTUB(TurnOffBackLight, 0xFF893FC8)
NHSTUB(vsprintf, 0xFF81CAE8)
NHSTUB(VbattGet, 0xFF82046C)	
NHSTUB(GetZoomLensCurrentPoint, 0xFF9548A8)
NHSTUB(GetZoomLensCurrentPosition, 0xFFA820F8)
NHSTUB(RefreshPhysicalScreen, 0xFF9FA6FC)
NHSTUB(EnterToCompensationEVF, 0xFF825B44)
NHSTUB(ExitFromCompensationEVF, 0xFF825BAC)
NHSTUB(PT_PlaySound, 0xFF869110)
NHSTUB(DoAFLock, 0xFF825898)
NHSTUB(UnlockAF, 0xFF8258D0)
NHSTUB(LEDDrive, 0xFF84CC34)
NHSTUB(WriteSDCard, 0xFF93DD0C)
NHSTUB(PostLogicalEventForNotPowerType, 0xFF88328C)

// null sub

NHSTUB(kbd_pwr_off, 0xFFC00958)
NHSTUB(kbd_pwr_on, 0xFFC00958)
NHSTUB(Mount_FileSystem, 0xFFC00958)
NHSTUB(Unmount_FileSystem, 0xFFC00958)
NHSTUB(SetZoomActuatorSpeedPercent, 0xFFC00958)
NHSTUB(rewinddir, 0xFFC00958)

stubs_min.c[]


#include "stubs_asm.h"

// Found in sub_FF821764
DEF(physw_run, 0x1C24 + 0x0C)

// Found @ ROM:FF821824
DEF(physw_status, 0x12DA4)

// Found in sub_FFA3014
DEF(FlashParamsTable,0xFFBBB2A4) 

// Found in sub_FF84C9D0
DEF(led_table, 0x2644 + 0x04)

// Found in sub_FF954098
DEF(zoom_busy, 0x9ACC + 0x1C)

// Found in sub_FF94CD34
DEF(focus_busy, 0x996C + 0x08)

// Found in sub_FF98FEE4 
DEF(recreview_hold, 0xB31C + 0xE4)

// Found in sub_FF9A661C
DEF(canon_shoot_menu_active, 0xB818 + 1)

// Found in sub_FF87E5E0
DEF(canon_menu_active, 0x5A58 + 4)

// Found in sub_FF866ECC
DEF(movie_status, 0x5570 + 0x38)

// Found in sub_FF8716D4
DEF(playrec_mode, 0x57C0+0x4)

// Found in sub_FF9FA6A8
DEF(enabled_refresh_physical_screen, 0xCABC+0x34)

// Found @ several entries in "Zoom/Lens Section" ROM:FFAA4CEC
DEF(zoom_status, 0xF2A0)


platform/sub[]

makefile.inc[]

#PLATFORMID=0x3195
PLATFORMID=12693

PLATFORMOS=dryos

MEMBASEADDR=0x1900
RESTARTSTART=0x50000
MEMISOSTART=0xC2D08
ROMBASEADDR=0xFF810000

PLFLAGS=-DMEMBASEADDR=$(MEMBASEADDR) -DMEMISOSTART=$(MEMISOSTART) -DMEMISOSIZE=$(MEMISOSIZE)
PLFLAGS+=-DRESTARTSTART=$(RESTARTSTART)

NEED_ENCODED_DISKBOOT=very_yes
KEYSYS=d4
ifdef OPT_FI2
include  $(topdir)platform/fi2.inc
endif

LED addresses[]

0xC0220060  Shortcut/Print button  (blue) (?? --> not yet found in fw, assumably same as SX10)
0xC02200B4  AF lamp                (green) --> entry found
0xC02200B8  Power lamp/button      (orange) (?? --> not yet found in fw, assumably same as SX10)

AF lamp adress found on @sub_FF905E5C (FW 2.00h)...assumably same values for the Shortcut/Pwr lamp

Firmware dumps[]

  • Firmware 1.00E by D-an-W
  • Firmware 1.00F by AlexHB
  • Firmware 2.00H by fboesch
  • Firmware 2.01A by quadraserver, Direct link
Saveas64

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

Porting[]

Porting Thread (for developers!) of SX1 IS with FW 2.00h is here: http://chdk.setepontos.com/index.php/topic,3410.0.html (Initial thread and for further development of Beta-Code)

To try/use the current Beta, please use the latest Build from the "Downloads" section.

Official Canon Firmware Update[]

Canon has released an official firmware update on March 18, 2009 for the SX1 camera (Canon Version 2.0.0.0) which adds RAW capture support.

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

(later two links are correct, but only work after official "login" with SerialNo of an SX1, such as 7010000000)

Advertisement