s10sh is a command line software utility to download pictures from Canon digital cameras
via a USB or serial cable. It also allows for other direct control of the camera and to explore
the embedded processor.


The s10sh utility has not been under active, controlled development for some time
now (see History below) so this is an attempt to archive the software in its current
state.  It will also allow ongoing development in a controlled manner.
In December 2004 I made some updates to the utility for my own use and distributed
them through the YahooGroups canondigicamhacking and the www.syeager.org 300d
development communities.  There, some interest had developed to continue supporting
s10sh.  I also attempted to contact both the previous developers (see History below)
but did not receive any responses.


This program was originally written by Salvatore Sanfilippo at:
(The page was last updated Sat, Jan 6, 2001, at version 0.2.0.)
Then the Debian maintainer, John Reynolds, made some changes at
(The page was last updated Sat, Sep 13, 2003 at version 0.2.2.)
Then Doug Mitton added some new features and cameras and uploaded the package to:
(This was last updated Mon, Mar 28, 2005 at version 0.2.2B.)
On Fri, Nov 18, 2005 Doug Mitton created the SourceForge.Net site and uploaded
all the archive source files as well as the most recent update version 0.2.2C.
There is also an MS Windows version (with source code) located at: http://wins10sh.narod.ru/
(The author can be contacted as rayer314 at http://groups.yahoo.com/group/canondigicamhacking/)
On Thu, Aug 24, 2006 Lex Augusteijn (one of the 300D UnDutchable authors) sent me an updated
version which allows camera parameters (such as ISO, shutter speed, etc) to be changed via the
USB port. This is in addition to the existing option totake a picture via the USB port.
These changes were made to assist in this project; Hardware Photos and BLOG.
Thanks Lex; the source package is available via the download link as package s10sh-0.2.3.

Example Output:

<P2>dmitton:~$ s10sh
S10sh — version 0.2.2C Mitton
Copyright (C) 2000-2001 by Salvatore Sanfilippo <antirez@invece.org>
S10sh is FREE SOFTWARE under the terms of the GNU public license
—-  CRW_1515.THM           9k  Sat Nov  5 15:46:40 2005
—-  CRW_1516.CRW        6645k  Sat Nov  5 15:46:46 2005
—-  CRW_1529.CRW        7530k  Wed Nov 16 17:30:24 2005
—-  CRW_1529.THM          10k  Wed Nov 16 17:30:24 2005
–n-  CRW_1530.CRW        6813k  Sat Nov 19 22:05:12 2005
–n-  CRW_1530.THM           8k  Sat Nov 19 22:05:12 2005
–n-  CRW_1531.CRW        7359k  Sat Nov 19 22:05:32 2005
–n-  CRW_1531.THM          10k  Sat Nov 19 22:05:32 2005
–n-  CRW_1532.CRW        8047k  Mon Nov 21 18:27:40 2005
–n-  CRW_1532.THM          11k  Mon Nov 21 18:27:40 2005
        64 files      224343666 bytes
Camera date (xST): Mon Nov 21 18:31:01 2005

Command Line Help:

s10sh — Canon Digital Camera Software
Version 0.2.2C Mitton
usage: s10sh -[DaugnlELhctZS] [-d <serialdevice> -i <value> -s <speed>]
  -D                    enable debug mode
  -d <serialdevice>     set the serial device, default /dev/ttyS0
  -a                    enable A50/Pro70 compatibility mode
  -s <serialspeed>      set the serial speed (9600 19200 38400 57600 115200)
  -u                    USB mode, now default; use -S for SERIAL
  -S                    SERIAL mode, default is now USB mode
  -g                    non-interactive mode, get all images
  -n                    non-interactive mode, get all new images
  -l                    non-interactive mode, list all images
  -E                    non-interactive mode, delete all images
  -L                    write files using all lower-case characters
  -i <value>            set the user-init value
  -t                    set the camera to the current computer time
  -c                    capture an image with the current camera settings
  -Z                    DANGER, this option bypasses SAFE camera detection routines
  -h                    show this help screen

Utility Help:

s10sh help
help                     show this help screen
open                     open the camera
reopen                   close and open the camera
close                    close the connection with the camera
speed         [speed]    change the serial speed
quit                     close the camera and quit the program
ping                     ping four times the camera
clear                    clear the screen under some terminal types
id                       show the camera id
date                     show the internal date of the camera
setdate                  set the camera date to that of the computer
disk                     show the CF disk letter
diskinfo      <disk>     show disk information
ls | cd | dir <dir>      change to and list the specified directory
lastls                   show the last cached directory listing
get           <pathname> get the specified image
getall                   get all the files in the current directory
getallold                get all the old files in the current directory
getallnew                get all the new files in the current directory
tget          <pathname> get the specified image as thumbnail
view          <pathname> view the thumbnail using xv
viewall                  view all thumbnails in the current directory
power                    show informations about power status
overwrite                switch on/off the overwrite mode, when overwrite
                         mode is ON the old files will be overwritten with
                         the new files. Default ovewrite mode is OFF
mkdir         <dirname>  create a directory
rmdir         <dirname>  remove a directory
debug         (DEBUG)    turn the debug on/off
getpkt        (DEBUG)    wait for a packet from the camera
test <num>    (DEBUG)    send the specified request and wait for data
rm | delete   <filename> remove a file in the current path
deleteall                remove all files in the current directory
deleteold                remove downloaded files in the current directory
deletenew                remove new files in the current directory
protect       <filename> set the protected flag (in the current path)
unprotect     <filename> clear the protected flag (in the current path)
new           <filename> clear the downloaded flag (in the current path)
newall                   exec new against all files in the current directory
old           <filename> set the downloaded flag (in the current path)
oldall                   exec old against all files in the current directory
protectall               protect all files in the current directory
unprotectall             unprotect all files in the current directory
upload        <source> [dest]  upload a file (USB only)
setowner      string     change the owner string – WARNING NULL will clear!
capture                  take a picture using the current camera settings



Leave a Reply