supplierdeeply

Powershot A3400 IS - Porting thread

  • 56 Replies
  • 7743 Views
  • Publish
    Powershot A3400 IS - Porting thread
    « on: 01 / October / 2012, 17:21:47 »
    Advertisements
    I've just uploaded a link to the firmware for this camera:

    http://chdk.setepontos.com/index.php?topic=8751.new#new

    Couldn't get the firmware version to display through the key combination, so I'm also wondering what success I'll get to access the CHDK menu if that's ported. I've tried to use a DISKBOOT.BIN from another camera to see if the camera would error, but nothing is displayed, nor an error log written. Is this expected behavior?

    What would be the best reference build to start from? The P ID table suggests:

    323F -- 12863    A810    DIGIC IV    DRYOS 2.3, release #0050    2012
    3249 -- 12873    A2400IS    DIGIC IV    DRYOS 2.3, release #0050    2012
    324A -- 12874    A2300    DIGIC IV    DRYOS 2.3, release #0050    2012

    But only A810 seems available in the trunk.

    I'm interested in using CHDK to be able to use the remote shutter. Other operations aren't important to me. If anyone knows of a quick way to get this sorted, I'm all ears.

    *

    Offline nafraf

    • *****
    • 1257
  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #1 on: 01 / October / 2012, 21:48:11 »
    What would be the best reference build to start from? The P ID table suggests:
    323F -- 12863    A810    DIGIC IV    DRYOS 2.3, release #0050    2012
    3249 -- 12873    A2400IS    DIGIC IV    DRYOS 2.3, release #0050    2012
    324A -- 12874    A2300    DIGIC IV    DRYOS 2.3, release #0050    2012

    But only A810 seems available in the trunk.
    Well, you have only one option :)  maybe two, because sx240/sx260 can be useful too, but a810 seems to be better.  Check the a2300 porting thread, there is an unfinished port of it too.

    To start the port read:
    http://chdk.wikia.com/wiki/Adding_support_for_a_new_camera
    http://chdk.wikia.com/wiki/Adding_support_of_a_new_firmware_version

    Using the chdk-pt tool and the a810 code as reference, I started the a3400 port, my guess is that boot.c and movie_rec.c are right, capt_seq.c needs to be checked better.  Other files are up to you :)
    Check the stubs_entry.S, I used a modified finsig_dryos.c tool which detects the VIDEO and HELP key.

    A3400 has touchscreen, I don't know if it has been supported in other port.
    « Last Edit: 14 / July / 2013, 20:56:45 by nafraf »

  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #2 on: 01 / October / 2012, 22:27:42 »
    All of this assumes you are "up" for doing some software development / code porting ?

    *

    Offline nafraf

    • *****
    • 1257
  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #3 on: 10 / October / 2012, 09:38:18 »
    I have a pre-alpha version for a3400 1.01a, it is not a full port.  If some one can help with tests, send me a PM.


  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #4 on: 11 / October / 2012, 15:51:13 »
    I've been away for a couple of days, so only replying now.

    I'm a developer, but have never done reverse engineering. Finding the addresses proved pretty difficult and I don't really have the experience necessary to make it work quicker. If I see some examples for the same firmware, I may be able to work out a couple more, step-by-step. Someone has a pre-alpha version, so I hope that will give me the info I need.

    Anyone else had the same issue, that the firmware version box never appeared on-screen, but only written out as a log file on the sd card?

    *

    Offline nafraf

    • *****
    • 1257
  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #5 on: 11 / October / 2012, 16:05:59 »
    Hi, the platform and loader files for a3400 are here

    After read http://chdk.wikia.com/wiki/Adding_support_for_a_new_camera I think that you are able to compile the CHDK, and test if CHDK is booting. 

    You need to use the"Bootable SD Card Method. http://chdk.wikia.com/wiki/Prepare_your_SD_card   

    That is the first test :)


  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #6 on: 11 / October / 2012, 18:10:49 »
    Ok. I indeed have a working chdk compilation environment. I merged your svn stuff in there. During compilation it complained about "no special buttons being defined", which I think is done in core/gui.c . What are the lines you've edited there?

    I used "licks" to generate me a supposedly bootable SD-card. It didn't complain about anything, told me to copy photo's, so I think that should be working.

    When I copy some button settings from another camera:

        static const char* names[]={ "Print", "Face", "Disp"};
        static const int keys[]={ KEY_PRINT, KEY_FACE, KEY_DISPLAY };

    I can start the cam up with the sd card in (locked!), but there's nothing indicating chdk booted. I tried using the func.set / display buttons, but no menu's come up, not even in play mode. How do I know chdk is active?

    *

    Offline nafraf

    • *****
    • 1257
  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #7 on: 11 / October / 2012, 18:39:07 »
    Sorry, I forgot about keyboard, use this patch:

    Code: [Select]
    Index: core/gui.c
    ===================================================================
    --- core/gui.c (revision 2206)
    +++ core/gui.c (working copy)
    @@ -1882,7 +1882,7 @@
     #elif defined(CAMERA_a650)
         static const char* names[]={ "Print", "ISO"};
         static const int keys[]={ KEY_PRINT, KEY_ISO };
    -#elif defined(CAMERA_a810)
    +#elif defined(CAMERA_a810) || defined(CAMERA_a3400)
         static const char* names[]={ "Playback", "Help"};
         static const int keys[]={ KEY_PRINT, KEY_HELP };
     #elif defined(CAMERA_a3300) || defined(CAMERA_a3200)

    Playback [>] button will be the ALT button as default, HELP button is the second option.
    « Last Edit: 11 / October / 2012, 18:42:03 by nafraf »


  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #8 on: 11 / October / 2012, 19:27:51 »
    Ok, so I modified things to this, but still nothing. Card is formatted using licks, it's locked and even the camera complains about the lock position... hmmm.. If the camera says the card is locked, probably chdk didn't run?

    What I'm doing:
    1. export PLATFORM , PLATFORMSUB  so a3400/101a gets built.
    2. make firsub. I see DISKBOOT.BIN being created
    3. Copy DISKBOOT.BIN to root of sdcard
    4. Copy CHDK directory to root of sdcard
    5. unmount sdcard properly, so all buffers are cleared.
    6. take card out and lock it.
    7. Put card in camera.
    8. ..... ?

    Note: I've attempted to run the card with ver.req and vers.req and I never got the firmware version display.

    Either this means the card is never properly formatted, or something else is incorrect, or I'm not using the right buttons to trigger this. It is func/set and then DISP, correct?

  • Publish
    Re: Powershot A3400 IS - Porting thread
    « Reply #9 on: 11 / October / 2012, 19:39:19 »
    Ok, so I modified things to this, but still nothing. Card is formatted using licks, it's locked and even the camera complains about the lock position... hmmm.. If the camera says the card is locked, probably chdk didn't run?

    What I'm doing:
    1. export PLATFORM , PLATFORMSUB  so a3400/101a gets built.
    2. make firsub. I see DISKBOOT.BIN being created
    3. Copy DISKBOOT.BIN to root of sdcard
    4. Copy CHDK directory to root of sdcard
    5. unmount sdcard properly, so all buffers are cleared.
    6. take card out and lock it.
    7. Put card in camera.
    8. ..... ?

    Note: I've attempted to run the card with ver.req and vers.req and I never got the firmware version display.

    Either this means the card is never properly formatted, or something else is incorrect, or I'm not using the right buttons to trigger this. It is func/set and then DISP, correct?

    When the camera complains about the card being locked,  it means that the card's boot block is not formatted correctly or there is no file called diskboot.bin in the root of the SD card.

    Sound like you have maybe not set the "BOOTDISK" string correctly in the SD card boot block so that the camera knows the card is supposed to be bootable.   Also,  the card has to be formatted FAT32 - if you have a large card and it was formatted in your camera it might be exFAT formatted - which will not boot.

    I assume you are using Licks on your linux box ?  Not sure what's missing.  How big is your card ?

    I assume you've read throught the instructions here : http://chdk.wikia.com/wiki/Prepare_your_SD_card
    .
    « Last Edit: 11 / October / 2012, 19:57:09 by waterwingz »

     

    Related Topics