PHOTOPC(1)
πΈ PHOTOPC β¨
okay bestie, buckle UP, because this is photopc, manual section 1 (that's the "(1)" bestie, it's giving User Commands energy) π
β¨ NAME β¨
photopc β utility to control digital cameras based on Sierra Imaging firmware π
β¨ SYNOPSIS β¨
photopc [-h] [-V] [-v[v]] [-q] [-z] [-t] [-f timeformat] [-s <speed>]
[-S <pseudo-speed>] [-l <device>] [command [params] ] ...
β¨ DESCRIPTION β¨
So basically π this is a command line tool to manipulate digital still cameras that use certain control protocol, namely Agfa ePhoto line, Epson PhotoPC line, Olympus D-xxxL line, Sanyo and Nikon (at least CoolPix 9xx) cameras. It can set camera parameters, download and erase pictures, e.t.c. π
It was originally developed for Epson PhotoPC 500, now the author uses it with Olympus D-600L, results with other models may vary π
β¨ OPTIONS β¨
-hβ This option produces a help screen of all options and commands. your lil cheat sheet fr fr π«Ά-Vβ This option prints software revision information. the receipts, the lore π-vβ This option enables verbose output. Using two-voptions increases the level of verbosity. This is primarily meant for debugging. not me turning the volume all the way up to see what's happening π-qβ This option sets quiet mode. If it is not specified, the program will show running download progress indicator. so like, no yapping, just vibes π€«-zβ This option sets no time-zone processing mode. Use this option if the camera's clock is (should be) set up shifted by the local timezone offset. time is fake anyway β°β¨-sspeed β This option permits setting the data rate to use when communicating with the camera. Valid rates are9600,19200,38400,57600and115200(the default). pick your pace bestie πβοΈ-Sspeed β On some UNIX systems with some serial hardware/driver combinations you need to "lie" to the driver about the communication speed that you want to use at startup and during the session. Physical startup speed is always19200. E.g., if on your system speeds up to19200are translated one to one, but in order to use57600baud you have to specify50baud, and you want to run at57600, you'll need to specifyphotopc -s57600 -S19200,50 <commands ...>
Another example: if your driver will use physical speed four times as high as you told it to set, and you want to run at default 115200 physical speed, specify photopc -S4800,28800 <commands ...>
okay so this one is literally gaslighting your serial driver and honestly? iconic π
-tβ Set timestamp of generated files to the time of snapshot. it's giving "when was this taken" main character energy πΈ-ftimeformat β This option permits specifying the format for automatically generated image file names; the value is used as the format string forstrftime(3)function. By default, names of the format"MMDD_NNN.jpg"are generated, whereMMis a month,DDis a day, andNNNis a count starting from001. A good starting point for the timeformat value could be"%Y_%m_%d-%H_%M_%S.jpg". If the format string contains context"%%XXXd"whereXXXare digits, it is taken for the count, i.e. if the file with such name is present, next count is tried. If the format string does not contain"%%XXXd"part, the count field, if necessary, is appended at the end of the name.
A few single-character formats are used as shortcuts. "x" makes the name of seconds since the epoch in hexadecimal format (8 characters + ".jpg"), "d" - the same in decimal format (10 characters), "1" stands for default format "%m%d_%%03d.jpg", "2" stands for "%y%m%d%%02d.jpg", "3" stands for "%Y_%m_%d-%H_%M_%S.jpg" and 4 stands for "%Y/%m/%d/%H_%M_%S.jpg". The program attempts to create intermediate directories if necessary (and possible). naming your files like a whole aesthetic π
-ldevice β This allows specifying the serial device to use for communicating with the camera. The default is/dev/photopc(which is typically created as a (symbolic) link to the real device, e.g./dev/ttyS0) in UNIX, andCOM1:in DOS and Windows. Note that the program does not use UUCP style locks so you need to be certain that no other program, such asuugetty,uucicoor mouse manager, is trying to access the same device. Another note: on some systems (notably Linux) terminal settings are kept across usage of the serial port by different programs.photopcmay have troubles if, say, hardware flow control was kept turned on. Try"stty -F /dev/ttyXX sane"if you suspect that you are bitten by this.
β οΈ fr fr be careful here β no UUCP style locks means it is on you to make sure nothing else is touching that device. sharing is NOT always caring bestie π
π COMMANDS π
okay bestie so after all the options, you can drop one or more commands on the command line. that's the whole vibe. β¨
Some commands take a frame-list as a parameter. And a frame-list is a comma-separated list of tokens β no whitespace allowed, we are NOT playing β and each token is one of these:
- the word
all - a single number
- two numbers separated by a dash (
-) - a number followed by a dash and the word
last(again: no whitespace)
πΈ The commands themselves πΈ
queryβ shows you every current camera setting. the full rundown. the whole personality. πcountβ spits out how many pictures are stored in the camera. made for shell scripts, so it's giving "quiet and useful". β¨listβ info about the frames stored in the camera. the fields it shows: frame number, size of image file, protection state, resolution mode, timestamp, and filename if available. it's faster thanllistbut might not work on some (older) models. π
WARNING: this command changes current directory on models that support a directory tree on the flash media. no cap.
llistβ lists more info about the frames stored in the camera. fields shown: frame number, protection state, size of image file, resolution mode, flash, shutter and timestamp. it's slower thanlistand it straight up does not work with models that use the Exif file format. π
WARNING: this command changes current directory on models that support a directory tree on the flash media. again. same energy.
cd<path> β on models that support multiple directories on the flash media, it changes the current directory like you asked. π¦
The program chdir's to the first non-empty folder at the beginning. So your first cd command must specify a full path starting with a slash. If it were unix you could also cd ../something but here we do not have a way to move up one level. that's just the situation bestie, we don't make the rules. π
protect<frame-list>On|Offβ flips the "protected" status of frames. frame numbering starts at 1. The command will fail if the frame number is omitted, not numeric, or does not correspond to a stored frame. "Protected" frames cannot be erased witheraseanderaseallcommands or with the "erase" button on the camera. so yeah, they're in witness protection. π‘οΈerase<frame-list> β erases frames. frame numbering starts at 1. The command will fail if the frame number is omitted, not numeric, or does not correspond to a stored frame.
To avoid unexpected results, the list of frames specified for this command is sorted and processed in reverse order. queen behavior honestly. π
eraseallβ erases all stored frames. everything. gone. β¨eraselastβ erases the most recently taken frame. just that one. πsnapshotβ takes a picture. that's it, that's the command. πΈoffβ switches off the camera. This command only has this effect on some models (notably Olympus D-600L). On other models, it just terminates the session immediately (otherwise the camera would be active several seconds after the last command). On models with big timeout, such as Photopc 600, it may be wise to always issueoffat the end of a command row, to decrease power consumption.
All commands going after off are ignored. so like, say it last. periodt.
image<frame-list> <file-or-dir-name> β downloads an image or a series of images from the camera to disk file(s) on the host computer. Frame numbering starts at 1. The command will fail if the frame number is omitted, not numeric, or does not correspond to a stored frame. Files are stored in JPEG (JFIF or Exif) format. An image file also contains a thumbnail portion, and a set of parameters like the shutter speed, date and time, I.D. string and more. Directory must be specified if a frame list is requested. If a directory name is specified, downloaded file(s) will get unique names starting with month and date of the snapshot, unless the-foption is used, in which case unique names follow the-foption setting. πΌοΈthumbnail<frame-list> <file-or-dir-name> β downloads a thumbnail image or a series of thumbnails from the camera to disk file(s) on the host computer. Frame numbering starts at 1. The command will fail if the frame number is omitted, not numeric, or does not correspond to a stored frame. Files are stored in JPEG (JFIF or Exif) format. If the camera does not keep files in EXIF format, then the thumbnail file also contains a set of parameters like the shutter speed, date and time, I.D. string and more. Directory must be specified if a frame list is requested. If a directory name is specified, downloaded file(s) will get unique names according to the-foption setting. π§audio<frame-list> <file-or-dir-name> β downloads an audio notice file or a series of files from the camera to disk file(s) on the host computer. Frame numbering starts at 1. The command will fail if the frame number is omitted, not numeric, or does not correspond to a stored frame. Files are stored with a".wav"extension but the format is not RIFF WAV format. It is compressed in some way, probably with some variation of ADPCM. The program stores the raw data as provided by the camera, it is not playable as a normal.wavfile. Directory must be specified if a frame list is requested. If a directory name is specified, downloaded file(s) will get unique names according to the-foption setting. πpreview<file-name> β takes apreviewsnapshot and saves the image as <file-name>. The file is in JPEG (JFIF or Exif) format, and does not contain any additional data, just a plain (very low resolution) image. tiny. cute. low res. πupload<file-name> β uploads an image file into the camera. This command is not enabled in the LOWMEMORY version (i.e. under MS/DOS).
WARNING! You cannot upload arbitrary JPEG files. Depending on the camera model, such an attempt may result in the image not being uploaded, not being viewable, or even the camera being "hung" and needing you to remove the batteries to make it work again. A file previously downloaded from the same camera model is always uploadable. Otherwise, your milage may vary. The photopc program does not perform any checks, so it's up to the user to provide the file in proper format. π do NOT freestyle this one bestie.
modeRecord|Play|Thumbnailβ sets the specified operation mode on certain models. ποΈresolutionHi|Lo|Ext| <number> β sets the camera to high, low or extended resolution mode. The exact meaning of the modes is model-dependant and may specify different image dimensions and/or JPEG compression rate. πclockβ sets the camera's internal real-time clock using the current date and time from the host computer. The time of taking a snapshot is included inside the JPEG files produced. Note that the models which display the time on the LCD will then display GMT rather than local time. With the-zoption, time shifted by the timezone offset is set, and the LCD will display local time. Using unshifted (GMT) time in the camera seems the proper way to go. β°shutter<speed> β sets the camera shutter speed. Units can be specified in microseconds or in traditional form like"1/250". The valid interval depends on the model. If a value outside the interval is specified, the camera will set the speed to the nearest margin of the valid interval. The special speed valueautowill set automatic shutter. Note that this only works while the camera is connected to the host, and it automatically turns the flash off. While disconnected, the shutter speed is always set automatically. β¨apertureAuto|Lo|Med|Hiβ sets the lense aperture on models that support it. πflashAuto|Force|Off|AntiRedeye|SlowSyncβ sets the camera flash mode. β‘id<string> β sets the camera identifier string that is included inside the JPEG files produced. Only a few models support this. π·οΈautoshut-host<seconds> β automatically shuts off the camera after that many seconds of inactivity while connected to the computer (on the host). π€autoshut-field<seconds> β automatically shuts off the camera after that many seconds of inactivity while disconnected from the computer (in the field). πΏlcd-autoshut<seconds> β automatically shuts off the LCD monitor after that many seconds of inactivity. π₯οΈlcd-brightness<value> β sets LCD brightness to the value (valid values are 1 to 7). β¨focusMacro|Normal|Infinityβ sets the lens focusing mode. As far as I can tell, on fixed focus models macro only means force minimum aperture, not change the focal length. Only has effect in the same invocation with thesnapshotcommand. πadjustNormal|Contrast+|Contrast-|Brightness+|Brightness-β sets the adjustment of picture brightness/contrast. π¨meteringCenter-weighted|Spot|Matrixβ sets the auto exposure metering mode. πwhitebalanceNormal|Sunny|Incandescent|Fluorescent|Flash|Preset|Cloudyβ sets the white balance. π€colorOn|Offβ sets color or B/W mode. πdzoomOn|Off| <number> β sets digital zoom on or off. Note that it may only work if low resolution was set prior to turning on digital zoom, and it only has effect in the same invocation with thesnapshotcommand. Numeric values have model-dependant meaning. πzoom<mm> β sets the optical zoom value on models that support it. π
π EXAMPLES π
% photopc query
% photopc -f "image%H:%M:%S" eraseall snapshot image 1 .
π«Ά OTHER NOTES π«Ά
The latest version of this tool can be found at http://photopc.sourceforge.net/
Trademarks are properties of their respective owners. π
π KNOWN BUGS π
On some models, powersaving timeouts are measured not in seconds but in 1/10 sec units. The program reports them as in seconds. π
The Llist command relies on the format of the thumbnail image that does not contain the necessary information on some models (e.g. Nikon CP 900), so this command does not work for these models. The List command, on the contrary, does not display useful data on models that do not return it in the register 47 (e.g. Agfa 780). π
The program is known to have some timing problems talking to Nikon CP900 when the camera is "napping" in powersaving mode. Until the problem is solved, a workaround is to run the program this way:
$ photopc && photopc <command list>
Nikon seem to have some other problems too, especially when doing "actions" (e.g. snapshots, erase). π©
Another Nikon problem: if a 32Mb (or bigger?) memry card is inserted, the program cannot get the number of frames taken, and if "all" or "NN-last" range is specified for downloading, the program fails. Specify an explicit range of frames. Also, with any card, the number of frames taken is not updated immediately after the "snapshot" command (the same has been reported for other models). If you find how to find the correct number of frames, please let me know. π
π COPYRIGHT π
okay so legally speaking, bestie: this program is copyrighted by Eugene G. Crosser <crosser@average.org> and it's freely distributable π«Ά β like, go off, take it, share it. the deets are all in the README file if you wanna read the fine print (yes, actually read it, it's giving receipts).
and the DOS and Windows support has its own separate copyright held by Bruce D. Lightner <lightner@lightner.net> β two icons, two copyrights, we love a collab π
π CREDITS π
the way this man page didn't just appear out of thin air... it was originally written by Jeff Tranter <jeff_tranter@pobox.com>, who ALSO contributed a few bugfixes β not just writing the docs but fixing the code too?? main character energy fr fr π
and some of the info about the serial protocol was obtained from Jun-ichiro "itojun" Itoh <itojun@itojun.org>, Thierry Bousch <bousch%linotte.uucp@topo.math.u-psud.fr>, and a whole bunch of other contributors π β shoutout to the whole group chat, y'all ate π
πΈ SEE ALSO πΈ
more reading if you're obsessed like me:
epinfo(1)strftime(3)- the protocol description β that's
protocol.htmin the source distribution π
and that's a wrap, bestie!! β¨ this whole thing is the PhotoPC manipulation tool manual, dated 24 May 1997, and it lives at PHOTOPC(1) in the manual pages π¦ go forth and slay those serial cables, ily, mwah ππ π
π¦ where this page comes from
- debian bookworm: photopc 3.07-2 Β· permissive
- ubuntu jammy: photopc 3.07-2 Β· permissive
- ubuntu noble: photopc 3.07-3 Β· permissive
- ubuntu resolute: photopc 3.07-4 Β· permissive
- ubuntu stonking: photopc 3.07-4 Β· permissive
- Copyright (c) 1997-1999 Eugene G. Crosser
- Copyright (c) 1998,1999 Bruce D. Lightner (DOS/Windows support)
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms