{"id":16579168,"url":"https://github.com/jrabbit/libptp-chdk","last_synced_at":"2025-07-16T07:33:13.659Z","repository":{"id":136979997,"uuid":"2241271","full_name":"jrabbit/libptp-chdk","owner":"jrabbit","description":"re-package CHDK's ptpcam hacks -- Now portable!","archived":false,"fork":false,"pushed_at":"2011-08-21T00:56:38.000Z","size":485,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-09T04:26:59.114Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://libptp.sourceforge.net/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrabbit.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-08-21T00:16:09.000Z","updated_at":"2020-01-12T18:30:37.000Z","dependencies_parsed_at":"2023-03-21T10:49:58.782Z","dependency_job_id":null,"html_url":"https://github.com/jrabbit/libptp-chdk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jrabbit/libptp-chdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrabbit%2Flibptp-chdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrabbit%2Flibptp-chdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrabbit%2Flibptp-chdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrabbit%2Flibptp-chdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrabbit","download_url":"https://codeload.github.com/jrabbit/libptp-chdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrabbit%2Flibptp-chdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265492320,"owners_count":23776029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T22:17:07.425Z","updated_at":"2025-07-16T07:33:13.611Z","avatar_url":"https://github.com/jrabbit.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"libptp2 (c)2001-2006 Mariusz Woloszyn \u003cemsi@ipartners.pl\u003e\nptpcam  (c)2001-2006 Mariusz Woloszyn \u003cemsi@ipartners.pl\u003e\n\n=====================\n*About this software*\n=====================\n\nYou may find new versions of this software at:\nhttp://libptp.sf.net/\n\nThe ./src folder contains following code:\nptp.c\t\t- the main libptp2 code\nptp.h\t\t- libptp2 header files\nptp-pack.c\t- this file is included into ptp.c (internal code)\nptpcam.h\t- ptpcam header file\nptpcam.c\t- the software to manipulate PTP cameras;\n\t\t  it does things that you can't do with gphoto2\n\nThe libptp2 library is under development yet, but is considered to be\nfunctional and quite stable.\nIt was written to be used with gphoto2, but can be easily used with any other\nsoftware.\n\n==============\n*Requirements*\n==============\n\nCurrently this package requires libusb to build ptpcam.\nThe libptp2 library itself is transport layer independent and does not require\nlibusb, however no other transport layer has been tested due to lack\nof PTP non-USB devices.\nYou can obtain libusb at http://libusb.sf.net/\nBE AWARE THAT libusb-0.1.10 contained bugs that might affect your camera!\nUse newer version or libusb-0.1.8 instead.\nIf you want to build this library (for test purposes) on a box without\nlibusb pass --disable-ptpcam option to configure script.\nA PTP camera seems to be required also to take full advantage of this package.\n\n\n==================\n*What is libptp2?*\n==================\n\nlibptp2 is a library used to communicate with PTP devices like still\nimaging cameras.\nAt the current stage you may use ptpcam tool boundled with libptp2 to perform\nsome basic operations like downloading photos or setting camera properties.\nFor other operations and GUI you might consider using libgphoto2\n(which contains forked version of libptp2 code), gphoto2 and gtkam; \nsee http://www.gphoto.org.\n\n\n===================\n*Supported Cameras*\n===================\n\nThe list of PTP cameras is constantly growing. Most (if not all) USB still\ncameras designed after 2002 are PTP compliant. Below is the list of vendors\nimplementing PTP in their cameras:\n\n* Kodak\n* HP\n* Nikon\n* Canon\n* Panasonic\n* Olympus\n* Konika\n* Minolta\n* Fuji\n* Ricoh\n* Sony\n\nNote that for some HP, Nikon, Canon, Sony and possibly other cameras\nyou have to switch them to PTP mode as in most cases the camera is dual mode:\nPTP and USB Mass Storage or PTP and native.\nFor some cameras it even changes the Product ID number, so don't panic \njust switch the mode.\nDon't ask me how to do it. Refer to camera documentation.\n\nPlease note that if your camera is supporting PTP it does NOT mean that\nit is capable of performing all PTP operations (like triggering capture,\nuploading files or tweaking properties). Sony cameras are good example of\npoor PTP implementation where the only thing you can do is downloading files.\n\n=============\n*Quick Start*\n=============\n\nFirst of all you need kernel USB support. Please refer to your OS\ndocumentation for more info!\nFor Linux users you need \"Preliminary USB device filesystem\" and \"USB Host\nController\" (the one for your hardware: EHCI, OHCI or UHCI) support in your\nkernel.\nCAUTION: there was a bug in Linux Kernel 2.4.18 UHCI driver so make sure you\nuse more recent kernel!\nIf you got a kernel support, make sure that your usbdevfs is mounted under\n/proc/bus/usb. In my case the fstab entry looks like this:\n\nusb     /proc/bus/usb   usbdevfs        defaults,user 0 0\n\n(NO, the entry in fstab isn't enough, you have to type: mount /proc/bus/usb).\nIf you want to run ptpcam as regular user read this:\nhttp://gphoto.sourceforge.net/doc/manual/permissions-usb.html\nalthough I suggest performing all tests as root unless you're security\nparanoid.\n\nIf you have a PTP camera connected to your computer it should be detected by\ninvoking \"ptpcam --list-devices\".\nIn my case the output looks like this:\n\nroot@emsi(chroot):~# ptpcam --list-devices\nListing devices...\nbus/dev vendorID/prodID device model\n002/035 0x040A/0x0400   Kodak mc3\n002/036 0x040A/0x0500   DX3500 Digital Camera\n001/027 0x040A/0x0160   DC4800 Zoom Digital Camera\n\nIf you get something like this:\n\nemsi@emsi(chroot):~\u003e ptpcam --list-devices\nListing devices...\nbus/dev vendorID/prodID device model\nERROR: Could not open session!\nTry to reset the camera.\n\nit means that you did not read carefully what I wrote above about running\nptpcam as regular user or your camera has stalled (needs reset).\n\nIf you need some more debug try --verbose or --verbose=2 thus increasing the\nverbose level.\n\nWhat if you get \"Found no PTP devices\"?\nIf you're sure that your camera is a PTP camera please check your OS usb\nconfig. In case of Linux make sure that you have usbdevfs mounted under\n/proc/bus/usb. If so read the output of 'cat /proc/bus/usb/devices' and check\nif your camera is listed there.\nIt might be that your camera is not in PTP mode. To verify so, issue:\n\ncat /proc/bus/usb/devices | grep \"Cls=06\"\n\nIf you find something like this:\n\nI:  If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=(none)\n                          ^^^^^^^^^^^^^\nthat means that your camera is in PTP mode and should be detected.\nIf there is no interface of Class 6 refer to camera documentation to find\nhow to switch it into PTP mode.\n\nYou may also try to use --force option while listing cameras or talking to\nit, but don't use it unless you really know what you are doing!!!\n--force forces ptpcam to talk to non PTP devices [which makes sense only in\ncase of PTP device with interface class other than 6 (PTP), like Kodak DC240\nwith PTP firmware]. BE AWARE that talking PTPish to non PTP devices may\ncause harmful damage!!!\n\n\n============\n*What next?*\n============\n\nI guess that you'd like to download images or tweak camera properties? ;)\n\nUse \"ptpcam --get-all-files\" to download all images from your camera.\nBy default all images are copied to local folder and filename and creation\ntime is preserved. By default the download operation skips a file if it\nfinds one with the same name in local folder. This enables you to do\nquick-sync downloading only the newly captured files. Of course you can\nrequest to overwrite existing files passin --overwrite on command line.\nYou may also download a specific file using --get-file=HANDLE providing object\nhandle as a parameter (you can find it with --list-files).\nIf ptpcam detects more than one camera you need to pass --bus=BUS-NUMBER and,\nor --dev=DEV-NUMBER arguments otherwise ptpcam tries to talk to first detected\ncamera. If you specify only bus or dev number ptpcam talks to first matching\ncamera.\n\nTo list all available camera properties use \"ptpcam --list-properties\"\nUnfortunately if you have bought a high-end camera or a very expensive PTP\ncamera it DOES NOT mean that it supports setting any properties. The problem\nis that manufacturers do not specify in documentation what properties or\noperations are supported by the given camera. In most cases you never know\nuntil you buy the camera. [I'll try to provide a list of supported camera\nproperties and operations on libptp.sf.net]\n\nLet's say that you get something like this:\n\nroot@emsi(chroot):~# ptpcam --list-properties\nListing properties...\nQuerying: DX3500 Digital Camera\n0x5001 : Battery Level\n\nIt means that your camera (in this case DX3500 Digital Camera) supports only\none property, which is \"Battery Level\" (property number 0x5001). Not much,\nbut you still can try to list its value:\n\nroot@emsi(chroot):~# ptpcam --show-property=5001\nCamera: DX3500 Digital Camera\nProperty 'Battery Level'\nCurrent value is 100\nFactory default value is 100\nThe property is read only, enumerated. Allowed values are:\n0\n10\n100\n\nAs you can see --show-property argument does not require 0x, that's for your\nconvenience. ;)\nThe output of this command is quite verbose. It tells you about Current value,\nFactory default value and the property type. The property type may vary among\ndifferent cameras! In this camera 'Battery Level' is read only and\nenumerated. Allowed values are 0, 10 and 100 which (more or less) means:\n0 - low battery lever (may shut down immediately), 10 - medium battery\nlevel, 100 - full battery level. However for a different camera this\nproperty may be defined as range of 1 to 100 with step of 1.\nThat's just an example.\n\nNow let's look at the list of properties of another camera:\n\nroot@emsi(chroot):~# ptpcam --list-properties\nListing properties...\nQuerying: DC4800 Zoom Digital Camera\n0x5001 : Battery Level\n0x5003 : Image Size\n0x5004 : Compression Setting\n0x5005 : White Balance\n0x5006 : RGB Gain\n0x5007 : F-Number\n0x5008 : Focal Length\n0x5009 : Focus Distance\n0x500a : Focus Mode\n0x500b : Exposure Metering Mode\n0x500c : Flash Mode\n0x500d : Exposure Time\n0x500e : Exposure Program Mode\n0x500f : Exposure Index (film speed ISO)\n0x5010 : Exposure Bias Compensation\n0x5011 : Date Time\n0x5013 : Still Capture Mode\n0x5015 : Sharpness\n0x5016 : Digital Zoom\n0x5017 : Effect Mode\n0x5018 : Burst Number\n0x501c : Focus Metering Mode\n0xd001 : EK Color Temperature\n0xd002 : EK Date Time Stamp Format\n0xd003 : EK Beep Mode\n0xd004 : EK Video Out\n0xd005 : EK Power Saving\n0xd006 : EK UI Language\n\nAll properties of numbers starting with 0x50 are standard PTP properties,\nalthough for many of them the type (enumerated or range) and value meaning\nare NOT specified by the PTP standard and may vary among different cameras!\nThe properties starting with 0xd0 are PTP extension (in this case EK means\nEastman Kodak extension) and in most cases are not known to public at all.\nProbably you will have to reverse-engineer their meaning (I'm eager to\nreceive a feedback from you in such case! ;).\n\n\n==========================\n* Setting property values*\n==========================\n\nFor example if you'd like to change the 'Image Size' property you have to do\nthat in two steps. First display the property using --show-property switch.\nDetermine whether the property is settable, what is the type of value\n(a number or string) and which values are supported!\nKeep in mind that some properties are settable only in certain camera\nstates or modes. Also the valid values may vary depending on current camera\nstate!\nOK. Let's get back to our example. To display property 'Image Size',\nwhich number is 0x5003 you have to type:\n\nroot@emsi(chroot):~# ptpcam --show-property=5003\nCamera: DC4800 Zoom Digital Camera\nProperty 'Image Size'\nData type is 0xffff\nCurrent value is \"2160x1440\"\nFactory default value is \"2160x1440\"\nThe property is settable, enumerated. Allowed values are:\n\"2160x1440\"\n\"1800x1200\"\n\"1536x1024\"\n\"1080x720\"\n\nAs you can see, this camera supports four different image sizes. The\nproperty value is a string (values are printed within quotation marks).\nTo change 'Image Size' property pass --val=VALUE option to ptpcam while still\nspecifying the property with --set-property=PROPERTY_NUMBER.\nNote that only certain values are allowed.\n\nIn our example let it look like this:\n\nroot@emsi(chroot):~# ptpcam --set-property=5003 --val=1080x720\nCamera: DC4800 Zoom Digital Camera\nProperty 'Image Size'\nData type is 0xffff\nCurrent value is \"2160x1440\"\nFactory default value is \"2160x1440\"\nThe property is settable, enumerated. Allowed values are:\n\"2160x1440\"\n\"1800x1200\"\n\"1536x1024\"\n\"1080x720\"\nSetting property value to '1080x720'\n\nIf everything goes OK, no error is displayed. You may verify, of course,\nif the property value was set properly.\nIf you get something like this:\n\nPTP: Invalid Device Prop Value\n\nit indicates that the property value was not set due to invalid values.\n\nKeep in mind that in most cases changing one property may cause another one\nproperty to change! That happens especially in any Automated modes!!!\n\nFIXME: The device should report that another property was changed issuing\nDevicePropChanged event! We may catch that and report to user.\n\n=================\n*Common problems*\n=================\n\nSometimes it might happen that the device claims to support given property\nbut does not respond to --show-property request. In most cases it's because of\nimproper PTP implementation on the camera side.\nSometimes the list of supported properties might vary while changing\ncamera mode.\nMoreover, given property may not have any meaning in a certain camera state.\nFor example setting or getting 'Focus Distance' property may not be allowed\nin automated camera mode! In such case try to switch the camera to manual\nmode.\nFor example my Kodak DC4800 fails over --show-property=5006\n(which is \"RGB Gain\") if RGB Gain is not set. It looks like this:\n\nroot@emsi(chroot):~# ptpcam --show-property=5006\nCamera: DC4800 Zoom Digital Camera\nProperty 'RGB Gain'\nERROR: Could not get device property description!\nTry to reset the camera.\n\nIn such a case you need to issue a --reset request to the camera:\n\nroot@emsi(chroot):~# ptpcam --reset\nResetting input pipe!\nDevice status OK\n\nIt's a good practice to verify whether the reset went OK issuing\n--list-devices. Sometimes one or two more reset may be needed to properly\nreset the camera.\n\n\n=========================\n*Standard PTP Properties*\n=========================\n\n\nBelow I am providing a short list of properties and their meaning values\naccording to PTP specification.\n\n0x5001 : Battery Level\n\t DataType: UINT8\n\t Forms: Enum, Range\n\t PTP standard does not define any special values, however for number\n\t of Kodak devices 0 means no power (alternative power source), 10\n\t means medium battery lever and 100 means full battery.\n\n0x5002 : Functional Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t This property indicates whether the device is in an alternate mode\n\t that provides a different set of capabilities (i.e. supported\n\t operations, properties, events, etc.). If the device supports only\n\t one mode, this value should always be zero.\n\t PTP standard specifies following values:\n\t 0x0000 - Standard Mode\n\t 0x0001 - Sleep State\n\t All other values with bit 15 set to 0 are Reserved.\n\t All values with bit 15 set to 1 are Vendor Specific.\n\n0x5003 : Image Size\n\t DataType: String\n\t Forms: Enum, Range\n\t \"This property describes the height and width of the image that will \n\t be captured in pixels supported by the device.\" The string is of the\n\t format \"WxH\" where the W represents the width and the H represents\n\t the height represented as unsigned integers.\n\n0x5004 : Compression Setting\n\t DataType: UINT8\n\t Forms: Enum, Range\n\t Quoted from PTP (PIMA 15740) specs:\n\t \"Compression setting is a property intended to be as close as is\n\t possible to being linear with respect to perceived image quality\n\t over a broad range of scene content, and is represented by either a\n\t range or an enumeration of integers. Low integers are used to\n\t represent low quality (i.e. maximum compression) while high\n\t integers are used to represent high quality (i.e. minimum\n\t compression). No attempt is made in this standard (PTP) to assign\n\t specific values of this property with any absolute benchmark, so\n\t any available settings on a device are relative to that device only\n\t and are therefore device-specific.\"\n\n0x5005 : White Balance\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Manual\n\t 0x0002 - Automatic\n\t 0x0003 - One-push Automatic\n\t 0x0004 - Daylight\n\t 0x0005 - Fluorescent\n\t 0x0006 - Tungsten\n\t 0x0007 - Flash\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n\t Manual means that white balance is set directly using the RGB Gain\n\t (0x5006) property.\n\t Automatic indicates that the device sets this property using some\n\t kind of automatic mechanism.\n\t One-push Automatic means that the user must press the capture\n\t button while pointing objective at a white field, at which time the\n\t device determines the white balance setting.\n\t Daylight means that the device sets the white balance to a value\n\t that is suitable for daylight use.\n\t Tungsten means that the device sets the white balance to a value\n\t that is suitable for use with a tungsten light source.\n\t Flash means that the white balance is set to a value that is\n\t suitable for flash conditions.\n\n0x5006 : RGB Gain\n\t DataType: String\n\t Forms: Enum, Range\n\t This property takes the form of a string that is parsed as follows:\n\t \"R:G:B\" where the R represents the red gain, the G represents the\n\t green gain, and the B represents the blue gain. For example, for\n\t an RGB ratio of red=2, green=3 and blue=4, the RGB string could be\n\t \"2:3:4\" or \"200:300:400\". Each part of the RGB string is in decimal\n\t form of UINT16 integer.\n\n0x5007 : F-Number\n\t DataType: UINT16\n\t Forms: Enum\n\t This property represents the aperture of the lens. The units are\n\t equal to the F-Number scaled by 100.\n\t Example values are: 280 (2.8), 560 (5.6), 800 (8), etc.\n\n0x5008 : Focal Length\n\t DataType: UINT32\n\t Forms: Enum, Range\n\t This property represents the 35mm equivalent focal length. The\n\t units are equal to focal length in millimeters multiplied by 100.\n\n0x5009 : Focus Distance\n\t DataType: UINT16\n\t Forms: Enum, Range\n\t Value of this property represents the focus distance in\n\t millimeters. A value of 0xFFFF means infinity.\n\n0x500a : Focus Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Manual\n\t 0x0002 - Automatic\n\t 0x0003 - Automatic Macro (close-up)\n\t All other values with bit 15 set to zero are reserver.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x500b : Exposure Metering Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Average\n\t 0x0002 - Center-weighted-average\n\t 0x0003 - Multi-spot\n\t 0x0004 - Center-spot\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x500c : Flash Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Auto flash\n\t 0x0002 - Flash off\n\t 0x0003 - Fill flash\n\t 0x0004 - Red eye auto\n\t 0x0005 - Red eye fill\n\t 0x0006 - External flash\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x500d : Exposure Time\n\t DataType: UINT32\n\t Forms: Enum, Range\n\t This property represents the shutter speed. It has units of seconds\n\t scaled by 10000.\n\t For example:\n\t 40 means 1/250 sec.\n\t 80 means 1/125 sec.\n\t 160 means 1/62.5 sec. and so on.\n\n0x500e : Exposure Program Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Manual\n\t 0x0002 - Automatic\n\t 0x0003 - Aperture Priority\n\t 0x0004 - Shutter Priority\n\t 0x0005 - Program Creative (greater depth of field)\n\t 0x0006 - Program Action (faster shutter speed)\n\t 0x0007 - Portrait\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x500f : Exposure Index (film speed ISO)\n\t DataType: UINT16\n\t Forms: Enum, Range\n\t Value of this property represents the emulation of film speed\n\t setting. The setting corresponds to the ISO designations. A value of\n\t 0xFFFF means automatic ISO setting.\n\n0x5010 : Exposure Bias Compensation\n\t DataType: INT16\n\t Forms: Enum, Range\n\t Value of this property represents the exposure compensation. The\n\t units are in \"stops\" scaled by 1000. The setting values are in\n\t APEX.\n\t For example the value of -2000 (means 4X less energy on sensor)\n\t two stops less exposure (darker image). The value of 1500 means\n\t one and a half stops more exposure (2.25X more energy on sensors).\n\n0x5011 : Date Time\n\t DataType: String\n\t Forms: none\n\t Value of this property represents the device date and time in ISO\n\t 8601 format. It's a string of \"YYYYMMDDThhmmss.s\", where YYYY\n\t represents the year, MM represents the month (01-12), DD is the day\n\t of the month (01-31), T is a constant character, hh represents the\n\t hour since midnight (00-23), mm is the minutes (00-59) past the\n\t hour and ss.s is the seconds past the minute, with the \".s\" being\n\t optional tenth of second past the second. The string can be\n\t optionally appended with Z to indicate UTC, or +/-hhmm to indicate\n\t that time is relative to a time zone.\n\t \n0x5012 : Pre-Capture Delay\n\t DataType: UINT32\n\t Forms: Enum, Range\n\t Value of this property represents the amount of time delay that\n\t should be inserted between the capture trigger and the initiation\n\t of the data capture. This value shall be interpreted as\n\t milliseconds. \n\t It has nothing to do with the \"0x5019 : Burst Interval\" and the\n\t \"0x501b : Timelapse Interval\"!\n\n0x5013 : Still Capture Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Normal\n\t 0x0002 - Burst\n\t 0x0003 - Timelapse\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x5014 : Contrast\n\t DataType: UINT8\n\t Forms: Enum, Range\n\t Value of this property represents the contrast of a captured image.\n\t The minimum supported value is used to represent the least\n\t contrast, while the maximum value represents the most contrast.\n\n0x5015 : Sharpness\n\t DataType: UINT8\n\t Forms: Enum, Range\n\t Value of this property represents the sharpness of a captured\n\t image. The minimum value is used to represent the least amount of\n\t sharpness, while the maximum value represents highest sharpness.\n\n0x5016 : Digital Zoom\n\t DataType: UINT8\n\t Forms: Enum, Range\n\t Value of this property represents the effective zoom ratio of\n\t digital camera's acquired image scaled by a factor of 10.\n\t No digital zoom (1) represents the value of 10. The minimum value\n\t represents minimum digital zoom (no digital zoom), typically\n\t 10, while the maximum value represents the maximum digital zoom.\n\n0x5017 : Effect Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Standard (color)\n\t 0x0002 - Black \u0026 White\n\t 0x0003 - Sepia\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x5018 : Burst Number\n\t DataType: UINT16\n\t Forms: Enum, Range\n\t Value of this property specifies the number of images that the\n\t device will attempt to capture upon initiation of a burst capture.\n\n0x5019 : Burst Interval\n\t Data Type: UINT16\n\t Forms: Enum, Range\n\t Value of this property represents the delay between captures upon\n\t initialization of a burst captures. This value is expressed in\n\t milliseconds.\n\n0x501a : Timelapse Number\n\t DataType: UINT16\n\t Forms: Enum, Range\n\t Value of this property represents the number of images that the\n\t device will attempt to capture upon initiation of a time-lapse\n\t capture.\n\n0x501b : Timelapse Interval\n\t DataType: UINT32\n\t Forms: Enum, Range\n\t Value of this property represents the delay between captures upon\n\t initialization of a time-lapse capture. This value is expressed in\n\t milliseconds\n\n0x501c : Focus Metering Mode\n\t DataType: UINT16\n\t Forms: Enum\n\t PTP standard specifies following values:\n\t 0x0000 - Undefined\n\t 0x0001 - Center-spot\n\t 0x0002 - Multi-spot\n\t All other values with bit 15 set to zero are reserved.\n\t All values with bit 15 set to 1 are vendor-defined.\n\n0x501d : UploadURL\n\t DataType: String\n\t Forms: none\n\t This property describes the URL that the receiver may use to upload\n\t images.\n\n0x501e : Artist\n\t DataType: string\n\t Forms: none\n\t The name of the author of pictures.\n\t This property is intended to populate the Artist field of an EXIF\n\t images.\n\n0x501f : Copyright\n\t DataType: string\n\t Forms: none\n\t Copyright notification.\n\t This property is intended to populate the Copyright field of an\n\t EXIF images.\n\n\n===================\n* Camera abilities*\n===================\n\nA couple of random camera abilities:\n\n0.048332 PTP/library.c(2): Device info:\n0.048347 PTP/library.c(2): Manufacturer: Nikon Corporation\n0.048359 PTP/library.c(2):   model: E2500\n0.048370 PTP/library.c(2):   device version: E2500v1.0\n0.048380 PTP/library.c(2): Vendor extension description: Nikon PTP Extensions\n0.048391 PTP/library.c(2): Supported operations:\n0.048402 PTP/library.c(2):   0x1001\n0.048413 PTP/library.c(2):   0x1002\n0.048424 PTP/library.c(2):   0x1003\n0.048435 PTP/library.c(2):   0x1004\n0.048446 PTP/library.c(2):   0x1005\n0.048457 PTP/library.c(2):   0x1006\n0.048468 PTP/library.c(2):   0x1007\n0.048479 PTP/library.c(2):   0x1008\n0.048490 PTP/library.c(2):   0x1009\n0.048500 PTP/library.c(2):   0x100a\n0.048511 PTP/library.c(2):   0x100b\n0.048522 PTP/library.c(2):   0x101b\n\n\n0.309772 PTP/library.c(2): Device info:\n0.309976 PTP/library.c(2): Manufacturer: Canon Inc.\n0.310211 PTP/library.c(2):   model: Canon DIGITAL IXUS 400\n0.310427 PTP/library.c(2):   device version:\n0.310634 PTP/library.c(2): Vendor extension description: (null)\n0.310861 PTP/library.c(2): Supported operations:\n0.311066 PTP/library.c(2):   0x1001\n0.311260 PTP/library.c(2):   0x1002\n0.311455 PTP/library.c(2):   0x1003\n0.311650 PTP/library.c(2):   0x1004\n0.311844 PTP/library.c(2):   0x1005\n0.312039 PTP/library.c(2):   0x1006\n0.312233 PTP/library.c(2):   0x1007\n0.312476 PTP/library.c(2):   0x1008\n0.312674 PTP/library.c(2):   0x1009\n0.312869 PTP/library.c(2):   0x100a\n0.313064 PTP/library.c(2):   0x100b\n0.313259 PTP/library.c(2):   0x100c\n0.313457 PTP/library.c(2):   0x100d\n0.313651 PTP/library.c(2):   0x100e\n0.313846 PTP/library.c(2):   0x100f\n0.314039 PTP/library.c(2):   0x1012\n0.314233 PTP/library.c(2):   0x1014\n0.321675 PTP/library.c(2):   0x1015\n0.322120 PTP/library.c(2):   0x1016\n0.322321 PTP/library.c(2):   0x101b\n0.322518 PTP/library.c(2):   0x9001\n0.322713 PTP/library.c(2):   0x9002\n0.322909 PTP/library.c(2):   0x9003\n0.323103 PTP/library.c(2):   0x9006\n0.323299 PTP/library.c(2):   0x9008\n0.323493 PTP/library.c(2):   0x9009\n0.323689 PTP/library.c(2):   0x900a\n0.323883 PTP/library.c(2):   0x900b\n0.324079 PTP/library.c(2):   0x900c\n0.324273 PTP/library.c(2):   0x900d\n0.324583 PTP/library.c(2):   0x900e\n0.324789 PTP/library.c(2):   0x900f\n0.324985 PTP/library.c(2):   0x9010\n0.325181 PTP/library.c(2):   0x9011\n0.325377 PTP/library.c(2):   0x9012\n0.325573 PTP/library.c(2):   0x9013\n0.325767 PTP/library.c(2):   0x9014\n0.325966 PTP/library.c(2):   0x9015\n0.326162 PTP/library.c(2):   0x9018\n0.326357 PTP/library.c(2):   0x9019\n0.326554 PTP/library.c(2):   0x901a\n0.326750 PTP/library.c(2):   0x901b\n0.326945 PTP/library.c(2):   0x901c\n0.327142 PTP/library.c(2):   0x901d\n0.327337 PTP/library.c(2):   0x901e\n0.327533 PTP/library.c(2):   0x901f\n0.327729 PTP/library.c(2):   0x9020\n0.327925 PTP/library.c(2):   0x9021\n0.555111 PTP2/library.c(2): Events Supported:\n0.555118 PTP2/library.c(2):   0x4001\n0.555125 PTP2/library.c(2):   0x4002\n0.555132 PTP2/library.c(2):   0x4003\n0.555138 PTP2/library.c(2):   0x4004\n0.555145 PTP2/library.c(2):   0x4005\n0.555152 PTP2/library.c(2):   0x4006\n0.555159 PTP2/library.c(2):   0x4008\n0.555165 PTP2/library.c(2):   0x400a\n0.555172 PTP2/library.c(2):   0x400c\n0.555179 PTP2/library.c(2):   0x400d\n0.555185 PTP2/library.c(2):   0xc001\n0.555192 PTP2/library.c(2):   0xc005\n0.555199 PTP2/library.c(2):   0xc006\n0.555206 PTP2/library.c(2):   0xc007\n0.555212 PTP2/library.c(2):   0xc008\n0.555219 PTP2/library.c(2):   0xc009\n0.555226 PTP2/library.c(2):   0xc00a\n0.555233 PTP2/library.c(2):   0xc00b\n0.555239 PTP2/library.c(2):   0xc00c\n0.555246 PTP2/library.c(2):   0xc00d\n0.555253 PTP2/library.c(2): Device Properties Supported:\n0.555260 PTP2/library.c(2):   0xd001\n0.555267 PTP2/library.c(2):   0xd002\n0.555273 PTP2/library.c(2):   0xd003\n0.555280 PTP2/library.c(2):   0xd02c\n0.555287 PTP2/library.c(2):   0xd02d\n0.555294 PTP2/library.c(2):   0xd02e\n0.555300 PTP2/library.c(2):   0xd02f\n0.555307 PTP2/library.c(2):   0xd030\n0.555314 PTP2/library.c(2):   0xd031\n0.555320 PTP2/library.c(2):   0xd032\n0.555327 PTP2/library.c(2):   0xd033\n0.555334 PTP2/library.c(2):   0xd034\n0.555341 PTP2/library.c(2):   0xd045\n0.555347 PTP2/library.c(2):   0xd046\n0.555354 PTP2/library.c(2):   0xd047\n0.555361 PTP2/library.c(2):   0xd048\n0.555368 PTP2/library.c(2):   0xd049\n\n0.509050 PTP/library.c(2): Device info:\n0.509067 PTP/library.c(2): Manufacturer: Canon Inc.\n0.509072 PTP/library.c(2):   model: Canon DIGITAL IXUS II\n0.509077 PTP/library.c(2):   device version: \n0.509082 PTP/library.c(2): Vendor extension description: (null)\n0.509091 PTP/library.c(2): Supported operations:\n0.509096 PTP/library.c(2):   0x1001\n0.509101 PTP/library.c(2):   0x1002\n0.509106 PTP/library.c(2):   0x1003\n0.509110 PTP/library.c(2):   0x1004\n0.509114 PTP/library.c(2):   0x1005\n0.509119 PTP/library.c(2):   0x1006\n0.509142 PTP/library.c(2):   0x1007\n0.509147 PTP/library.c(2):   0x1008\n0.509152 PTP/library.c(2):   0x1009\n0.509156 PTP/library.c(2):   0x100a\n0.509160 PTP/library.c(2):   0x100b\n0.509165 PTP/library.c(2):   0x100c\n0.509169 PTP/library.c(2):   0x100d\n0.509173 PTP/library.c(2):   0x100e\n0.509178 PTP/library.c(2):   0x100f\n0.509182 PTP/library.c(2):   0x1012\n0.509186 PTP/library.c(2):   0x1014\n0.509191 PTP/library.c(2):   0x1015\n0.509195 PTP/library.c(2):   0x1016\n0.509199 PTP/library.c(2):   0x101b\n0.509203 PTP/library.c(2):   0x9001\n0.509208 PTP/library.c(2):   0x9002\n0.509212 PTP/library.c(2):   0x9003\n0.509216 PTP/library.c(2):   0x9006\n0.509221 PTP/library.c(2):   0x9008\n0.509225 PTP/library.c(2):   0x9009\n0.509229 PTP/library.c(2):   0x900a\n0.509234 PTP/library.c(2):   0x900b\n0.509238 PTP/library.c(2):   0x900c\n0.509242 PTP/library.c(2):   0x900d\n0.509247 PTP/library.c(2):   0x900e\n0.509251 PTP/library.c(2):   0x900f\n0.509255 PTP/library.c(2):   0x9010\n0.509259 PTP/library.c(2):   0x9011\n0.509264 PTP/library.c(2):   0x9012\n0.509268 PTP/library.c(2):   0x9013\n0.509272 PTP/library.c(2):   0x9014\n0.509277 PTP/library.c(2):   0x9015\n0.509281 PTP/library.c(2):   0x9018\n0.509285 PTP/library.c(2):   0x9019\n0.509290 PTP/library.c(2):   0x901a\n0.509294 PTP/library.c(2):   0x901b\n0.509298 PTP/library.c(2):   0x901c\n0.509303 PTP/library.c(2):   0x901d\n0.509307 PTP/library.c(2):   0x901e\n0.509311 PTP/library.c(2):   0x901f\n0.509316 PTP/library.c(2):   0x9020\n0.509320 PTP/library.c(2):   0x9021\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrabbit%2Flibptp-chdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrabbit%2Flibptp-chdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrabbit%2Flibptp-chdk/lists"}