This is a port of CHDK PTP implementation. It should be compatible with ptpcam (and maybe other PTP tools from CHDK).
See Canon PTP
Requires
CONFIG_PTP = y CONFIG_PTP_CHDK = y
in Makefile.user
ptpcam --chdk[]
Download source: https://github.com/mweerden/CHDK/zipball/ptp
Warning: the patches from http://www.mweerden.net/chdk_ptp.html are obsolete (do not download them, the command codes were changed a bit).
There's also a version in contrib/ptpcam in the repository, but it says
error: camera has unsupported camera version 0.1; some functionality may be missing or cause unintented consequences
Help[]
<conn> help q quit quit program h help list commands r reset reconnect to camera version get CHDK PTP version (ptpcam and camera) shutdown-hard shutdown camera (hard) shutdown-soft shutdown camera (soft) reboot reboot camera reboot <filename> reboot camera using specified firmware update reboot-fi2 reboot camera using default firmware update m memory <address> get byte at address m memory <address>-<address> get bytes at given range m memory <address> <num> get num bytes at given address set <address> <long> set long value at address c call <address> <arg1> ... call function at address with given arguments u upload <local> <remote> upload local file to camera d download <remote> <local> download file from camera mode <val> set mode (0=playback,1=record) lua {code} execute lua code luar {code} execute "return {code}" and retreive result
Some examples[]
./ptpcam --chdk <conn> m 0x350080-0x350180 00350080 c8 24 00 00 92 32 b6 5d 5b 4d 41 47 49 43 5d 20 |.$...2.][MAGIC] | 00350090 64 65 62 75 67 5f 6c 6f 6f 70 5f 74 61 73 6b 3a |debug_loop_task:| 003500a0 31 31 38 30 3a 20 4d 6f 76 52 65 63 53 74 61 74 |1180: MovRecStat| 003500b0 65 3a 20 30 00 00 00 00 00 00 00 00 00 00 00 00 |e: 0............| ... <conn> download B:/MAGIC.CFG magic.cfg <conn> upload magic.cfg B:/MAGIC.CFG
Installing ML without swapping the card[]
make ptpinstall
Under the hood, it's done like this:
Makefile:
ptpinstall: autoexec.bin gvfs-mount -s gphoto2 sleep 2 cat ptpcam.txt | ptpcam --chdk diff autoexec.bin autoexec.test
ptpcam.txt:
upload autoexec.bin B:/AUTOEXEC.BIN download B:/AUTOEXEC.BIN autoexec.test
To install everything:
cd $CF_CARD && find -type f -exec echo upload {} B:/{} \; | sed -e 's/\.\///g' | ptpcam --chdk
Discussion[]
See [1].