aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Zhang <zhangjerry@google.com>2017-10-18 00:38:04 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-10-18 00:38:04 +0000
commitbe6bd95db147c9e649408bcba5853871c6e39b63 (patch)
tree527fc1d4cc375fcca1c4f6d7cadd934e988e0241
parent1aee04c92cd311aa79458b10d8cbb60124ee276d (diff)
parentb082e3dcac87581fa97fc08998893311121e21e7 (diff)
downloadlibmtp-be6bd95db147c9e649408bcba5853871c6e39b63.tar.gz
Merge changes I0416b952,I53785040
am: b082e3dcac Change-Id: I9a0ac97096bd30fdde7a372c6909a3c8668275be
-rw-r--r--ChangeLog5
-rw-r--r--MODULE_LICENSE_LGPL0
-rw-r--r--MacConfigExternalDebug.xcconfig19
-rw-r--r--MacConfigExternalRelease.xcconfig27
-rw-r--r--Makefile.in792
-rw-r--r--NOTICE504
-rw-r--r--README.version3
-rw-r--r--aclocal.m42158
-rwxr-xr-xautogen.sh63
-rw-r--r--config.guess1526
-rw-r--r--config.h192
-rw-r--r--config.h.in195
-rw-r--r--config.rpath0
-rw-r--r--config.sub1658
-rwxr-xr-xconfigure18408
-rw-r--r--configure.ac2
-rwxr-xr-xdepcomp630
-rw-r--r--doc/.cvsignore6
-rw-r--r--doc/Makefile.in384
-rw-r--r--examples/.cvsignore25
-rw-r--r--examples/Makefile.in687
-rw-r--r--examples/detect.c3
-rwxr-xr-xinstall-sh520
-rw-r--r--libmtp.pc15
-rw-r--r--libmtp.sh45
-rw-r--r--libmtp.xcodeproj/project.pbxproj359
-rw-r--r--logs/README.TXT3
-rw-r--r--logs/gigabeat1.html5950
-rw-r--r--logs/mtp-detect-archos-5-v1.txt693
-rw-r--r--logs/mtp-detect-archos-5.txt12
-rw-r--r--logs/mtp-detect-archos-a504.txt561
-rw-r--r--logs/mtp-detect-archos-xs100.txt270
-rw-r--r--logs/mtp-detect-cowon-iaudio-d2.txt458
-rw-r--r--logs/mtp-detect-cowon-iaudio-d2plus.txt526
-rw-r--r--logs/mtp-detect-cowon-iaudio-s9.txt535
-rw-r--r--logs/mtp-detect-cowon-iaudio-u3.txt260
-rw-r--r--logs/mtp-detect-creative-zen-2GB.txt374
-rw-r--r--logs/mtp-detect-creative-zen-4GB.txt458
-rw-r--r--logs/mtp-detect-creative-zen-V-plus.txt693
-rw-r--r--logs/mtp-detect-creative-zen-V.txt317
-rw-r--r--logs/mtp-detect-creative-zen-micro.txt288
-rw-r--r--logs/mtp-detect-creative-zen-microphoto.txt273
-rw-r--r--logs/mtp-detect-creative-zen-mozaic.txt443
-rw-r--r--logs/mtp-detect-creative-zen-pmc.txt334
-rw-r--r--logs/mtp-detect-creative-zen-vision-M-DVP-HD0004.txt474
-rw-r--r--logs/mtp-detect-creative-zen-vision-M.txt481
-rw-r--r--logs/mtp-detect-creative-zen-vision-W.txt388
-rw-r--r--logs/mtp-detect-creative-zen-x-fi.txt650
-rw-r--r--logs/mtp-detect-gigaware-gx400.txt14
-rw-r--r--logs/mtp-detect-haier-ibiza-rhapsody.txt472
-rw-r--r--logs/mtp-detect-insignia-DV4G.txt429
-rw-r--r--logs/mtp-detect-iriver-clix.txt355
-rw-r--r--logs/mtp-detect-iriver-clix2.txt391
-rw-r--r--logs/mtp-detect-iriver-e100.txt316
-rw-r--r--logs/mtp-detect-iriver-e100v2.txt324
-rw-r--r--logs/mtp-detect-iriver-h10-20GB.txt142
-rw-r--r--logs/mtp-detect-iriver-lplayer.txt325
-rw-r--r--logs/mtp-detect-iriver-spinn.txt378
-rw-r--r--logs/mtp-detect-iriver-t10.txt191
-rw-r--r--logs/mtp-detect-iriver-t20.txt297
-rw-r--r--logs/mtp-detect-iriver-t30.txt287
-rw-r--r--logs/mtp-detect-iriver-t60.txt211
-rw-r--r--logs/mtp-detect-iriver-t7-volcano.txt207
-rw-r--r--logs/mtp-detect-iriver-u10.txt169
-rw-r--r--logs/mtp-detect-lg-km900.txt334
-rw-r--r--logs/mtp-detect-lg-vx8550.txt255
-rw-r--r--logs/mtp-detect-logik-dax-dab.txt220
-rw-r--r--logs/mtp-detect-maxfield-g-flash-ng-1GB.txt145
-rw-r--r--logs/mtp-detect-memorex-mmp8585.txt327
-rw-r--r--logs/mtp-detect-microsoft-portkit.txt302
-rw-r--r--logs/mtp-detect-motorola-razr2-v8.txt259
-rw-r--r--logs/mtp-detect-motorola-u9.txt269
-rw-r--r--logs/mtp-detect-motorola-v3m-verizon.txt150
-rw-r--r--logs/mtp-detect-motorola-v750.txt313
-rw-r--r--logs/mtp-detect-motorola-z6.txt278
-rw-r--r--logs/mtp-detect-mymusix-pd6070.txt124
-rw-r--r--logs/mtp-detect-nokia-3109c.txt470
-rw-r--r--logs/mtp-detect-nokia-3110c.txt367
-rw-r--r--logs/mtp-detect-nokia-5300.txt368
-rw-r--r--logs/mtp-detect-nokia-5310.txt512
-rw-r--r--logs/mtp-detect-nokia-5320.txt470
-rw-r--r--logs/mtp-detect-nokia-5530.txt489
-rw-r--r--logs/mtp-detect-nokia-5700.txt395
-rw-r--r--logs/mtp-detect-nokia-5800.txt155
-rw-r--r--logs/mtp-detect-nokia-6120c.txt331
-rw-r--r--logs/mtp-detect-nokia-6205.txt315
-rw-r--r--logs/mtp-detect-nokia-6220.txt470
-rw-r--r--logs/mtp-detect-nokia-6500c.txt519
-rw-r--r--logs/mtp-detect-nokia-e66.txt408
-rw-r--r--logs/mtp-detect-nokia-e71.txt403
-rw-r--r--logs/mtp-detect-nokia-n73.txt324
-rw-r--r--logs/mtp-detect-nokia-n75.txt386
-rw-r--r--logs/mtp-detect-nokia-n78.txt475
-rw-r--r--logs/mtp-detect-nokia-n80.txt324
-rw-r--r--logs/mtp-detect-nokia-n81.txt433
-rw-r--r--logs/mtp-detect-nokia-n82.txt439
-rw-r--r--logs/mtp-detect-nokia-n85.txt473
-rw-r--r--logs/mtp-detect-nokia-n95.txt342
-rw-r--r--logs/mtp-detect-nokia-n97.txt495
-rw-r--r--logs/mtp-detect-nokia.txt431
-rw-r--r--logs/mtp-detect-panasonic-p905i.txt229
-rw-r--r--logs/mtp-detect-philips-aria.txt490
-rw-r--r--logs/mtp-detect-philips-hdd1630_17.txt250
-rw-r--r--logs/mtp-detect-philips-hdd6320_00.txt252
-rw-r--r--logs/mtp-detect-philips-psa610.txt265
-rw-r--r--logs/mtp-detect-philips-sa5145.txt249
-rw-r--r--logs/mtp-detect-philips-sa6025.txt400
-rw-r--r--logs/mtp-detect-philips-sa6045.txt414
-rw-r--r--logs/mtp-detect-philips-vibe8gb.txt493
-rw-r--r--logs/mtp-detect-phillips-hdd1630_17.txt250
-rw-r--r--logs/mtp-detect-pioneer-xmp3.txt511
-rw-r--r--logs/mtp-detect-pocket-tunes-4.txt224
-rw-r--r--logs/mtp-detect-pocket-tunes.txt201
-rw-r--r--logs/mtp-detect-polaroid-freescape.txt296
-rw-r--r--logs/mtp-detect-samsung-GT-B2700.txt431
-rw-r--r--logs/mtp-detect-samsung-gt-s5230.txt262
-rw-r--r--logs/mtp-detect-samsung-juke.txt356
-rw-r--r--logs/mtp-detect-samsung-sgh-a707.txt326
-rw-r--r--logs/mtp-detect-samsung-sgh-l760v.txt422
-rw-r--r--logs/mtp-detect-samsung-sgh-u900.txt146
-rw-r--r--logs/mtp-detect-samsung-trance.txt359
-rw-r--r--logs/mtp-detect-samsung-x830.txt324
-rw-r--r--logs/mtp-detect-samsung-yepp-t9.txt185
-rw-r--r--logs/mtp-detect-samsung-yh-820.txt331
-rw-r--r--logs/mtp-detect-samsung-yh-925.txt219
-rw-r--r--logs/mtp-detect-samsung-yp-k3.txt240
-rw-r--r--logs/mtp-detect-samsung-yp-k5.txt218
-rw-r--r--logs/mtp-detect-samsung-yp-p3.txt583
-rw-r--r--logs/mtp-detect-samsung-yp-q1.txt429
-rw-r--r--logs/mtp-detect-samsung-yp-q2.txt444
-rw-r--r--logs/mtp-detect-samsung-yp-s3.txt405
-rw-r--r--logs/mtp-detect-samsung-yp-t10.txt414
-rw-r--r--logs/mtp-detect-samsung-yp-u3.txt402
-rw-r--r--logs/mtp-detect-samsung-yp-u4.txt350
-rw-r--r--logs/mtp-detect-samsung-yp-u5.txt530
-rw-r--r--logs/mtp-detect-sandisk-sansa-c240.txt790
-rw-r--r--logs/mtp-detect-sandisk-sansa-c250.txt450
-rw-r--r--logs/mtp-detect-sandisk-sansa-clip-v2.txt494
-rw-r--r--logs/mtp-detect-sandisk-sansa-clip.txt322
-rw-r--r--logs/mtp-detect-sandisk-sansa-connect.txt244
-rw-r--r--logs/mtp-detect-sandisk-sansa-e260.txt253
-rw-r--r--logs/mtp-detect-sandisk-sansa-e270.txt246
-rw-r--r--logs/mtp-detect-sandisk-sansa-e280.txt251
-rw-r--r--logs/mtp-detect-sandisk-sansa-e280v2.txt593
-rw-r--r--logs/mtp-detect-sandisk-sansa-express.txt397
-rw-r--r--logs/mtp-detect-sandisk-sansa-fuze.txt451
-rw-r--r--logs/mtp-detect-sandisk-sansa-fuzev2.txt516
-rw-r--r--logs/mtp-detect-sandisk-sansa-m240.txt284
-rw-r--r--logs/mtp-detect-sirius-stiletto2.txt254
-rw-r--r--logs/mtp-detect-slacker-pmp.txt163
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-a728b.txt384
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-a816.txt315
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-a818.txt299
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-a828.txt375
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-a829.txt375
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-e436f.txt483
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-s516.txt370
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-s616f.txt309
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-s618f.txt306
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-s638f.txt425
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-s716f.txt368
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-s739f.txt433
-rw-r--r--logs/mtp-detect-sony-walkman-nwz-w202.txt555
-rw-r--r--logs/mtp-detect-sonyericsson-c702.txt490
-rw-r--r--logs/mtp-detect-sonyericsson-c902.txt626
-rw-r--r--logs/mtp-detect-sonyericsson-c905.txt496
-rw-r--r--logs/mtp-detect-sonyericsson-k850i.txt530
-rw-r--r--logs/mtp-detect-sonyericsson-t700.txt480
-rw-r--r--logs/mtp-detect-sonyericsson-w595.txt485
-rw-r--r--logs/mtp-detect-sonyericsson-w705.txt521
-rw-r--r--logs/mtp-detect-sonyericsson-w715.txt519
-rw-r--r--logs/mtp-detect-sonyericsson-w760i.txt477
-rw-r--r--logs/mtp-detect-sonyericsson-w890i.txt160
-rw-r--r--logs/mtp-detect-sonyericsson-w902.txt485
-rw-r--r--logs/mtp-detect-sonyericsson-w910.txt650
-rw-r--r--logs/mtp-detect-sonyericsson-w980.txt469
-rw-r--r--logs/mtp-detect-thomson-em2804.txt391
-rw-r--r--logs/mtp-detect-thomson-m51.txt150
-rw-r--r--logs/mtp-detect-thomson-rcah106.txt303
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-met401.txt524
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-meu202.txt317
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-p10.txt159
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-p20.txt250
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-s.txt458
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-t.txt461
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-u.txt307
-rw-r--r--logs/mtp-detect-toshiba-gigabeat-v30.txt141
-rw-r--r--logs/mtp-detect-trekstor-ibeat-sweez-fm.txt210
-rw-r--r--logs/mtp-detect-trekstor-vibez.txt775
-rw-r--r--logs/mtp-detect-ziilabs-egg.txt418
-rw-r--r--logs/mtp-detect-zoltartv.txt290
-rw-r--r--logs/mtp-detect-zune.txt601
-rwxr-xr-xltmain.sh8406
-rw-r--r--m4/libtool.m47360
-rw-r--r--m4/ltoptions.m4368
-rw-r--r--m4/ltsugar.m4123
-rw-r--r--m4/ltversion.m423
-rw-r--r--m4/lt~obsolete.m492
-rwxr-xr-xmissing376
-rw-r--r--src/.cvsignore14
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in616
-rw-r--r--src/gphoto2-endian-intel.h137
-rw-r--r--src/gphoto2-endian-ppc.h119
-rw-r--r--src/gphoto2-endian.h7
-rwxr-xr-xsrc/gphoto2-sync.sh24
-rw-r--r--src/libmtp.c299
-rw-r--r--src/libmtp.h941
-rw-r--r--src/libptp-stdint.h2
-rw-r--r--src/libusb-glue.c211
-rw-r--r--src/music-players.h4
-rw-r--r--src/playlist-spl.c2
-rw-r--r--src/ptp-pack.c3
-rw-r--r--src/ptp.c1
-rwxr-xr-xsync-usbids.sh13
215 files changed, 66682 insertions, 47154 deletions
diff --git a/ChangeLog b/ChangeLog
index f6c3500..e6199ce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,3 @@
-2009-09-12 Linus Walleij <triad@df.lth.se>
-
- * configure.ac: bump version to libmtp 1.0.1 and release!
- * src/Makefile.am: bump soversion to libmtp.so.8.3.1
-
2009-09-11 Linus Walleij <triad@df.lth.se>
* src/music-players.h: tag all SONY NWZ walkmen with
diff --git a/MODULE_LICENSE_LGPL b/MODULE_LICENSE_LGPL
deleted file mode 100644
index e69de29..0000000
--- a/MODULE_LICENSE_LGPL
+++ /dev/null
diff --git a/MacConfigExternalDebug.xcconfig b/MacConfigExternalDebug.xcconfig
deleted file mode 100644
index 3fb74c5..0000000
--- a/MacConfigExternalDebug.xcconfig
+++ /dev/null
@@ -1,19 +0,0 @@
-SDKROOT=macosx10.5
-ARCHS=i386
-GCC_ALTIVEC_EXTENSIONS=YES
-GCC_ENABLE_CPP_EXCEPTIONS=YES
-GCC_ENABLE_FIX_AND_CONTINUE=NO
-GCC_ENABLE_SSE3_EXTENSIONS=YES
-GCC_INLINES_ARE_PRIVATE_EXTERN=YES
-GCC_OPTIMIZATION_LEVEL=0
-GCC_PREPROCESSOR_DEFINITIONS=DEBUG _DEBUG _PORT_DEBUG _BACKWARD_BACKWARD_WARNING_H _AFT_BUILD
-GCC_SYMBOLS_PRIVATE_EXTERN=YES
-GCC_VERSION=4.2
-INSTALL_PATH=@executable_path
-MACOSX_DEPLOYMENT_TARGET=10.5
-MAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5
-MAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_5
-OTHER_CFLAGS=-fexceptions
-SDKROOT=macosx10.5
-WARNING_CFLAGS=-Wno-deprecated-declarations
-ZERO_LINK=NO
diff --git a/MacConfigExternalRelease.xcconfig b/MacConfigExternalRelease.xcconfig
deleted file mode 100644
index 6a58f19..0000000
--- a/MacConfigExternalRelease.xcconfig
+++ /dev/null
@@ -1,27 +0,0 @@
-SDKROOT=macosx10.5
-ARCHS=ppc i386
-COPY_PHASE_STRIP=NO
-DEAD_CODE_STRIPPING=YES
-DEBUG_INFORMATION_FORMAT=dwarf-with-dsym
-DEPLOYMENT_POSTPROCESSING=YES
-GCC_ALTIVEC_EXTENSIONS=YES
-GCC_ENABLE_CPP_EXCEPTIONS=YES
-GCC_ENABLE_FIX_AND_CONTINUE=NO
-GCC_ENABLE_SSE3_EXTENSIONS=YES
-GCC_GENERATE_DEBUGGING_SYMBOLS=YES
-GCC_INLINES_ARE_PRIVATE_EXTERN=YES
-GCC_PREPROCESSOR_DEFINITIONS=NDEBUG _NDEBUG _PORT_NDEBUG _BACKWARD_BACKWARD_WARNING_H _AFT_BUILD
-GCC_SYMBOLS_PRIVATE_EXTERN=YES
-GCC_UNROLL_LOOPS=YES
-GCC_VERSION=4.2
-INSTALL_PATH=@executable_path
-MACOSX_DEPLOYMENT_TARGET=10.5
-MAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_5
-MAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_5
-OTHER_CFLAGS=-fexceptions
-PRESERVE_DEAD_CODE_INITS_AND_TERMS=YES
-SDKROOT=macosx10.5
-SEPARATE_STRIP=YES
-STRIP_INSTALLED_PRODUCT=YES
-WARNING_CFLAGS=-Wno-deprecated-declarations
-ZERO_LINK=NO
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 2c20865..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,792 +0,0 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(srcdir)/hotplug.sh.in $(srcdir)/libmtp.pc.in \
- $(srcdir)/libmtp.sh.in $(top_srcdir)/configure AUTHORS COPYING \
- ChangeLog INSTALL TODO config.guess config.rpath config.sub \
- depcomp install-sh ltmain.sh missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/byteorder.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = libmtp.sh hotplug.sh libmtp.pc
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-DATA = $(noinst_DATA) $(pkgconfig_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- { test ! -d "$(distdir)" \
- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr "$(distdir)"; }; }
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-HAVE_DOXYGEN = @HAVE_DOXYGEN@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OSFLAGS = @OSFLAGS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-ms_lib_exe = @ms_lib_exe@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = src examples doc
-ACLOCAL_AMFLAGS = -I m4
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libmtp.pc
-EXTRA_DIST = libmtp.pc libmtp.sh COPYING README.windows.txt
-noinst_DATA = libmtp.usermap libmtp.rules libmtp.fdi
-CLEANFILES = libmtp.usermap libmtp.rules libmtp.fdi
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
- @:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: $(am__configure_deps)
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f config.h stamp-h1
-libmtp.sh: $(top_builddir)/config.status $(srcdir)/libmtp.sh.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-hotplug.sh: $(top_builddir)/config.status $(srcdir)/hotplug.sh.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-libmtp.pc: $(top_builddir)/config.status $(srcdir)/libmtp.pc.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool config.lt
-install-pkgconfigDATA: $(pkgconfig_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
- @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
- done
-
-uninstall-pkgconfigDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
- $(am__remove_distdir)
-
-dist-lzma: distdir
- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
- $(am__remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
- $(am__remove_distdir)
-
-dist-tarZ: distdir
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__remove_distdir)
-
-dist-shar: distdir
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__remove_distdir)
-
-dist dist-all: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lzma*) \
- unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
- mkdir $(distdir)/_build
- mkdir $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @$(am__cd) '$(distuninstallcheck_dir)' \
- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA) config.h
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
- distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-pkgconfigDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-pkgconfigDATA
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
- ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am am--refresh check check-am clean clean-generic \
- clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
- dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
- distcheck distclean distclean-generic distclean-hdr \
- distclean-libtool distclean-tags distcleancheck distdir \
- distuninstallcheck dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pkgconfigDATA install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am uninstall-pkgconfigDATA
-
-libmtp.usermap: examples/hotplug
- examples/hotplug > libmtp.usermap
-libmtp.rules: examples/hotplug
- examples/hotplug -u > libmtp.rules
-libmtp.fdi: examples/hotplug
- examples/hotplug -H > libmtp.fdi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index 213a1ab..0000000
--- a/NOTICE
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright © 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright © <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/README.version b/README.version
deleted file mode 100644
index b80bbc7..0000000
--- a/README.version
+++ /dev/null
@@ -1,3 +0,0 @@
-URL: http://sourceforge.net/projects/libmtp/files/libmtp/1.0.1/libmtp-1.0.1.tar.gz/download
-Version: 1.0.1
-BugComponent: 49005
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index 225c014..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,2158 +0,0 @@
-# generated automatically by aclocal 1.11 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
-You have another version of autoconf. It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# iconv.m4 serial AM6 (gettext-0.17)
-dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
- dnl those with the standalone portable GNU libiconv installed).
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
- dnl Add $INCICONV to CPPFLAGS before performing the following checks,
- dnl because if the user has installed libiconv and not disabled its use
- dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
- am_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
- AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_func_iconv=yes)
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes)
- LIBS="$am_save_LIBS"
- fi
- ])
- if test "$am_cv_func_iconv" = yes; then
- AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
- dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
- am_save_LIBS="$LIBS"
- if test $am_cv_lib_iconv = yes; then
- LIBS="$LIBS $LIBICONV"
- fi
- AC_TRY_RUN([
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
- returns. */
- {
- iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
- if (cd_utf8_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\342\202\254"; /* EURO SIGN */
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- return 1;
- }
- }
-#if 0 /* This bug could be worked around by the caller. */
- /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
- {
- iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
- if (cd_88591_to_utf8 != (iconv_t)(-1))
- {
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
- char buf[50];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if ((int)res > 0)
- return 1;
- }
- }
-#endif
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
- [case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac])
- LIBS="$am_save_LIBS"
- ])
- case "$am_cv_func_iconv_works" in
- *no) am_func_iconv=no am_cv_lib_iconv=no ;;
- *) am_func_iconv=yes ;;
- esac
- else
- am_func_iconv=no am_cv_lib_iconv=no
- fi
- if test "$am_func_iconv" = yes; then
- AC_DEFINE(HAVE_ICONV, 1,
- [Define if you have the iconv() function and it works.])
- fi
- if test "$am_cv_lib_iconv" = yes; then
- AC_MSG_CHECKING([how to link with libiconv])
- AC_MSG_RESULT([$LIBICONV])
- else
- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
- dnl either.
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
- AC_SUBST(LIBICONV)
- AC_SUBST(LTLIBICONV)
-])
-
-AC_DEFUN([AM_ICONV],
-[
- AM_ICONV_LINK
- if test "$am_cv_func_iconv" = yes; then
- AC_MSG_CHECKING([for iconv declaration])
- AC_CACHE_VAL(am_cv_proto_iconv, [
- AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([$]{ac_t:-
- }[$]am_cv_proto_iconv)
- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
- [Define as const if the declaration of iconv() needs const.])
- fi
-])
-
-# lib-ld.m4 serial 3 (gettext-0.13)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
-
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes ;;
-*)
- acl_cv_prog_gnu_ld=no ;;
-esac])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-1.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]* | [A-Za-z]:[\\/]*)]
- [re_direlt='/[^/][^/]*/\.\./']
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(acl_cv_path_LD,
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
- *)
- test "$with_gnu_ld" != yes && break ;;
- esac
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
-
-# lib-link.m4 serial 13 (gettext-0.17)
-dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_PREREQ(2.54)
-
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
-dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
- ac_cv_lib[]Name[]_libs="$LIB[]NAME"
- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
- ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
- ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
- ])
- LIB[]NAME="$ac_cv_lib[]Name[]_libs"
- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
- INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
- LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- AC_SUBST([LIB]NAME[_PREFIX])
- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
- dnl results of this search when this library appears as a dependency.
- HAVE_LIB[]NAME=yes
- undefine([Name])
- undefine([NAME])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
-dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
- dnl because if the user has installed lib[]Name and not disabled its use
- dnl via --without-lib[]Name-prefix, he wants to use it.
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIB[]NAME"
- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
- LIBS="$ac_save_LIBS"
- ])
- if test "$ac_cv_lib[]Name" = yes; then
- HAVE_LIB[]NAME=yes
- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
- AC_MSG_CHECKING([how to link with lib[]$1])
- AC_MSG_RESULT([$LIB[]NAME])
- else
- HAVE_LIB[]NAME=no
- dnl If $LIB[]NAME didn't lead to a usable library, we don't need
- dnl $INC[]NAME either.
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIB[]NAME=
- LTLIB[]NAME=
- LIB[]NAME[]_PREFIX=
- fi
- AC_SUBST([HAVE_LIB]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- AC_SUBST([LIB]NAME[_PREFIX])
- undefine([Name])
- undefine([NAME])
-])
-
-dnl Determine the platform dependent parameters needed to use rpath:
-dnl acl_libext,
-dnl acl_shlibext,
-dnl acl_hardcode_libdir_flag_spec,
-dnl acl_hardcode_libdir_separator,
-dnl acl_hardcode_direct,
-dnl acl_hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
- dnl Tell automake >= 1.10 to complain if config.rpath is missing.
- m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
- ])
- wl="$acl_cv_wl"
- acl_libext="$acl_cv_libext"
- acl_shlibext="$acl_cv_shlibext"
- acl_libname_spec="$acl_cv_libname_spec"
- acl_library_names_spec="$acl_cv_library_names_spec"
- acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- acl_hardcode_direct="$acl_cv_hardcode_direct"
- acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
- dnl Determine whether the user wants rpath handling at all.
- AC_ARG_ENABLE(rpath,
- [ --disable-rpath do not hardcode runtime library paths],
- :, enable_rpath=yes)
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
-dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
- AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- dnl Autoconf >= 2.61 supports dots in --with options.
- define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
-[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
- --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- fi
- fi
-])
- dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-seach.
- LIB[]NAME=
- LTLIB[]NAME=
- INC[]NAME=
- LIB[]NAME[]_PREFIX=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='$1 $2'
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
- dnl or AC_LIB_HAVE_LINKFLAGS call.
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
- else
- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
- dnl that this library doesn't exist. So just drop it.
- :
- fi
- else
- dnl Search the library lib$name in $additional_libdir and $LDFLAGS
- dnl and the already constructed $LIBNAME/$LTLIBNAME.
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- dnl The same code as in the loop below:
- dnl First look for a shared library.
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- dnl Then look for a static library.
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- dnl First look for a shared library.
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- dnl Then look for a static library.
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- dnl Found the library.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- dnl Linking with a shared library. We attempt to hardcode its
- dnl directory into the executable's runpath, unless it's the
- dnl standard /usr/lib.
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
- dnl No hardcoding is needed.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- dnl The hardcoding into $LIBNAME is system dependent.
- if test "$acl_hardcode_direct" = yes; then
- dnl Using DIR/libNAME.so during linking hardcodes DIR into the
- dnl resulting binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- dnl Rely on "-L$found_dir".
- dnl But don't add it if it's already contained in the LDFLAGS
- dnl or the already constructed $LIBNAME
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
- dnl here, because this doesn't fit in flags passed to the
- dnl compiler. So give up. No hardcoding. This affects only
- dnl very old systems.
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- dnl Linking with a static library.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
- else
- dnl We shouldn't come here, but anyway it's good to have a
- dnl fallback.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
- fi
- fi
- dnl Assume the include files are nearby.
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- LIB[]NAME[]_PREFIX="$basedir"
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- dnl Potentially add $additional_includedir to $INCNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's /usr/local/include and we are using GCC on Linux,
- dnl 3. if it's already present in $CPPFLAGS or the already
- dnl constructed $INCNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INC[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $INCNAME.
- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- dnl Look for dependencies.
- if test -n "$found_la"; then
- dnl Read the .la file. It defines the variables
- dnl dlname, library_names, old_library, dependency_libs, current,
- dnl age, revision, installed, dlopen, dlpreopen, libdir.
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- dnl We use only dependency_libs.
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 3. if it's already present in $LDFLAGS or the already
- dnl constructed $LIBNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LIBNAME.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LTLIBNAME.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- dnl Handle this in the next round.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- dnl Handle this in the next round. Throw away the .la's
- dnl directory; it is already contained in a preceding -L
- dnl option.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- dnl Most likely an immediate library name.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
- ;;
- esac
- done
- fi
- else
- dnl Didn't find the library; assume it is in the system directories
- dnl known to the linker and runtime loader. (All the system
- dnl directories known to the linker should also be known to the
- dnl runtime loader, otherwise the system is severely misconfigured.)
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user must
- dnl pass all path elements in one option. We can arrange that for a
- dnl single library, but not when more than one $LIBNAMEs are used.
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- else
- dnl The -rpath options are cumulative.
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- dnl When using libtool, the option that works for both libraries and
- dnl executables is -R. The -R options are cumulative.
- for found_dir in $ltrpathdirs; do
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
- done
- fi
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
- for element in [$2]; do
- haveit=
- for x in $[$1]; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- [$1]="${[$1]}${[$1]:+ }$element"
- fi
- done
-])
-
-dnl For those cases where a variable contains several -L and -l options
-dnl referring to unknown libraries and directories, this macro determines the
-dnl necessary additional linker options for the runtime path.
-dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
-dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
-dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
-dnl otherwise linking without libtool is assumed.
-AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
-[
- AC_REQUIRE([AC_LIB_RPATH])
- AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- $1=
- if test "$enable_rpath" != no; then
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode directories into the resulting
- dnl binary.
- rpathdirs=
- next=
- for opt in $2; do
- if test -n "$next"; then
- dir="$next"
- dnl No need to hardcode the standard /usr/lib.
- if test "X$dir" != "X/usr/$acl_libdirstem"; then
- rpathdirs="$rpathdirs $dir"
- fi
- next=
- else
- case $opt in
- -L) next=yes ;;
- -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
- dnl No need to hardcode the standard /usr/lib.
- if test "X$dir" != "X/usr/$acl_libdirstem"; then
- rpathdirs="$rpathdirs $dir"
- fi
- next= ;;
- *) next= ;;
- esac
- fi
- done
- if test "X$rpathdirs" != "X"; then
- if test -n ""$3""; then
- dnl libtool is used for linking. Use -R options.
- for dir in $rpathdirs; do
- $1="${$1}${$1:+ }-R$dir"
- done
- else
- dnl The linker is used for linking directly.
- if test -n "$acl_hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user
- dnl must pass all path elements in one option.
- alldirs=
- for dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- $1="$flag"
- else
- dnl The -rpath options are cumulative.
- for dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- $1="${$1}${$1:+ }$flag"
- done
- fi
- fi
- fi
- fi
- fi
- AC_SUBST([$1])
-])
-
-# lib-prefix.m4 serial 5 (gettext-0.15)
-dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
- AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib-prefix],
-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- fi
- fi
-])
- if test $use_additional = yes; then
- dnl Potentially add $additional_includedir to $CPPFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's already present in $CPPFLAGS,
- dnl 3. if it's /usr/local/include and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- for x in $CPPFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $CPPFLAGS.
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- dnl Potentially add $additional_libdir to $LDFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's already present in $LDFLAGS,
- dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
- haveit=
- for x in $LDFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LDFLAGS.
- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
- dnl Unfortunately, prefix and exec_prefix get only finally determined
- dnl at the end of configure.
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- $1
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
-dnl the basename of the libdir, either "lib" or "lib64".
-AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
-[
- dnl There is no formal standard regarding lib and lib64. The current
- dnl practice is that on a system supporting 32-bit and 64-bit instruction
- dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
- dnl libraries go under $prefix/lib. We determine the compiler's default
- dnl mode by looking at the compiler's library search path. If at least
- dnl of its elements ends in /lib64 or points to a directory whose absolute
- dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
- dnl default, namely "lib".
- acl_libdirstem=lib
- searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
-])
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11], [],
- [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too. Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory. The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run. This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-# fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-# fails if $ac_aux_dir is absolute,
-# fails when called from a subdirectory in a VPATH build with
-# a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-# MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH. The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 10
-
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
- [$1], CXX, [depcc="$CXX" am_compiler_list=],
- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], UPC, [depcc="$UPC" am_compiler_list=],
- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- am__universal=false
- m4_case([$1], [CC],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac],
- [CXX],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac])
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each `.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
-# Do all the work for Automake. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 16
-
-# This macro actually does too much. Some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
-dnl Autoconf wants to disallow AM_ names. We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
- [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
- [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES(OBJC)],
- [define([AC_PROG_OBJC],
- defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
- [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-])
-
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-AC_SUBST(install_sh)])
-
-# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 4
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Check to make sure that the build environment is sane. -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[[\\\"\#\$\&\'\`$am_lf]]*)
- AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
- *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball. -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 2
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-# tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-# $(am__untar) < result.tar
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
- [m4_case([$1], [ustar],, [pax],,
- [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar;
- do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
-
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
-
- # tar/untar a dummy directory, and stop if the command works
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
- rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
-done
-rm -rf conftest.dir
-
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/byteorder.m4])
-m4_include([m4/libtool.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
-m4_include([m4/stdint.m4])
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..cb42321
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,63 @@
+#!/bin/sh
+#set -e
+
+srcdir=`dirname $0`
+
+ACLOCAL_FLAGS="-I ${srcdir}/m4 ${ACLOCAL_FLAGS}"
+
+fail() {
+ status=$?
+ echo "Last command failed with status $status in directory $(pwd)."
+ echo "Aborting"
+ exit $status
+}
+
+# Refresh GNU autotools toolchain: libtool
+echo "Removing libtool cruft"
+rm -f ltmain.sh config.guess config.sub
+echo "Running libtoolize"
+libtoolize --copy --force || fail
+
+# Refresh GNU autotools toolchain: aclocal autoheader
+echo "Removing aclocal cruft"
+rm -f aclocal.m4
+echo "Running aclocal $ACLOCAL_FLAGS"
+aclocal $ACLOCAL_FLAGS || fail
+echo "Removing autoheader cruft"
+rm -f config.h.in src/config.h.in
+echo "Running autoheader"
+autoheader || fail
+
+# Refresh GNU autotools toolchain: automake
+echo "Removing automake cruft"
+rm -f depcomp install-sh missing mkinstalldirs
+rm -f stamp-h*
+echo "Running automake"
+touch config.rpath
+automake --add-missing --gnu || fail
+
+# Refresh GNU autotools toolchain: autoconf
+echo "Removing autoconf cruft"
+rm -f configure
+rm -rf autom4te*.cache/
+echo "Running autoconf"
+autoconf
+
+# Autoupdate config.sub and config.guess
+# from GNU CVS
+WGET=`which wget`
+if [ "x$WGET" != "x" ]; then
+ echo "Autoupdate config.sub and config.guess (y/n)?"
+ read IN
+ if [ "$IN" = "y" ] || [ "$IN" = "Y" ]; then
+ wget -O tmpfile http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+ mv tmpfile config.guess
+ wget -O tmpfile http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+ mv tmpfile config.sub
+ fi
+else
+ echo "Could not autoupdate config.sub and config.guess"
+fi
+
+echo "Finished!"
+
diff --git a/config.guess b/config.guess
deleted file mode 100644
index f32079a..0000000
--- a/config.guess
+++ /dev/null
@@ -1,1526 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-# Free Software Foundation, Inc.
-
-timestamp='2008-01-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- sh5el) machine=sh5le-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- *:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[456])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- esac
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- *:Interix*:[3456]*)
- case ${UNAME_MACHINE} in
- x86)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T | authenticamd)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
- IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
- exit ;;
- esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- arm*:Linux:*:*)
- eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_EABI__
- then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
- fi
- exit ;;
- avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit ;;
- xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
- exit ;;
- i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
- exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config.h b/config.h
deleted file mode 100644
index 27edb8d..0000000
--- a/config.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/* config.h. Generated from config.h.in by configure. */
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define if building universal (internal helper macro) */
-/* #undef AC_APPLE_UNIVERSAL_BUILD */
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the `basename' function. */
-#define HAVE_BASENAME 1
-
-/* Define to 1 if you have the <byteswap.h> header file. */
-/* #undef HAVE_BYTESWAP_H */
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H 1
-
-/* Define if you have the iconv() function and it works. */
-#define HAVE_ICONV 1
-
-/* Define to 1 if you have the <iconv.h> header file. */
-#define HAVE_ICONV_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the <langinfo.h> header file. */
-#define HAVE_LANGINFO_H 1
-
-/* Define to 1 if you have the <libgen.h> header file. */
-#define HAVE_LIBGEN_H 1
-
-/* Define to 1 if you have the `usb' library (-lusb). */
-/* #undef HAVE_LIBUSB */
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#define HAVE_MALLOC 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the `mkstemp' function. */
-#define HAVE_MKSTEMP 1
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if `stat' has the bug that it succeeds when given the
- zero-length file name argument. */
-/* #undef HAVE_STAT_EMPTY_STRING_BUG */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#define HAVE_STDIO_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strrchr' function. */
-#define HAVE_STRRCHR 1
-
-/* Define to 1 if you have the `strtoul' function. */
-#define HAVE_STRTOUL 1
-
-/* Define to 1 if `st_blksize' is member of `struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-
-/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
- `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
-#define HAVE_ST_BLKSIZE 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#define HAVE_SYS_UIO_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `usleep' function. */
-#define HAVE_USLEEP 1
-
-/* Define as const if the declaration of iconv() needs const. */
-#define ICONV_CONST
-
-/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
- slash. */
-/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-/* Name of package */
-#define PACKAGE "libmtp"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "libmtp-discuss@lists.sourceforge.net"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "libmtp"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libmtp 1.0.1"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "libmtp"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.0.1"
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Version number of package */
-#define VERSION "1.0.1"
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#ifdef __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-#else
-# undef WORDS_BIGENDIAN
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to rpl_malloc if the replacement function should be used. */
-/* #undef malloc */
-
-/* Define to `long int' if <sys/types.h> does not define. */
-/* #undef off_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
diff --git a/config.h.in b/config.h.in
deleted file mode 100644
index 925807d..0000000
--- a/config.h.in
+++ /dev/null
@@ -1,195 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have the `basename' function. */
-#undef HAVE_BASENAME
-
-/* Define to 1 if you have the <byteswap.h> header file. */
-#undef HAVE_BYTESWAP_H
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#undef HAVE_CTYPE_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
-
-/* Define if you have the iconv() function and it works. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <iconv.h> header file. */
-#undef HAVE_ICONV_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H
-
-/* Define to 1 if you have the <libgen.h> header file. */
-#undef HAVE_LIBGEN_H
-
-/* Define to 1 if you have the `usb' library (-lusb). */
-#undef HAVE_LIBUSB
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the `mkstemp' function. */
-#undef HAVE_MKSTEMP
-
-/* Define to 1 if you have the `select' function. */
-#undef HAVE_SELECT
-
-/* Define to 1 if `stat' has the bug that it succeeds when given the
- zero-length file name argument. */
-#undef HAVE_STAT_EMPTY_STRING_BUG
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#undef HAVE_STDIO_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strrchr' function. */
-#undef HAVE_STRRCHR
-
-/* Define to 1 if you have the `strtoul' function. */
-#undef HAVE_STRTOUL
-
-/* Define to 1 if `st_blksize' is member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_BLKSIZE
-
-/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
- `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
-#undef HAVE_ST_BLKSIZE
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#undef HAVE_SYS_UIO_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
-
-/* Define as const if the declaration of iconv() needs const. */
-#undef ICONV_CONST
-
-/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
- slash. */
-#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Version number of package */
-#undef VERSION
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-# undef WORDS_BIGENDIAN
-# endif
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
-
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/config.rpath b/config.rpath
deleted file mode 100644
index e69de29..0000000
--- a/config.rpath
+++ /dev/null
diff --git a/config.sub b/config.sub
deleted file mode 100644
index 6759825..0000000
--- a/config.sub
+++ /dev/null
@@ -1,1658 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-# Free Software Foundation, Inc.
-
-timestamp='2008-01-16'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fido | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | mt \
- | msp430 \
- | nios | nios2 \
- | ns16k | ns32k \
- | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | score \
- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nios-* | nios2-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh5el)
- basic_machine=sh5le-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tile*)
- basic_machine=tile-unknown
- os=-linux-gnu
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- score-*)
- os=-elf
- ;;
- spu-*)
- os=-elf
- ;;
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mep-*)
- os=-elf
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/configure b/configure
deleted file mode 100755
index 1a23167..0000000
--- a/configure
+++ /dev/null
@@ -1,18408 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for libmtp 1.0.1.
-#
-# Report bugs to <libmtp-discuss@lists.sourceforge.net>.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-if test "x$CONFIG_SHELL" = x; then
- if (eval ":") 2>/dev/null; then
- as_have_required=yes
-else
- as_have_required=no
-fi
-
- if test $as_have_required = yes && (eval ":
-(as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=\$LINENO
- as_lineno_2=\$LINENO
- test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
- test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
- :
-else
- as_candidate_shells=
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- case $as_dir in
- /*)
- for as_base in sh bash ksh sh5; do
- as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
- done;;
- esac
-done
-IFS=$as_save_IFS
-
-
- for as_shell in $as_candidate_shells $SHELL; do
- # Try only shells that exist, to save several forks.
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-_ASEOF
-}; then
- CONFIG_SHELL=$as_shell
- as_have_required=yes
- if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-:
-(as_func_return () {
- (exit $1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
- break
-fi
-
-fi
-
- done
-
- if test "x$CONFIG_SHELL" != x; then
- for as_var in BASH_ENV ENV
- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- done
- export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
- if test $as_have_required = no; then
- echo This script requires a shell more modern than all the
- echo shells that I found on your system. Please install a
- echo modern shell, or manually run the script under such a
- echo shell if you do have one.
- { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
- (exit \$1)
-}
-as_func_success () {
- as_func_return 0
-}
-as_func_failure () {
- as_func_return 1
-}
-as_func_ret_success () {
- return 0
-}
-as_func_ret_failure () {
- return 1
-}
-
-exitcode=0
-if as_func_success; then
- :
-else
- exitcode=1
- echo as_func_success failed.
-fi
-
-if as_func_failure; then
- exitcode=1
- echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
- :
-else
- exitcode=1
- echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
- exitcode=1
- echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
- :
-else
- exitcode=1
- echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
- echo No shell found that supports shell functions.
- echo Please tell bug-autoconf@gnu.org about your system,
- echo including any error possibly output before this message.
- echo This can help us improve future autoconf versions.
- echo Configuration will now proceed without shell functions.
-}
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
- case `echo 'x\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
- # Remove one level of quotation (which was required for Make).
- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
- ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X$1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X$1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
- # Yippee, $ECHO works!
- :
-else
- # Restart under the correct shell.
- exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<_LT_EOF
-$*
-_LT_EOF
- exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
- if test "X${echo_test_string+set}" != Xset; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
- then
- break
- fi
- done
- fi
-
- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- :
- else
- # The Solaris, AIX, and Digital Unix default echo programs unquote
- # backslashes. This makes it impossible to quote backslashes using
- # echo "$something" | sed 's/\\/\\\\/g'
- #
- # So, first we look for a working echo in the user's PATH.
-
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
- IFS="$lt_save_ifs"
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- ECHO="$dir/echo"
- break
- fi
- done
- IFS="$lt_save_ifs"
-
- if test "X$ECHO" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # This shell has a builtin print -r that does the trick.
- ECHO='print -r'
- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
- test "X$CONFIG_SHELL" != X/bin/ksh; then
- # If we have ksh, try running configure again with it.
- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
- export ORIGINAL_CONFIG_SHELL
- CONFIG_SHELL=/bin/ksh
- export CONFIG_SHELL
- exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
- else
- # Try using printf.
- ECHO='printf %s\n'
- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # Cool, printf works
- :
- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- ECHO="$CONFIG_SHELL $0 --fallback-echo"
- elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- ECHO="$CONFIG_SHELL $0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
- then
- break
- fi
- prev="$cmd"
- done
-
- if test "$prev" != 'sed 50q "$0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
- else
- # Oops. We lost completely, so just stick with echo.
- ECHO=echo
- fi
- fi
- fi
- fi
- fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
- lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-
-exec 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Identity of this package.
-PACKAGE_NAME='libmtp'
-PACKAGE_TARNAME='libmtp'
-PACKAGE_VERSION='1.0.1'
-PACKAGE_STRING='libmtp 1.0.1'
-PACKAGE_BUGREPORT='libmtp-discuss@lists.sourceforge.net'
-
-ac_unique_file="src/libmtp.c"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-effective_target
-LIBOBJS
-MS_LIB_EXE_FALSE
-MS_LIB_EXE_TRUE
-ms_lib_exe
-COMPILE_MINGW32_FALSE
-COMPILE_MINGW32_TRUE
-OSFLAGS
-HAVE_DOXYGEN_FALSE
-HAVE_DOXYGEN_TRUE
-HAVE_DOXYGEN
-LTLIBICONV
-LIBICONV
-CPP
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-lt_ECHO
-RANLIB
-AR
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-EGREP
-GREP
-SED
-LIBTOOL
-OBJDUMP
-DLLTOOL
-AS
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LN_S
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_dependency_tracking
-enable_shared
-enable_static
-with_pic
-enable_fast_install
-with_gnu_ld
-enable_libtool_lock
-enable_rpath
-with_libiconv_prefix
-enable_largefile
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- { $as_echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
- { (exit 1); exit 1; }; } ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; }
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- { $as_echo "$as_me: error: working directory cannot be determined" >&2
- { (exit 1); exit 1; }; }
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
- { (exit 1); exit 1; }; }
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
- { (exit 1); exit 1; }; }
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures libmtp 1.0.1 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/libmtp]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of libmtp 1.0.1:";;
- esac
- cat <<\_ACEOF
-
-Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --enable-shared[=PKGS] build shared libraries [default=yes]
- --enable-static[=PKGS] build static libraries [default=yes]
- --enable-fast-install[=PKGS]
- optimize for fast installation [default=yes]
- --disable-libtool-lock avoid locking (might break parallel builds)
- --disable-rpath do not hardcode runtime library paths
- --disable-largefile omit support for large files
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-pic try to use only PIC/non-PIC objects [default=use
- both]
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-gnu-ld assume the C compiler uses GNU ld default=no
- --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
- --without-libiconv-prefix don't search for libiconv in includedir and libdir
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <libmtp-discuss@lists.sourceforge.net>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-libmtp configure 1.0.1
-generated by GNU Autoconf 2.63
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by libmtp $as_me 1.0.1, which was
-generated by GNU Autoconf 2.63. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
- 2)
- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- esac
- done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- ac_site_file1=$CONFIG_SITE
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test -r "$ac_site_file"; then
- { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
- { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-am__api_version='1.11'
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
-done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[\\\"\#\$\&\'\`$am_lf]*)
- { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
-$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
- { (exit 1); exit 1; }; };;
-esac
-case $srcdir in
- *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
-$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
- { (exit 1); exit 1; }; };;
-esac
-
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- rm -f conftest.file
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
-alias in your environment" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
- test "$2" = conftest.file
- )
-then
- # Ok.
- :
-else
- { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
- { (exit 1); exit 1; }; }
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-test "$program_prefix" != NONE &&
- program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
- if test "${ac_cv_path_mkdir+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in mkdir gmkdir; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
- 'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
- break 3;;
- esac
- done
- done
-done
-IFS=$as_save_IFS
-
-fi
-
- if test "${ac_cv_path_mkdir+set}" = set; then
- MKDIR_P="$ac_cv_path_mkdir -p"
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for MKDIR_P within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- test -d ./--version && rmdir ./--version
- MKDIR_P="$ac_install_sh -d"
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
- [\\/$]* | ?:[\\/]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-for ac_prog in gawk mawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { $as_echo "$as_me:$LINENO: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- SET_MAKE=
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- am__isrc=' -I$(srcdir)'
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
- { (exit 1); exit 1; }; }
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='libmtp'
- VERSION='1.0.1'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-
-ac_config_headers="$ac_config_headers config.h"
-
-
-# This can be overridden by the command line switch
-if test "$program_prefix" = NONE; then
- program_prefix=mtp-
- program_transform_name="s,^,$program_prefix,;$program_transform_name"
-fi
-
-# Checks for programs.
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { (ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
- ac_file=''
-fi
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
- { (exit 77); exit 77; }; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
- fi
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_compiler_gnu=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_c89=$ac_arg
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-
-
-{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named `D' -- because `-MD' means `put the output
- # in D'.
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
- # Solaris 8's {/usr,}/bin/sh.
- touch sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with `-c' and `-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle `-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # after this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvisualcpp | msvcmsys)
- # This compiler won't grok `-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
-done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
- { (exit 1); exit 1; }; }
-
-{ $as_echo "$as_me:$LINENO: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-$as_echo "$as_me: error: invalid value of canonical build" >&2;}
- { (exit 1); exit 1; }; };;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:$LINENO: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-$as_echo "$as_me: error: invalid value of canonical host" >&2;}
- { (exit 1); exit 1; }; };;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AS+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AS="${ac_tool_prefix}as"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
- { $as_echo "$as_me:$LINENO: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
- ac_ct_AS=$AS
- # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AS"; then
- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_AS="as"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_AS" = x; then
- AS="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AS=$ac_ct_AS
- fi
-else
- AS="$ac_cv_prog_AS"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DLLTOOL+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DLLTOOL"; then
- ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:$LINENO: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
- ac_ct_DLLTOOL=$DLLTOOL
- # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DLLTOOL"; then
- ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_DLLTOOL" = x; then
- DLLTOOL="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DLLTOOL=$ac_ct_DLLTOOL
- fi
-else
- DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OBJDUMP"; then
- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
- ac_ct_OBJDUMP=$OBJDUMP
- # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OBJDUMP"; then
- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OBJDUMP" = x; then
- OBJDUMP="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OBJDUMP=$ac_ct_OBJDUMP
- fi
-else
- OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
- ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
-case `pwd` in
- *\ * | *\ *)
- { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.2.6'
-macro_revision='1.3012'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if test "${ac_cv_path_SED+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
- for ac_i in 1 2 3 4 5 6 7; do
- ac_script="$ac_script$as_nl$ac_script"
- done
- echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
- $as_unset ac_script || ac_script=
- if test -z "$SED"; then
- ac_path_SED_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-# Check for GNU ac_path_SED and select it if it is found.
- # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
- ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
- "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_SED_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_SED="$ac_path_SED"
- ac_path_SED_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_SED_found && break 3
- done
- done
-done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_SED"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
- fi
-else
- ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
- rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
-done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
-done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:$LINENO: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
- then ac_cv_path_FGREP="$GREP -F"
- else
- if test -z "$FGREP"; then
- ac_path_FGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in fgrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
- # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'FGREP' >> "conftest.nl"
- "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- ac_count=`expr $ac_count + 1`
- if test $ac_count -gt ${ac_path_FGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_FGREP="$ac_path_FGREP"
- ac_path_FGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_FGREP_found && break 3
- done
- done
-done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_FGREP"; then
- { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
- { (exit 1); exit 1; }; }
- fi
-else
- ac_cv_path_FGREP=$FGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | ?:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the pathname of ld
- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
- { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if test "${lt_cv_path_LD+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
-else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
- { $as_echo "$as_me:$LINENO: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- lt_cv_prog_gnu_ld=yes
- ;;
-*)
- lt_cv_prog_gnu_ld=no
- ;;
-esac
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if test "${lt_cv_path_NM+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$NM"; then
- # Let the user override the test.
- lt_cv_path_NM="$NM"
-else
- lt_nm_to_check="${ac_tool_prefix}nm"
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
- lt_nm_to_check="$lt_nm_to_check nm"
- fi
- for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
- */dev/null* | *'Invalid file or object type'*)
- lt_cv_path_NM="$tmp_nm -B"
- break
- ;;
- *)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
- */dev/null*)
- lt_cv_path_NM="$tmp_nm -p"
- break
- ;;
- *)
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- ;;
- esac
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
- done
- : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
-else
- # Didn't find any BSD compatible name lister, look for dumpbin.
- if test -n "$ac_tool_prefix"; then
- for ac_prog in "dumpbin -symbols" "link -dump -symbols"
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DUMPBIN"; then
- ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
- { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$DUMPBIN" && break
- done
-fi
-if test -z "$DUMPBIN"; then
- ac_ct_DUMPBIN=$DUMPBIN
- for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DUMPBIN"; then
- ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_DUMPBIN" && break
-done
-
- if test "x$ac_ct_DUMPBIN" = x; then
- DUMPBIN=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DUMPBIN=$ac_ct_DUMPBIN
- fi
-fi
-
-
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
- fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_nm_interface="BSD nm"
- echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:4806: $ac_compile\"" >&5)
- (eval "$ac_compile" 2>conftest.err)
- cat conftest.err >&5
- (eval echo "\"\$as_me:4809: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
- cat conftest.err >&5
- (eval echo "\"\$as_me:4812: output\"" >&5)
- cat conftest.out >&5
- if $GREP 'External.*some_variable' conftest.out > /dev/null; then
- lt_cv_nm_interface="MS dumpbin"
- fi
- rm -f conftest*
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- i=0
- teststring="ABCD"
-
- case $build_os in
- msdosdjgpp*)
- # On DJGPP, this test can blow up pretty badly due to problems in libc
- # (any single argument exceeding 2000 bytes causes a buffer overrun
- # during glob expansion). Even if it were fixed, the result of this
- # check would be larger than it should be.
- lt_cv_sys_max_cmd_len=12288; # 12K is about right
- ;;
-
- gnu*)
- # Under GNU Hurd, this test is not required because there is
- # no limit to the length of command line arguments.
- # Libtool will interpret -1 as no limit whatsoever
- lt_cv_sys_max_cmd_len=-1;
- ;;
-
- cygwin* | mingw* | cegcc*)
- # On Win9x/ME, this test blows up -- it succeeds, but takes
- # about 5 minutes as the teststring grows exponentially.
- # Worse, since 9x/ME are not pre-emptively multitasking,
- # you end up with a "frozen" computer, even though with patience
- # the test eventually succeeds (with a max line length of 256k).
- # Instead, let's just punt: use the minimum linelength reported by
- # all of the supported platforms: 8192 (on NT/2K/XP).
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- amigaos*)
- # On AmigaOS with pdksh, this test takes hours, literally.
- # So we just punt and use a minimum line length of 8192.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
- # This has been around since 386BSD, at least. Likely further.
- if test -x /sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
- elif test -x /usr/sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
- else
- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
- fi
- # And add a safety zone
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- ;;
-
- interix*)
- # We know the value 262144 and hardcode it with a safety zone (like BSD)
- lt_cv_sys_max_cmd_len=196608
- ;;
-
- osf*)
- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
- # nice to cause kernel panics so lets avoid the loop below.
- # First set a reasonable default.
- lt_cv_sys_max_cmd_len=16384
- #
- if test -x /sbin/sysconfig; then
- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
- *1*) lt_cv_sys_max_cmd_len=-1 ;;
- esac
- fi
- ;;
- sco3.2v5*)
- lt_cv_sys_max_cmd_len=102400
- ;;
- sysv5* | sco5v6* | sysv4.2uw2*)
- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
- if test -n "$kargmax"; then
- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
- else
- lt_cv_sys_max_cmd_len=32768
- fi
- ;;
- *)
- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
- if test -n "$lt_cv_sys_max_cmd_len"; then
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- else
- # Make teststring a little bigger before we do anything with it.
- # a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
- teststring=$teststring$teststring
- done
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
- = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- # Only check the string length outside the loop.
- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
- teststring=
- # Add a significant safety factor because C++ compilers can tack on
- # massive amounts of additional arguments before passing them to the
- # linker. It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
- fi
- ;;
- esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
- { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-{ $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-{ $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- lt_unset=unset
-else
- lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
- lt_SP2NL='tr \040 \012'
- lt_NL2SP='tr \015\012 \040\040'
- ;;
- *) # EBCDIC based system
- lt_SP2NL='tr \100 \n'
- lt_NL2SP='tr \r\n \100\100'
- ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
- else
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- fi
- ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OBJDUMP"; then
- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
- ac_ct_OBJDUMP=$OBJDUMP
- # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OBJDUMP"; then
- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OBJDUMP" = x; then
- OBJDUMP="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OBJDUMP=$ac_ct_OBJDUMP
- fi
-else
- OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-beos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-bsdi[45]*)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-
-cygwin*)
- # func_win32_libid is a shell function defined in ltmain.sh
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- ;;
-
-mingw* | pw32*)
- # Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump',
- # unless we find 'file', for example because we are cross-compiling.
- if ( file / ) >/dev/null 2>&1; then
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-
-cegcc)
- # use the weaker test based on 'objdump'. See mingw*.
- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- ;;
-
-darwin* | rhapsody*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-freebsd* | dragonfly*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- case $host_cpu in
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
- esac
- else
- lt_cv_deplibs_check_method=pass_all
- fi
- ;;
-
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-hpux10.20* | hpux11*)
- lt_cv_file_magic_cmd=/usr/bin/file
- case $host_cpu in
- ia64*)
- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
- ;;
- hppa*64*)
- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
- ;;
- *)
- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
- esac
- ;;
-
-interix[3-9]*)
- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $LD in
- *-32|*"-32 ") libmagic=32-bit;;
- *-n32|*"-n32 ") libmagic=N32;;
- *-64|*"-64 ") libmagic=64-bit;;
- *) libmagic=never-match;;
- esac
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
- fi
- ;;
-
-newos6*)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-*nto* | *qnx*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
- fi
- ;;
-
-osf3* | osf4* | osf5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-rdos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-solaris*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv4 | sysv4.3*)
- case $host_vendor in
- motorola)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- ncr)
- lt_cv_deplibs_check_method=pass_all
- ;;
- sequent)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
- ;;
- sni)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
- siemens)
- lt_cv_deplibs_check_method=pass_all
- ;;
- pc)
- lt_cv_deplibs_check_method=pass_all
- ;;
- esac
- ;;
-
-tpf*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-esac
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AR="${ac_tool_prefix}ar"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- { $as_echo "$as_me:$LINENO: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AR"; then
- ac_ct_AR=$AR
- # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AR"; then
- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_AR="ar"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AR=$ac_ct_AR
- fi
-else
- AR="$ac_cv_prog_AR"
-fi
-
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
- case $host_os in
- openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
- ;;
- *)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
- ;;
- esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
- symcode='[BCDT]'
- ;;
-cygwin* | mingw* | pw32* | cegcc*)
- symcode='[ABCDGISTW]'
- ;;
-hpux*)
- if test "$host_cpu" = ia64; then
- symcode='[ABCDEGRST]'
- fi
- ;;
-irix* | nonstopux*)
- symcode='[BCDEGRST]'
- ;;
-osf*)
- symcode='[BCDEGQRST]'
- ;;
-solaris*)
- symcode='[BDRT]'
- ;;
-sco3.2v5*)
- symcode='[DT]'
- ;;
-sysv4.2uw2*)
- symcode='[DT]'
- ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
- symcode='[ABDT]'
- ;;
-sysv4)
- symcode='[DFNSTU]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
- symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
- ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
- symxfrm="\\1 $ac_symprfx\\2 \\2"
-
- # Write the raw and C identifiers.
- if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
- # Also find C++ and __fastcall symbols from MSVC++,
- # which start with @ or ?.
- lt_cv_sys_global_symbol_pipe="$AWK '"\
-" {last_section=section; section=\$ 3};"\
-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-" \$ 0!~/External *\|/{next};"\
-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-" ' prfx=^$ac_symprfx"
- else
- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
- fi
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-
- rm -f conftest*
- cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
- (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
- # Now generate the symbol file.
- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
- cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- void *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
- { "@PROGRAM@", (void *) 0 },
-_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
- cat <<\_LT_EOF >> conftest.$ac_ext
- {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
- lt_save_LIBS="$LIBS"
- lt_save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
- LIBS="$lt_save_LIBS"
- CFLAGS="$lt_save_CFLAGS"
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&5
- fi
- else
- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
- fi
- else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- fi
- rm -rf conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- lt_cv_sys_global_symbol_pipe=
- fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
- lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
- enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *ELF-32*)
- HPUX_IA64_MODE="32"
- ;;
- *ELF-64*)
- HPUX_IA64_MODE="64"
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '#line 6004 "configure"' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- if test "$lt_cv_prog_gnu_ld" = yes; then
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -melf32bsmip"
- ;;
- *N32*)
- LD="${LD-ld} -melf32bmipn32"
- ;;
- *64-bit*)
- LD="${LD-ld} -melf64bmip"
- ;;
- esac
- else
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
- fi
- fi
- rm -rf conftest*
- ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.o` in
- *32-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_i386_fbsd"
- ;;
- x86_64-*linux*)
- LD="${LD-ld} -m elf_i386"
- ;;
- ppc64-*linux*|powerpc64-*linux*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
- LD="${LD-ld} -m elf_s390"
- ;;
- sparc64-*linux*)
- LD="${LD-ld} -m elf32_sparc"
- ;;
- esac
- ;;
- *64-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_x86_64_fbsd"
- ;;
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
- ppc*-*linux*|powerpc*-*linux*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
- LD="${LD-ld} -m elf64_s390"
- ;;
- sparc*-*linux*)
- LD="${LD-ld} -m elf64_sparc"
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- lt_cv_cc_needs_belf=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- lt_cv_cc_needs_belf=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
- fi
- ;;
-sparc*-*solaris*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- case `/usr/bin/file conftest.o` in
- *64-bit*)
- case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
- *)
- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
- LD="${LD-ld} -64"
- fi
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-
- case $host_os in
- rhapsody* | darwin*)
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DSYMUTIL"; then
- ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
- { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
- ac_ct_DSYMUTIL=$DSYMUTIL
- # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DSYMUTIL"; then
- ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_DSYMUTIL" = x; then
- DSYMUTIL=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DSYMUTIL=$ac_ct_DSYMUTIL
- fi
-else
- DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_NMEDIT+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$NMEDIT"; then
- ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
- { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
- ac_ct_NMEDIT=$NMEDIT
- # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_NMEDIT"; then
- ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_NMEDIT="nmedit"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_NMEDIT" = x; then
- NMEDIT=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- NMEDIT=$ac_ct_NMEDIT
- fi
-else
- NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_LIPO+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$LIPO"; then
- ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
- { $as_echo "$as_me:$LINENO: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
- ac_ct_LIPO=$LIPO
- # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_LIPO"; then
- ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_LIPO="lipo"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_LIPO" = x; then
- LIPO=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- LIPO=$ac_ct_LIPO
- fi
-else
- LIPO="$ac_cv_prog_LIPO"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OTOOL"; then
- ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
- { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
- ac_ct_OTOOL=$OTOOL
- # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OTOOL"; then
- ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_OTOOL="otool"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OTOOL" = x; then
- OTOOL=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OTOOL=$ac_ct_OTOOL
- fi
-else
- OTOOL="$ac_cv_prog_OTOOL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_OTOOL64+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OTOOL64"; then
- ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
- { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
- ac_ct_OTOOL64=$OTOOL64
- # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OTOOL64"; then
- ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_OTOOL64="otool64"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
- { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OTOOL64" = x; then
- OTOOL64=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OTOOL64=$ac_ct_OTOOL64
- fi
-else
- OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
- # By default we will add the -single_module flag. You can override
- # by either setting the environment variable LT_MULTI_MODULE
- # non-empty at configure time, or by adding -multi_module to the
- # link flags.
- rm -rf libconftest.dylib*
- echo "int foo(void){return 1;}" > conftest.c
- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
- _lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
- lt_cv_apple_cc_single_mod=yes
- else
- cat conftest.err >&5
- fi
- rm -rf libconftest.dylib*
- rm -f conftest.*
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
- { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_ld_exported_symbols_list=no
- save_LDFLAGS=$LDFLAGS
- echo "_main" > conftest.sym
- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- lt_cv_ld_exported_symbols_list=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- lt_cv_ld_exported_symbols_list=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
- case $host_os in
- rhapsody* | darwin1.[012])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
- darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- darwin*) # darwin 5.x on
- # if running on 10.5 or later, the deployment target defaults
- # to the OS version, if on x86, and 10.4, the deployment
- # target defaults to 10.4. Don't you love it?
- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- 10.[012]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- 10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- esac
- ;;
- esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
- _lt_dar_single_mod='$single_module'
- fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
- else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- if test "$DSYMUTIL" != ":"; then
- _lt_dsymutil='~$DSYMUTIL $lib || :'
- else
- _lt_dsymutil=
- fi
- ;;
- esac
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- # Broken: success on invalid input.
-continue
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- # Broken: success on invalid input.
-continue
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_stdc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-for ac_header in dlfcn.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-# Set options
-
-
-
- enable_dlopen=no
-
-
-
- # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval=$enable_shared; p=${PACKAGE-default}
- case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
- # Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then
- enableval=$enable_static; p=${PACKAGE-default}
- case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then
- withval=$with_pic; pic_mode="$withval"
-else
- pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
- # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
- enableval=$enable_fast_install; p=${PACKAGE-default}
- case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if test "${lt_cv_objdir+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- lt_cv_objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-case $host_os in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
- case $cc_temp in
- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
- \-*) ;;
- *) break;;
- esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- case $MAGIC_CMD in
-[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
-*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
- for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/${ac_tool_prefix}file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- $EGREP "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
- ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
- if test -n "$ac_tool_prefix"; then
- { $as_echo "$as_me:$LINENO: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- case $MAGIC_CMD in
-[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
-*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
- for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/file"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- $EGREP "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
- ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- else
- MAGIC_CMD=:
- fi
-fi
-
- fi
- ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
- lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-
- { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_rtti_exceptions=no
- ac_outfile=conftest.$ac_objext
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="-fno-rtti -fno-exceptions"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- # The option is referenced via a variable to avoid confusing sed.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7859: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
- echo "$as_me:7863: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_rtti_exceptions=yes
- fi
- fi
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
- lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
- :
-fi
-
-fi
-
-
-
-
-
-
- lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-
- if test "$GCC" = yes; then
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_static='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_prog_compiler_static='-Bstatic'
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- lt_prog_compiler_pic='-fPIC'
- ;;
- m68k)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
- ;;
- esac
- ;;
-
- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- # Although the cygwin gcc ignores -fPIC, still need this for old-style
- # (--disable-auto-import) libraries
- lt_prog_compiler_pic='-DDLL_EXPORT'
- ;;
-
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- lt_prog_compiler_pic='-fno-common'
- ;;
-
- hpux*)
- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
- # sets the default TLS model and affects inlining.
- case $host_cpu in
- hppa*64*)
- # +Z the default
- ;;
- *)
- lt_prog_compiler_pic='-fPIC'
- ;;
- esac
- ;;
-
- interix[3-9]*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
-
- msdosdjgpp*)
- # Just because we use GCC doesn't mean we suddenly get shared libraries
- # on systems that don't support them.
- lt_prog_compiler_can_build_shared=no
- enable_shared=no
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- lt_prog_compiler_pic='-fPIC -shared'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- lt_prog_compiler_pic=-Kconform_pic
- fi
- ;;
-
- *)
- lt_prog_compiler_pic='-fPIC'
- ;;
- esac
- else
- # PORTME Check for flag to pass linker flags through the system compiler.
- case $host_os in
- aix*)
- lt_prog_compiler_wl='-Wl,'
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_prog_compiler_static='-Bstatic'
- else
- lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- lt_prog_compiler_pic='-DDLL_EXPORT'
- ;;
-
- hpux9* | hpux10* | hpux11*)
- lt_prog_compiler_wl='-Wl,'
- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
- # not for PA HP-UX.
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- lt_prog_compiler_pic='+Z'
- ;;
- esac
- # Is there a better lt_prog_compiler_static that works with the bundled CC?
- lt_prog_compiler_static='${wl}-a ${wl}archive'
- ;;
-
- irix5* | irix6* | nonstopux*)
- lt_prog_compiler_wl='-Wl,'
- # PIC (with -KPIC) is the default.
- lt_prog_compiler_static='-non_shared'
- ;;
-
- linux* | k*bsd*-gnu)
- case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
- ecc*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-static'
- ;;
- # icc used to be incompatible with GCC.
- # ICC 10 doesn't accept -KPIC any more.
- icc* | ifort*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-fPIC'
- lt_prog_compiler_static='-static'
- ;;
- # Lahey Fortran 8.1.
- lf95*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
- pgcc* | pgf77* | pgf90* | pgf95*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-fpic'
- lt_prog_compiler_static='-Bstatic'
- ;;
- ccc*)
- lt_prog_compiler_wl='-Wl,'
- # All Alpha code is PIC.
- lt_prog_compiler_static='-non_shared'
- ;;
- xl*)
- # IBM XL C 8.0/Fortran 10.1 on PPC
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-qpic'
- lt_prog_compiler_static='-qstaticlink'
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C 5.9
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- lt_prog_compiler_wl='-Wl,'
- ;;
- *Sun\ F*)
- # Sun Fortran 8.3 passes all unrecognized flags to the linker
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- lt_prog_compiler_wl=''
- ;;
- esac
- ;;
- esac
- ;;
-
- newsos6)
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- lt_prog_compiler_pic='-fPIC -shared'
- ;;
-
- osf3* | osf4* | osf5*)
- lt_prog_compiler_wl='-Wl,'
- # All OSF/1 code is PIC.
- lt_prog_compiler_static='-non_shared'
- ;;
-
- rdos*)
- lt_prog_compiler_static='-non_shared'
- ;;
-
- solaris*)
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- case $cc_basename in
- f77* | f90* | f95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
- esac
- ;;
-
- sunos4*)
- lt_prog_compiler_wl='-Qoption ld '
- lt_prog_compiler_pic='-PIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec ;then
- lt_prog_compiler_pic='-Kconform_pic'
- lt_prog_compiler_static='-Bstatic'
- fi
- ;;
-
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- unicos*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_can_build_shared=no
- ;;
-
- uts4*)
- lt_prog_compiler_pic='-pic'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- *)
- lt_prog_compiler_can_build_shared=no
- ;;
- esac
- fi
-
-case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
- *djgpp*)
- lt_prog_compiler_pic=
- ;;
- *)
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
-$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
-
-
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
- { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_pic_works=no
- ac_outfile=conftest.$ac_objext
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- # The option is referenced via a variable to avoid confusing sed.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8198: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
- echo "$as_me:8202: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_pic_works=yes
- fi
- fi
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
- case $lt_prog_compiler_pic in
- "" | " "*) ;;
- *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
- esac
-else
- lt_prog_compiler_pic=
- lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_static_works=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
- echo "$lt_simple_link_test_code" > conftest.$ac_ext
- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
- # The linker can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_static_works=yes
- fi
- else
- lt_cv_prog_compiler_static_works=yes
- fi
- fi
- $RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
- :
-else
- lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_c_o=no
- $RM -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
- mkdir out
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- lt_compiler_flag="-o out/conftest2.$ac_objext"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8303: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
- echo "$as_me:8307: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_c_o=yes
- fi
- fi
- chmod u+w . 2>&5
- $RM conftest*
- # SGI C++ compiler will create directory out/ii_files/ for
- # template instantiation
- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
- $RM out/* && rmdir out
- cd ..
- $RM -r conftest
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_c_o=no
- $RM -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
- mkdir out
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- lt_compiler_flag="-o out/conftest2.$ac_objext"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8358: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
- echo "$as_me:8362: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_c_o=yes
- fi
- fi
- chmod u+w . 2>&5
- $RM conftest*
- # SGI C++ compiler will create directory out/ii_files/ for
- # template instantiation
- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
- $RM out/* && rmdir out
- cd ..
- $RM -r conftest
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
- hard_links=yes
- $RM conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
- if test "$hard_links" = no; then
- { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-
-
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
- runpath_var=
- allow_undefined_flag=
- always_export_symbols=no
- archive_cmds=
- archive_expsym_cmds=
- compiler_needs_object=no
- enable_shared_with_static_runtimes=no
- export_dynamic_flag_spec=
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- hardcode_automatic=no
- hardcode_direct=no
- hardcode_direct_absolute=no
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld=
- hardcode_libdir_separator=
- hardcode_minus_L=no
- hardcode_shlibpath_var=unsupported
- inherit_rpath=no
- link_all_deplibs=unknown
- module_cmds=
- module_expsym_cmds=
- old_archive_from_new_cmds=
- old_archive_from_expsyms_cmds=
- thread_safe_flag_spec=
- whole_archive_flag_spec=
- # include_expsyms should be a list of space-separated symbols to be *always*
- # included in the symbol list
- include_expsyms=
- # exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
- exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
- # platforms (ab)use it in PIC code, but their linkers get confused if
- # the symbol is explicitly referenced. Since portable code cannot
- # rely on this symbol name, it's probably fine to never include it in
- # preloaded symbol tables.
- # Exclude shared library initialization/finalization symbols.
- extract_expsyms_cmds=
-
- case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$GCC" != yes; then
- with_gnu_ld=no
- fi
- ;;
- interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
- with_gnu_ld=yes
- ;;
- openbsd*)
- with_gnu_ld=no
- ;;
- esac
-
- ld_shlibs=yes
- if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # Set some defaults for GNU ld with shared library support. These
- # are reset later if shared libraries are not supported. Putting them
- # here allows them to be overridden if necessary.
- runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- whole_archive_flag_spec=
- fi
- supports_anon_versioning=no
- case `$LD -v 2>&1` in
- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
- *\ 2.11.*) ;; # other 2.11 versions
- *) supports_anon_versioning=yes ;;
- esac
-
- # See if GNU ld supports shared libraries.
- case $host_os in
- aix[3-9]*)
- # On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
- ld_shlibs=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds=''
- ;;
- m68k)
- archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- ;;
- esac
- ;;
-
- beos*)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- allow_undefined_flag=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
- # as there is no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- interix[3-9]*)
- hardcode_direct=no
- hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
-
- gnu* | linux* | tpf* | k*bsd*-gnu)
- tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
- case $cc_basename in
- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
- esac
- fi
- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
- then
- tmp_addflag=
- tmp_sharedflag='-shared'
- case $cc_basename,$host_cpu in
- pgcc*) # Portland Group C compiler
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag'
- ;;
- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag -Mnomain' ;;
- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
- tmp_addflag=' -i_dynamic' ;;
- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
- tmp_addflag=' -i_dynamic -nofor_main' ;;
- ifc* | ifort*) # Intel Fortran compiler
- tmp_addflag=' -nofor_main' ;;
- lf95*) # Lahey Fortran 8.1
- whole_archive_flag_spec=
- tmp_sharedflag='--shared' ;;
- xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
- tmp_sharedflag='-qmkshrobj'
- tmp_addflag= ;;
- esac
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*) # Sun C 5.9
- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- compiler_needs_object=yes
- tmp_sharedflag='-G' ;;
- *Sun\ F*) # Sun Fortran 8.3
- tmp_sharedflag='-G' ;;
- esac
- archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
- fi
-
- case $cc_basename in
- xlf*)
- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec=
- hardcode_libdir_flag_spec_ld='-rpath $libdir'
- archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
- else
- ld_shlibs=no
- fi
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
- solaris*)
- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
- case `$LD -v 2>&1` in
- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
- ld_shlibs=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- ;;
- *)
- # For security reasons, it is highly recommended that you always
- # use absolute paths for naming shared libraries, and exclude the
- # DT_RUNPATH tag from executables and libraries. But doing so
- # requires that you compile everything twice, which is a pain.
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- wlarc=
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
-
- if test "$ld_shlibs" = no; then
- runpath_var=
- hardcode_libdir_flag_spec=
- export_dynamic_flag_spec=
- whole_archive_flag_spec=
- fi
- else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case $host_os in
- aix3*)
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
-
- aix[4-9]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- archive_cmds=''
- hardcode_direct=yes
- hardcode_direct_absolute=yes
- hardcode_libdir_separator=':'
- link_all_deplibs=yes
- file_list_spec='${wl}-f,'
-
- if test "$GCC" = yes; then
- case $host_os in aix4.[012]|aix4.[012].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" &&
- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- ;;
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- export_dynamic_flag_spec='${wl}-bexpall'
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to export.
- always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
-
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
- allow_undefined_flag="-z nodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
-
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- no_undefined_flag=' ${wl}-bernotok'
- allow_undefined_flag=' ${wl}-berok'
- # Exported symbols can be pulled into shared objects from archives
- whole_archive_flag_spec='$convenience'
- archive_cmds_need_lc=yes
- # This is similar to how AIX traditionally builds its shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds=''
- ;;
- m68k)
- archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- ;;
- esac
- ;;
-
- bsdi[45]*)
- export_dynamic_flag_spec=-rdynamic
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
- fix_srcfile_path='`cygpath -w "$srcfile"`'
- enable_shared_with_static_runtimes=yes
- ;;
-
- darwin* | rhapsody*)
-
-
- archive_cmds_need_lc=no
- hardcode_direct=no
- hardcode_automatic=yes
- hardcode_shlibpath_var=unsupported
- whole_archive_flag_spec=''
- link_all_deplibs=yes
- allow_undefined_flag="$_lt_dar_allow_undefined"
- case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
- *) _lt_dar_can_shared=$GCC ;;
- esac
- if test "$_lt_dar_can_shared" = "yes"; then
- output_verbose_link_cmd=echo
- archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
- else
- ld_shlibs=no
- fi
-
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- freebsd1*)
- ld_shlibs=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- hpux9*)
- if test "$GCC" = yes; then
- archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- fi
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
- hpux10*)
- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_flag_spec_ld='+b $libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- fi
- ;;
-
- hpux11*)
- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- case $host_cpu in
- hppa*64*)
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
- case $host_cpu in
- hppa*64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- hardcode_direct=no
- hardcode_shlibpath_var=no
- ;;
- *)
- hardcode_direct=yes
- hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- ;;
- esac
- fi
- ;;
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
- cat >conftest.$ac_ext <<_ACEOF
-int foo(void) {}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
- else
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
- fi
- archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- inherit_rpath=yes
- link_all_deplibs=yes
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
- fi
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- newsos6)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_shlibpath_var=no
- ;;
-
- *nto* | *qnx*)
- ;;
-
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- hardcode_direct_absolute=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
- else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
- fi
- else
- ld_shlibs=no
- fi
- ;;
-
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- allow_undefined_flag=unsupported
- archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- fi
- archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
- # Both c and cxx compiler support -rpath directly
- hardcode_libdir_flag_spec='-rpath $libdir'
- fi
- archive_cmds_need_lc='no'
- hardcode_libdir_separator=:
- ;;
-
- solaris*)
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
- wlarc=''
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
- ;;
- *)
- wlarc='${wl}'
- archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- ;;
- esac
- fi
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case $host_os in
- solaris2.[0-5] | solaris2.[0-5].*) ;;
- *)
- # The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
- # but is careful enough not to reorder.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- else
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
- fi
- ;;
- esac
- link_all_deplibs=yes
- ;;
-
- sunos4*)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
- fi
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- sysv4)
- case $host_vendor in
- sni)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes # is this really true???
- ;;
- siemens)
- ## LD is ld it makes a PLAMLIB
- ## CC just makes a GrossModule.
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- reload_cmds='$CC -r -o $output$reload_objs'
- hardcode_direct=no
- ;;
- motorola)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
- esac
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ld_shlibs=yes
- fi
- ;;
-
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
- no_undefined_flag='${wl}-z,text'
- archive_cmds_need_lc=no
- hardcode_shlibpath_var=no
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- no_undefined_flag='${wl}-z,text'
- allow_undefined_flag='${wl}-z,nodefs'
- archive_cmds_need_lc=no
- hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-R,$libdir'
- hardcode_libdir_separator=':'
- link_all_deplibs=yes
- export_dynamic_flag_spec='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- *)
- ld_shlibs=no
- ;;
- esac
-
- if test x$host_vendor = xsni; then
- case $host in
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- export_dynamic_flag_spec='${wl}-Blargedynsym'
- ;;
- esac
- fi
- fi
-
-{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
- # Assume -lc should be added
- archive_cmds_need_lc=yes
-
- if test "$enable_shared" = yes && test "$GCC" = yes; then
- case $archive_cmds in
- *'~'*)
- # FIXME: we may have to deal with multi-command sequences.
- ;;
- '$CC '*)
- # Test whether the compiler implicitly links with -lc since on some
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
- $RM conftest*
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } 2>conftest.err; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
- deplibs=
- wl=$lt_prog_compiler_wl
- pic_flag=$lt_prog_compiler_pic
- compiler_flags=-v
- linker_flags=-v
- verstring=
- output_objdir=.
- libname=conftest
- lt_save_allow_undefined_flag=$allow_undefined_flag
- allow_undefined_flag=
- if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
- (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
- then
- archive_cmds_need_lc=no
- else
- archive_cmds_need_lc=yes
- fi
- allow_undefined_flag=$lt_save_allow_undefined_flag
- else
- cat conftest.err 1>&5
- fi
- $RM conftest*
- { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
-$as_echo "$archive_cmds_need_lc" >&6; }
- ;;
- esac
- fi
- ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
- case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
- esac
- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
- else
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- # Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
- lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
- for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
- test -d "$lt_sys_path" && \
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
- fi
- done
- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
- for (lt_i = NF; lt_i > 0; lt_i--) {
- if ($lt_i != "" && $lt_i != ".") {
- if ($lt_i == "..") {
- lt_count++;
- } else {
- if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
- } else {
- lt_count--;
- }
- }
- }
- }
- if (lt_foo != "") { lt_freq[lt_foo]++; }
- if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
-
-aix[4-9]*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- else
- # With GCC up to 2.95.x, collect2 would create an import file
- # for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
- aix4 | aix4.[01] | aix4.[01].*)
- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
- echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
- :
- else
- can_build_shared=no
- fi
- ;;
- esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
- # instead of lib<name>.a to let people know that these are not
- # typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
- # and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
- fi
- shlibpath_var=LIBPATH
- fi
- ;;
-
-amigaos*)
- case $host_cpu in
- powerpc)
- # Since July 2007 AmigaOS4 officially supports .so libraries.
- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- ;;
- m68k)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
- ;;
- esac
- ;;
-
-beos*)
- library_names_spec='${libname}${shared_ext}'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
-bsdi[45]*)
- version_type=linux
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
- version_type=windows
- shrext_cmds=".dll"
- need_version=no
- need_lib_prefix=no
-
- case $GCC,$host_os in
- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname~
- chmod a+x \$dldir/$dlname~
- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
- fi'
- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $RM \$dlpath'
- shlibpath_overrides_runpath=yes
-
- case $host_os in
- cygwin*)
- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
- ;;
- mingw* | cegcc*)
- # MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
- # It is most probably a Windows format PATH printed by
- # mingw gcc, but we are running on Cygwin. Gcc prints its search
- # path with ; separators, and with drive letters. We can handle the
- # drive letters (cygwin fileutils understands them), so leave them,
- # especially as we might pass files found there to a mingw objdump,
- # which wouldn't understand a cygwinified path. Ahh.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- ;;
- pw32*)
- # pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
- ;;
-
- *)
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-
-darwin* | rhapsody*)
- dynamic_linker="$host_os dyld"
- version_type=darwin
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
- shlibpath_overrides_runpath=yes
- shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
- ;;
-
-dgux*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-freebsd1*)
- dynamic_linker=no
- ;;
-
-freebsd* | dragonfly*)
- # DragonFly does not have aout. When/if they implement a new
- # versioning mechanism, adjust this.
- if test -x /usr/bin/objformat; then
- objformat=`/usr/bin/objformat`
- else
- case $host_os in
- freebsd[123]*) objformat=aout ;;
- *) objformat=elf ;;
- esac
- fi
- version_type=freebsd-$objformat
- case $version_type in
- freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case $host_os in
- freebsd2*)
- shlibpath_overrides_runpath=yes
- ;;
- freebsd3.[01]* | freebsdelf3.[01]*)
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
- *) # from 4.6 on, and DragonFly
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- esac
- ;;
-
-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- hardcode_into_libs=yes
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- case $host_cpu in
- ia64*)
- shrext_cmds='.so'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.so"
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
- else
- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
- fi
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- hppa*64*)
- shrext_cmds='.sl'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- *)
- shrext_cmds='.sl'
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
- esac
- # HP-UX runs *really* slowly unless shared libraries are mode 555.
- postinstall_cmds='chmod 555 $lib'
- ;;
-
-interix[3-9]*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $host_os in
- nonstopux*) version_type=nonstopux ;;
- *)
- if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
- else
- version_type=irix
- fi ;;
- esac
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
- case $host_os in
- irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
- libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
- libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
- libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- hardcode_into_libs=yes
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
- dynamic_linker=no
- ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- # Some binutils ld are patched to set DT_RUNPATH
- save_LDFLAGS=$LDFLAGS
- save_libdir=$libdir
- eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
- LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then
- shlibpath_overrides_runpath=yes
-fi
-
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS=$save_LDFLAGS
- libdir=$save_libdir
-
- # This implies no fast_install, which is unacceptable.
- # Some rework will be needed to allow for fast_install
- # before this can be enabled.
- hardcode_into_libs=yes
-
- # Add ABI-specific directories to the system library path.
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
- # Append ld.so.conf contents to the search path
- if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
- sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
- fi
-
- # We used to test for /lib/ld.so.1 and disable shared libraries on
- # powerpc, because MkLinux only supported shared libraries with the
- # GNU dynamic linker. Since this was broken with cross compilers,
- # most powerpc-linux boxes support dynamic linking these days and
- # people can always --disable-shared, the test was removed, and we
- # assume the GNU/Linux dynamic linker is in use.
- dynamic_linker='GNU/Linux ld.so'
- ;;
-
-netbsd*)
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
-
-newsos6)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- ;;
-
-*nto* | *qnx*)
- version_type=qnx
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='ldqnx.so'
- ;;
-
-openbsd*)
- version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
- need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[89] | openbsd2.[89].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
- else
- shlibpath_overrides_runpath=yes
- fi
- ;;
-
-os2*)
- libname_spec='$name'
- shrext_cmds=".dll"
- need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-rdos*)
- dynamic_linker=no
- ;;
-
-solaris*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.3*)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
- need_lib_prefix=no
- runpath_var=LD_RUN_PATH
- ;;
- siemens)
- need_lib_prefix=no
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- ;;
- esac
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- version_type=freebsd-elf
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
- else
- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
- case $host_os in
- sco3.2v5*)
- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
- ;;
- esac
- fi
- sys_lib_dlsearch_path_spec='/usr/lib'
- ;;
-
-tpf*)
- # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-uts4*)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
- test -n "$runpath_var" ||
- test "X$hardcode_automatic" = "Xyes" ; then
-
- # We can hardcode non-existent directories.
- if test "$hardcode_direct" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
- test "$hardcode_minus_L" != no; then
- # Linking always hardcodes the temporary library directory.
- hardcode_action=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- hardcode_action=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
- test "$inherit_rpath" = yes; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-
-
-
-
-
-
- if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- cygwin*)
- lt_cv_dlopen="dlopen"
- lt_cv_dlopen_libs=
- ;;
-
- darwin*)
- # if libdl is installed we need to link against it
- { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_dl_dlopen=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_dl_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
- lt_cv_dlopen="dyld"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
-
-fi
-
- ;;
-
- *)
- { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
-$as_echo_n "checking for shl_load... " >&6; }
-if test "${ac_cv_func_shl_load+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char shl_load (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_shl_load || defined __stub___shl_load
-choke me
-#endif
-
-int
-main ()
-{
-return shl_load ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_func_shl_load=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_shl_load=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-$as_echo "$ac_cv_func_shl_load" >&6; }
-if test "x$ac_cv_func_shl_load" = x""yes; then
- lt_cv_dlopen="shl_load"
-else
- { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_dld_shl_load=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_dld_shl_load=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
- { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
-$as_echo_n "checking for dlopen... " >&6; }
-if test "${ac_cv_func_dlopen+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char dlopen (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_dlopen || defined __stub___dlopen
-choke me
-#endif
-
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_func_dlopen=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-$as_echo "$ac_cv_func_dlopen" >&6; }
-if test "x$ac_cv_func_dlopen" = x""yes; then
- lt_cv_dlopen="dlopen"
-else
- { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_dl_dlopen=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_dl_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_svld_dlopen=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_svld_dlopen=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
- { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_dld_dld_link=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_dld_dld_link=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
-#line 11161 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
- else
- puts (dlerror ());
-
- return status;
-}
-_LT_EOF
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) >&5 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self_static=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
-#line 11257 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
- else
- puts (dlerror ());
-
- return status;
-}
-_LT_EOF
- if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) >&5 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self_static=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- old_striplib="$STRIP -S"
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- fi
- ;;
- *)
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
- ;;
- esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
- # Report which library types will actually be built
- { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
- { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
- { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
- aix[4-9]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
- { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- { $as_echo "$as_me:$LINENO: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
- ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5
-$as_echo_n "checking for ld used by GCC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
- { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if test "${acl_cv_path_LD+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
- *)
- test "$with_gnu_ld" != yes && break ;;
- esac
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- { $as_echo "$as_me:$LINENO: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
- { (exit 1); exit 1; }; }
-{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if test "${acl_cv_prog_gnu_ld+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes ;;
-*)
- acl_cv_prog_gnu_ld=no ;;
-esac
-fi
-{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
-$as_echo "$acl_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$acl_cv_prog_gnu_ld
-
-
-
-
- { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5
-$as_echo_n "checking for shared library run path origin... " >&6; }
-if test "${acl_cv_rpath+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
-
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
-$as_echo "$acl_cv_rpath" >&6; }
- wl="$acl_cv_wl"
- acl_libext="$acl_cv_libext"
- acl_shlibext="$acl_cv_shlibext"
- acl_libname_spec="$acl_cv_libname_spec"
- acl_library_names_spec="$acl_cv_library_names_spec"
- acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- acl_hardcode_direct="$acl_cv_hardcode_direct"
- acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
- # Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then
- enableval=$enable_rpath; :
-else
- enable_rpath=yes
-fi
-
-
-
- acl_libdirstem=lib
- searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
-
-
-
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then
- withval=$with_libiconv_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- fi
- fi
-
-fi
-
- LIBICONV=
- LTLIBICONV=
- INCICONV=
- LIBICONV_PREFIX=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='iconv '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$acl_hardcode_direct" = yes; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- LIBICONV_PREFIX="$basedir"
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
- done
- fi
-
-
-
-
-
-
-
- am_save_CPPFLAGS="$CPPFLAGS"
-
- for element in $INCICONV; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
- { $as_echo "$as_me:$LINENO: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if test "${am_cv_func_iconv+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
-
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- am_cv_func_iconv=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$am_save_LIBS"
- fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
-$as_echo "$am_cv_func_iconv" >&6; }
- if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:$LINENO: checking for working iconv" >&5
-$as_echo_n "checking for working iconv... " >&6; }
-if test "${am_cv_func_iconv_works+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
-
- am_save_LIBS="$LIBS"
- if test $am_cv_lib_iconv = yes; then
- LIBS="$LIBS $LIBICONV"
- fi
- if test "$cross_compiling" = yes; then
- case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
- returns. */
- {
- iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
- if (cd_utf8_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\342\202\254"; /* EURO SIGN */
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- return 1;
- }
- }
-#if 0 /* This bug could be worked around by the caller. */
- /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
- {
- iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
- if (cd_88591_to_utf8 != (iconv_t)(-1))
- {
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
- char buf[50];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if ((int)res > 0)
- return 1;
- }
- }
-#endif
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- am_cv_func_iconv_works=yes
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-am_cv_func_iconv_works=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
- LIBS="$am_save_LIBS"
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5
-$as_echo "$am_cv_func_iconv_works" >&6; }
- case "$am_cv_func_iconv_works" in
- *no) am_func_iconv=no am_cv_lib_iconv=no ;;
- *) am_func_iconv=yes ;;
- esac
- else
- am_func_iconv=no am_cv_lib_iconv=no
- fi
- if test "$am_func_iconv" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV 1
-_ACEOF
-
- fi
- if test "$am_cv_lib_iconv" = yes; then
- { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
-$as_echo_n "checking how to link with libiconv... " >&6; }
- { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
-$as_echo "$LIBICONV" >&6; }
- else
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
-
-
-
- if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5
-$as_echo_n "checking for iconv declaration... " >&6; }
- if test "${am_cv_proto_iconv+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- am_cv_proto_iconv_arg1=""
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- am_cv_proto_iconv_arg1="const"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
-fi
-
- am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:$LINENO: result: ${ac_t:-
- }$am_cv_proto_iconv" >&5
-$as_echo "${ac_t:-
- }$am_cv_proto_iconv" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
-
- fi
-
-
-# Check for doxygen
-# Extract the first word of "doxygen", so it can be a program name with args.
-set dummy doxygen; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_HAVE_DOXYGEN+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$HAVE_DOXYGEN"; then
- ac_cv_prog_HAVE_DOXYGEN="$HAVE_DOXYGEN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_HAVE_DOXYGEN="true"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_prog_HAVE_DOXYGEN" && ac_cv_prog_HAVE_DOXYGEN="false"
-fi
-fi
-HAVE_DOXYGEN=$ac_cv_prog_HAVE_DOXYGEN
-if test -n "$HAVE_DOXYGEN"; then
- { $as_echo "$as_me:$LINENO: result: $HAVE_DOXYGEN" >&5
-$as_echo "$HAVE_DOXYGEN" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- if $HAVE_DOXYGEN; then
- HAVE_DOXYGEN_TRUE=
- HAVE_DOXYGEN_FALSE='#'
-else
- HAVE_DOXYGEN_TRUE='#'
- HAVE_DOXYGEN_FALSE=
-fi
-
-if test $HAVE_DOXYGEN = "false"; then
- { $as_echo "$as_me:$LINENO: WARNING: *** doxygen not found, docs will not be built" >&5
-$as_echo "$as_me: WARNING: *** doxygen not found, docs will not be built" >&2;}
-fi
-
-# Check for Darwin
-{ $as_echo "$as_me:$LINENO: checking if the host operating system is Darwin" >&5
-$as_echo_n "checking if the host operating system is Darwin... " >&6; }
-case "$host" in
- *-darwin*)
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- CFLAGS="$CFLAGS -DUSE_DARWIN"
- OSFLAGS="-framework IOKit"
- ;;
- *) { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; } ;;
-esac
-
-
-# Check for mingw compiler platform
-{ $as_echo "$as_me:$LINENO: checking For MinGW32" >&5
-$as_echo_n "checking For MinGW32... " >&6; }
-case "$host" in
- *-*-mingw*)
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- mingw_compiler=yes
- ;;
- *) { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; } ;;
-esac
- if test "$mingw_compiler" = "yes"; then
- COMPILE_MINGW32_TRUE=
- COMPILE_MINGW32_FALSE='#'
-else
- COMPILE_MINGW32_TRUE='#'
- COMPILE_MINGW32_FALSE=
-fi
-
-
-# Check if Microsoft LIB.EXE is available
-if test "$mingw_compiler" = "yes"; then
- # Extract the first word of "lib.exe", so it can be a program name with args.
-set dummy lib.exe; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ms_lib_exe+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ms_lib_exe"; then
- ac_cv_prog_ms_lib_exe="$ms_lib_exe" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ms_lib_exe="yes"
- $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_prog_ms_lib_exe" && ac_cv_prog_ms_lib_exe="no"
-fi
-fi
-ms_lib_exe=$ac_cv_prog_ms_lib_exe
-if test -n "$ms_lib_exe"; then
- { $as_echo "$as_me:$LINENO: result: $ms_lib_exe" >&5
-$as_echo "$ms_lib_exe" >&6; }
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
- if test x$ms_lib_exe = xyes; then
- MS_LIB_EXE_TRUE=
- MS_LIB_EXE_FALSE='#'
-else
- MS_LIB_EXE_TRUE='#'
- MS_LIB_EXE_FALSE=
-fi
-
-
-# Checks for libraries.
-
-{ $as_echo "$as_me:$LINENO: checking for usb_control_msg in -lusb" >&5
-$as_echo_n "checking for usb_control_msg in -lusb... " >&6; }
-if test "${ac_cv_lib_usb_usb_control_msg+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb "$OSFLAGS" $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_control_msg ();
-int
-main ()
-{
-return usb_control_msg ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_usb_usb_control_msg=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_usb_usb_control_msg=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_usb_usb_control_msg" >&5
-$as_echo "$ac_cv_lib_usb_usb_control_msg" >&6; }
-if test "x$ac_cv_lib_usb_usb_control_msg" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBUSB 1
-_ACEOF
-
- LIBS="-lusb $LIBS"
-
-else
- { { $as_echo "$as_me:$LINENO: error: I can't find the libusb libraries on your system. You
- may need to set the LDFLAGS environment variable to include the
- search path where you have libusb installed before running
- configure (e.g. setenv LDFLAGS=-L/usr/local/lib)" >&5
-$as_echo "$as_me: error: I can't find the libusb libraries on your system. You
- may need to set the LDFLAGS environment variable to include the
- search path where you have libusb installed before running
- configure (e.g. setenv LDFLAGS=-L/usr/local/lib)" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-# Checks for header files.
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_stdc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_stdc=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_header_time=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_header_time=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
-
-fi
-
-# zlib.h the day we need to decompress firmware
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in ctype.h errno.h fcntl.h getopt.h libgen.h \
- limits.h stdio.h string.h sys/stat.h sys/time.h unistd.h \
- iconv.h langinfo.h locale.h arpa/inet.h byteswap.h sys/uio.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## --------------------------------------------------- ##
-## Report this to libmtp-discuss@lists.sourceforge.net ##
-## --------------------------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-if test "${ac_cv_header_usb_h+set}" = set; then
- { $as_echo "$as_me:$LINENO: checking for usb.h" >&5
-$as_echo_n "checking for usb.h... " >&6; }
-if test "${ac_cv_header_usb_h+set}" = set; then
- $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_usb_h" >&5
-$as_echo "$ac_cv_header_usb_h" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking usb.h usability" >&5
-$as_echo_n "checking usb.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <usb.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking usb.h presence" >&5
-$as_echo_n "checking usb.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <usb.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: usb.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: usb.h: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: usb.h: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: usb.h: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: usb.h: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: usb.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: usb.h: proceeding with the preprocessor's result" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: usb.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: usb.h: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## --------------------------------------------------- ##
-## Report this to libmtp-discuss@lists.sourceforge.net ##
-## --------------------------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for usb.h" >&5
-$as_echo_n "checking for usb.h... " >&6; }
-if test "${ac_cv_header_usb_h+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_header_usb_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_usb_h" >&5
-$as_echo "$ac_cv_header_usb_h" >&6; }
-
-fi
-if test "x$ac_cv_header_usb_h" = x""yes; then
- :
-else
- { { $as_echo "$as_me:$LINENO: error: I can't find the libusb header file on your system.
- You may need to set the CPPFLAGS environment variable to include
- the search path where you have libusb installed before running
- configure (e.g. setenv CPPFLAGS=-I/usr/local/include)" >&5
-$as_echo "$as_me: error: I can't find the libusb header file on your system.
- You may need to set the CPPFLAGS environment variable to include
- the search path where you have libusb installed before running
- configure (e.g. setenv CPPFLAGS=-I/usr/local/include)" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-
-# Checks for typedefs, structures, and compiler characteristics.
-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
- typedef int charset[2];
- const charset cs;
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *pcpcc;
- char **ppc;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- pcpcc = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++pcpcc;
- ppc = (char**) pcpcc;
- pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- if (s) return 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- if (!foo) return 0;
- }
- return !cs[0] && !zero.x;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_c_const=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_const=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const /**/
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for off_t" >&5
-$as_echo_n "checking for off_t... " >&6; }
-if test "${ac_cv_type_off_t+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_off_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (off_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((off_t)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_off_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-$as_echo "$ac_cv_type_off_t" >&6; }
-if test "x$ac_cv_type_off_t" = x""yes; then
- :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if test "${ac_cv_type_signal+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_type_signal=int
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_signal=void
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
-$as_echo_n "checking for size_t... " >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_type_size_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (size_t))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((size_t)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_type_size_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-$as_echo "$ac_cv_type_size_t" >&6; }
-if test "x$ac_cv_type_size_t" = x""yes; then
- :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5
-$as_echo_n "checking for struct stat.st_blksize... " >&6; }
-if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static struct stat ac_aggr;
-if (ac_aggr.st_blksize)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_stat_st_blksize=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-static struct stat ac_aggr;
-if (sizeof ac_aggr.st_blksize)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_member_struct_stat_st_blksize=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_member_struct_stat_st_blksize=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5
-$as_echo "$ac_cv_member_struct_stat_st_blksize" >&6; }
-if test "x$ac_cv_member_struct_stat_st_blksize" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ST_BLKSIZE 1
-_ACEOF
-
-fi
-
-
-
-# Checks for library functions.
-
-for ac_header in stdlib.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then
- ac_header_preproc=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## --------------------------------------------------- ##
-## Report this to libmtp-discuss@lists.sourceforge.net ##
-## --------------------------------------------------- ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
-$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
-if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_malloc_0_nonnull=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#if defined STDC_HEADERS || defined HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-char *malloc ();
-#endif
-
-int
-main ()
-{
-return ! malloc (0);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_malloc_0_nonnull=yes
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_malloc_0_nonnull=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
-$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
-if test $ac_cv_func_malloc_0_nonnull = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 1
-_ACEOF
-
-else
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 0
-_ACEOF
-
- case " $LIBOBJS " in
- *" malloc.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
- ;;
-esac
-
-
-cat >>confdefs.h <<\_ACEOF
-#define malloc rpl_malloc
-_ACEOF
-
-fi
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for working memcmp" >&5
-$as_echo_n "checking for working memcmp... " >&6; }
-if test "${ac_cv_func_memcmp_working+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_memcmp_working=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-
- /* Some versions of memcmp are not 8-bit clean. */
- char c0 = '\100', c1 = '\200', c2 = '\201';
- if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
- return 1;
-
- /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
- or more and with at least one buffer not starting on a 4-byte boundary.
- William Lewis provided this test program. */
- {
- char foo[21];
- char bar[21];
- int i;
- for (i = 0; i < 4; i++)
- {
- char *a = foo + i;
- char *b = bar + i;
- strcpy (a, "--------01111111");
- strcpy (b, "--------10000000");
- if (memcmp (a, b, 16) >= 0)
- return 1;
- }
- return 0;
- }
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_memcmp_working=yes
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_memcmp_working=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
-$as_echo "$ac_cv_func_memcmp_working" >&6; }
-test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
- *" memcmp.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
- ;;
-esac
-
-
-{ $as_echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5
-$as_echo_n "checking whether lstat dereferences a symlink specified with a trailing slash... " >&6; }
-if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- rm -f conftest.sym conftest.file
-echo >conftest.file
-if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
- if test "$cross_compiling" = yes; then
- ac_cv_func_lstat_dereferences_slashed_symlink=no
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-struct stat sbuf;
- /* Linux will dereference the symlink and fail.
- That is better in the sense that it means we will not
- have to compile and use the lstat wrapper. */
- return lstat ("conftest.sym/", &sbuf) == 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_lstat_dereferences_slashed_symlink=yes
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_lstat_dereferences_slashed_symlink=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-else
- # If the `ln -s' command failed, then we probably don't even
- # have an lstat function.
- ac_cv_func_lstat_dereferences_slashed_symlink=no
-fi
-rm -f conftest.sym conftest.file
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
-$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
-
-test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
-
-cat >>confdefs.h <<_ACEOF
-#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
-_ACEOF
-
-
-if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
- case " $LIBOBJS " in
- *" lstat.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS lstat.$ac_objext"
- ;;
-esac
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5
-$as_echo_n "checking whether stat accepts an empty string... " >&6; }
-if test "${ac_cv_func_stat_empty_string_bug+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_stat_empty_string_bug=yes
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-struct stat sbuf;
- return stat ("", &sbuf) == 0;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_func_stat_empty_string_bug=no
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_stat_empty_string_bug=yes
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5
-$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; }
-if test $ac_cv_func_stat_empty_string_bug = yes; then
- case " $LIBOBJS " in
- *" stat.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS stat.$ac_objext"
- ;;
-esac
-
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STAT_EMPTY_STRING_BUG 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-
-
-
-
-for ac_func in basename memset select strdup strerror strrchr strtoul usleep mkstemp
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- eval "$as_ac_var=yes"
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
- $as_echo "$as_val"'`
- if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-# Switches.
-# Enable LFS (Large File Support)
-# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then
- enableval=$enable_largefile;
-fi
-
-if test "$enable_largefile" != no; then
-
- { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if test "${ac_cv_sys_largefile_CC+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- break
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- CC="$CC -n32"
- rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_sys_largefile_CC=' -n32'; break
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
-
- { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if test "${ac_cv_sys_file_offset_bits+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_sys_file_offset_bits=no; break
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_sys_file_offset_bits=64; break
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_file_offset_bits=unknown
- break
-done
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -rf conftest*
- if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if test "${ac_cv_sys_large_files+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- while :; do
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_sys_large_files=no; break
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_sys_large_files=1; break
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_sys_large_files=unknown
- break
-done
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
- no | unknown) ;;
- *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
-esac
-rm -rf conftest*
- fi
-fi
-
-# Stick in "-Werror" if you want to be more aggressive.
-# (No need to use AC_SUBST on this default substituted environment variable.)
-CFLAGS="$CFLAGS -Wall -Wmissing-prototypes"
-
-# Output files
-
-# Create a stdint.h-like file containing size-specific integer definitions
-# that will always be available. The <stdint.h> file is required by the
-# library, but we provide this anyway because the libptp2 stuff wants this
-# file.
-
-ac_dir=`$as_dirname -- "src/_stdint.h" ||
-$as_expr X"src/_stdint.h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"src/_stdint.h" : 'X\(//\)[^/]' \| \
- X"src/_stdint.h" : 'X\(//\)$' \| \
- X"src/_stdint.h" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"src/_stdint.h" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-if test "$ac_dir" != "src/_stdint.h" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && { as_dir="$ac_dir"
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for uint8_t in stdint.h" >&5
-$as_echo_n "checking for uint8_t in stdint.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdint.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- ac_cv_type_uint8_t=yes
-else
- ac_cv_type_uint8_t=no
-fi
-rm -f conftest*
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
-$as_echo "$ac_cv_type_uint8_t" >&6; }
-if test $ac_cv_type_uint8_t = yes; then
-
-cat > "src/_stdint.h" <<EOF
-/* This file is generated automatically by configure */
-#include <stdint.h>
-EOF
-else
- { $as_echo "$as_me:$LINENO: checking for uint8_t in inttypes.h" >&5
-$as_echo_n "checking for uint8_t in inttypes.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <inttypes.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- ac_cv_type_uint8_t=yes
-else
- ac_cv_type_uint8_t=no
-fi
-rm -f conftest*
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
-$as_echo "$ac_cv_type_uint8_t" >&6; }
-if test $ac_cv_type_uint8_t = yes; then
- cat > "src/_stdint.h" <<EOF
-/* This file is generated automatically by configure */
-#include <inttypes.h>
-EOF
-else
- { $as_echo "$as_me:$LINENO: checking for uint8_t in sys/types.h" >&5
-$as_echo_n "checking for uint8_t in sys/types.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- ac_cv_type_uint8_t=yes
-else
- ac_cv_type_uint8_t=no
-fi
-rm -f conftest*
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
-$as_echo "$ac_cv_type_uint8_t" >&6; }
-if test $ac_cv_type_uint8_t = yes; then
- cat > "src/_stdint.h" <<EOF
-/* This file is generated automatically by configure */
-#include <sys/types.h>
-EOF
-else
- { $as_echo "$as_me:$LINENO: checking for u_int8_t in sys/types.h" >&5
-$as_echo_n "checking for u_int8_t in sys/types.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "(^|[^a-zA-Z_0-9])u_int8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- ac_cv_type_u_int8_t=yes
-else
- ac_cv_type_u_int8_t=no
-fi
-rm -f conftest*
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5
-$as_echo "$ac_cv_type_u_int8_t" >&6; }
-if test $ac_cv_type_u_int8_t = yes; then
- cat > "src/_stdint.h" <<EOF
-/* This file is generated automatically by configure */
-#ifndef __STDINT_H
-#define __STDINT_H
-#include <sys/types.h>
-typedef u_int8_t uint8_t;
-typedef u_int16_t uint16_t;
-typedef u_int32_t uint32_t;
-EOF
-
-{ $as_echo "$as_me:$LINENO: checking for u_int64_t in sys/types.h" >&5
-$as_echo_n "checking for u_int64_t in sys/types.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "(^|[^a-zA-Z_0-9])u_int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- ac_cv_type_u_int64_t=yes
-else
- ac_cv_type_u_int64_t=no
-fi
-rm -f conftest*
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5
-$as_echo "$ac_cv_type_u_int64_t" >&6; }
-if test $ac_cv_type_u_int64_t = yes; then
- cat >> "src/_stdint.h" <<EOF
-typedef u_int64_t uint64_t;
-#endif /*!__STDINT_H*/
-EOF
-else
- cat >> "src/_stdint.h" <<EOF
-/* 64-bit types are not available on this system */
-/* typedef u_int64_t uint64_t; */
-#endif /*!__STDINT_H*/
-EOF
-fi
-
-
-
-else
- { $as_echo "$as_me:$LINENO: WARNING: I can't find size-specific integer definitions on this system" >&5
-$as_echo "$as_me: WARNING: I can't find size-specific integer definitions on this system" >&2;}
-if test -e "src/_stdint.h" ; then
- rm -f "src/_stdint.h"
-fi
-
-fi
-
-fi
-
-fi
-
-fi
-
-
-# Create a header file containing NetBSD-style byte swapping macros.
-# This m4 macros has caused severe pain, I am considering creating a
-# hard-coded byte swapper that will be eternally portable.
-
-ac_dir=`$as_dirname -- "src/gphoto2-endian.h" ||
-$as_expr X"src/gphoto2-endian.h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"src/gphoto2-endian.h" : 'X\(//\)[^/]' \| \
- X"src/gphoto2-endian.h" : 'X\(//\)$' \| \
- X"src/gphoto2-endian.h" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"src/gphoto2-endian.h" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-if test "$ac_dir" != "src/gphoto2-endian.h" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && { as_dir="$ac_dir"
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
-fi
-
-# We're only interested in the target CPU, but it's not always set
-effective_target="$target"
-if test "x$effective_target" = xNONE -o "x$effective_target" = x ; then
- effective_target="$host"
-fi
-
-
-cat > "src/gphoto2-endian.h" << EOF
-/* This file is generated automatically by configure */
-/* It is valid only for the system type ${effective_target} */
-
-#ifndef __BYTEORDER_H
-#define __BYTEORDER_H
-
-EOF
-
-
- { $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if test "${ac_cv_c_bigendian+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_bigendian=unknown
- # See if we're dealing with a universal compiler.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
-
- # Check for potential -arch flags. It is not universal unless
- # there are some -arch flags. Note that *ppc* also matches
- # ppc64. This check is also rather less than ideal.
- case "${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" in #(
- *-arch*ppc*|*-arch*i386*|*-arch*x86_64*) ac_cv_c_bigendian=universal;;
- esac
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test $ac_cv_c_bigendian = unknown; then
- # See if sys/param.h defines the BYTE_ORDER macro.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
- && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
- && LITTLE_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- # It does; now see whether it defined to BIG_ENDIAN or not.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_c_bigendian=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_bigendian=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- # It does; now see whether it defined to _BIG_ENDIAN or not.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_c_bigendian=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_c_bigendian=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # Compile a test program.
- if test "$cross_compiling" = yes; then
- # Try to guess by grepping values from an object file.
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-short int ascii_mm[] =
- { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
- { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
- int use_ascii (int i) {
- return ascii_mm[i] + ascii_ii[i];
- }
- short int ebcdic_ii[] =
- { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
- { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
- int use_ebcdic (int i) {
- return ebcdic_mm[i] + ebcdic_ii[i];
- }
- extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
- ac_cv_c_bigendian=yes
- fi
- if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
- if test "$ac_cv_c_bigendian" = unknown; then
- ac_cv_c_bigendian=no
- else
- # finding both strings is unlikely to happen, but who knows?
- ac_cv_c_bigendian=unknown
- fi
- fi
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-
- /* Are we little or big endian? From Harbison&Steele. */
- union
- {
- long int l;
- char c[sizeof (long int)];
- } u;
- u.l = 1;
- return u.c[sizeof (long int) - 1] == 1;
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_c_bigendian=no
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_c_bigendian=yes
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
- fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
- yes)
- cat >>confdefs.h <<\_ACEOF
-#define WORDS_BIGENDIAN 1
-_ACEOF
-;; #(
- no)
- ;; #(
- universal)
-
-cat >>confdefs.h <<\_ACEOF
-#define AC_APPLE_UNIVERSAL_BUILD 1
-_ACEOF
-
- ;; #(
- *)
- { { $as_echo "$as_me:$LINENO: error: unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" >&5
-$as_echo "$as_me: error: unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for le32toh in machine/endian.h" >&5
-$as_echo_n "checking for le32toh in machine/endian.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <machine/endian.h>
-#ifdef le32toh
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<le32toh\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-HAVE_LE32TOH=1
- cat >> "src/gphoto2-endian.h" << EOF
-/* extended byte swapping macros are already available */
-#include <machine/endian.h>
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for ntohl in arpa/inet.h" >&5
-$as_echo_n "checking for ntohl in arpa/inet.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <arpa/inet.h>
-#ifdef ntohl
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<ntohl\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "src/gphoto2-endian.h" << EOF
-/* ntohl and relatives live here */
-#include <arpa/inet.h>
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-{ $as_echo "$as_me:$LINENO: checking for ntohl in netinet/in.h" >&5
-$as_echo_n "checking for ntohl in netinet/in.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <netinet/in.h>
-#ifdef ntohl
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<ntohl\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "src/gphoto2-endian.h" << EOF
-/* ntohl and relatives live here */
-#include <netinet/in.h>
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-true
-
-fi
-rm -f conftest*
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-
-{ $as_echo "$as_me:$LINENO: checking for swap32 in machine/endian.h" >&5
-$as_echo_n "checking for swap32 in machine/endian.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <machine/endian.h>
-#ifdef swap32
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<swap32\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "src/gphoto2-endian.h" << EOF
-/* swap32 and swap16 are defined in machine/endian.h */
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:$LINENO: checking for bswap_32 in byteswap.h" >&5
-$as_echo_n "checking for bswap_32 in byteswap.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <byteswap.h>
-#ifdef bswap_32
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<bswap_32\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "src/gphoto2-endian.h" << EOF
-/* Define generic byte swapping functions */
-#include <byteswap.h>
-#define swap16(x) bswap_16(x)
-#define swap32(x) bswap_32(x)
-#define swap64(x) bswap_64(x)
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:$LINENO: checking for bswap32 in machine/endian.h" >&5
-$as_echo_n "checking for bswap32 in machine/endian.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <machine/endian.h>
-#ifdef bswap32
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<bswap32\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
- cat >> "src/gphoto2-endian.h" << EOF
-/* Define generic byte swapping functions */
-EOF
- if test "$HAVE_LE32TOH" != "1"; then
- echo '#include <machine/endian.h>'>> "src/gphoto2-endian.h"
- fi
-cat >> "src/gphoto2-endian.h" << EOF
-#define swap16(x) bswap16(x)
-#define swap32(x) bswap32(x)
-#define swap64(x) bswap64(x)
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:$LINENO: checking for __byte_swap_long in sys/types.h" >&5
-$as_echo_n "checking for __byte_swap_long in sys/types.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <sys/types.h>
-#ifdef __byte_swap_long
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<__byte_swap_long\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "src/gphoto2-endian.h" << EOF
-/* Define generic byte swapping functions */
-#include <sys/types.h>
-#define swap16(x) __byte_swap_word(x)
-#define swap32(x) __byte_swap_long(x)
-/* No optimized 64 bit byte swapping macro is available */
-#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
- ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
- ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
- ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
- ((x) >> 8) & 0x00000000ff000000ULL | \\
- ((x) >> 24) & 0x0000000000ff0000ULL | \\
- ((x) >> 40) & 0x000000000000ff00ULL | \\
- ((x) >> 56) & 0x00000000000000ffULL))
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:$LINENO: checking for NXSwapLong in machine/byte_order.h" >&5
-$as_echo_n "checking for NXSwapLong in machine/byte_order.h... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-#include <machine/byte_order.h>
-#ifdef NXSwapLong
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<NXSwapLong\>" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "src/gphoto2-endian.h" << EOF
-/* Define generic byte swapping functions */
-#include <machine/byte_order.h>
-#define swap16(x) NXSwapShort(x)
-#define swap32(x) NXSwapLong(x)
-#define swap64(x) NXSwapLongLong(x)
-
-EOF
-
-else
- { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
- if test $ac_cv_c_bigendian = yes; then
- cat >> "src/gphoto2-endian.h" << EOF
-/* No other byte swapping functions are available on this big-endian system */
-#define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8)))
-#define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \\
- ((uint32_t)(x) << 8) & 0x00ff0000UL | \\
- ((x) >> 8) & 0x0000ff00UL | \\
- ((x) >> 24) & 0x000000ffUL))
-#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
- ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
- ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
- ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
- ((x) >> 8) & 0x00000000ff000000ULL | \\
- ((x) >> 24) & 0x0000000000ff0000ULL | \\
- ((x) >> 40) & 0x000000000000ff00ULL | \\
- ((x) >> 56) & 0x00000000000000ffULL))
-
-EOF
- else
- cat >> "src/gphoto2-endian.h" << EOF
-/* Use these as generic byteswapping macros on this little endian system */
-#define swap16(x) ntohs(x)
-#define swap32(x) ntohl(x)
-/* No optimized 64 bit byte swapping macro is available */
-#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
- ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
- ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
- ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
- ((x) >> 8) & 0x00000000ff000000ULL | \\
- ((x) >> 24) & 0x0000000000ff0000ULL | \\
- ((x) >> 40) & 0x000000000000ff00ULL | \\
- ((x) >> 56) & 0x00000000000000ffULL))
-
-EOF
- fi
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-
-if test "$HAVE_LE32TOH" != "1"; then
- cat >> "src/gphoto2-endian.h" << EOF
-/* The byte swapping macros have the form: */
-/* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */
-/* le (little-endian), NN is 16 or 32 (number of bits) and a, */
-/* if present, indicates that the endian side is a pointer to an */
-/* array of uint8_t bytes instead of an integer of the specified length. */
-/* h refers to the host's ordering method. */
-
-/* So, to convert a 32-bit integer stored in a buffer in little-endian */
-/* format into a uint32_t usable on this machine, you could use: */
-/* uint32_t value = le32atoh(&buf[3]); */
-/* To put that value back into the buffer, you could use: */
-/* htole32a(&buf[3], value); */
-
-/* Define aliases for the standard byte swapping macros */
-/* Arguments to these macros must be properly aligned on natural word */
-/* boundaries in order to work properly on all architectures */
-#ifndef htobe16
-# define htobe16(x) htons(x)
-#endif
-#ifndef htobe32
-# define htobe32(x) htonl(x)
-#endif
-#ifndef be16toh
-# define be16toh(x) ntohs(x)
-#endif
-#ifndef be32toh
-# define be32toh(x) ntohl(x)
-#endif
-
-#define HTOBE16(x) (x) = htobe16(x)
-#define HTOBE32(x) (x) = htobe32(x)
-#define BE32TOH(x) (x) = be32toh(x)
-#define BE16TOH(x) (x) = be16toh(x)
-
-EOF
-
- if test $ac_cv_c_bigendian = yes; then
- cat >> "src/gphoto2-endian.h" << EOF
-/* Define our own extended byte swapping macros for big-endian machines */
-#ifndef htole16
-# define htole16(x) swap16(x)
-#endif
-#ifndef htole32
-# define htole32(x) swap32(x)
-#endif
-#ifndef le16toh
-# define le16toh(x) swap16(x)
-#endif
-#ifndef le32toh
-# define le32toh(x) swap32(x)
-#endif
-#ifndef le64toh
-# define le64toh(x) swap64(x)
-#endif
-
-#ifndef htobe64
-# define htobe64(x) (x)
-#endif
-#ifndef be64toh
-# define be64toh(x) (x)
-#endif
-
-#define HTOLE16(x) (x) = htole16(x)
-#define HTOLE32(x) (x) = htole32(x)
-#define LE16TOH(x) (x) = le16toh(x)
-#define LE32TOH(x) (x) = le32toh(x)
-#define LE64TOH(x) (x) = le64toh(x)
-
-#define HTOBE64(x) (void) (x)
-#define BE64TOH(x) (void) (x)
-
-EOF
- else
- cat >> "src/gphoto2-endian.h" << EOF
-/* On little endian machines, these macros are null */
-#ifndef htole16
-# define htole16(x) (x)
-#endif
-#ifndef htole32
-# define htole32(x) (x)
-#endif
-#ifndef htole64
-# define htole64(x) (x)
-#endif
-#ifndef le16toh
-# define le16toh(x) (x)
-#endif
-#ifndef le32toh
-# define le32toh(x) (x)
-#endif
-#ifndef le64toh
-# define le64toh(x) (x)
-#endif
-
-#define HTOLE16(x) (void) (x)
-#define HTOLE32(x) (void) (x)
-#define HTOLE64(x) (void) (x)
-#define LE16TOH(x) (void) (x)
-#define LE32TOH(x) (void) (x)
-#define LE64TOH(x) (void) (x)
-
-/* These don't have standard aliases */
-#ifndef htobe64
-# define htobe64(x) swap64(x)
-#endif
-#ifndef be64toh
-# define be64toh(x) swap64(x)
-#endif
-
-#define HTOBE64(x) (x) = htobe64(x)
-#define BE64TOH(x) (x) = be64toh(x)
-
-EOF
- fi
-fi
-
-cat >> "src/gphoto2-endian.h" << EOF
-/* Define the C99 standard length-specific integer types */
-#include <_stdint.h>
-
-EOF
-
-case "${effective_target}" in
- i[3456]86-*)
- cat >> "src/gphoto2-endian.h" << EOF
-/* Here are some macros to create integers from a byte array */
-/* These are used to get and put integers from/into a uint8_t array */
-/* with a specific endianness. This is the most portable way to generate */
-/* and read messages to a network or serial device. Each member of a */
-/* packet structure must be handled separately. */
-
-/* The i386 and compatibles can handle unaligned memory access, */
-/* so use the optimized macros above to do this job */
-#ifndef be16atoh
-# define be16atoh(x) be16toh(*(uint16_t*)(x))
-#endif
-#ifndef be32atoh
-# define be32atoh(x) be32toh(*(uint32_t*)(x))
-#endif
-#ifndef be64atoh
-# define be64atoh(x) be64toh(*(uint64_t*)(x))
-#endif
-#ifndef le16atoh
-# define le16atoh(x) le16toh(*(uint16_t*)(x))
-#endif
-#ifndef le32atoh
-# define le32atoh(x) le32toh(*(uint32_t*)(x))
-#endif
-#ifndef le64atoh
-# define le64atoh(x) le64toh(*(uint64_t*)(x))
-#endif
-
-#ifndef htob16a
-# define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x)
-#endif
-#ifndef htobe32a
-# define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x)
-#endif
-#ifndef htobe64a
-# define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x)
-#endif
-#ifndef htole16a
-# define htole16a(a,x) *(uint16_t*)(a) = htole16(x)
-#endif
-#ifndef htole32a
-# define htole32a(a,x) *(uint32_t*)(a) = htole32(x)
-#endif
-#ifndef htole64a
-# define htole64a(a,x) *(uint64_t*)(a) = htole64(x)
-#endif
-
-EOF
- ;;
-
- *)
- cat >> "src/gphoto2-endian.h" << EOF
-/* Here are some macros to create integers from a byte array */
-/* These are used to get and put integers from/into a uint8_t array */
-/* with a specific endianness. This is the most portable way to generate */
-/* and read messages to a network or serial device. Each member of a */
-/* packet structure must be handled separately. */
-
-/* Non-optimized but portable macros */
-#define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1]))
-#define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3]))
-#define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<<shift)
-#define be64atoh(x) ((uint64_t)(be64atoh_x(x,0,56)|be64atoh_x(x,1,48)|be64atoh_x(x,2,40)| \\
- be64atoh_x(x,3,32)|be64atoh_x(x,4,24)|be64atoh_x(x,5,16)|be64atoh_x(x,6,8)|((x)[7])))
-#define le16atoh(x) ((uint16_t)(((x)[1]<<8)|(x)[0]))
-#define le32atoh(x) ((uint32_t)(((x)[3]<<24)|((x)[2]<<16)|((x)[1]<<8)|(x)[0]))
-#define le64atoh_x(x,off,shift) (((uint64_t)(x)[off])<<shift)
-#define le64atoh(x) ((uint64_t)(le64atoh_x(x,7,56)|le64atoh_x(x,6,48)|le64atoh_x(x,5,40)| \\
- le64atoh_x(x,4,32)|le64atoh_x(x,3,24)|le64atoh_x(x,2,16)|le64atoh_x(x,1,8)|((x)[0])))
-
-#define htobe16a(a,x) (a)[0]=(uint8_t)((x)>>8), (a)[1]=(uint8_t)(x)
-#define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \\
- (a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x)
-#define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \\
- (a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \\
- (a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \\
- (a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x)
-#define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-#define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\
- (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-#define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \\
- (a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \\
- (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\
- (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-
-EOF
- ;;
-esac
-
-
-cat >> "src/gphoto2-endian.h" << EOF
-#endif /*__BYTEORDER_H*/
-EOF
-
-ac_config_files="$ac_config_files src/libmtp.h doc/Doxyfile Makefile doc/Makefile src/Makefile examples/Makefile libmtp.sh hotplug.sh libmtp.pc"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
- { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
- else
- { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
- if test -n "$EXEEXT"; then
- am__EXEEXT_TRUE=
- am__EXEEXT_FALSE='#'
-else
- am__EXEEXT_TRUE='#'
- am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_DOXYGEN\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_DOXYGEN\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${COMPILE_MINGW32_TRUE}" && test -z "${COMPILE_MINGW32_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"COMPILE_MINGW32\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"COMPILE_MINGW32\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-if test -z "${MS_LIB_EXE_TRUE}" && test -z "${MS_LIB_EXE_FALSE}"; then
- { { $as_echo "$as_me:$LINENO: error: conditional \"MS_LIB_EXE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"MS_LIB_EXE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-: ${CONFIG_STATUS=./config.status}
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-## --------------------- ##
-## M4sh Initialization. ##
-## --------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in
- *posix*) set -o posix ;;
-esac
-
-fi
-
-
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- as_unset=unset
-else
- as_unset=false
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-case $0 in
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
- test "x$as_lineno_1" != "x$as_lineno_2" &&
- test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
- # line-number line after each line using $LINENO; the second 'sed'
- # does the real work. The second script uses 'N' to pair each
- # line-number line with the line containing $LINENO, and appends
- # trailing '-' during substitution so that $LINENO is not a special
- # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
- # scripts with optimization help from Paolo Bonzini. Blame Lee
- # E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
- case `echo 'x\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- *) ECHO_C='\c';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
-else
- as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-
-# Save the log message, to keep $[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by libmtp $as_me 1.0.1, which was
-generated by GNU Autoconf 2.63. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTION]... [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <bug-autoconf@gnu.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_version="\\
-libmtp config.status 1.0.1
-configured by $0, generated by GNU Autoconf 2.63,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2008 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h)
- # Conflict between --help and --header
- { $as_echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; };;
- --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) { $as_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; } ;;
-
- *) ac_config_targets="$ac_config_targets $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
-LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-AR \
-AR_FLAGS \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-SHELL \
-ECHO \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
-lt_prog_compiler_pic \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
-hardcode_libdir_separator \
-fix_srcfile_path \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-finish_eval \
-old_striplib \
-striplib; do
- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
- *[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
- *[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
- ;;
-esac
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-
-
- PACKAGE='$PACKAGE'
- VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
- RM='$RM'
- ofile='$ofile'
-
-
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
- "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
- "src/libmtp.h") CONFIG_FILES="$CONFIG_FILES src/libmtp.h" ;;
- "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
- "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
- "libmtp.sh") CONFIG_FILES="$CONFIG_FILES libmtp.sh" ;;
- "hotplug.sh") CONFIG_FILES="$CONFIG_FILES hotplug.sh" ;;
- "libmtp.pc") CONFIG_FILES="$CONFIG_FILES libmtp.pc" ;;
-
- *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp=
- trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} ||
-{
- $as_echo "$as_me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
-}
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=' '
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
-_ACEOF
-
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\).*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\).*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
- || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
- { (exit 1); exit 1; }; }
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
-s/:*$//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_t"; then
- break
- elif $ac_last_try; then
- { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any. Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[ ]*#[ ]*define[ ][ ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- for (key in D) D_is_set[key] = 1
- FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
- line = \$ 0
- split(line, arg, " ")
- if (arg[1] == "#") {
- defundef = arg[2]
- mac1 = arg[3]
- } else {
- defundef = substr(arg[1], 2)
- mac1 = arg[2]
- }
- split(mac1, mac2, "(") #)
- macro = mac2[1]
- prefix = substr(line, 1, index(line, defundef) - 1)
- if (D_is_set[macro]) {
- # Preserve the white space surrounding the "#".
- print prefix "define", macro P[macro] D[macro]
- next
- } else {
- # Replace #undef with comments. This is necessary, for example,
- # in the case of _POSIX_SOURCE, which is predefined and required
- # on some systems where configure will not decide to define it.
- if (defundef == "undef") {
- print "/*", prefix defundef, macro, "*/"
- next
- }
- }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
-$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
- { (exit 1); exit 1; }; }
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
- { (exit 1); exit 1; }; };;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
- { (exit 1); exit 1; }; };;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- ac_file_inputs="$ac_file_inputs '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; } ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- { as_dir="$ac_dir"
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
- ac_MKDIR_P=$MKDIR_P
- case $MKDIR_P in
- [\\/$]* | ?:[\\/]* ) ;;
- */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p
-'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
-
- rm -f "$tmp/stdin"
- case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
- esac \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- :H)
- #
- # CONFIG_HEADER
- #
- if test x"$ac_file" != x-; then
- {
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
- } >"$tmp/config.h" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
- else
- rm -f "$ac_file"
- mv "$tmp/config.h" "$ac_file" \
- || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
- { (exit 1); exit 1; }; }
- fi
- else
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
- || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
-$as_echo "$as_me: error: could not create -" >&2;}
- { (exit 1); exit 1; }; }
- fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$_am_arg" : 'X\(//\)[^/]' \| \
- X"$_am_arg" : 'X\(//\)$' \| \
- X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
- :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Autoconf 2.62 quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named `Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running `make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n 's/^U = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- { as_dir=$dirpart/$fdir
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
- ;;
- "libtool":C)
-
- # See if we are running on zsh, and set the options which allow our
- # commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
- fi
-
- cfgfile="${ofile}T"
- trap "$RM \"$cfgfile\"; exit 1" 1 2 15
- $RM "$cfgfile"
-
- cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags=""
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Assembler program.
-AS=$AS
-
-# DLL creation program.
-DLLTOOL=$DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$OBJDUMP
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that does not interpret backslashes.
-ECHO=$lt_ECHO
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names. First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking. This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
- case $host_os in
- aix3*)
- cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-_LT_EOF
- ;;
- esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- case $xsi_shell in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
-}
-
-# func_basename file
-func_basename ()
-{
- func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-# dirname: Compute the dirname of FILE. If nonempty,
-# add APPEND to the result, otherwise set result
-# to NONDIR_REPLACEMENT.
-# value returned in "$func_dirname_result"
-# basename: Compute filename of FILE.
-# value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
- # positional parameters, so assign one to ordinary parameter first.
- func_stripname_result=${3}
- func_stripname_result=${func_stripname_result#"${1}"}
- func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=${1%%=*}
- func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=$(( $* ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=${#1}
-}
-
-_LT_EOF
- ;;
- *) # Bourne compatible functions.
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- # Extract subdirectory from the argument.
- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
-}
-
-# func_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
- case ${2} in
- .*) func_stripname_result=`$ECHO "X${3}" \
- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "X${3}" \
- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
- esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[^=]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "$@"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$1+=\$2"
-}
-_LT_EOF
- ;;
- *)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$1=\$$1\$2"
-}
-
-_LT_EOF
- ;;
- esac
-
-
- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
- ;;
-
- esac
-done # for ac_tag
-
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-chmod +x hotplug.sh
diff --git a/configure.ac b/configure.ac
index b6bfd07..197515e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
-AC_INIT([libmtp], [1.0.1], [libmtp-discuss@lists.sourceforge.net])
+AC_INIT([libmtp], [1.0.0], [libmtp-discuss@lists.sourceforge.net])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([src/libmtp.c])
diff --git a/depcomp b/depcomp
deleted file mode 100755
index df8eea7..0000000
--- a/depcomp
+++ /dev/null
@@ -1,630 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
- '')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
- depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
- DEPDIR directory where to store dependencies.
- depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputing dependencies.
- libtool Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "depcomp $scriptversion"
- exit $?
- ;;
-esac
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u="sed s,\\\\\\\\,/,g"
- depmode=msvisualcpp
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am. Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
- for arg
- do
- case $arg in
- -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
- *) set fnord "$@" "$arg" ;;
- esac
- shift # fnord
- shift # $arg
- done
- "$@"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
- echo >> "$depfile"
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts `$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.u
- tmpdepfile2=$base.u
- tmpdepfile3=$dir.libs/$base.u
- "$@" -Wc,-M
- else
- tmpdepfile1=$dir$base.u
- tmpdepfile2=$dir$base.u
- tmpdepfile3=$dir$base.u
- "$@" -M
- fi
- stat=$?
-
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
- # ICC 7.0 will fill foo.d with something like
- # foo.o: sub/foo.c
- # foo.o: sub/foo.h
- # which is wrong. We want:
- # sub/foo.o: sub/foo.c
- # sub/foo.o: sub/foo.h
- # sub/foo.c:
- # sub/foo.h:
- # ICC 7.1 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using \ :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
-
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
- sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp2)
- # The "hp" stanza above does not work with aCC (C++) and HP's ia64
- # compilers, which have integrated preprocessors. The correct option
- # to use with these is +Maked; it writes dependencies to a file named
- # 'foo.d', which lands next to the object file, wherever that
- # happens to be.
- # Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir.libs/$base.d
- "$@" -Wc,+Maked
- else
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir$base.d
- "$@" +Maked
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
- sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile" "$tmpdepfile2"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- # With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
- # handle both shared and static libraries in a single compilation.
- # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
- #
- # With libtool 1.5 this exception was removed, and libtool now
- # generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
- tmpdepfile2=$dir$base.o.d # libtool 1.5
- tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
- tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.o.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- tmpdepfile4=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a tab and a space in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
- "$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no eat=no
- for arg
- do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- if test $eat = yes; then
- eat=no
- continue
- fi
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -arch)
- eat=yes ;;
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix=`echo "$object" | sed 's/^.*\././'`
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- IFS=" "
- for arg
- do
- case "$arg" in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E 2>/dev/null |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvcmsys)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/doc/.cvsignore b/doc/.cvsignore
new file mode 100644
index 0000000..35b5068
--- /dev/null
+++ b/doc/.cvsignore
@@ -0,0 +1,6 @@
+Doxyfile
+Makefile
+Makefile.in
+html
+latex
+man
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644
index 0833998..0000000
--- a/doc/Makefile.in
+++ /dev/null
@@ -1,384 +0,0 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = doc
-DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/byteorder.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = Doxyfile
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-HAVE_DOXYGEN = @HAVE_DOXYGEN@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OSFLAGS = @OSFLAGS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-ms_lib_exe = @ms_lib_exe@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = Doxyfile.in examples.h mainpage.h
-@HAVE_DOXYGEN_TRUE@pkgdocdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
-@HAVE_DOXYGEN_TRUE@htmldocdir = $(pkgdocdir)/html
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-@HAVE_DOXYGEN_FALSE@all-local:
-all-am: Makefile all-local
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-@HAVE_DOXYGEN_FALSE@uninstall-local:
-@HAVE_DOXYGEN_FALSE@install-data-local:
-@HAVE_DOXYGEN_FALSE@clean-local:
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-data-local
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-local
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
- clean-libtool clean-local distclean distclean-generic \
- distclean-libtool distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-data-local install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
- uninstall-local
-
-
-@HAVE_DOXYGEN_TRUE@all-local:
-@HAVE_DOXYGEN_TRUE@ doxygen
-
-@HAVE_DOXYGEN_TRUE@install-data-local:
-@HAVE_DOXYGEN_TRUE@ $(INSTALL) -d $(DESTDIR)$(htmldocdir)
-@HAVE_DOXYGEN_TRUE@ $(INSTALL_DATA) html/* $(DESTDIR)$(htmldocdir)
-
-@HAVE_DOXYGEN_TRUE@uninstall-local:
-@HAVE_DOXYGEN_TRUE@ $(RM) -r $(DESTDIR)$(htmldocdir)
-@HAVE_DOXYGEN_TRUE@ $(RM) -r $(DESTDIR)$(pkgdocdir)
-
-@HAVE_DOXYGEN_TRUE@clean-local:
-@HAVE_DOXYGEN_TRUE@ $(RM) -r html latex man
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/.cvsignore b/examples/.cvsignore
new file mode 100644
index 0000000..0fa0bd1
--- /dev/null
+++ b/examples/.cvsignore
@@ -0,0 +1,25 @@
+.deps
+.libs
+Makefile
+Makefile.in
+delfile
+detect
+files
+folders
+format
+getfile
+hotplug
+newfolder
+sendfile
+sendtr
+tracks
+trexist
+getplaylist
+playlists
+albumart
+albums
+connect
+emptyfolders
+newplaylist
+thumb
+reset
diff --git a/examples/Makefile.in b/examples/Makefile.in
deleted file mode 100644
index 875656e..0000000
--- a/examples/Makefile.in
+++ /dev/null
@@ -1,687 +0,0 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-bin_PROGRAMS = connect$(EXEEXT) detect$(EXEEXT) tracks$(EXEEXT) \
- files$(EXEEXT) hotplug$(EXEEXT) folders$(EXEEXT) \
- trexist$(EXEEXT) playlists$(EXEEXT) getplaylist$(EXEEXT) \
- format$(EXEEXT) albumart$(EXEEXT) albums$(EXEEXT) \
- newplaylist$(EXEEXT) emptyfolders$(EXEEXT) thumb$(EXEEXT) \
- reset$(EXEEXT)
-subdir = examples
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/byteorder.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am_albumart_OBJECTS = albumart.$(OBJEXT) util.$(OBJEXT)
-albumart_OBJECTS = $(am_albumart_OBJECTS)
-albumart_LDADD = $(LDADD)
-albumart_DEPENDENCIES = ../src/libmtp.la
-am_albums_OBJECTS = albums.$(OBJEXT) util.$(OBJEXT)
-albums_OBJECTS = $(am_albums_OBJECTS)
-albums_LDADD = $(LDADD)
-albums_DEPENDENCIES = ../src/libmtp.la
-am_connect_OBJECTS = connect.$(OBJEXT) delfile.$(OBJEXT) \
- getfile.$(OBJEXT) newfolder.$(OBJEXT) sendfile.$(OBJEXT) \
- sendtr.$(OBJEXT) pathutils.$(OBJEXT) util.$(OBJEXT)
-connect_OBJECTS = $(am_connect_OBJECTS)
-connect_LDADD = $(LDADD)
-connect_DEPENDENCIES = ../src/libmtp.la
-am_detect_OBJECTS = detect.$(OBJEXT) util.$(OBJEXT)
-detect_OBJECTS = $(am_detect_OBJECTS)
-detect_LDADD = $(LDADD)
-detect_DEPENDENCIES = ../src/libmtp.la
-am_emptyfolders_OBJECTS = emptyfolders.$(OBJEXT) util.$(OBJEXT)
-emptyfolders_OBJECTS = $(am_emptyfolders_OBJECTS)
-emptyfolders_LDADD = $(LDADD)
-emptyfolders_DEPENDENCIES = ../src/libmtp.la
-am_files_OBJECTS = files.$(OBJEXT) util.$(OBJEXT)
-files_OBJECTS = $(am_files_OBJECTS)
-files_LDADD = $(LDADD)
-files_DEPENDENCIES = ../src/libmtp.la
-am_folders_OBJECTS = folders.$(OBJEXT) util.$(OBJEXT)
-folders_OBJECTS = $(am_folders_OBJECTS)
-folders_LDADD = $(LDADD)
-folders_DEPENDENCIES = ../src/libmtp.la
-am_format_OBJECTS = format.$(OBJEXT) util.$(OBJEXT)
-format_OBJECTS = $(am_format_OBJECTS)
-format_LDADD = $(LDADD)
-format_DEPENDENCIES = ../src/libmtp.la
-am_getplaylist_OBJECTS = getplaylist.$(OBJEXT) util.$(OBJEXT)
-getplaylist_OBJECTS = $(am_getplaylist_OBJECTS)
-getplaylist_LDADD = $(LDADD)
-getplaylist_DEPENDENCIES = ../src/libmtp.la
-am_hotplug_OBJECTS = hotplug.$(OBJEXT) util.$(OBJEXT)
-hotplug_OBJECTS = $(am_hotplug_OBJECTS)
-hotplug_LDADD = $(LDADD)
-hotplug_DEPENDENCIES = ../src/libmtp.la
-am_newplaylist_OBJECTS = newplaylist.$(OBJEXT) util.$(OBJEXT)
-newplaylist_OBJECTS = $(am_newplaylist_OBJECTS)
-newplaylist_LDADD = $(LDADD)
-newplaylist_DEPENDENCIES = ../src/libmtp.la
-am_playlists_OBJECTS = playlists.$(OBJEXT) util.$(OBJEXT)
-playlists_OBJECTS = $(am_playlists_OBJECTS)
-playlists_LDADD = $(LDADD)
-playlists_DEPENDENCIES = ../src/libmtp.la
-am_reset_OBJECTS = reset.$(OBJEXT) util.$(OBJEXT)
-reset_OBJECTS = $(am_reset_OBJECTS)
-reset_LDADD = $(LDADD)
-reset_DEPENDENCIES = ../src/libmtp.la
-am_thumb_OBJECTS = thumb.$(OBJEXT) util.$(OBJEXT)
-thumb_OBJECTS = $(am_thumb_OBJECTS)
-thumb_LDADD = $(LDADD)
-thumb_DEPENDENCIES = ../src/libmtp.la
-am_tracks_OBJECTS = tracks.$(OBJEXT) util.$(OBJEXT)
-tracks_OBJECTS = $(am_tracks_OBJECTS)
-tracks_LDADD = $(LDADD)
-tracks_DEPENDENCIES = ../src/libmtp.la
-am_trexist_OBJECTS = trexist.$(OBJEXT) util.$(OBJEXT)
-trexist_OBJECTS = $(am_trexist_OBJECTS)
-trexist_LDADD = $(LDADD)
-trexist_DEPENDENCIES = ../src/libmtp.la
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(albumart_SOURCES) $(albums_SOURCES) $(connect_SOURCES) \
- $(detect_SOURCES) $(emptyfolders_SOURCES) $(files_SOURCES) \
- $(folders_SOURCES) $(format_SOURCES) $(getplaylist_SOURCES) \
- $(hotplug_SOURCES) $(newplaylist_SOURCES) $(playlists_SOURCES) \
- $(reset_SOURCES) $(thumb_SOURCES) $(tracks_SOURCES) \
- $(trexist_SOURCES)
-DIST_SOURCES = $(albumart_SOURCES) $(albums_SOURCES) \
- $(connect_SOURCES) $(detect_SOURCES) $(emptyfolders_SOURCES) \
- $(files_SOURCES) $(folders_SOURCES) $(format_SOURCES) \
- $(getplaylist_SOURCES) $(hotplug_SOURCES) \
- $(newplaylist_SOURCES) $(playlists_SOURCES) $(reset_SOURCES) \
- $(thumb_SOURCES) $(tracks_SOURCES) $(trexist_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-HAVE_DOXYGEN = @HAVE_DOXYGEN@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OSFLAGS = @OSFLAGS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-ms_lib_exe = @ms_lib_exe@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-connect_SOURCES = connect.c delfile.c getfile.c newfolder.c \
- sendfile.c sendtr.c pathutils.c pathutils.h \
- util.c util.h common.h
-
-detect_SOURCES = detect.c util.c util.h common.h
-tracks_SOURCES = tracks.c util.c util.h common.h
-files_SOURCES = files.c util.c util.h common.h
-hotplug_SOURCES = hotplug.c util.c util.h common.h
-folders_SOURCES = folders.c util.c util.h common.h
-trexist_SOURCES = trexist.c util.c util.h common.h
-playlists_SOURCES = playlists.c util.c util.h common.h
-getplaylist_SOURCES = getplaylist.c util.c util.h common.h
-newplaylist_SOURCES = newplaylist.c util.c util.h common.h
-format_SOURCES = format.c util.c util.h common.h
-albumart_SOURCES = albumart.c util.c util.h common.h
-albums_SOURCES = albums.c util.c util.h common.h
-emptyfolders_SOURCES = emptyfolders.c util.c util.h common.h
-thumb_SOURCES = thumb.c util.c util.h common.h
-reset_SOURCES = reset.c util.c util.h common.h
-AM_CPPFLAGS = -I$(top_builddir)/src
-LDADD = ../src/libmtp.la
-EXTRA_DIST = evolution-sync.sh
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign examples/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p || test -f $$p1; \
- then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
- @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-albumart$(EXEEXT): $(albumart_OBJECTS) $(albumart_DEPENDENCIES)
- @rm -f albumart$(EXEEXT)
- $(LINK) $(albumart_OBJECTS) $(albumart_LDADD) $(LIBS)
-albums$(EXEEXT): $(albums_OBJECTS) $(albums_DEPENDENCIES)
- @rm -f albums$(EXEEXT)
- $(LINK) $(albums_OBJECTS) $(albums_LDADD) $(LIBS)
-connect$(EXEEXT): $(connect_OBJECTS) $(connect_DEPENDENCIES)
- @rm -f connect$(EXEEXT)
- $(LINK) $(connect_OBJECTS) $(connect_LDADD) $(LIBS)
-detect$(EXEEXT): $(detect_OBJECTS) $(detect_DEPENDENCIES)
- @rm -f detect$(EXEEXT)
- $(LINK) $(detect_OBJECTS) $(detect_LDADD) $(LIBS)
-emptyfolders$(EXEEXT): $(emptyfolders_OBJECTS) $(emptyfolders_DEPENDENCIES)
- @rm -f emptyfolders$(EXEEXT)
- $(LINK) $(emptyfolders_OBJECTS) $(emptyfolders_LDADD) $(LIBS)
-files$(EXEEXT): $(files_OBJECTS) $(files_DEPENDENCIES)
- @rm -f files$(EXEEXT)
- $(LINK) $(files_OBJECTS) $(files_LDADD) $(LIBS)
-folders$(EXEEXT): $(folders_OBJECTS) $(folders_DEPENDENCIES)
- @rm -f folders$(EXEEXT)
- $(LINK) $(folders_OBJECTS) $(folders_LDADD) $(LIBS)
-format$(EXEEXT): $(format_OBJECTS) $(format_DEPENDENCIES)
- @rm -f format$(EXEEXT)
- $(LINK) $(format_OBJECTS) $(format_LDADD) $(LIBS)
-getplaylist$(EXEEXT): $(getplaylist_OBJECTS) $(getplaylist_DEPENDENCIES)
- @rm -f getplaylist$(EXEEXT)
- $(LINK) $(getplaylist_OBJECTS) $(getplaylist_LDADD) $(LIBS)
-hotplug$(EXEEXT): $(hotplug_OBJECTS) $(hotplug_DEPENDENCIES)
- @rm -f hotplug$(EXEEXT)
- $(LINK) $(hotplug_OBJECTS) $(hotplug_LDADD) $(LIBS)
-newplaylist$(EXEEXT): $(newplaylist_OBJECTS) $(newplaylist_DEPENDENCIES)
- @rm -f newplaylist$(EXEEXT)
- $(LINK) $(newplaylist_OBJECTS) $(newplaylist_LDADD) $(LIBS)
-playlists$(EXEEXT): $(playlists_OBJECTS) $(playlists_DEPENDENCIES)
- @rm -f playlists$(EXEEXT)
- $(LINK) $(playlists_OBJECTS) $(playlists_LDADD) $(LIBS)
-reset$(EXEEXT): $(reset_OBJECTS) $(reset_DEPENDENCIES)
- @rm -f reset$(EXEEXT)
- $(LINK) $(reset_OBJECTS) $(reset_LDADD) $(LIBS)
-thumb$(EXEEXT): $(thumb_OBJECTS) $(thumb_DEPENDENCIES)
- @rm -f thumb$(EXEEXT)
- $(LINK) $(thumb_OBJECTS) $(thumb_LDADD) $(LIBS)
-tracks$(EXEEXT): $(tracks_OBJECTS) $(tracks_DEPENDENCIES)
- @rm -f tracks$(EXEEXT)
- $(LINK) $(tracks_OBJECTS) $(tracks_LDADD) $(LIBS)
-trexist$(EXEEXT): $(trexist_OBJECTS) $(trexist_DEPENDENCIES)
- @rm -f trexist$(EXEEXT)
- $(LINK) $(trexist_OBJECTS) $(trexist_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/albumart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/albums.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delfile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/detect.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emptyfolders.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/files.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/folders.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getfile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getplaylist.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hotplug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfolder.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newplaylist.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathutils.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/playlists.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendtr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thumb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracks.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trexist.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
- for dir in "$(DESTDIR)$(bindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: install-am install-exec-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic clean-libtool ctags distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-binPROGRAMS install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-exec-hook \
- install-html install-html-am install-info install-info-am \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-binPROGRAMS
-
-
-install-exec-hook:
- ln -f -s $(DESTDIR)$(bindir)/mtp-connect$(EXEEXT) $(DESTDIR)$(bindir)/mtp-delfile$(EXEEXT)
- ln -f -s $(DESTDIR)$(bindir)/mtp-connect$(EXEEXT) $(DESTDIR)$(bindir)/mtp-getfile$(EXEEXT)
- ln -f -s $(DESTDIR)$(bindir)/mtp-connect$(EXEEXT) $(DESTDIR)$(bindir)/mtp-newfolder$(EXEEXT)
- ln -f -s $(DESTDIR)$(bindir)/mtp-connect$(EXEEXT) $(DESTDIR)$(bindir)/mtp-sendfile$(EXEEXT)
- ln -f -s $(DESTDIR)$(bindir)/mtp-connect$(EXEEXT) $(DESTDIR)$(bindir)/mtp-sendtr$(EXEEXT)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/examples/detect.c b/examples/detect.c
index 3bc21e7..393fd2c 100644
--- a/examples/detect.c
+++ b/examples/detect.c
@@ -218,8 +218,7 @@ int main (int argc, char **argv)
file->item_id,
tmpfiledescriptor,
NULL,
- NULL,
- NULL);
+ NULL);
if (ret == 0) {
uint8_t *buf = NULL;
uint32_t readbytes;
diff --git a/install-sh b/install-sh
deleted file mode 100755
index 6781b98..0000000
--- a/install-sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" "" $nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
- or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
- or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
- --help display this help and exit.
- --version display version info and exit.
-
- -c (ignored)
- -C install only if different (preserve the last data modification time)
- -d create directories instead of installing files.
- -g GROUP $chgrpprog installed files to GROUP.
- -m MODE $chmodprog installed files to MODE.
- -o USER $chownprog installed files to USER.
- -s $stripprog installed files.
- -t DIRECTORY install into DIRECTORY.
- -T report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
- RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
- case $1 in
- -c) ;;
-
- -C) copy_on_change=true;;
-
- -d) dir_arg=true;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift;;
-
- --help) echo "$usage"; exit $?;;
-
- -m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
-
- -o) chowncmd="$chownprog $2"
- shift;;
-
- -s) stripcmd=$stripprog;;
-
- -t) dst_arg=$2
- shift;;
-
- -T) no_target_directory=true;;
-
- --version) echo "$0 $scriptversion"; exit $?;;
-
- --) shift
- break;;
-
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
-
- *) break;;
- esac
- shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
- # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dst_arg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dst_arg"
- shift # fnord
- fi
- shift # arg
- dst_arg=$arg
- done
-fi
-
-if test $# -eq 0; then
- if test -z "$dir_arg"; then
- echo "$0: no input file specified." >&2
- exit 1
- fi
- # It's OK to call `install-sh -d' without argument.
- # This can happen when creating conditional directories.
- exit 0
-fi
-
-if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
-
- # Set umask so as not to create temps with too-generous modes.
- # However, 'strip' requires both read and write access to temps.
- case $mode in
- # Optimize common cases.
- *644) cp_umask=133;;
- *755) cp_umask=22;;
-
- *[0-7])
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw='% 200'
- fi
- cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
- *)
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw=,u+rw
- fi
- cp_umask=$mode$u_plus_rw;;
- esac
-fi
-
-for src
-do
- # Protect names starting with `-'.
- case $src in
- -*) src=./$src;;
- esac
-
- if test -n "$dir_arg"; then
- dst=$src
- dstdir=$dst
- test -d "$dstdir"
- dstdir_status=$?
- else
-
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
- # might cause directories to be created, which would be especially bad
- # if $src (and thus $dsttmp) contains '*'.
- if test ! -f "$src" && test ! -d "$src"; then
- echo "$0: $src does not exist." >&2
- exit 1
- fi
-
- if test -z "$dst_arg"; then
- echo "$0: no destination specified." >&2
- exit 1
- fi
-
- dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
-
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
- if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
- fi
- dstdir=$dst
- dst=$dstdir/`basename "$src"`
- dstdir_status=0
- else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
- test -d "$dstdir"
- dstdir_status=$?
- fi
- fi
-
- obsolete_mkdir_used=false
-
- if test $dstdir_status != 0; then
- case $posix_mkdir in
- '')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
- esac
-
- if
- $posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
- )
- then :
- else
-
- # The umask is ridiculous, or mkdir does not conform to POSIX,
- # or it failed possibly due to a race condition. Create the
- # directory the slow way, step by step, checking for races as we go.
-
- case $dstdir in
- /*) prefix='/';;
- -*) prefix='./';;
- *) prefix='';;
- esac
-
- eval "$initialize_posix_glob"
-
- oIFS=$IFS
- IFS=/
- $posix_glob set -f
- set fnord $dstdir
- shift
- $posix_glob set +f
- IFS=$oIFS
-
- prefixes=
-
- for d
- do
- test -z "$d" && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
- done
-
- if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
- fi
- fi
- fi
-
- if test -n "$dir_arg"; then
- { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
- { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
- test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
- else
-
- # Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
- # Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
- # and set any options; do chmod last to preserve setuid bits.
- #
- # If any of these fail, we abort the whole thing. If we want to
- # ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $cpprog $src $dsttmp" command.
- #
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
- { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
- { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
- # If -C, don't bother to copy if it wouldn't change the file.
- if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
- set X $old && old=:$2:$4:$5:$6 &&
- set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
- test "$old" = "$new" &&
- $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
- then
- rm -f "$dsttmp"
- else
- # Rename the file to the real destination.
- $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
- {
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
- }
- fi || exit 1
-
- trap '' 0
- fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/libmtp.pc b/libmtp.pc
deleted file mode 100644
index 9a2a6ba..0000000
--- a/libmtp.pc
+++ /dev/null
@@ -1,15 +0,0 @@
-# libmtp pkg-config source file
-
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: libmtp
-Description: libmtp is a library for accessing Media Transfer Protocol devices
-Version: 1.0.1
-Requires: libusb
-Conflicts:
-Libs: -L${libdir} -lmtp
-Libs.private -lusb
-Cflags: -I${includedir}
diff --git a/libmtp.sh b/libmtp.sh
deleted file mode 100644
index b149413..0000000
--- a/libmtp.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-# Lifts a plugged in MTP device to user space and
-# optionally runs a client program.
-# Written by Linus Walleij 2006, based on the "usbcam"
-# script by Nalin Dahyabhai.
-DEVICEOWNER=root
-DEVICEPERMS=666
-
-# Special quirk for SuSE systems using "resmgr"
-# (see http://rechner.lst.de/~okir/resmgr/)
-if [ -f /sbin/resmgr ]
-then
- /sbin/resmgr "${ACTION}" "${DEVICE}" desktop usb
- exit 0
-fi
-
-# This is for most other distributions
-if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
-then
- # New code, using lock files instead of copying /dev/console permissions
- # This also works with non-gdm logins (e.g. on a virtual terminal)
- # Idea and code from Nalin Dahyabhai <nalin@redhat.com>
- if [ "x$DEVICEOWNER" = "xCONSOLE" ]
- then
- if [ -f /var/run/console/console.lock ]
- then
- DEVICEOWNER=`cat /var/run/console/console.lock`
- elif [ -f /var/run/console.lock ]
- then
- DEVICEOWNER=`cat /var/run/console.lock`
- elif [ -f /var/lock/console.lock ]
- then
- DEVICEOWNER=`cat /var/lock/console.lock`
- else
- DEVICEOWNER="nobody"
- DEVICEPERMS="666"
- fi
- fi
- if [ -n "$DEVICEOWNER" ]
- then
- chmod 0000 "${DEVICE}"
- chown "${DEVICEOWNER}" "${DEVICE}"
- chmod "${DEVICEPERMS}" "${DEVICE}"
- fi
-fi
diff --git a/libmtp.xcodeproj/project.pbxproj b/libmtp.xcodeproj/project.pbxproj
deleted file mode 100644
index bbb6787..0000000
--- a/libmtp.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,359 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 45;
- objects = {
-
-/* Begin PBXBuildFile section */
- 5AE8833E138DA9A800550A90 /* libusb-compat.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AE88311138DA93F00550A90 /* libusb-compat.dylib */; };
- 5AE8833F138DA9AA00550A90 /* libusb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AE88316138DA94B00550A90 /* libusb.dylib */; };
- B00305CF1277B07D009FA3E1 /* device-flags.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305BF1277B07D009FA3E1 /* device-flags.h */; };
- B00305D01277B07D009FA3E1 /* gphoto2-endian.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305C01277B07D009FA3E1 /* gphoto2-endian.h */; };
- B00305D11277B07D009FA3E1 /* libmtp.c in Sources */ = {isa = PBXBuildFile; fileRef = B00305C11277B07D009FA3E1 /* libmtp.c */; };
- B00305D21277B07D009FA3E1 /* libmtp.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305C21277B07D009FA3E1 /* libmtp.h */; };
- B00305D31277B07D009FA3E1 /* libptp-stdint.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305C31277B07D009FA3E1 /* libptp-stdint.h */; };
- B00305D41277B07D009FA3E1 /* libusb-glue.c in Sources */ = {isa = PBXBuildFile; fileRef = B00305C41277B07D009FA3E1 /* libusb-glue.c */; };
- B00305D51277B07D009FA3E1 /* libusb-glue.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305C51277B07D009FA3E1 /* libusb-glue.h */; };
- B00305D61277B07D009FA3E1 /* music-players.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305C61277B07D009FA3E1 /* music-players.h */; };
- B00305D71277B07D009FA3E1 /* playlist-spl.c in Sources */ = {isa = PBXBuildFile; fileRef = B00305C71277B07D009FA3E1 /* playlist-spl.c */; };
- B00305D81277B07D009FA3E1 /* playlist-spl.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305C81277B07D009FA3E1 /* playlist-spl.h */; };
- B00305D91277B07D009FA3E1 /* ptp.c in Sources */ = {isa = PBXBuildFile; fileRef = B00305C91277B07D009FA3E1 /* ptp.c */; };
- B00305DA1277B07D009FA3E1 /* ptp.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305CA1277B07D009FA3E1 /* ptp.h */; };
- B00305DB1277B07D009FA3E1 /* unicode.c in Sources */ = {isa = PBXBuildFile; fileRef = B00305CB1277B07D009FA3E1 /* unicode.c */; };
- B00305DC1277B07D009FA3E1 /* unicode.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305CC1277B07D009FA3E1 /* unicode.h */; };
- B00305DD1277B07D009FA3E1 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = B00305CD1277B07D009FA3E1 /* util.c */; };
- B00305DE1277B07D009FA3E1 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = B00305CE1277B07D009FA3E1 /* util.h */; };
- B00306061277B3CD009FA3E1 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = B00306051277B3CD009FA3E1 /* libiconv.dylib */; };
- D7D0FF8B1124E29800E01FE7 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D0FF621124E29800E01FE7 /* config.h */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 5AE88310138DA93F00550A90 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = B00304D11277AFB4009FA3E1 /* libusb-compat.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = D2AAC0630554660B00DB518D;
- remoteInfo = "libusb-compat";
- };
- 5AE88315138DA94B00550A90 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = B00304C81277AFA9009FA3E1 /* libusb.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = D2AAC0630554660B00DB518D;
- remoteInfo = libusb;
- };
- 5AE88317138DA95600550A90 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = B00304C81277AFA9009FA3E1 /* libusb.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = D2AAC0620554660B00DB518D;
- remoteInfo = libusb;
- };
- 5AE88319138DA95A00550A90 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = B00304D11277AFB4009FA3E1 /* libusb-compat.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = D2AAC0620554660B00DB518D;
- remoteInfo = "libusb-compat";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- B00304C81277AFA9009FA3E1 /* libusb.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libusb.xcodeproj; path = ../libusb/libusb.xcodeproj; sourceTree = SOURCE_ROOT; };
- B00304D11277AFB4009FA3E1 /* libusb-compat.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "libusb-compat.xcodeproj"; path = "../libusb-compat/libusb-compat.xcodeproj"; sourceTree = SOURCE_ROOT; };
- B00305BF1277B07D009FA3E1 /* device-flags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "device-flags.h"; path = "src/device-flags.h"; sourceTree = SOURCE_ROOT; };
- B00305C01277B07D009FA3E1 /* gphoto2-endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "gphoto2-endian.h"; path = "src/gphoto2-endian.h"; sourceTree = SOURCE_ROOT; };
- B00305C11277B07D009FA3E1 /* libmtp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = libmtp.c; path = src/libmtp.c; sourceTree = SOURCE_ROOT; };
- B00305C21277B07D009FA3E1 /* libmtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libmtp.h; path = src/libmtp.h; sourceTree = SOURCE_ROOT; };
- B00305C31277B07D009FA3E1 /* libptp-stdint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "libptp-stdint.h"; path = "src/libptp-stdint.h"; sourceTree = SOURCE_ROOT; };
- B00305C41277B07D009FA3E1 /* libusb-glue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "libusb-glue.c"; path = "src/libusb-glue.c"; sourceTree = SOURCE_ROOT; };
- B00305C51277B07D009FA3E1 /* libusb-glue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "libusb-glue.h"; path = "src/libusb-glue.h"; sourceTree = SOURCE_ROOT; };
- B00305C61277B07D009FA3E1 /* music-players.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "music-players.h"; path = "src/music-players.h"; sourceTree = SOURCE_ROOT; };
- B00305C71277B07D009FA3E1 /* playlist-spl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "playlist-spl.c"; path = "src/playlist-spl.c"; sourceTree = SOURCE_ROOT; };
- B00305C81277B07D009FA3E1 /* playlist-spl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "playlist-spl.h"; path = "src/playlist-spl.h"; sourceTree = SOURCE_ROOT; };
- B00305C91277B07D009FA3E1 /* ptp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ptp.c; path = src/ptp.c; sourceTree = SOURCE_ROOT; };
- B00305CA1277B07D009FA3E1 /* ptp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ptp.h; path = src/ptp.h; sourceTree = SOURCE_ROOT; };
- B00305CB1277B07D009FA3E1 /* unicode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = unicode.c; path = src/unicode.c; sourceTree = SOURCE_ROOT; };
- B00305CC1277B07D009FA3E1 /* unicode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = unicode.h; path = src/unicode.h; sourceTree = SOURCE_ROOT; };
- B00305CD1277B07D009FA3E1 /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = src/util.c; sourceTree = SOURCE_ROOT; };
- B00305CE1277B07D009FA3E1 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = util.h; path = src/util.h; sourceTree = SOURCE_ROOT; };
- B00306051277B3CD009FA3E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
- D2AAC0630554660B00DB518D /* libmtp.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libmtp.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
- D71350461124D56600E2C1DA /* MacConfigExternalDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = MacConfigExternalDebug.xcconfig; sourceTree = "<group>"; };
- D71350471124D56600E2C1DA /* MacConfigExternalRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = MacConfigExternalRelease.xcconfig; sourceTree = "<group>"; };
- D7D0FF621124E29800E01FE7 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- D289988505E68E00004EDB86 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B00306061277B3CD009FA3E1 /* libiconv.dylib in Frameworks */,
- 5AE8833E138DA9A800550A90 /* libusb-compat.dylib in Frameworks */,
- 5AE8833F138DA9AA00550A90 /* libusb.dylib in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 08FB7794FE84155DC02AAC07 /* libmtp */ = {
- isa = PBXGroup;
- children = (
- D71350461124D56600E2C1DA /* MacConfigExternalDebug.xcconfig */,
- D71350471124D56600E2C1DA /* MacConfigExternalRelease.xcconfig */,
- B00304D11277AFB4009FA3E1 /* libusb-compat.xcodeproj */,
- B00304C81277AFA9009FA3E1 /* libusb.xcodeproj */,
- 08FB7795FE84155DC02AAC07 /* Source */,
- 1AB674ADFE9D54B511CA2CBB /* Products */,
- B00306051277B3CD009FA3E1 /* libiconv.dylib */,
- );
- name = libmtp;
- sourceTree = "<group>";
- };
- 08FB7795FE84155DC02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- D7D0FF621124E29800E01FE7 /* config.h */,
- B00305BF1277B07D009FA3E1 /* device-flags.h */,
- B00305C01277B07D009FA3E1 /* gphoto2-endian.h */,
- B00305C11277B07D009FA3E1 /* libmtp.c */,
- B00305C21277B07D009FA3E1 /* libmtp.h */,
- B00305C31277B07D009FA3E1 /* libptp-stdint.h */,
- B00305C41277B07D009FA3E1 /* libusb-glue.c */,
- B00305C51277B07D009FA3E1 /* libusb-glue.h */,
- B00305C61277B07D009FA3E1 /* music-players.h */,
- B00305C71277B07D009FA3E1 /* playlist-spl.c */,
- B00305C81277B07D009FA3E1 /* playlist-spl.h */,
- B00305C91277B07D009FA3E1 /* ptp.c */,
- B00305CA1277B07D009FA3E1 /* ptp.h */,
- B00305CB1277B07D009FA3E1 /* unicode.c */,
- B00305CC1277B07D009FA3E1 /* unicode.h */,
- B00305CD1277B07D009FA3E1 /* util.c */,
- B00305CE1277B07D009FA3E1 /* util.h */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 1AB674ADFE9D54B511CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- D2AAC0630554660B00DB518D /* libmtp.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 5AE8830D138DA93F00550A90 /* Products */ = {
- isa = PBXGroup;
- children = (
- 5AE88311138DA93F00550A90 /* libusb-compat.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 5AE88312138DA94B00550A90 /* Products */ = {
- isa = PBXGroup;
- children = (
- 5AE88316138DA94B00550A90 /* libusb.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- D2AAC0600554660B00DB518D /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- D7D0FF8B1124E29800E01FE7 /* config.h in Headers */,
- B00305CF1277B07D009FA3E1 /* device-flags.h in Headers */,
- B00305D01277B07D009FA3E1 /* gphoto2-endian.h in Headers */,
- B00305D21277B07D009FA3E1 /* libmtp.h in Headers */,
- B00305D31277B07D009FA3E1 /* libptp-stdint.h in Headers */,
- B00305D51277B07D009FA3E1 /* libusb-glue.h in Headers */,
- B00305D61277B07D009FA3E1 /* music-players.h in Headers */,
- B00305D81277B07D009FA3E1 /* playlist-spl.h in Headers */,
- B00305DA1277B07D009FA3E1 /* ptp.h in Headers */,
- B00305DC1277B07D009FA3E1 /* unicode.h in Headers */,
- B00305DE1277B07D009FA3E1 /* util.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
- D2AAC0620554660B00DB518D /* libmtp */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1DEB914A08733D8E0010E9CD /* Build configuration list for PBXNativeTarget "libmtp" */;
- buildPhases = (
- D2AAC0600554660B00DB518D /* Headers */,
- D2AAC0610554660B00DB518D /* Sources */,
- D289988505E68E00004EDB86 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- 5AE88318138DA95600550A90 /* PBXTargetDependency */,
- 5AE8831A138DA95A00550A90 /* PBXTargetDependency */,
- );
- name = libmtp;
- productName = libmtp;
- productReference = D2AAC0630554660B00DB518D /* libmtp.dylib */;
- productType = "com.apple.product-type.library.dynamic";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 08FB7793FE84155DC02AAC07 /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "libmtp" */;
- compatibilityVersion = "Xcode 3.1";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 08FB7794FE84155DC02AAC07 /* libmtp */;
- projectDirPath = "";
- projectReferences = (
- {
- ProductGroup = 5AE8830D138DA93F00550A90 /* Products */;
- ProjectRef = B00304D11277AFB4009FA3E1 /* libusb-compat.xcodeproj */;
- },
- {
- ProductGroup = 5AE88312138DA94B00550A90 /* Products */;
- ProjectRef = B00304C81277AFA9009FA3E1 /* libusb.xcodeproj */;
- },
- );
- projectRoot = "";
- targets = (
- D2AAC0620554660B00DB518D /* libmtp */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXReferenceProxy section */
- 5AE88311138DA93F00550A90 /* libusb-compat.dylib */ = {
- isa = PBXReferenceProxy;
- fileType = "compiled.mach-o.dylib";
- path = "libusb-compat.dylib";
- remoteRef = 5AE88310138DA93F00550A90 /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
- 5AE88316138DA94B00550A90 /* libusb.dylib */ = {
- isa = PBXReferenceProxy;
- fileType = "compiled.mach-o.dylib";
- path = libusb.dylib;
- remoteRef = 5AE88315138DA94B00550A90 /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-/* End PBXReferenceProxy section */
-
-/* Begin PBXSourcesBuildPhase section */
- D2AAC0610554660B00DB518D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B00305D11277B07D009FA3E1 /* libmtp.c in Sources */,
- B00305D41277B07D009FA3E1 /* libusb-glue.c in Sources */,
- B00305D71277B07D009FA3E1 /* playlist-spl.c in Sources */,
- B00305D91277B07D009FA3E1 /* ptp.c in Sources */,
- B00305DB1277B07D009FA3E1 /* unicode.c in Sources */,
- B00305DD1277B07D009FA3E1 /* util.c in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 5AE88318138DA95600550A90 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = libusb;
- targetProxy = 5AE88317138DA95600550A90 /* PBXContainerItemProxy */;
- };
- 5AE8831A138DA95A00550A90 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = "libusb-compat";
- targetProxy = 5AE88319138DA95A00550A90 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 1DEB914B08733D8E0010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- EXECUTABLE_PREFIX = lib;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- HEADER_SEARCH_PATHS = "../libusb-compat/libusb";
- OTHER_CFLAGS = (
- "$(inherited)",
- "-DHAVE_CONFIG_H",
- "-DUSE_DARWIN",
- );
- PRODUCT_NAME = mtp;
- };
- name = Debug;
- };
- 1DEB914C08733D8E0010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- EXECUTABLE_PREFIX = lib;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- HEADER_SEARCH_PATHS = "../libusb-compat/libusb";
- OTHER_CFLAGS = (
- "$(inherited)",
- "-DHAVE_CONFIG_H",
- "-DUSE_DARWIN",
- );
- PRODUCT_NAME = mtp;
- };
- name = Release;
- };
- 1DEB914F08733D8E0010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = D71350461124D56600E2C1DA /* MacConfigExternalDebug.xcconfig */;
- buildSettings = {
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- };
- name = Debug;
- };
- 1DEB915008733D8E0010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = D71350471124D56600E2C1DA /* MacConfigExternalRelease.xcconfig */;
- buildSettings = {
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1DEB914A08733D8E0010E9CD /* Build configuration list for PBXNativeTarget "libmtp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB914B08733D8E0010E9CD /* Debug */,
- 1DEB914C08733D8E0010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 1DEB914E08733D8E0010E9CD /* Build configuration list for PBXProject "libmtp" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB914F08733D8E0010E9CD /* Debug */,
- 1DEB915008733D8E0010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}
diff --git a/logs/README.TXT b/logs/README.TXT
new file mode 100644
index 0000000..6d036cf
--- /dev/null
+++ b/logs/README.TXT
@@ -0,0 +1,3 @@
+This directory contains USB packet logs
+used for analyzing MTP traffic for interoperability
+and device behaviour characteristics. \ No newline at end of file
diff --git a/logs/gigabeat1.html b/logs/gigabeat1.html
new file mode 100644
index 0000000..c5064cd
--- /dev/null
+++ b/logs/gigabeat1.html
@@ -0,0 +1,5950 @@
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; CHARSET=UTF-8">
+<meta name="DESCRIPTION" content="HHD Software USB Monitor HTML file">
+<meta name="GENERATOR" content="HHD Software USB Monitor">
+<meta name="COPYRIGHT" content="HHD Software">
+<meta name="Author" content="HHD Software USB Monitor"><title>HHD Software USB Monitor HTML Export</title>
+
+<style>
+ .st0000ff { font-family: "Verdana"; font-style: normal; font-weight: 400; color: #000000 }
+ .st0100ff { font-family: "Verdana"; font-style: normal; font-weight: 700; color: #000000 }
+ .st0200ff { font-family: "Courier New"; font-style: normal; font-weight: 600; color: #000000 }
+</style></head><body>
+<!--StartFragment -->
+<pre><p class="st0000ff"><span class="st0100ff">000001: PnP Event: Surprise Removal (UP), 12.09.2006 21:05:16.0937500 +10.9375000
+</span>The USB device has just been disconnected from the system.</p>
+<p class="st0000ff"><span class="st0100ff">000002: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:16.1562500 +0.0625000
+</span>Pipe Handle: 0x898c9044
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 03 10 29 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>........)...</pre></td></tr></tbody></table>
+<p class="st0000ff"><span class="st0100ff">000003: Class-Specific Request (DOWN), 12.09.2006 21:05:16.1562500 +0.0
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 4C F5 6F 00 00 00 00 00
+ 67 A1 01 00 43 00 6F 00 75 00 6E 00 74 00 7B E1
+ 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...Lõo.....
+g¡..C.o.u.n.t.{á
+....</pre></td></tr></tbody></table>
+<p class="st0000ff"><span class="st0100ff">000004: Class-Specific Request (UP), 12.09.2006 21:05:16.6718750 +0.5156250
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 4C F5 6F 00 00 00 00 00
+ 67 A1 01 00 43 00 6F 00 75 00 6E 00 74 00 7B E1
+ 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...Lõo.....
+g¡..C.o.u.n.t.{á
+....</pre></td></tr></tbody></table>
+<p class="st0000ff"><span class="st0100ff">000005: Class-Specific Request (DOWN), 12.09.2006 21:05:16.6718750 +0.0
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 33
+Request: 0x66
+Value: 0x0
+Send 0x0 bytes to the device</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000006: Class-Specific Request (UP), 12.09.2006 21:05:17.1875000 +0.5156250
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 33
+Request: 0x66
+Value: 0x0
+Send 0x0 bytes to the device</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000007: Class-Specific Request (DOWN), 12.09.2006 21:05:18.1875000 +1.0
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 BC F4 6F 00 00 00 00 00
+ 67 A1 01 7C 00 00 00 00 01 99 04 88 00 00 00 00
+ A0 14 7E 88</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...¼ôo.....
+g¡.|.....™.ˆ....
+&nbsp;.~ˆ</pre></td></tr></tbody></table>
+<p class="st0000ff"><span class="st0100ff">000008: Class-Specific Request (UP), 12.09.2006 21:05:18.2187500 +0.0312500
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 BC F4 6F 00 00 00 00 00
+ 67 A1 01 7C 00 00 00 00 01 99 04 88 00 00 00 00
+ A0 14 7E 88</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...¼ôo.....
+g¡.|.....™.ˆ....
+&nbsp;.~ˆ</pre></td></tr></tbody></table>
+<p class="st0000ff"><span class="st0100ff">000009: PnP Event: Device Disconnected (UP), 12.09.2006 21:05:18.3437500 +0.1250000
+</span>The USB device has just been removed from the system, all drivers unloaded.</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000010: PnP Event: Query ID (UP), 12.09.2006 21:05:31.9062500 +13.5625000
+</span>Hardware IDs: USB\Vid_0930&amp;Pid_0011&amp;Rev_0100, USB\Vid_0930&amp;Pid_0011</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000011: PnP Event: Query ID (UP), 12.09.2006 21:05:31.9062500 +0.0
+</span>Compatible IDs: USB\MS_COMP_MTP, USB\Class_ff&amp;SubClass_00&amp;Prot_50, USB\Class_ff&amp;SubClass_00, USB\Class_ff</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000012: Get Descriptor Request (DOWN), 12.09.2006 21:05:31.9062500 +0.0
+</span>Descriptor Type: Device
+Descriptor Index: 0x0
+Transfer Buffer Size: 0x12 bytes
+</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000013: Control Transfer (UP), 12.09.2006 21:05:31.9062500 +0.0
+</span>Pipe Handle: 0x8909d798
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 12 01 00 02 00 00 00 40 30 09 11 00 00 01 01 02
+ 03 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......@0.......
+..</pre></td></tr></tbody></table>
+<p class="st0000ff">Setup Packet</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 80 06 00 01 00 00 12 00</pre></td>
+<td class="st0200ff" valign="top"><pre>€.......</pre></td></tr></tbody></table>
+<p class="st0000ff">Recipient: Device
+Request Type: Standard
+Direction: Device-&gt;Host
+Request: 0x6 (GET_CONFIGURATION)
+Value: 0x100
+Index: 0x0
+Length: 0x12</p>
+<p class="st0000ff"><span class="st0100ff">000014: Get Descriptor Request (DOWN), 12.09.2006 21:05:31.9062500 +0.0
+</span>Descriptor Type: Configuration
+Descriptor Index: 0x0
+Transfer Buffer Size: 0x9 bytes
+</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000015: Control Transfer (UP), 12.09.2006 21:05:31.9062500 +0.0
+</span>Pipe Handle: 0x8909d798
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 09 02 27 00 01 01 04 80 FA</pre></td>
+<td class="st0200ff" valign="top"><pre>..'....€ú</pre></td></tr></tbody></table>
+<p class="st0000ff">Setup Packet</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 80 06 00 02 00 00 09 00</pre></td>
+<td class="st0200ff" valign="top"><pre>€.......</pre></td></tr></tbody></table>
+<p class="st0000ff">Recipient: Device
+Request Type: Standard
+Direction: Device-&gt;Host
+Request: 0x6 (GET_CONFIGURATION)
+Value: 0x200
+Index: 0x0
+Length: 0x9</p>
+<p class="st0000ff"><span class="st0100ff">000016: Get Descriptor Request (DOWN), 12.09.2006 21:05:31.9062500 +0.0
+</span>Descriptor Type: Configuration
+Descriptor Index: 0x0
+Transfer Buffer Size: 0x27 bytes
+</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000017: Control Transfer (UP), 12.09.2006 21:05:31.9062500 +0.0
+</span>Pipe Handle: 0x8909d798
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 09 02 27 00 01 01 04 80 FA 09 04 00 00 03 FF 00
+ 50 05 07 05 81 02 00 02 00 07 05 02 02 00 02 00
+ 07 05 83 03 40 00 10</pre></td>
+<td class="st0200ff" valign="top"><pre>..'....€ú.....ÿ.
+P...Â...........
+..ƒ.@..</pre></td></tr></tbody></table>
+<p class="st0000ff">Setup Packet</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 80 06 00 02 00 00 27 00</pre></td>
+<td class="st0200ff" valign="top"><pre>€.....'.</pre></td></tr></tbody></table>
+<p class="st0000ff">Recipient: Device
+Request Type: Standard
+Direction: Device-&gt;Host
+Request: 0x6 (GET_CONFIGURATION)
+Value: 0x200
+Index: 0x0
+Length: 0x27</p>
+<p class="st0000ff"><span class="st0100ff">000018: Select Configuration (DOWN), 12.09.2006 21:05:31.9062500 +0.0
+</span>Configuration Index: 1
+</p>
+<p class="st0000ff"><span class="st0100ff">000019: Select Configuration (UP), 12.09.2006 21:05:32.0625000 +0.1562500
+</span>Configuration Index: 1
+Configuration Handle: 0x897dba70</p>
+<p class="st0000ff"><span class="st0100ff">000020: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.5781250 +0.5156250
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 02 10 00 00 00 00 01 00 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000021: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9531250 +0.3750000
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000022: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9531250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 04 10 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000023: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9687500 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x14 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 02 00 04 10 01 00 00 00 01 00 00 00
+ 01 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000024: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9687500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000025: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9687500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 05 10 02 00 00 00 01 00 01 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000026: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9687500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x4a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 4A 00 00 00 02 00 05 10 02 00 00 00 03 00 02 00
+ 00 00 00 00 F4 3C 00 00 00 00 00 80 0D 3C 00 00
+ 00 00 FF FF FF FF 11 49 00 6E 00 74 00 65 00 72
+ 00 6E 00 61 00 6C 00 20 00 53 00 74 00 6F 00 72
+ 00 61 00 67 00 65 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>J...............
+....ô&lt;.....€.&lt;..
+..ÿÿÿÿ.I.n.t.e.r
+.n.a.l. .S.t.o.r
+.a.g.e....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000027: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:32.9687500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 02 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000028: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0781250 +7.1093750
+</span>Pipe Handle: 0x898c8ba4
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 01 10 03 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000029: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x159 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 59 01 00 00 02 00 01 10 03 00 00 00 64 00 06 00
+ 00 00 64 00 30 6D 00 69 00 63 00 72 00 6F 00 73
+ 00 6F 00 66 00 74 00 2E 00 63 00 6F 00 6D 00 3A
+ 00 20 00 31 00 2E 00 30 00 3B 00 20 00 6D 00 69
+ 00 63 00 72 00 6F 00 73 00 6F 00 66 00 74 00 2E
+ 00 63 00 6F 00 6D 00 2F 00 57 00 4D 00 44 00 52
+ 00 4D 00 50 00 44 00 3A 00 20 00 31 00 30 00 2E
+ 00 31 00 00 00 00 00 24 00 00 00 01 10 02 10 03
+ 10 04 10 05 10 06 10 07 10 08 10 09 10 0B 10 0C
+ 10 0D 10 14 10 15 10 16 10 02 98 01 98 03 98 04
+ 98 05 98 06 98 08 98 01 91 02 91 03 91 04 91 05
+ 91 06 91 07 91 08 91 09 91 0A 91 0B 91 0F 10 F1
+ 97 F2 97 02 00 00 00 02 40 03 40 02 00 00 00 01
+ D1 02 D1 00 00 00 00 05 00 00 00 09 30 08 30 01
+ B9 01 30 00 30 09 54 00 4F 00 53 00 48 00 49 00
+ 42 00 41 00 20 00 00 00 11 67 00 69 00 67 00 61
+ 00 62 00 65 00 61 00 74 00 20 00 20 00 20 00 20
+ 00 20 00 20 00 20 00 20 00 00 00 0E 25 00 4F 00
+ 55 00 54 00 5F 00 50 00 41 00 44 00 3A 00 31 00
+ 32 00 38 00 25 00 00 00 10 34 00 30 00 30 00 32
+ 00 46 00 39 00 44 00 31 00 36 00 34 00 31 00 32
+ 00 38 00 34 00 41 00 30 00</pre></td>
+<td class="st0200ff" valign="top"><pre>Y...........d...
+..d.0m.i.c.r.o.s
+.o.f.t...c.o.m.:
+. .1...0.;. .m.i
+.c.r.o.s.o.f.t..
+.c.o.m./.W.M.D.R
+.M.P.D.:. .1.0..
+.1.....$........
+................
+..........˜.˜.˜.
+˜.˜.˜.˜.‘.‘.‘.‘.
+‘.‘.‘.‘.‘.‘.‘..ñ
+—ò—.....@.@.....
+Ñ.Ñ.........0.0.
+¹.0.0.T.O.S.H.I.
+B.A. ....g.i.g.a
+.b.e.a.t. . . .
+. . . . ....%.O.
+U.T._.P.A.D.:.1.
+2.8.%....4.0.0.2
+.F.9.D.1.6.4.1.2
+.8.4.A.0.</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000030: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 03 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000031: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0781250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 04 00 00 00 01 B9 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....¹..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000032: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x32 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 32 00 00 00 02 00 01 98 04 00 00 00 11 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+ 99 DE</pre></td>
+<td class="st0200ff" valign="top"><pre>2......˜........
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+™Þ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000033: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 04 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000034: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 05 00 00 00 01 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000035: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 05 00 00 00 01 DC 06 00
+ 00 00 00 00 00 01 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000036: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 05 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000037: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 06 00 00 00 02 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000038: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 06 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000039: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 06 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000040: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 07 00 00 00 03 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000041: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.0937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 07 00 00 00 03 DC 04 00
+ 00 00 00 40 00 00 00 02 02 00 00 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+...@..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000042: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 07 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000043: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 08 00 00 00 04 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000044: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 08 00 00 00 04 DC 08 00
+ 00 00 00 00 00 00 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+..............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000045: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 08 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000046: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 09 00 00 00 07 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000047: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 09 00 00 00 07 DC FF FF
+ 00 00 04 00 00 00 05 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000048: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 09 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000049: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0A 00 00 00 08 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000050: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 0A 00 00 00 08 DC FF FF
+ 01 00 40 00 00 00 03 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+..@.....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000051: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0A 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000052: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1093750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0B 00 00 00 0B DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000053: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 0B 00 00 00 0B DC 06 00
+ 00 00 00 00 00 40 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.....@....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000054: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0B 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000055: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0C 00 00 00 41 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....AÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000056: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 0C 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜....AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000057: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000058: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0D 00 00 00 4F DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000059: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 0D 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000060: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0D 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000061: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1250000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0E 00 00 00 9A DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....šÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000062: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 0E 00 00 00 9A DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....šÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000063: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0E 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000064: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0F 00 00 00 46 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....FÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000065: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 0F 00 00 00 46 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....FÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000066: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0F 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000067: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 10 00 00 00 93 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....“Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000068: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x34 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 34 00 00 00 02 00 02 98 10 00 00 00 93 DE 06 00
+ 00 00 00 00 00 80 00 00 00 02 06 00 40 1F 00 00
+ 80 3E 00 00 22 56 00 00 00 7D 00 00 44 AC 00 00
+ 80 BB 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>4......˜....“Þ..
+.....€......@...
+€&gt;.."V...}..D¬..
+€»..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000069: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 10 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000070: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 11 00 00 00 94 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....”Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000071: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1406250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 11 00 00 00 94 DE 04 00
+ 00 00 00 80 00 00 00 02 02 00 01 00 02 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....”Þ..
+...€..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000072: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 11 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000073: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 12 00 00 00 9A DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....šÞ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000074: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 12 00 00 00 9A DE 06 00
+ 00 00 00 00 00 80 00 00 00 01 88 13 00 00 B0 8F
+ 06 00 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜....šÞ..
+.....€....ˆ...°Â
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000075: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 12 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000076: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 13 00 00 00 44 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....DÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000077: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 13 00 00 00 44 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....DÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000078: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1562500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 13 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000079: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1718750 +0.0156250
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 14 00 00 00 89 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....‰Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000080: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1718750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 14 00 00 00 89 DC 06 00
+ 01 00 00 00 00 80 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....‰Ü..
+.....€....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000081: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1718750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 14 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000082: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1718750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 15 00 00 00 99 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....™Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000083: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1718750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x28 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 28 00 00 00 02 00 02 98 15 00 00 00 99 DE 06 00
+ 00 00 00 00 00 20 00 00 00 02 03 00 60 01 00 00
+ 61 01 00 00 30 01 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>(......˜....™Þ..
+..... ......`...
+a...0...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000084: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:40.1718750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 15 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000085: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:53.5156250 +13.3437500
+</span>Pipe Handle: 0x898c8ba4
+Send 0x18 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 01 00 07 10 16 00 00 00 01 00 01 00
+ 00 00 00 00 FF FF FF FF</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+....ÿÿÿÿ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000086: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:53.5468750 +0.0312500
+</span>Pipe Handle: 0x898c8b84
+Get 0x10 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 02 00 07 10 16 00 00 00 00 00 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000087: Bulk or Interrupt Transfer (UP), 12.09.2006 21:05:53.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 16 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000088: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4531250 +8.9062500
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 17 00 00 00 00 30 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....0..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000089: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4531250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x22 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 22 00 00 00 02 00 01 98 17 00 00 00 09 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC</pre></td>
+<td class="st0200ff" valign="top"><pre>"......˜........
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OÜ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000090: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4531250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 17 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000091: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4531250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 18 00 00 00 07 DC 00 00
+ 00 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000092: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4531250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 18 00 00 00 07 DC FF FF
+ 00 00 04 00 00 00 05 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000093: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4531250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 18 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000094: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4687500 +0.0156250
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 19 00 00 00 03 DC 00 00
+ 00 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000095: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4687500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 19 00 00 00 03 DC 04 00
+ 00 00 00 40 00 00 00 02 02 00 00 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+...@..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000096: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4843750 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 19 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000097: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4843750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1A 00 00 00 4F DC 00 00
+ 00 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000098: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4843750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 1A 00 00 00 4F DC 02 00
+ 01 00 08 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000099: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4843750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1A 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000100: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4843750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x20 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 20 00 00 00 01 00 08 98 1B 00 00 00 01 00 01 00
+ FF FF FF FF 00 30 00 00 00 00 00 00 12 5E 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre> ......˜........
+ÿÿÿÿ.0.......^..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000101: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.4843750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x46 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 46 00 00 00 02 00 08 98 1B 00 00 00 03 00 00 00
+ 00 00 00 00 07 DC FF FF 0D 4B 00 53 00 30 00 36
+ 00 30 00 33 00 30 00 36 00 2E 00 70 00 64 00 66
+ 00 00 00 00 00 00 00 03 DC 04 00 00 00 00 00 00
+ 00 4F DC 02 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>F......˜........
+.....Üÿÿ.K.S.0.6
+.0.3.0.6...p.d.f
+........Ü.......
+.OÜ...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000102: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.5625000 +0.0781250
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 03 00 01 20 1B 00 00 00 01 00 01 00
+ 00 00 00 00 01 40 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ........
+.....@..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000103: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.5625000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 0D 10 1C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000104: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.5781250 +0.0156250
+</span>Pipe Handle: 0x898c8ba4
+Send 0x200 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 5E 00 00 02 00 0D 10 1C 00 00 00 25 50 44 46
+ 2D 31 2E 33 0A 25 C7 EC 8F A2 0A 35 20 30 20 6F
+ 62 6A 0A 3C 3C 2F 4C 65 6E 67 74 68 20 36 20 30
+ 20 52 2F 46 69 6C 74 65 72 20 2F 46 6C 61 74 65
+ 44 65 63 6F 64 65 3E 3E 0A 73 74 72 65 61 6D 0A
+ 78 9C DD 7D 6D B3 6C B9 4D EE F7 F3 2B FA E3 D9
+ A1 76 67 F9 DD E6 0B 95 99 13 42 42 48 C2 64 32
+ 05 15 6E 51 97 13 C2 00 67 B8 10 2E 50 97 5F 7F
+ 25 CB 96 E4 B5 BA 7B 7B 75 AF 13 AA 93 64 32 5B
+ 5A 6D F9 91 6C CB EF F2 BF 9D 96 B3 B1 A7 05 FF
+ DB FF F8 F8 DD BB EF 7F 95 4E FF F0 EF EF CC C9
+ 00 BB 98 C5 84 78 FA DD 3F 00 FD 8F EF 7C 28 E7
+ 52 E2 C9 64 0B 5F FC C9 3B 13 4E 31 B8 74 FA DD
+ DF BF FB 2D FC E4 BF E0 9F 9F C0 3F FF F4 AE 4A
+ 3D 7D F5 A3 DB 69 7E F9 2E 24 57 3F DB 12 E9 F3
+ 92 F3 29 3A B3 D0 67 1F A3 83 A4 C6 C3 C7 D3 77
+ EF 7C 4A 91 C9 4F F0 9D B2 01 78 FF F6 2E 9F 1D
+ FE A7 32 F4 DF 1F BF 3B 7D F1 35 68 55 4E F1 6C
+ 20 5F 7B FA FA B7 90 CE 9C 5E 41 C1 53 88 F0 5B
+ 7B 32 26 9F 53 39 7D FD DD BB F7 E6 E5 EB 7F 7A
+ F7 C3 AF DF FD 25 65 EE BC 0F 2A F3 4E 62 E6 0F
+ E6 E9 40 0D C8 00 F3 B4 63 9E 61 49 49 E5 D9 C9
+ 03 F2 0C 66 39 FB 54 F3 74 98 A7 29 E1 9C 3D 7C
+ FF FA 37 EF DE 7B 46 E1 62 49 A7 18 97 86 82 C8
+ 64 97 87 51 18 87 D9 A5 92 BA E6 3F E0 3C 6D 34
+ 59 E5 49 E4 01 79 BA EC CF 2E EA 3C BF E0 3C E1
+ D7 45 E5 49 E4 01 79 DA E0 CF 50 8F 55 9E 5F 62
+ 9E F0 DD 96 B3 CF D5 DA 1F 90 F3 5A 0C 16 4B 34
+ 67 EF 57 65 D0 5B 86 AA 0C AD 29 1D 51 1F 22 08
+ 0F 25 6C 2A C4 90 B5 AA FB 2D EB 23 AA 7F CF FA
+ 62 FD EF 59 AB 36 CF 0E 44 9A FD A3 59 AF 9B FB
+ 6B B1 E7 C5 9F 5E A5 1C 3E 8C 75 A4 7B AF 56 47
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.^..........%PDF
+-1.3.%Çì¢.5 0 o
+bj.&lt;&lt;/Length 6 0
+ R/Filter /Flate
+Decode&gt;&gt;.stream.
+xÂœÃ}m³l¹Mî÷ó+úãÙ
+¡vgùÃæ.•™.BBHÂd2
+..nQ—.Â.g¸..P—_
+%˖䵺{{u¯.ª“d2[
+Zmù‘lËïò¿Â–³±§.ÿ
+ÛÿøøÃȕ•NÿðïïÌÉ
+.»˜Å„xúÃ?.ýÂï|(ç
+RâÉd._üÉ;.N1¸túÃ
+ß¿û-üä¿àŸŸÀ?ÿô®J
+=}õ£Ûi~ù.$W?Û.éó
+’ó):³Ãg.£ƒ¤ÆÃÇÓw
+ï|J‘ÉOð².xÿö.Ÿ.
+þ§2ôß.¿;}ñ5hUNñl
+ _{úú·ÂÃŽÂœ^AÃSˆð[
+{2&amp;ŸS9}ýû÷æåëz
+÷ïßý%eî¼.*óNbæ.
+æé@.È.ó´cžaIIåÙÉ
+.ò.f9ûTót˜§)áœ=|
+ÿú7ïÞ{FábI§.—†‚È
+d—‡Q.‡Ù¥’ºæ?à&lt;m4
+YÃ¥Iä.yºìÃ.ê&lt;¿à&lt;á
+×EÃ¥Iä.yÚàÃPÂUž_b
+žðÖ³ÃÕÚ.ÂóZ..K4
+gïWeÃ[†ª.­).Q.".
+.%l*ÄÂ榖-ë#ªÃú
+býïY«6Ã.Dšý£Y¯›û
+k±çş^¥.&gt;Œu¤{¯VG
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000105: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.6562500 +0.0781250
+</span>Pipe Handle: 0x898c8ba4
+Send 0x5c00 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> BA B7 3A A0 8E D8 78 4E BE 24 A9 24 D2 18 24 D3
+ 4A 1E 91 69 6B 0C 3A D3 2F C6 56 2F 99 56 F2 88
+ 4C 5B AB D7 99 4A B3 F7 76 C9 27 1F 4D AF E3 48
+ F6 16 89 99 7A 07 05 A5 BE 23 39 7C 0F 7E F8 8E
+ E4 F0 3D 2E 51 7F 47 72 F8 BE CA 1F FD 6F 27 39
+ FF B8 B8 AC E5 37 52 F0 95 C5 A8 EF 9D 64 7C 21
+ 05 AF E4 77 F2 31 A3 2E 58 92 21 A4 73 30 68 D3
+ 5F BF FF FA 25 82 73 F1 36 BE FF C7 17 EF DF FF
+ DF 97 57 68 31 01 3A F0 F7 9F 90 FE 7B F8 BF DA
+ B8 FE D7 D7 3F 79 E7 FC 19 F4 7E 05 57 17 2C 56
+ F8 5F BF FF D9 8B 81 86 96 E3 FB FF 78 31 F6 EC
+ 8B F5 EF BF 7B 09 28 11 04 FE DD 8B 03 8D 8A CD
+ 20 05 9B 61 4E E6 FD EF 5E 00 E9 79 59 2C CA 33
+ 2E 9E 61 A0 B0 90 AC AF 5E AC 03 11 EA C7 FF C9
+ 02 2A B6 7F 7F 81 16 E8 8B 31 44 FE 9F 97 D7 04
+ 92 52 89 EF FF E5 25 2C 0B FC ED 50 EA AB 49 CB
+ 39 FA 2E F6 97 2F 88 30 03 B2 9A EA BF 59 FA A8
+ 1A 7A D8 57 30 4F 53 EC 07 2F 0E 9D 6E F4 E0 5C
+ B5 EC F5 EF 3E 74 03 FC 6F 96 AB 4C 28 AA FC F1
+ CB AB CD E0 29 42 7C 1F D9 54 AF 2F E0 3A 0A A8
+ FC 17 2F 0E BA 8F EC 82 12 F3 BB FE 91 7F 65 39
+ E1 72 E1 2F 11 7B 02 00 D6 02 C6 AC 94 FF F6 42
+ 61 FC FD 25 CC 90 DA C1 5F AE E4 B7 FF 54 45 F0
+ DB 17 0F 9D 42 09 09 BE DB 80 06 33 68 B0 88 8D
+ F8 EB 9F BE FB FA 7B BF 7E FF A7 2F B5 23 CB AD
+ AA B5 FA A5 2C E4 6C 81 AA 95 C4 A8 7F FC 02 1F
+ 01 7F 7E FF 37 7F C3 7F FE 39 17 CD BA C6 7E 64
+ 61 97 B4 FD 17 E6 AD AA 84 7C F8 67 B6 E1 EF 3B
+ BF B3 18 F5 37 CC 94 BF FE EE E5 15 3A 51 77 36
+ 62 1B AE 1F 52 65 FE AB 7F 93 1C 54 61 7D D1 DA
+ D7 FF 7B 09 98 D2 59 30 AF 4D 19 4A 2A 60 49 51
+ BF 55 07 F0 11 9C F7 52 07 F0 50 58 34 D2 86 11
+ 36 3A 1F 9B 4D 1B 4D E4 FA EF 3A 84 87 32 EB 03
+ F7 9C 43 FF 7D A2 DF 3B 74 3A 6D D8 7E 8E 19 46
+ FB 3C CA FF 37 F8 97 81 EC 97 74 7A 85 EA 0F 78
+ 4B A4 99 05 4E 29 40 44 C4 8E F5 B5 40 2B 8D B1
+ 0E B5 8A 09 50 3F 84 05 BE F0 F4 97 8F 8F E7 0D
+ 88 05 C7 86 9D 2B 8D 2D 7E FD FE C7 DD BA 3F 7B
+ 49 D6 36 B7 82 DD BD 43 07 8A 9D BD 0C F9 DF D0
+ 23 C0 80 6E 29 E8 34 02 76 66 D8 33 A7 08 D6 89
+ C2 22 3D EE 86 6F 61 60 82 B3 21 30 4E 20 F8 3F
+ EF 35 E1 57 FD 0F F0 F3 C6 74 C7 0B BD 6A 54 AA
+ D8 59 55 1C 78 56 1B 20 57 74 B1 D9 9E 34 CB 41
+ FB 2F 77 AA 52 D5 58 50 1B EC 12 60 6C 0B BE B2
+ 8D B5 7E FD FE 47 2F E0 58 72 80 3E 18 0A 83 FF
+ FC A0 CB 05 E7 58 5D 19 B7 B7 5C A4 7E 71 B9 8C
+ F5 EB C1 6A E5 A0 FB 70 AD 5C C4 05 7E F1 12 23
+ B6 AD 5C CB C3 A0 9B 64 15 FC AC 0A 16 AA 0F 40
+ D1 E5 C1 AC B1 3C DE 90 03 35 C8 79 94 B3 D8 73
+ 4A A7 81 05 25 92 77 8A 59 60 E2 98 C2 E9 82 E4
+ 83 AA 07 0C F8 AD EB 55 FD 52 F5 F8 7E 75 DF DE
+ 58 FD FD 4F 5F 5E 0B 0C 7C AC C1 3F 43 88 43 F5
+ 69 33 AC C0 B6 A7 35 8E 80 9E AA FF F9 80 8F 29
+ E0 5B 12 CC 22 6C 5C D0 34 15 3A 37 CE 3F 81 6E
+ C1 AF BB CB 9F 42 3F 0A 5F 8B 57 C3 03 1A 02 E4
+ 94 00 67 FF AB F0 5F 91 FF A2 51 5D 59 9C 8C 1E
+ C2 8B 2F A5 57 38 51 F0 6D 47 6C 32 0C 4C 63 D0
+ 0E 8C 59 AB 86 32 29 87 6B AB B0 2C CC 31 8A F2
+ E7 66 02 57 82 61 46 AC A3 31 E8 75 A0 0C 51 1E
+ F4 91 D1 08 6B 0E 17 0C 2B A3 D3 D5 D6 64 0F B8
+ AC B0 E6 E4 AC 32 D7 AC B1 FA CF DA 09 2A 00 78
+ C1 0B A6 DB 27 67 5B 6E BB EC 73 C1 CE CC DA A3
+ D7 3A D1 55 FB 50 05 C0 F5 43 B0 C0 09 D2 D5 89
+ 91 81 79 E6 E2 EA 90 E3 7B F3 59 B1 09 85 E5 6D
+ 75 68 2A F3 2D 87 92 7D 7A F7 ED 94 A1 A1 79 52
+ 6D 11 43 33 2B 15 31 F4 B1 2E C5 C0 20 0F 26 62
+ 16 7B F3 44 1E E5 CB 3A C6 CB 69 70 29 98 8C 5C
+ 8A A7 01 E5 62 DE 27 FE 6B E1 BF FE 83 FF 62 EF
+ 48 7E 42 C6 77 B7 0D 91 40 57 37 B6 F0 5C 1D F6
+ A6 E6 76 91 8F 68 EF 03 14 5A 81 D1 6D 2E 4D 7B
+ 51 E5 9B 3E 3A 98 E8 45 33 CC EB 9D C7 D1 18 F4
+ 75 E7 94 4F 03 6B BE BD 59 07 4E C3 C2 27 03 5D
+ CC 79 89 75 74 54 32 76 54 CC 7A 70 40 91 6B 61
+ E2 20 DC 04 AD 32 BA FC 3D 2A CB A8 CD 07 18 A3
+ 8C 03 B9 01 AA AA B1 B3 22 DB C0 E3 BB 77 05 86
+ 35 36 0E 63 43 61 F5 36 37 D1 BC D6 A3 7E A8 68
+ E0 11 5C DE F4 3F 93 1D 9A 8B B6 2E 83 A8 6A 2A
+ AC 71 44 3E 29 87 7A 2F CD 71 30 B8 2C 79 5F 87
+ E6 62 32 6D 38 07 D5 26 D7 E5 B4 10 61 BC 28 9C
+ 39 58 0B 8C 24 AB A7 83 8A 02 13 30 14 93 01 57
+ 11 D6 94 9C 55 DE 8A 63 A1 44 F2 5C AF A8 8C E4
+ 40 4C 3A 6D ED B6 4F CC 85 32 DB 65 9C AD 8D 99
+ B5 4B AD 55 A2 6B D6 91 BE 0C F4 3F B9 90 A4 2F
+ B3 53 7D 99 CA 49 0C C8 2C 68 BE 19 AB 99 64 BE
+ E5 50 B2 B9 BE CC 05 DC 5C 28 83 9D 85 55 9C D8
+ F9 E0 BE 2C D4 39 AC 07 AC C6 0C 7D 59 B0 97 87
+ C7 9E 3D 5F E2 BF C4 1B FE 07 FF B5 EA CB 26 5D
+ 84 07 47 35 74 64 CC D9 E3 20 7A 1A F6 0F 9D 71
+ 97 7B F0 C9 E2 B6 8B AE BA E8 74 C3 5E FF E0 17
+ 8F E3 06 ED 1F 1C FC 15 DC 4E FF B0 CE 5C B3 F6
+ 34 25 B6 12 D7 EF D1 6E BB 84 6C 0B 6C 97 69 B6
+ 26 66 D6 2E 95 56 89 AE 9A 66 E5 1E A0 59 EC 75
+ 0F 92 95 98 8F 59 EC 0C 24 F7 0B AC 5D 0E C2 15
+ DB AA 0A 5B 5A 58 9F DF 41 18 CF 33 FF FF 51 07
+ 61 AD C5 35 34 6D 06 66 ED 71 11 9C 88 7D 04 73
+ EE 72 12 B8 34 42 53 18 AE C1 06 7A 0B 9A F9 EC
+ 68 09 76 09 30 B2 1A 9C 04 EE F2 C5 B4 D3 49 AC
+ 33 D7 AC 3D 2D 4A EC C4 D5 7C 65 BA 7D 62 2E 14
+ DB 2E F3 6C CD CC AC 5D 6A AD 12 5D 35 CF CA 51
+ 18 DC F2 DE E7 28 24 2B B1 20 B3 D8 2B 48 EE 17
+ 58 BB 1C 05 3A 03 AA 2E 6C 6A 61 7D 76 47 E1 8A
+ AC BA FE 4F 3A 0A 9B B1 B1 E4 99 E5 FF 37 CC B9
+ 64 9C FC 29 39 57 1C CE A4 A7 B0 65 A9 A5 09 A9
+ 6D 95 7C 81 B5 61 FC 27 E8 83 45 97 D5 6F 44 41
+ 98 E5 25 77 DA 68 FC 71 66 F2 5C 70 99 79 58 AC
+ 52 AC 26 B8 40 31 E6 78 03 DE 5C 4E 31 A0 F7 1A
+ F4 5E B1 36 0C D0 BB F8 82 75 46 FD C6 A5 15 3C
+ 66 EC D1 1B CD 69 46 BD 99 D5 05 E7 DA 80 AE C3
+ 9B C9 C9 2D 50 5B 52 D1 7A 6F 58 1B C6 7F C2 6F
+ 16 5C FF 57 79 17 BF 42 C7 8C 79 B5 DD 12 16 5C
+ EF D3 B5 59 58 24 D8 2D 60 CF 94 6E A0 9B CB 09
+ 17 E0 C2 A8 F6 8A B5 61 A0 DA D1 A1 1B 51 BF 09
+ 66 05 8F 19 3B F4 36 4B C2 C4 5A 6F 61 75 C1 60
+ D0 E4 6E C0 FB B8 59 9A B9 7B 05 11 3A 79 98 94
+ 46 5C B7 AA AE 52 36 1D 2E BA CA 70 D3 41 FE D9
+ B0 04 35 EB 20 D9 1B F2 C2 91 B0 DA F2 D4 D4 F2
+ 1B 27 92 CD B0 CB 8E 76 D6 41 26 DC 30 AD BD A3
+ 4D E8 77 D0 99 5B 18 69 58 61 ED 03 76 41 C1 F9
+ A1 8B 4A C3 70 D6 2A CF C9 D9 AA 25 AC DE C3 EF
+ 92 D3 C7 13 16 8A 7F A7 90 B5 41 07 D6 FC 38 6A
+ 93 08 59 50 2D CB 66 59 47 8D A3 A0 CE 83 05 4B
+ 3B C6 69 F1 B4 59 B6 91 CE 58 11 99 8C 25 F2 CD
+ D1 D5 A5 D2 11 4C AD 90 95 C9 1A E7 DB CF 32 00
+ 32 98 AD F3 EE EC DA 52 CA 87 9B 1B 8D 86 1B 30
+ 1F E7 92 76 9E F9 2F AB DA FE 7A 2B F1 CD A1 67
+ 39 C7 C1 E9 35 8E AC DF 5E DB 7B 7F C3 9D C6 D0
+ B6 A6 BA 64 8F 87 BA 52 5E B7 F9 DD 8B D7 9B 25
+ F2 4F 4A F4 0E B7 B4 99 CE 69 D6 1E 39 AB A5 23
+ C5 D9 23 65 BD 40 AD 59 3B E4 C8 46 22 1B EC F2
+ 5E EE FA 40 91 33 A1 C0 24 7E A9 E7 43 8D C7 03
+ AB 51 1D 25 C2 DB 00 6A BB 09 7E 9D 4F 7E 29 FD
+ D7 05 26 3C 77 1D 26 C2 F5 EF B0 00 38 67 0D 74
+ 76 51 EF 21 74 D6 41 87 89 5C 4E D8 47 47 0B 5E
+ A0 1D 5C 9D 3D 2A A4 50 C2 C4 CC 8D 20 2B E7 B1
+ FD 23 07 03 8B 10 07 68 B3 47 7F 04 9A 73 0B 9E
+ E8 D0 D8 1A EB 31 70 1E AA 8F 1F B0 CD 9E E4 51
+ D8 C0 F6 2E 8F D8 88 F5 28 B6 8C 97 5D 34 B8 D9
+ 33 3A 02 0E DC C7 D9 DB 01 5C 63 3D 08 0E 8F FF
+ 8D A5 1A 76 83 C3 33 AE 7E 6C 16 8D F5 20 38 3C
+ DA 34 60 8B FB B1 E1 71 E5 11 5A E5 3C 8A 2C A3
+ 13 D6 D0 D2 6E 68 11 8F 82 8E 8D A1 B1 1E 04 07
+ 03 73 3F DA 2D EF 07 97 A0 7F 18 5B 43 63 3D 08
+ CE DB F3 D8 18 CA 6E 6C 09 AD 3F 36 86 C6 7A 14
+ 5B C1 53 9A A1 40 3E FD 58 80 51 67 1D A0 52 4F
+ 0E 5A 14 56 E8 CF E2 D8 36 1A EB 41 AC B4 C2 76
+ 05 AB B9 0B 2B 1E 5C 4A 03 54 E2 3C 88 14 0A 1B
+ 58 57 90 DA FB 90 96 4C 23 36 05 95 58 8F 62 2D
+ D8 C9 5D C1 EA EE C2 5A A0 A4 D2 D8 92 1A EB 41
+ AC 09 46 1E 57 6B 80 BF 07 2B 74 A3 96 66 BF 8C
+ B5 B3 1E C4 9A 1D F6 81 57 B0 86 FB B0 C2 D8 2F
+ C7 11 2B B1 1E C5 5A B0 4B BC 82 35 DE 85 15 8F
+ 84 95 01 2A 71 1E 44 5A 70 75 ED 0A D0 74 1F 50
+ BC 8C E5 47 A4 C4 7A 0C 6A 58 1C 76 98 57 B0 E6
+ BB B0 5A 57 68 16 22 58 1B EB 41 AC ED A2 D3 65
+ AC E5 3E AC 78 5E 7C 6C 58 8D F5 28 D6 74 5E B5
+ 2B FB 58 8F 05 A3 07 47 07 D0 04 6A 63 3D 08 D5
+ FA 4D EF 6A 1F EB B1 3C 4E 06 87 33 5D 8D F3 20
+ 52 98 92 AC FB 56 FB 58 8F E5 7D 4C 67 33 36 AC
+ C6 7A 14 6B DA F4 AE F6 B1 1E CB 63 49 99 B1 61
+ 35 D6 83 58 71 C6 72 B5 06 8C 3D D6 B1 CB 5A 30
+ 76 C5 A3 FF 30 BE 33 7C E0 B3 1F 77 ED 0B 57 E1
+ CA B2 F5 8F F8 F3 2F E8 2A 56 F6 0A F5 5F 0D CB
+ D6 B4 62 51 A1 3A EB DD 89 4E 1F D3 4A 3D 74 4C
+ 9D FC 44 A4 C1 ED 91 BA 44 E8 2C AE 51 2C 2E 74
+ 12 D2 CA D7 DF 7E 6F B3 B6 71 9C F0 6F 31 A8 C1
+ E3 27 6A DB CA 05 5E DE F5 DD C2 3F EA 2B 82 BC
+ 34 C8 6B 89 7F CB 06 FC C1 55 03 BA 65 D1 3A 6A
+ 95 37 5A 38 9B 8C D6 11 D3 0E 06 3C 50 DA 51 16
+ A3 05 95 C1 62 72 73 F4 57 37 4C F6 D5 4B 8C E9
+ B2 C9 42 D4 4A 6A 9D 37 6A 38 07 A3 47 AD 64 88
+ 6B 93 1D 26 ED 20 93 D1 32 CF 1D 16 FB 29 5E 60
+ BB 68 31 6F 86 86 A4 55 DE 68 E1 D0 17 2A 1D 31
+ ED 68 B1 E3 A4 1D 66 B1 BA F8 34 98 EC 9B 6E 1F
+ BA A7 E8 92 B9 64 B2 2F AF 56 32 9F 86 96 A4 75
+ DE A8 E1 60 BE 3F 28 99 D6 ED F2 38 69 47 99 8C
+ 96 C4 EE 30 D9 5F 5F 75 65 C1 A6 41 C9 34 B4 A4
+ 51 0D E7 CB D0 92 30 ED 68 B2 E3 A4 1D 65 B2 BA
+ 50 B7 DF F7 7F 73 DD 60 18 B4 45 54 D4 1A 6F 94
+ 70 21 0C 0D 09 D3 AE 0C 76 98 B4 C3 0C 56 D7 0F
+ 8F B4 58 F4 43 3B D2 2A 6F B4 70 D1 0C ED 08 D3
+ 8E 16 3B 4E DA 51 16 A3 45 CD FD 16 FB D5 75 8B
+ 95 A1 19 69 95 37 5A B8 18 CB A0 63 59 37 CA E3
+ A4 1D 65 B1 BA D2 3A 18 8C BB 48 09 2A 40 17 FB
+ B1 FF FC B3 FE F1 15 C3 6C 5C B4 58 0A 43 3B D2
+ 2A 6F B4 00 38 51 EB 88 69 47 8B 1D 27 ED 30 8B
+ D5 F5 DF 3B 4C F6 47 2F 21 FA 8B 26 CB C6 68 25
+ B5 CE 1B 35 5C CA 43 43 C2 B4 A3 C9 8E 93 76 94
+ C9 68 19 7A DE 64 1F DE AE 65 39 66 AD A4 D6 79
+ A3 86 CB 6E 68 49 98 76 65 B2 C3 A4 1D 65 32 5A
+ 0F BF C3 64 D7 6B 59 B1 43 53 D2 3A 6F D4 70 B9
+ 0C 4D 09 D3 8E 26 3B 4E DA 61 26 2B 9B A9 D2 94
+ F3 FF C9 0B E0 BB 6C B1 3C B4 24 AD F2 46 0B 57
+ 82 1B 74 CC EB 76 79 9C B4 A3 2C 46 9B 03 83 C5
+ 7E 42 21 90 AC 6B 37 FC 53 56 75 EB E7 D7 BA 49
+ BF B8 A1 01 69 55 37 E8 61 82 B6 28 DD 6A DA C1
+ 52 07 4A 3B CA 52 B4 35 F1 A6 A5 BE E4 F6 F8 E7
+ D7 4D 55 82 52 6E D0 75 03 DF 2F 31 0E CA 61 94
+ B8 D1 54 87 49 3B CC 54 65 33 33 BA 64 AA 16 72
+ 02 9C D8 2F 87 53 EF DA 54 26 D8 41 39 A5 EB 06
+ BE 37 56 B7 98 9A 76 34 D5 71 D2 8E 32 55 DD 9A
+ 99 6F 7E 3F BE D6 1B D6 68 71 4A 35 AD E9 06 BC
+ 37 79 68 30 98 76 34 D4 71 D2 0E 32 54 DB 18 7A
+ D3 52 5F 71 F3 BB 5E A7 F0 72 B8 52 4E EB BA 81
+ EF AD 4B 83 72 71 DD FC 8E 93 76 94 A9 68 5F 6A
+ 30 55 0B D6 B5 84 C1 40 7D 0C F1 F5 B5 65 2F EF
+ EC D0 60 B4 AE 1B F8 DE 16 BD 7E 5C D3 8E A6 3A
+ 4E DA 61 A6 4A EB B9 CF 1F BD 60 88 45 8C C9 E6
+ D4 6C BA 35 BF 71 9F 64 30 54 2A 5A 35 AD E9 06
+ 3C CC 51 87 06 83 69 57 86 3A 4C DA 51 86 A2 4D
+ B9 23 2C E5 5D 1C 74 53 AA 6E D0 7B BF 0C ED 05
+ D3 8E 96 3A 4E DA 51 96 A2 4D C1 C1 52 D2 D2 A4
+ F5 FD 95 0C 47 AF 0D 13 C0 B5 69 DD B4 AA 1B F4
+ DE C7 A1 B9 60 DA 95 A5 0E 93 76 98 A5 B6 5B 41
+ 83 4F 6A 2E 7D C2 52 18 CA 54 EB 56 86 F6 32 A2
+ F7 C1 EA 4D 9B 9A 76 B4 D4 71 D2 8E B2 14 6D 88
+ EE 9F D7 5C EA 03 E5 9C B4 B1 30 59 F2 2D 8E 6E
+ 8F BA 68 F0 DC 34 1F 95 B6 21 C0 2F 42 FB 05 8C
+ 87 8C BD E7 68 74 5C 32 D6 7A 3C FF 6D EB C9 31
+ 0E E2 83 F4 51 11 16 93 43 1F 85 01 50 B7 56 DA
+ 73 6E 40 D0 BA 58 47 B2 1A 70 63 3D 18 64 27 C6
+ B3 BD 82 D4 6E F6 B7 27 EE 11 61 19 05 32 68 AE
+ 56 40 5F 98 CF 71 A9 C1 76 FC 82 31 02 67 CE DC
+ 2B 39 B5 A0 30 66 43 F4 77 0B 61 FB 89 9C 86 6F
+ A7 1C BC 23 63 47 39 76 EE F6 8F 08 69 97 8D B5
+ 90 B1 30 6F CB 61 73 5E 92 43 F8 3E CB 55 E3 E2
+ B0 ED AB 93 B0 BF 96 F5 44 3E 88 40 D1 82 5F E9
+ 3C C2 6F E4 27 C1 BF FF 21 3B 52 D9 03 15 E7 2A
+ 0E 57 B6 AC D8 A3 8C 33 D8 F9 10 5D FD 38 88 54
+ 46 09 76 35 94 FF 11 21 BA 40 9E 05 DF 08 FA DB
+ C7 62 74 8D 4E 69 A0 07 CC 52 BC B3 F2 2E B8 11
+ A9 BE 66 01 1F 6B 53 6E 01 ED CD 02 66 EA 24 74
+ 2C 05 08 8A AA DF 88 58 83 E4 7E 7C D7 C8 50 E8
+ 5B 4D 15 28 B2 07 49 24 02 7F 18 BD FA 86 F7 6B
+ 39 55 25 44 62 25 7B 6E 35 55 C7 A1 30 7E BC 70
+ D0 E4 09 95 C0 BE B9 B2 1C 9E B0 13 D8 9D AC D0
+ 9C CD 45 13 8B 82 8D A7 3F 18 B6 B3 D1 73 26 9D
+ 68 B0 E5 1B 5E B4 E5 54 95 10 89 44 16 86 2D 38
+ 14 46 B2 FD F3 A1 FE 76 FF 90 01 83 83 60 E8 98
+ 42 91 21 B0 5B 76 F5 40 7C E7 1C 1B 98 39 39 DB
+ 82 BE 4C 5F A5 62 88 72 ED 9B 31 76 D6 A3 51 97
+ EB 35 4B 85 6D F6 2E 95 C2 D6 03 6A 2A 6C 43 60
+ CE C7 22 42 2B 6C B3 77 A9 04 1B 05 E8 D3 D0 86
+ 90 7D 0F DD 38 57 C0 66 EF 51 45 0B DD AC 0A E7
+ A4 38 8F 0C FB 54 68 E1 58 A3 69 62 98 D0 EC 36
+ 91 A7 77 8D 51 1D AE 7D C5 01 2B B3 0E 06 9B 38
+ F4 A7 02 6B 2F 4C F0 65 6A 51 F0 70 4C BD 30 56
+ AF 61 CA EC 02 2F E0 5E B9 88 59 8C 6B 69 EA 65
+ 4C 9A 6F C4 42 F3 8D 63 07 55 60 32 F0 85 B8 FA
+ 64 E1 0F 7D CE B3 C8 E8 E7 4F F4 DB 0D 60 D4 7A
+ 09 58 46 58 57 F7 E2 4A 9F 80 59 B5 F3 FB F3 ED
+ AF E5 55 0C F9 FD 0F 2E 8E B8 70 AE E6 83 3B 59
+ 97 BB CF 87 71 1F 93 C6 BB 04 44 2A 9A E8 1E 9A
+ C8 48 DE 9B 52 D1 1B 1F 4D 62 E8 3E DF 47 AB BE
+ A5 45 A5 AA 84 48 24 B2 E5 56 53 75 1C 0A 63 ED
+ A9 F4 08 E1 F9 14 A8 23 84 CA 92 81 4D 05 D0 07
+ 14 15 5A 1F 6A 10 C1 C3 10 22 DB 10 85 52 B5 C1
+ 0B 49 E4 81 4D 05 C0 DF 10 1A A7 AA 84 48 AC 64
+ CF AD A6 EA 38 14 46 1A 21 3C 1F 6A 36 B6 B3 7E
+ 51 B0 3B 59 A1 39 EB AC 22 AC 53 B0 F1 F8 32 C3
+ 76 76 91 12 ED 44 83 2D DF 00 9A A4 AA 84 48 AC
+ 64 CF AD A6 EA 38 14 46 31 F6 73 A1 16 63 7B 57
+ 34 EC 46 12 34 EF 8C 22 AC D5 B0 BD 71 02 DB D3
+ 7A 57 93 48 44 87 CD DF 10 1A A7 AA 84 48 AC 64
+ CF AD A6 EA 38 14 46 65 EC A7 42 2D C6 8E FD B1
+ 26 02 D0 48 82 16 9D AA 30 D1 1A 0D 3B 1A 2B B0
+ E3 22 CD A7 13 1D 36 7F 43 68 9C AA 12 22 B1 92
+ 3D B7 9A AA E3 50 18 95 B1 9F 0A B5 9A 68 BC B1
+ 9E E3 31 62 0B 0E 86 97 A5 DE 66 F5 18 D1 92 A2
+ 31 55 CE A3 EF 72 E4 7A 43 D4 66 0E 25 D9 F6 4B
+ 62 68 91 4F B0 BF DF B3 3E B1 89 3A 32 B0 14 66
+ B5 32 6E 7C B6 27 1F 93 EF 25 68 23 93 9F 1A 09
+ B9 74 12 06 E5 BE 84 DC 49 4C CB 5F DB A4 FF 40
+ 89 07 AD 8E 9B 14 71 9C 1A 60 68 99 CC EC E2 B8
+ F5 D7 4F 7C A2 7D 95 8A A5 D0 3B 7F A2 25 73 44
+ 51 98 EE 69 45 AB 84 C1 74 47 CB 3C CA 78 36 9C
+ FD 60 BB 1B E3 DA F1 E8 67 7F E8 67 63 3E 63 9C
+ AE 21 5A F3 8D 1A 38 17 D5 4A D6 B4 83 E1 8E 93
+ 76 94 C9 A0 7F 35 76 B7 CD F0 54 9E 1B 02 1A E9
+ 05 91 99 05 C5 F5 2C 59 73 76 C4 D5 D9 CC 13 B5
+ 9C 3D 2B E2 78 3D DD DB 93 0A F0 7F 17 1E 91 C3
+ CB 28 01 7E 80 F7 08 D7 CB 28 93 E6 11 39 01 0A
+ 61 B1 77 CB E9 4B 27 4A CE FC 9B 26 4A 2F 96 23
+ 7A CD CB 09 18 B3 6F 78 02 40 38 3B CC 2C 89 38
+ 76 9D B0 76 98 27 18 98 62 D9 AC E1 30 67 8F 56
+ B8 CB 56 C6 D2 62 D6 8E 50 73 21 C6 40 11 D0 C4
+ CA CC DA 23 27 47 4F 5D 29 6F 36 09 6B 4F EB 5A
+ AD 52 2A 31 BC 6E 29 82 87 70 C0 D3 1B 2C 21 BB
+ 3A 76 C1 55 96 E8 6B 16 85 C6 2E 8D F3 E0 D8 05
+ 8A 01 6A 45 2C 99 5F 91 7A 74 EC B2 B6 81 E6 68
+ C8 EB 75 A4 1C 28 70 97 AB 4F 03 C2 74 D4 10 6D
+ CA 32 AE 23 E5 90 DA 0F 13 FD D0 E2 D6 D9 5D 9B
+ D5 7C C1 79 F2 2D 90 87 D6 9E 0D 56 7D 5C 8A 58
+ EE 8D E3 C5 03 58 D9 76 3B 70 00 AB A1 ED 8E E3
+ 25 03 55 85 ED 98 D7 08 71 D4 A2 B1 B9 E1 49 B5
+ 89 1D F3 0B A5 8C 41 E0 A2 DD 19 1E 70 5B 0E 3E
+ C2 78 34 6F 26 12 6F F4 15 78 C9 B7 66 6D 29 0E
+ 90 70 A0 8E C0 F4 E6 E4 F1 F9 04 8C D0 8A EF 65
+ 46 1C 83 B7 6C 1A FD F1 9D 0F 00 05 EC C1 BF E8
+ 5B D6 2C 82 19 94 CB 47 D9 D5 2E 18 A5 1B 47 E7
+ 5D 06 8E 47 93 64 42 24 24 E8 28 DA 77 46 D9 D3
+ AF 14 F9 38 15 C7 FB 42 8D 81 2E 17 46 F5 43 8D
+ 51 AC DE 5D E1 51 E3 10 8B 66 05 98 BA 87 90 94
+ F9 B1 F3 0E 3E AC BB B9 63 97 94 69 D3 C1 47 75
+ A4 E3 76 E4 00 C3 2F 66 7D E0 CF 9C 82 5E D4 83
+ 9E 48 1D 72 95 ED FB 6B 67 CC 67 B7 E5 7B 4D 95
+ 5D F9 6E AA CD 3B 55 97 DD B2 49 E8 83 6D AC EB
+ 22 C9 D1 7B AC 1E 57 03 AF AC ED 1B 7C 96 D0 E0
+ 66 4A 4D 00 15 07 26 86 77 F8 E6 2A 62 C1 80 AB
+ 19 72 73 75 42 00 5D 9F 09 CC 39 C8 33 5B 0C 64
+ 01 3A 42 C7 1F C7 A7 20 52 54 51 5E F8 AA CD BD
+ 2F B7 B2 42 D6 5B 2A 14 56 A8 71 1E F3 94 16 84
+ 39 3B E8 F1 CD E6 9E D0 1A FC AC A3 17 F0 0B 9A
+ C6 0E E8 1B EB 41 F8 BE 06 3F 78 AB 18 F8 92 D8
+ 5A 93 D9 2D 49 93 4C C4 D9 9C AA 57 19 46 12 21
+ AF EA D5 A3 D5 A9 18 8C 5A BC D2 C3 6E AB 13 FC
+ DC E7 FD 8F B5 B2 1A AA 40 BA 1E C7 16 48 71 67
+ 53 AE 2B C2 05 02 9F 8C 7A 38 77 36 68 A4 28 C2
+ CD 82 F5 38 B2 59 E0 D1 C6 B0 6A 16 82 7D 39 AB
+ AA 34 1B 53 52 1A 45 7D 7A 7E 68 13 C4 79 10 3A
+ 0C 89 F1 A2 98 6A 12 B4 93 08 B3 1E 55 02 57 5E
+ 67 BE D4 48 66 43 52 2A CD F0 49 44 3F AA 46 AC
+ 07 75 8B F5 2C 86 D6 ED AB 0B B5 8B 8E AA D9 60
+ 2F BC 9C DD 9E D8 9D 8D 64 29 15 4D 74 E2 9A 76
+ A8 4E 18 1E AD 5C D7 E9 46 79 B9 5A 52 AC DA 6C
+ 20 4C A5 5A AF 88 A2 D9 81 15 11 86 60 FD 39 B5
+ 4B 15 F1 42 61 D9 84 09 7B FD BB 37 78 A6 E8 67
+ 71 D0 9A 07 05 1B EB 41 0D 53 3D 7E 73 59 43 33
+ A3 21 15 D9 BD 21 37 45 43 07 E3 B2 38 BA F3 C6
+ 7A 54 C3 1A 60 E2 72 E5 34 7B 2A E7 B6 2C F7 04
+ 40 13 D7 22 9A B2 6B 39 54 D3 8B AE E5 66 59 BE
+ 0E FD C0 BD 81 3E 45 43 A9 AD AC E1 A1 B5 F5 62
+ C7 30 55 96 5D D3 6D AD DD 13 26 D4 E0 A4 0C E7
+ 8C 36 38 4F 21 4D 85 95 16 7F 6F 3C 4B 39 99 64
+ 61 EE 99 D1 A5 02 88 ED C9 24 F5 42 FB 87 EB 65
+ F8 0A FD 85 B1 C9 5E 78 B3 7C 52 3D 9C 04 51 98
+ 77 61 45 1B EE 8E D5 A7 F4 73 75 59 48 EB F7 8D
+ 28 F5 E5 0B 4C BB 32 20 E7 D0 4B F8 38 F3 05 ED
+ 16 E7 57 71 48 8F 9D F2 DA A5 3E 5F 63 70 DD 75
+ FD DA 3C BB 39 FD 34 74 BB F0 0B B3 5A 99 CB F2
+ ED 1E A7 1C 87 34 B0 CB CE 64 72 8D 47 C6 F0 F8
+ B0 92 1B 86 91 A6 C4 A8 82 B6 CF CA 59 0A 05 A6
+ 57 2C B0 BE 9B 7E BD 3D D3 5B 68 82 A7 3F 3C DC
+ 59 3B E5 50 E6 83 1C 8D 67 76 5A 7D 4B 41 7C 6A
+ CB CD 3E D9 B0 B2 EE C0 2A 30 A9 B9 70 88 FE EE
+ 29 55 DD 2C C0 D3 2E 69 33 13 61 CF 9C F0 F2 C4
+ F0 06 C9 F8 1E B9 FC F5 2F 77 D5 30 5E 7D 90 92
+ 10 16 D9 72 CA 70 92 88 0D 27 AC 1D 35 C3 80 A3
+ 33 6E C4 13 61 0E B6 A9 19 D3 72 B8 A6 8A 1C 8D
+ 67 B6 86 DD 54 50 D5 8C 69 31 5C 51 65 01 48 57
+ D4 43 6A 58 BD 7A 63 4C E4 A7 D0 65 E5 8D 1D DC
+ 6B ED 2F D5 C1 D0 CF 51 CD 64 F2 0B D6 4B 6E 9C
+ 0F 43 71 4C EE DD 49 22 5C 25 AD 9B 65 4A 4E AE
+ 2F 80 4D C9 E9 DE 46 E3 69 3E A9 B3 76 CA A1 CC
+ 07 39 1A CF 5E 47 76 49 C1 36 1C D9 67 A8 66 DD
+ 6B 0B 10 47 54 B3 62 CE E8 C7 C0 12 61 ED C7 92
+ 74 A3 EB B7 94 AE 57 B0 F5 78 66 AF 2F 53 85 2A
+ AC 1D 95 8C 13 49 19 88 9C 1D 95 AC FB 20 8D A7
+ F9 A0 5D 95 4C E4 70 25 13 39 F7 54 B2 5B 0A EE
+ A9 64 6B EB 5E 5B FC 3D A4 92 D1 2A C4 45 5F 16
+ 36 BE 0C 53 7F 26 5F 66 C1 DD 63 F7 01 A6 32 F5
+ ED C5 81 35 6F 3D 49 E4 53 6A AF 5A 0A 0B 9F 37
+ 9C 7C D6 0D 9F 9E C5 A7 E7 15 1E 1C 5B 40 E7 C2
+ AC 7D 72 5A E6 5A CE 80 67 B2 9A DD 56 70 BE 3D
+ 6E AC 3B B0 A2 DC B7 39 A0 9A B9 A5 2E 0F DB 58
+ D6 EB F5 30 A3 B6 DA 33 E9 0D 30 79 1C 6E B9 F0
+ D7 05 87 36 7B 50 C2 F8 B8 9C 33 6E 0F 86 98 6B
+ 04 78 83 25 5A 37 C1 88 73 E0 3D D4 DA 6A 4C B2
+ 3C 67 DB 11 20 63 76 CA D9 E6 97 9A A5 F5 78 AB
+ B7 F5 0E FB 18 B5 C8 62 71 E3 2F A8 15 A6 07 97
+ 20 72 3D 1A 67 71 51 A8 3C 72 17 D7 94 44 CF BD
+ AB D5 12 66 0D 50 75 A5 9D EC D2 2F 88 1C 17 60
+ 26 E5 F4 65 55 BB 40 D9 7B BF 5E 56 9D 95 D2 D7
+ 9D 95 18 BD EE 3C 5D D9 D9 01 C9 C2 04 3B A0 CE
+ 7A B0 78 F1 20 3C B4 EE 90 F8 2D 57 39 18 E4 B8
+ C1 AA 3A BE 6F 69 85 DD 12 EF C2 09 67 50 60 BA
+ D0 D7 45 83 26 C9 E1 EC 76 95 95 78 CB 25 B7 17
+ CC 84 B5 43 CC BA 7C 35 98 A1 C4 E7 CA 3B 3A 98
+ DC C6 61 4A 25 DB F7 C3 EA C6 F2 A8 73 B3 D0 71
+ B8 78 42 17 E7 77 9E 53 62 94 B2 25 C9 28 8F DA
+ 92 34 67 3B 60 9B BE 24 2B D8 7A C1 2A 6C F9 80
+ A7 E9 60 7C 89 DB 52 1A DC F4 2D 59 06 D7 AB AE
+ 60 3B 66 FB C6 E3 22 AA 86 36 7D 4F 56 A0 F5 9A
+ AC B0 1D B3 69 86 73 22 8D 6D 76 E7 58 B0 B1 9B
+ 17 6C C7 AC B3 43 87 EB C7 32 9D DD 1B 16 70 DC
+ 03 0B B8 83 B6 39 02 1E C5 D5 E0 66 B7 77 15 B8
+ D8 1E A3 53 E0 E2 01 8F D1 B5 E1 81 06 37 BB 4F
+ 2B E0 FA 81 00 C1 76 C8 81 80 5C 57 13 35 B4 DD
+ 0F 0E CA 38 5D 58 D1 DF FF D4 98 6C 08 E0 89 7D
+ BC 19 9D D5 8B 38 5F D4 6D 00 9F ED FB 9F EB 2B
+ E4 FB 7A 5C 3E 1A A7 B0 33 EB 58 EC D0 A0 E3 4D
+ EC 76 83 7D 73 EC AC 2C 05 2F 7F D4 13 BE 21 86
+ 76 A5 FC FA DB BE 90 20 D7 33 8C 94 20 C9 D3 BE
+ 6A 04 D1 FF 7C E8 B4 D8 82 2F AC C5 F3 62 AF 1D
+ FE 1B DE C5 96 2D 11 39 FB 27 81 9C C7 A7 C3 A6
+ 6E B3 6D DC 2F B0 A0 C5 BA 65 38 9A 21 AC BE 0D
+ 27 85 BD E5 8C C5 3F D9 04 5A 22 CD 1A B6 FC 6E
+ 6B B1 C2 A7 C7 59 5D CA E5 A9 EB F4 AA 20 EF 48
+ 32 6B 1E DE 66 91 47 B3 B4 98 FD 43 76 EB 40 4E
+ 3D 17 2F 6B 06 8D 75 D8 0C 15 C7 9A 3E FF 1E 46
+ EF B2 9C 25 AC 41 19 75 59 0C 7A 3D 5C FB A4 E8
+ 32 A8 BD 2F 4C 7E 6A 64 B4 A9 93 29 E1 79 9A 16
+ 6C 8F D2 F2 D7 76 41 F1 40 89 07 5D 18 6B 7D 32
+ AE F3 FA 6B 11 21 83 9D 88 73 68 97 54 B4 6A 8B
+ B5 5A B5 4A 8A 6A 4B 58 B4 6A 35 AD 36 D6 81 D2
+ 8E 32 14 8D 96 2F 1B 8A CE 32 94 C5 CD 18 2A 39
+ D4 C5 B4 4B 83 D0 38 1D EE 17 B6 A8 8C 36 A6 C0
+ 5F 3B 19 28 3C C4 A7 96 96 49 34 D4 71 D2 8E 7A
+ 13 CC 82 2D EA 70 2A 94 C9 1B AF D8 B4 C7 70 90
+ 7B AF 1F F2 64 F5 BA 73 AE 8D DB DB 70 4A 2D 66
+ 24 2E 54 19 21 A1 23 CF A7 D4 AE E8 10 91 E8 62
+ 0F 5E F1 46 12 AF 1F D6 6F 98 AA 1E 17 47 C2 0A
+ 51 6F 97 7B F5 0D E6 8F 92 0A 09 25 11 49 CE 0D
+ 53 31 0E 85 F1 62 3C B3 E7 53 62 7F 88 AD 80 EF
+ 75 9A 21 7E D5 5D 17 2F 03 0E C9 96 99 8B 97 98
+ 60 E6 6E 8E 00 F3 81 76 7E 14 0B EF 4C 61 5B 52
+ D9 5E 60 51 C2 4F 5B 59 53 1A B9 50 B6 00 CA 0A
+ C0 94 65 EA 11 1E 4E 34 B0 34 9E 63 C7 A3 06 6F
+ 32 E5 53 C4 6B C2 C3 61 B7 32 46 35 D2 A7 23 1C
+ 5F EC 93 BF 7E F8 12 6B 38 D8 34 9E 20 DA 55 82
+ 8F DD 7D 95 02 7D E3 2E EE EE AA 05 35 93 76 7B
+ 14 D6 98 69 97 46 65 BB 65 B5 84 9F B6 B2 F6 55
+ 2D 0D A0 AC 00 EC AA 5A 94 48 B3 06 3C DA C1 DF
+ 5B 9F 3C 1E 9F FB 1F AC 4E 7C A3 D7 61 08 1B 3F
+ 5C F2 75 18 64 70 6E 22 20 89 60 E0 D7 E6 29 97
+ 2F 0B CF 56 A7 98 EB 95 A6 01 98 4F F8 17 B3 3E
+ 29 56 CB F6 93 4A 78 81 C5 09 67 34 E2 44 78 0D
+ 6B 05 80 58 73 72 18 A2 B3 DD 32 0C 91 58 C7 55
+ A7 60 F1 C0 22 CA F7 B7 EA D3 85 43 0F D6 AB 1B
+ C8 FF 8C 13 65 50 C9 ED AF 4F FD A6 B9 2A 36 66
+ ED A9 4F 3D 91 AA 4F 17 2F B1 4F D7 27 5B 6F A4
+ 68 60 01 86 C3 25 0F F5 89 59 AA F2 F4 84 17 58
+ BB EA 13 27 E2 FA 24 00 76 D4 27 81 28 F5 89 21
+ 7E A6 FA 14 32 1F A1 39 A8 3E 4D BB 25 AA 33 9A
+ B5 27 34 C3 BA EE 69 D6 20 67 B6 1A 71 80 01 1B
+ 23 6E 80 0F AC 3C BB E0 A1 D2 70 F5 16 96 F7 78
+ 97 6D 4E 0E C5 2B D0 68 5A C0 82 CE DA 27 86 B2
+ 1E C4 68 34 B3 5E E0 96 7A 43 64 86 69 39 3D 22
+ C6 3A 98 C4 C1 3D 71 A2 F0 64 43 DC CA 55 4D 5F
+ 9F AE C0 FA BD 5C F8 AB BD 0C 63 F3 FB 3F 1D 66
+ 87 B3 35 8D 63 7F 38 BC FE 1B 86 70 20 3B 82 C9
+ A8 44 1C 7E 43 58 18 C1 67 72 E4 8E A1 01 DC 08
+ 07 BA 19 1B 85 B5 4F 0C 65 3D 88 D1 68 66 AB DA
+ 2D F5 76 34 C8 B5 69 07 96 EE B7 0E F1 AA 35 C0
+ 6F C4 53 C3 E5 66 5D 13 AF EA B9 5E 25 FE EB 5F
+ F9 AF FB 6A 98 84 BF 71 B9 35 7B 61 51 2C FE 29
+ DB 49 FC 9B 1E 31 57 C9 C1 60 70 93 55 63 01 75
+ 5C 1E F1 C4 42 C7 2C 1A 6B A7 1C CA 7C 90 A3 F1
+ CC D6 B1 5B 0A EE 89 84 B3 B6 EE 36 04 D1 81 EE
+ 8C C2 E4 E1 EE 5B B8 59 C7 64 CB 64 4F 1D 9B 6E
+ 4E DC EF 32 6B EC 77 55 24 5E 87 33 6B 4B 63 E3
+ EF 80 0C 85 49 74 31 40 50 74 B2 46 C4 1E EB 90
+ 48 5A 41 6D A9 3C 85 30 24 89 BE 87 4C 75 30 75
+ 93 6F 50 0D 24 55 25 44 62 25 7B 6E 35 55 C7 A1
+ 30 5E 5C DF 7A 3E 25 6A 18 CD CA 5A 82 D7 B0 1B
+ 49 D0 16 1F 15 E1 92 86 8D 4B 51 0C 7B A1 D0 92
+ 4D 22 C7 99 AC 00 F8 1B 42 E3 54 95 10 89 95 EC
+ B9 D5 54 1D 87 C2 48 B6 7F 3E D4 1C B3 34 2C 41
+ 87 5A ED 64 8D F0 09 84 51 84 D7 A1 56 C3 E2 24
+ D4 6A 58 AC 84 5A ED 44 8B FE 29 DF D2 A2 52 55
+ 42 24 56 32 48 A8 55 C1 A1 30 4A CC D2 E7 42 4D
+ 2F 51 D8 A4 61 2F 26 CB CF 17 63 44 10 11 9C 09
+ 91 0D 00 A5 6A D0 48 22 C3 5E C0 7F CB B7 AA 5F
+ 4F 55 09 91 48 16 6B B9 D5 54 1D 87 C2 D8 5E A2
+ 78 3A D4 64 6C E8 1D 03 BE 17 D5 60 A7 C0 24 2E
+ A7 01 11 83 22 02 A3 A9 A4 6F 2F 5C D4 54 2D BE
+ 32 49 EC F1 95 CD 02 03 44 FE 06 0A 4A 2A 22 58
+ 22 91 3D B7 9A AA E3 50 18 9B B1 9F 0E B5 D4 EC
+ 68 7B 10 E1 5A DA 8D A4 7A 10 ED A2 08 D3 9D 1A
+ 91 8B 95 3A 12 4A 90 12 6D 44 AF 23 FC 0D EB 01
+ A7 AA 84 48 AC 64 CF 0D 53 31 0E 85 51 D5 EC A7
+ 42 2D 35 3B CA 3B 3C 58 DA 31 AB 6A 11 F9 65 1C
+ 24 E4 D5 9C 4A 86 2C 75 24 F6 B6 54 25 06 46 83
+ A5 DD BF D5 7A D0 53 11 C1 12 89 EC B9 D5 54 1D
+ 87 C2 A8 6A F6 53 A1 96 0E 32 67 0E 85 8C 05 D5
+ 48 EA 4E 72 8A 8A 88 1C CF BD 92 21 49 57 93 C3
+ 22 1D 43 23 7A 57 C3 DF B0 3B E1 54 95 10 89 95
+ EC B9 D5 54 1D 87 C2 A8 3A C8 A7 42 8D C6 2E 91
+ E2 23 0B F2 12 97 81 53 82 6B 34 49 14 BA 67 28
+ 1C C2 23 12 08 AC E4 D1 75 29 29 8F BF C0 5D 7F
+ 2D 81 69 CE 83 39 0D 05 4B 68 28 57 7A D4 32 F9
+ C3 55 4E DA 49 1C 5E A3 E0 66 55 6B 55 54 AF 51
+ A8 C6 48 64 6B A8 94 AA 8F A6 82 D3 CD BB D6 1D
+ FE 86 B5 8A 53 55 62 78 8D 42 72 AB A9 D4 6B 14
+ A3 53 7A 3E D4 CA D8 DC 71 11 00 9B 15 D2 D6 95
+ 10 C1 DD 0C 91 8B C4 EC E7 CE A9 4A 94 8E AB 02
+ E0 6F 15 5A 4F 55 09 91 58 C9 9E 5B 85 DD 71 28
+ 8C DA D8 CF 84 5A 8C 2D 43 B2 0A A0 0F 85 2A B4
+ 3E 48 22 82 07 50 44 7A E5 4B 8D 7A A8 43 0D C9
+ 2A 00 FE 86 D0 38 55 25 44 62 25 7B 6E 35 55 C7
+ A1 30 2A 63 3F 15 EA F5 E1 96 A9 0B 5F EB 50 84
+ 8F 86 1C 68 F1 05 AE C5 9C 9C 3C 83 AA C4 5C 0E
+ 31 38 29 86 34 B8 1A E0 6F 72 D1 50 DD 6D EA 46
+ DA 5C 77 DA 75 47 4A 02 33 AC 6F 73 ED DA C1 B2
+ D6 D4 60 15 03 AE 4C 0B A6 A2 28 B3 24 D6 06 27
+ BC C0 5A DD 37 9A 05 60 D2 06 00 B1 E6 0C C3 10
+ 4D 68 86 11 88 C4 FA 1C 47 80 DA 95 2D 7D 13 57
+ 8E 9A AA A3 E8 B2 76 6F F9 9C A0 FC F5 CF 57 EF
+ DE D6 95 50 7C BC 53 9E F4 72 6E 91 A7 B4 9C 75
+ F2 C8 56 23 BA 7B 20 B2 3D CE 45 A9 FA 2A 54 95
+ C8 4F 7A 39 3C AF CC DF F0 62 31 A7 AA 84 48 24
+ B2 E5 56 53 75 1C 0A E3 E5 95 D0 A7 53 82 56 42
+ 91 65 D9 87 57 00 8D 24 68 6D 85 B5 11 EC 71 89
+ F4 49 60 F7 27 A2 48 22 FB F0 0A 80 BF 21 34 4E
+ 55 09 91 58 C9 9E 5B 4D D5 71 28 8C 6D 25 F4 E9
+ 50 B3 B1 4D 36 59 C1 EE 64 85 06 C4 A2 88 C5 28
+ D8 26 15 CB B0 4D 7F FC AC 4A E4 C7 CF 2A 00 F9
+ 86 01 56 39 15 12 4A 62 25 7B 6E 3E 2B 1C 0A A3
+ 18 FB B9 50 DF D3 CD 17 6B CE 36 0E 81 DC 99 B5
+ E7 14 AB 31 BE 9C 87 93 5C CC E1 23 35 F3 52 04
+ 0C 4B 19 22 6A BF 21 C5 61 A5 8D 83 98 CE DA A5
+ 13 27 EA 2F C6 08 67 C7 A1 20 13 92 3F E7 D1 36
+ CC DA 63 9C 9E 48 A9 C5 72 06 F3 4C 8E 12 54 41
+ 97 48 87 29 85 B5 C3 DE 4A 4E 8F 3F AF 58 E0 0A
+ 26 0F 65 E6 E2 CE 36 8F 78 60 6E 6D BD 62 ED 94
+ 43 99 0F 72 34 9E C9 61 DE 6D 05 E7 2B D4 C6 BA
+ 03 CB 5F 8C 25 72 C0 60 C6 B8 FA 14 2D 46 AF 49
+ 9B E8 35 3C 98 F1 E8 39 6E C4 48 6A 47 5D 96 70
+ DF 41 04 69 C8 30 80 CF 6E 68 DA F3 87 85 24 4D
+ 6F 91 CC 08 05 5B C2 BE F0 6C 0A 4B 4A E7 A5 08
+ 6B A7 1C CA 7C 90 A3 F1 4C D6 B3 1B DA ED F0 7E
+ 2B B3 5E F3 C4 87 9C 3F A0 48 9B 5E A2 B6 48 F0
+ AD 8B A3 E4 CF 51 B1 C4 B5 77 AF A1 1C F7 1D BD
+ 86 34 72 C5 9A F7 62 A6 5E D9 2D 23 9E D4 CE 6E
+ EE F0 62 4A 4E F7 62 4A CE 1D 5E EC B6 82 77 75
+ 8B DD 8B AD 7B CA E3 6A 58 73 5D 31 AC 4E B8 AC
+ 6A 58 5A 9F D7 BB 1A 73 EB B1 BA 26 FD 2D 7B 0E
+ 61 ED 70 63 92 A8 B7 74 E1 EC 70 64 C1 47 3C 97
+ A4 E1 E0 BA 5C DA EB C8 44 0E 3B 32 91 73 8F 23
+ BB A5 DF 8E 26 B9 B6 ED D5 91 D3 81 CE EC E2 DB
+ 0C D3 CE 6C A2 AA C9 12 40 F1 F4 AE 7B 71 74 41
+ 0D 86 03 CE 0E 9C 62 E9 9A 7E B1 65 45 2F 67 BA
+ B8 C6 9C BA 04 0B BF E8 12 F0 52 21 D2 3D 8F 46
+ 7F AC 63 A1 E1 17 ED 95 30 96 D0 69 C9 83 39 0D
+ 45 97 D0 51 AE F4 B8 B4 52 F0 87 AB AB CC 71 DB
+ 52 6C 9F 2D 1A 35 1B 87 66 94 14 21 07 BD 2A E9
+ FA 74 0E 53 B9 BE 28 52 98 E8 B3 45 FE 86 33 42
+ 4E 55 09 91 58 C9 9E 5B 4D 15 D5 FC D3 F4 A3 63
+ 3C C7 7D 2A D4 75 33 B3 15 81 20 EF 15 A1 73 7A
+ 45 E9 12 85 EE 19 0A 87 F0 88 04 02 2B 79 74 5D
+ 7A 45 E0 5F B4 8A C2 12 98 E6 3C 98 D3 50 B0 84
+ 86 72 A5 07 6D 66 FE C1 2A 37 14 1D 46 C4 19 B5
+ 6B 1C C6 EE 68 B1 49 68 9F 56 DA 39 3A 98 27 12
+ E8 81 6B C9 C3 2D 2B ED FA 2F 3A F6 2E 81 69 CE
+ 83 39 0D 05 4B 68 28 57 7A 8C 45 F7 07 A7 9C B8
+ 38 56 8D 9A 7D 23 C9 21 34 71 8D E8 B9 35 D2 C9
+ EA 63 47 DA 24 76 45 A8 D9 F3 B7 10 55 AA 10 07
+ 89 21 AA DC 6A AA E8 95 44 55 26 4F 88 5A 8C 5D
+ 6F 81 09 EC 46 12 B4 90 9D 22 92 D7 B0 03 BB 4E
+ 4C 15 D4 5A 61 23 3A 6C FE 56 5F 09 EB A9 2A 21
+ 12 2B D9 73 AB A9 8A F2 F5 8D 50 C6 7E 2A D4 83
+ 53 62 E4 DC EA 1A 87 5B 65 93 28 74 CF 50 38 CD
+ FD B1 04 02 2B 79 04 76 A0 CB F8 8B DE 2A BB 04
+ A6 39 0F E6 34 14 2C A1 8C 6E 5D 97 C9 1F AE 72
+ F7 2C 77 BB 6C CA D9 5A 3D 07 16 96 9E BB DE 16
+ E3 17 98 9B 2F EA 9E 83 66 ED 58 1A 96 44 0C 47
+ 58 3B 96 86 3D EE 89 D6 FB C7 22 87 59 3B D4 E2
+ 34 7C 77 45 58 7B DE 24 C7 BB 27 69 34 0F B3 F6
+ 98 87 13 89 5A CC DA CC FF 26 E6 EF 52 D6 D6 2C
+ 74 6B 48 B1 E6 ED AD EA 4C 7F 0D 5C B1 72 9A 9D
+ 78 BB 54 96 73 7D 93 55 E1 81 0E 43 21 DC 27 A6
+ E5 AD C4 0C 68 26 A7 EF B7 D5 9B AE 4E 1B D3 0E
+ 2C 7D F7 EC E0 F5 6E 5F A3 B5 FB E8 D7 EB DD 7A
+ F3 DE 9F F3 AD 08 DA 34 7D CF D9 DC B7 52 A4 9A
+ 71 69 E3 78 E5 21 F4 B5 D6 69 39 DC 24 85 95 EC
+ EC ED 5F 57 E8 19 B6 01 8F 8F 14 93 A3 B1 76 CA
+ A1 CC 07 39 1A CF 64 5D BB AD E0 0E 17 B8 B6 EE
+ 55 97 7C C4 5A 51 A8 31 C9 7C 8E 1C 42 6A AC 61
+ 37 2E CD 4B 35 3B E0 02 B1 F2 D8 DD 81 28 D6 3D
+ 1D 08 B7 78 C5 9A 77 68 1E 7F 8B 0F 60 6B 3C DE
+ B7 A8 21 F3 1E 4D E4 B0 47 13 39 F7 B8 B4 DB 0A
+ DE D3 43 76 97 B6 E9 34 0F 5C 91 AC 7E 2C 80 D9
+ 7C 9A BC 42 FC 59 AF AB AB CE 97 9D 88 F4 EB 3B
+ 9C 9A C8 E1 36 2F AC 79 A7 E6 BD 69 21 0D 04 4E
+ EA 21 0D E6 7D 9A 88 61 97 26 62 EE 71 69 37 D5
+ DB D1 28 D7 B6 BD 3A 8C 3A CE A5 01 1F 23 6D 7D
+ D6 CA A6 CE C0 E1 39 55 BF B8 D8 26 8C 78 2A B6
+ 93 F5 BC AC 5F D4 29 66 F0 E7 ED 1A 5A 27 DB 11
+ D9 9A 6A 91 93 AF 9D 68 67 69 E5 5B 5A 54 2A 22
+ 58 62 25 7B 6E 35 55 C7 A1 30 5E 8E 76 F7 74 4A
+ D0 65 A7 10 34 6C E8 C5 E5 E7 0B 4C 92 59 10 11
+ 9C 49 23 09 00 A5 6A D0 48 22 C3 5E A2 52 69 49
+ 56 A5 22 82 25 56 B2 E7 16 95 F9 34 C6 76 D9 E9
+ E9 50 8B B1 F1 95 2A 05 BB 91 04 CD DA A4 88 7E
+ A4 AB 91 4B 11 D8 B6 DF 73 AB 12 17 AB 61 F3 37
+ 84 C6 A9 2A 21 12 2B D9 73 AB A9 3A 0E 85 51 19
+ FB A9 50 F3 BD 02 05 BB 36 AD FE F3 DA E8 BA 20
+ 22 38 13 22 1B 00 4A D5 6F 39 54 89 0C BB 36 2D
+ AB 6E 40 48 AA 4A 88 C4 4A F6 DC 6A AA 8E 43 61
+ 94 7B 05 CF 85 5A 6A B6 8F 3D 16 42 2D ED 46 52
+ 3D F0 ED F0 2E 11 5E 6E 70 22 D9 5B 4C 4D 65 8B
+ 94 68 23 7A 1D E1 6F 58 0F 38 55 25 44 62 25 7B
+ 6E 35 55 54 B5 AE 11 AA 66 3F 15 6A 36 B6 CB 2E
+ 29 D8 9D AC D0 5C EE 39 12 B1 28 D8 30 F7 36 0C
+ DB E5 C5 73 26 9D 68 B0 E5 1B 40 93 54 95 10 89
+ 44 16 86 2D 38 14 46 31 F6 73 A1 7E 6C 6D 91 87
+ 7D C2 1A 56 CF 6A 33 52 06 C1 46 CB 40 B0 39 33
+ C4 46 74 F8 44 36 D5 28 D5 22 57 3E 95 41 B0 D1
+ CA 37 68 CE 92 AA 12 22 91 C8 C2 4D 5D 70 28 8C
+ 57 87 3D CF A5 84 34 A1 E8 F8 6A 3A 56 AB 46 52
+ 85 8B 6D 2F 87 08 8E 12 42 A4 E9 97 CC 31 D5 22
+ 3D 50 27 7A 65 E4 6F 58 E1 38 55 25 44 62 25 7B
+ 6E 35 55 C7 A1 30 AA 26 F4 54 A8 C5 D8 DE 15 0D
+ BB 91 04 CD 3B A3 08 6B 35 6C 6F 9C C0 F6 8B 8C
+ AD 3A D1 61 F3 37 84 C6 A9 2A 21 12 2B D9 73 AB
+ A9 5C 51 12 5D 59 19 FB A9 50 8B B1 DB ED 8D 0E
+ BB 5F E6 A8 D0 30 72 A4 10 D6 69 D8 D6 78 81 6D
+ 17 E5 14 1B D1 61 F3 37 84 C6 A9 2A 21 12 2B D9
+ 73 AB A9 3A 0E 85 51 19 FB A9 50 0F 7B 86 7C 43
+ 84 37 C5 1A 87 37 CD DA CD 0D A1 FB C5 0E E6 B4
+ 7B 1F 2C A1 5D 0A E1 3C F8 CE 08 6F 8A F5 5F F4
+ 4D B3 2E A1 D3 92 07 73 1A 8A 2E A1 A3 5C E9 31
+ EE 19 FE C1 29 F7 D8 4D 58 7E 1D 86 4F ED CB EB
+ 30 C2 E2 7B 9F D7 5E 43 BB 99 DB E6 79 B7 EF 6A
+ A4 01 6B 87 1B 98 C2 EA 8F 99 29 94 EA 79 33 B3
+ 7A 03 08 91 40 87 48 11 0B B2 A7 78 03 50 F1 F3
+ C5 07 80 EA 3B 15 AE FE 0C 7E 1D 6A 8B 29 F4 02
+ D0 BE 58 F9 1E 1F 4F F7 FA 35 36 7C 89 09 EF F1
+ 8E 70 97 BE 30 74 FF B3 6C 60 97 7A F9 FD EC DA
+ 2A D6 8F 5F CC D9 17 5F E4 6D 07 7A 0B C3 DB A8
+ 16 B0 BE FF 02 2E A1 BE 36 FA 0B 7E 33 E3 C3 F0
+ DA 68 8F 6C 0B 2E 17 7C 0D DE 0E FD FA 37 F3 0F
+ F9 29 0B F4 4A A4 4C 70 CC A3 6F B4 5A 0C 33 89
+ FE 46 31 3F F5 D1 57 F2 FE FC 05 D0 D7 6B 1F A2
+ AF 58 63 99 B3 86 D7 D6 F0 09 D7 49 EB C3 C7 68
+ 8E D9 B7 03 BD 0B F5 40 EF AB 2D CE E1 E6 91 62
+ 39 70 ED 18 EA FE D1 97 B3 00 5A B0 A7 00 7E 48
+ 9E F9 E0 E7 B2 7E 26 7F F2 3B 28 AF A6 29 D3 CA
+ 76 F6 AD 41 EF C0 21 E5 AC 1F 42 64 96 DC A3 7E
+ 48 19 2C 5C DC 09 A8 F1 31 AB 2E DF 88 02 5F F2
+ 7B 60 5F BE 44 7C AE 8B 2E 1C 43 85 C3 3E AC 17
+ CD EC F3 84 7D 35 5C 95 4C E3 1C 5C 30 4E E2 97
+ EF 2C 98 D9 D7 0C A5 96 A9 82 69 AC 63 0B 46 55
+ B2 F9 82 69 DA CC 3E 7F D8 B7 F4 F9 05 19 87 41
+ 4D 9C 5D BD 20 F3 D8 AB 38 F8 DC 5B BF CB F3 57
+ A3 C3 C4 C7 83 7E C0 0E E4 A7 2F D8 C1 E7 E2 D5
+ B6 26 B9 0D 6F AC 72 1B 5F 34 D7 13 B5 D7 C0 02
+ 5D 94 09 66 1F 59 64 13 60 04 9D 7A AE 44 6C D0
+ 58 0F 1A 01 2F 42 DC 63 04 3B 65 84 74 CB 08 B3
+ 8F 39 4A 57 C2 6F 74 4A 57 72 CC 1B 9D F8 8C 55
+ 8D 93 C3 2D 74 77 9F 19 86 3E B3 7A 21 76 45 B3
+ 6F 43 8A A6 FC E0 A7 68 7A D0 83 9F 19 DB 62 88
+ 86 DB AF 94 EE 76 E4 30 D9 43 0E 75 1D 63 FF 5A
+ 2E E5 71 D3 6C 5F C0 7C 65 8E FE C4 A8 32 C7 31
+ 4F 8C D6 47 EE 66 CD 31 59 15 D2 9C 39 CC DD E6
+ E8 8F 9A 8A 35 0E 79 D4 14 06 D4 20 2C A0 83 69
+ 63 C9 6D 8B 1E CA D0 7A 35 34 D4 AA D9 FB 55 E3
+ 87 45 45 37 62 3D AA 5C 39 9B F8 86 72 E6 82 72
+ D4 84 B5 72 6E A7 72 EC C4 F9 1D 48 71 E2 8D 35
+ 77 12 09 26 7D 06 27 4A 61 89 F4 B8 91 C3 E0 40
+ 26 0B 6B 4E 8E CB F5 FD 20 25 67 2D FA C1 4E 05
+ 46 51 BA 4B 91 57 F9 E4 AF EB BD 06 1E 29 1A 1E
+ 77 85 D1 CC D9 6F 4A 02 BB 1E BF F3 CD 49 2E 09
+ AE 65 52 12 47 D6 32 AD FC 5F BC E0 D2 61 76 E1
+ FD CF BB 7F 10 2B B0 8B B9 6D 8E A1 C6 5D 37 47
+ B8 DB 1C CD 9F 28 6B 1C E7 4F 2E 1B 83 35 17 63
+ B0 7D 6E 1B C3 5F 32 C6 E8 82 D0 18 F1 5E 63 70
+ 5F 23 D6 38 B2 AF B9 DC 30 E4 34 DD 7A CA 7A CD
+ 0C E1 52 13 D9 9A 21 ED 34 03 CF 86 64 06 D1 4F
+ 0B 1D 34 81 48 0B F8 55 3D 19 FA 81 4C 20 DE 9E
+ 4B 38 83 AF 86 69 4D 5F 61 54 09 13 35 0F E3 49
+ FD 10 F2 5B E7 DA DA E1 3A 35 EB EB AC 83 A7 7D
+ 50 12 CB 56 D3 0F 97 34 8D EB 32 0D 76 68 E8 55
+ 55 9B 2C 0C 28 F7 96 6A 3B DF A5 8B B5 1F F9 3A
+ 6A 62 48 1D 2C D4 DE FE 5E B0 52 F7 2B D6 F1 87
+ 3C AD E0 53 52 6E 51 05 6A A5 40 97 3D 05 CA 1A
+ AA 69 7C 63 1D 3D 8F 17 0D DF 9A C7 F7 22 5C 29
+ 87 45 B8 F7 ED 75 59 74 51 2B 48 8D 75 74 8D 95
+ 55 97 B7 6A 6C BA 59 63 95 BA DB E7 DA 67 47 84
+ 3C 6A 92 11 E1 38 6A 7A 60 94 02 DA A8 DA DA 1D
+ EF 87 F5 32 E2 ED 69 D0 97 97 86 C6 DE E8 C5 A8
+ 1E 2E EF 9E E1 A3 B2 44 31 74 92 57 59 82 58 0F
+ 5A 02 A0 25 3B 6B 8C DB 93 A0 2F 2F 0D A5 BB 31
+ A4 19 74 11 FE 6E 63 C8 D3 F1 6C 8C F1 09 FA BB
+ 8D 51 EA 1B 33 73 C6 B0 53 C6 B0 73 C6 08 77 1B
+ A3 AF 90 89 2D 8E 5B 21 9B B4 84 9B B2 84 9B B3
+ 44 BC DF 12 18 2C 71 9C 3F 36 D6 83 B6 00 A7 6B
+ A7 8D E1 A7 8C E1 E7 1C 46 BA DB 18 75 1B 70 74
+ 9D 8D F5 E8 AA E1 52 B7 5E E6 8C 11 A6 8C 11 E6
+ 8C 91 EF 9E 7C 77 E7 A9 26 DF 83 F3 BC 2D 06 63
+ AF D2 0C 39 52 80 17 35 F7 8E D3 17 C4 0A 0C 31
+ 69 EA DD A5 AC E4 CE 49 81 71 8D B1 83 94 51 EE
+ DC FD 21 18 3C 98 41 C8 28 76 4E 88 2D F5 C6 11
+ 4B 59 89 3D A4 63 D2 53 26 89 4A 2B 03 49 99 46
+ 09 4F 56 AF 2F 4D A3 BE BC B8 48 BF 9A 44 C9 12
+ F7 DE E1 36 57 3A DE FB 94 4A 77 E4 DE E7 65 C3
+ F0 0A FE 87 5B 13 EA 0F B2 C6 7B 63 AD C5 A9 2B
+ 5C F7 DA A0 ED 80 2B 13 A8 1D F0 07 37 BE B5 05
+ A4 C8 77 5A C0 DC 9A 4A 8B 05 76 8F D8 C5 0F F7
+ DD 1B E5 87 8F DB BD 99 DD FC 9F 5C CC B7 57 37
+ FF F5 33 DD DB 15 DE AA F7 71 01 A9 4B 3D 71 11
+ C0 84 A9 AD CC FF AA 23 1C EE E7 BC 1A 87 E3 B5
+ 57 53 D7 D9 2B 4A E9 8B 44 79 59 79 FA 21 F3 7E
+ D4 05 4A 82 6D F7 42 C5 F9 F6 61 58 6F CD 79 E8
+ 73 85 33 14 F5 9C 14 1E C6 08 47 0D E8 F0 D7 33
+ B7 BF 31 06 74 70 A3 B8 50 57 A1 D6 A3 A2 37 E4
+ A4 05 7D 16 24 C2 17 3C 6A 63 C6 B9 B5 4F C2 DA
+ 27 A7 9E 68 4A 83 9C C6 9A 93 D3 F5 52 C6 EE 7A
+ 8D 03 9C 37 AC BD CA FC 40 BD D6 26 3B EC DE 9A
+ 73 16 27 D9 58 2D BA E3 FB 6B DD 30 36 51 DB 12
+ 3B B0 F3 CB 2B B4 95 C5 95 AC BC 9A 34 8C 3F EB
+ 62 FE BB 8B 99 71 F3 AB 3D 79 54 7D 69 2F 0C DC
+ 53 65 2D 38 B3 38 88 B3 09 7D D0 6A 46 F3 86 10
+ 5B 5F F8 D6 42 5C 0D 6C BF 4F 0A 43 C1 37 E4 EA
+ D0 91 59 11 DA F4 E4 4B B2 2A 6F 91 D3 59 83 9C
+ 59 57 B3 55 0F 07 15 31 ED 54 6F B0 EB AD 72 7B
+ B8 C6 1A 18 08 B8 14 D7 41 53 C7 A7 05 E4 09 EA
+ 4B 4F 0B FC 2B FF 75 D7 4D 5E 29 39 39 49 D1 0D
+ B0 C7 3F B3 E9 95 98 5E 96 BB E4 74 38 18 A8 6F
+ F1 43 DD 82 81 D3 CE 8A A5 84 30 18 BF F3 79 F3
+ 4B AA 71 B5 DA A5 DA 68 56 5D B1 06 31 47 D4 AC
+ 80 0B 14 2E 47 9E 86 1E 58 B3 66 FD DE 5B 7A BE
+ 21 67 6D 63 64 2D 35 36 AD 92 23 AC DE 36 2F 37
+ 79 75 96 F5 8D 6C 71 1F 20 0D E7 11 1D 0E CB 93
+ 11 D6 28 F2 81 B1 9C 0B 09 CB A0 3E 42 DE 4E 6A
+ 4A DC 91 6F FA 62 F9 8C D1 D7 96 D1 AC 11 B5 AA
+ 5C 37 45 AA 5D 1F 5C CD B0 97 37 82 AE 6C 25 4C
+ 9B 9B 63 26 38 FC C3 D2 76 13 BE 19 21 9C 07 67
+ 02 C5 D4 15 99 45 5E 5F 97 E1 FE 1E 13 DF B4 C7
+ 00 75 DE C4 EB 9D A6 8B C7 45 85 35 BC FF 33 6F
+ 61 32 A7 49 A5 1B D8 D9 82 FB 18 CC 7A 70 C2 89
+ 17 56 F0 9D D8 C2 41 76 FE E8 C5 E0 3B E0 31 A8
+ 79 D1 37 17 CF 50 EF D9 DF 69 FA 6B CE A0 C0 F4
+ 84 C4 C3 9C A6 0C 1B DA AE 58 1A 37 8F 1B DA B7
+ E5 84 08 1E 75 DC 17 B7 F4 BC FB 28 86 7A 62 3C
+ 73 EF F0 46 9A EF 6F 13 5A 87 77 D2 1A 69 5D BD
+ 25 44 EF 01 36 A2 3F 17 D8 48 0A A0 D6 52 D1 73
+ 77 4D 62 7F 0A CF BA 64 D4 37 3C B3 CF A9 2A 21
+ 12 2B D9 73 AB A9 3A 0E 85 51 6E FB F5 C1 C4 13
+ AA 80 37 3D 88 15 E2 00 BB 91 04 2D 04 05 3B F8
+ 01 76 70 0A 76 70 0A 76 70 03 6C FE 86 D0 38 55
+ 25 FC 00 9B 73 AB A9 A2 82 1D 54 C8 CA 27 44 8D
+ C6 56 8B 1C D6 39 CF A5 69 F0 7F AE DE 2F F9 9E
+ 5C 1B F9 A7 1D F7 6A 71 41 C7 63 47 EC 5C C0 21
+ D9 D0 98 89 F5 49 B3 7C 3C 47 9C 61 AA 84 9D F5
+ ED 83 47 56 EA 8A B0 07 47 16 9A CF 93 13 C0 72
+ 50 E5 4F 86 F9 A2 E9 BA EE F1 51 7C 02 89 5D D4
+ 70 02 69 CE 43 C9 31 A6 EE A0 B4 10 F1 4F 1E 3A
+ 70 D5 B8 FD 52 A4 51 F9 C5 4A 73 23 82 9B 22 91
+ AD 99 52 AA D6 80 49 22 37 6E E8 8C D4 37 17 54
+ AA 4A 88 C4 4A F6 DC 6A AA 8E 43 61 BC E0 9F 9E
+ 4F 85 EA 9F 2A 4B 5A 7A 05 D0 5B 58 85 D6 DB 1E
+ 11 7E 80 DD DB 2C A5 72 0A B6 B4 F4 0A 80 BF 21
+ 34 4E 55 09 3F C0 E6 DC 6A AA A8 60 0F FE E9 F9
+ 50 6F FC 53 91 DE C6 2C C7 F9 27 68 AC 31 8F FE
+ 89 58 DA 3F 81 19 CE B1 0C FE 89 59 8F FA A7 8C
+ 63 B2 DF 87 7F E2 03 A3 E2 A0 86 03 A3 93 1E 4A
+ CE 9D B2 8B D2 62 94 8F 4A 61 68 E0 31 AA 86 15
+ D4 90 80 08 69 8E 41 0D 25 28 55 6F C4 55 A2 34
+ F0 EC D5 B7 A2 DD 42 19 5D 46 D1 EE A4 A6 EA 38
+ 14 C6 4B 3E EA E9 54 20 1F 85 2C D5 DA 11 00 B7
+ B2 A0 C6 07 44 F8 01 36 B7 DB 9A CA 29 D8 AA B5
+ 23 00 FE 56 B4 8F 28 A3 FF 28 DA B7 D4 54 51 C1
+ 1E 7D D4 D3 A1 5E FB 28 EF F3 E7 F0 51 D8 84 93
+ 1D 7C 54 63 0D 3E 2A 00 CB 8D 3E AA B3 1E F4 51
+ B4 91 F5 7B F0 51 72 BD 80 7D D4 9E EB 05 DD 47
+ A9 5B 0A DD 47 0D 62 C4 47 05 37 4C 92 82 55 93
+ A4 60 D4 24 89 08 6E 8E 44 B6 A6 4A A9 5A 23 26
+ 89 DC C0 83 57 93 A4 E0 95 5B 20 42 24 7A E5 4E
+ 28 55 C7 A1 30 5E F0 51 CF A7 42 F5 51 95 25 AD
+ BD 02 E8 AD AC 42 EB ED 8F 08 3F C0 EE ED 96 52
+ 39 05 5B 5A 7B 05 C0 DF BC F2 11 44 F8 01 36 E7
+ E6 D5 8C 49 63 24 1F F5 7C A8 D7 3E 2A 2C E1 73
+ F8 28 B9 88 23 8D B9 5F C4 51 2C D3 DE 52 53 09
+ 3B EB 31 1F E5 16 DA 53 FC 3D F8 28 3E 85 25 3E
+ 6A C7 29 2C F6 51 72 98 8B 7D 94 16 A3 7C 54 2E
+ 43 03 C7 70 10 DC B0 92 53 4D AE 12 D2 1C 2B D9
+ 9B 6A 4D D5 1B 71 2E 43 03 2F D2 6D D9 B8 28 B7
+ 40 04 4B 24 B2 E7 56 B2 C2 A1 30 5E F2 51 4F A7
+ 02 F9 A8 5C 86 D6 9E 17 D5 CA 10 1A B7 BF 4A F8
+ 01 36 B7 DB 9A CA 29 D8 AA B5 17 99 44 11 B4 9E
+ 8A 08 3F C0 E6 DC 4A 56 38 14 C6 E6 A3 9E 0E F5
+ C6 47 45 35 D7 3B 6E 2D 8A 8F 09 4A 5B 6E 27 FC
+ 14 27 39 7A 3A 4F 25 EB AC 47 3D 54 C1 66 BE DF
+ 43 CD EE E2 BD B5 BA 3D 2B E7 F6 1A D4 B4 94 37
+ E6 89 B3 72 DE 1A CB 4D CB 99 F0 B7 13 FD 80 C5
+ 47 E4 72 0D EC 13 EA 3D 2E 64 15 7A DF B0 B3 66
+ 80 D9 6C DB ED 2D 91 C3 2C DC 10 F4 DB C1 EA 02
+ 35 D4 96 1E 50 0E C8 85 49 BB 40 1D 04 62 51 44
+ 0F FF D6 48 0A 0D D7 52 51 D0 B8 26 B1 07 94 03
+ 28 59 7D 83 8A 23 A9 2A 21 12 2B D9 73 AB A9 3A
+ 0E 85 F1 42 47 F0 7C 2A D4 8E A0 B2 B2 B7 1A 76
+ 23 09 5A 76 5E 11 36 68 D8 D9 44 81 9D 29 7C 6B
+ 93 B8 14 0D 9B BF 21 34 4E 55 09 91 58 C9 9E 5B
+ 4D D5 71 28 8C D4 11 3C 1F EA 75 47 B0 58 8B 19
+ B8 3E 58 75 E1 81 8E 00 CA 34 B6 A6 DB C3 74 D1
+ 69 37 7F 52 61 BA 14 0B 43 60 E0 EC 59 25 EC AC
+ 6F 5B A8 AE E9 F1 A3 4D 06 3E 9A A1 BD C7 E0 CF
+ 4B 58 FB 8D 55 7B 4F 3E E8 F2 6B 24 95 51 A2 28
+ 99 8D B0 59 97 5F 32 45 CA 2F 19 65 ED 46 F4 F2
+ 4B BA 7D 70 AA 4A 88 C4 4A F6 DC 6A 2A AF 9A 5F
+ EA 91 71 2F B7 F7 A7 52 41 57 C1 83 CE 01 83 2B
+ C1 0B BF CE F2 C1 86 B7 3B FE 7D C1 DA A4 57 AA
+ D1 51 86 4E 89 38 FB FA 24 96 22 1C 6B F1 8C F2
+ BA 8A DA 14 B5 3F B7 31 89 1F 85 E1 9F 78 58 22
+ D8 FB 12 D9 8A 8D 52 35 9F 4D 12 D9 9F 5B D0 4A
+ BE 15 D5 0B 10 21 12 8B EA 3D 28 55 C7 A1 30 5E
+ A8 A2 CF A7 42 ED 92 2A 4B 9C 7B 05 D0 9D 6A 85
+ D6 DD 2D 11 EC 8A 89 6C 6E 9A 52 35 07 4E 12 D9
+ B9 57 00 FC AD A8 2E 81 08 91 58 54 57 42 A9 3A
+ 0E 85 91 BA A4 E7 43 BD EE 92 2C F4 0D DC 25 99
+ C3 BA A4 BA C6 6A 86 2E A9 B1 74 97 E4 96 48 01
+ 94 24 21 B3 1E E8 92 B8 B9 73 8F A4 9D C6 AA B5
+ 8B 37 AF E5 D0 BD 68 2D A1 EE 5F 89 60 DF 4B 64
+ F3 CB 94 CA 28 5B 8B 37 AF E5 90 74 EB E0 54 65
+ E8 1F 88 EC B9 D5 54 5E 35 BE EB 1D D2 F3 A9 F0
+ 19 3A A4 EC F1 50 D6 5D 1D D2 1B 55 0A 23 84 38
+ 75 63 4A CD 69 DA 8D A9 2B B3 9C E9 9E 89 FA A1
+ 41 72 BF 8E 26 B9 0F 17 D4 DE 68 81 AB C9 9B 66
+ 75 CC 57 EE 7D 4D 0A DE 76 C9 8C EF CA 9D 3A 0A
+ 01 AB F6 BD 17 DB 2B 6C 3D A6 D3 C8 4F 8D 04 17
+ D7 C9 E8 A0 58 C9 FB 7D 6A 69 F9 EB 36 1E FC 81
+ C2 6B 2D 7D FC 9C 6D 8B 30 A3 CF D9 FE E4 C5 40
+ 3D 29 C6 A8 DB 71 7C D3 EB E7 C3 B9 50 6D B7 BA
+ 17 A7 54 53 9A 6E C0 5B 6F 8A 56 AD A6 D5 76 3B
+ 50 DA 51 86 A2 C8 44 6F 19 4A 07 E5 B9 66 A9 BA
+ 23 20 BA 69 55 37 E8 AD C7 A0 9E A2 5B 4D 3B 58
+ EA 38 69 87 59 AA 46 75 79 CB 52 72 89 E8 97 C3
+ 19 FA C1 52 71 68 2E 5A D5 0D 7A 1B DC D0 5C 6A
+ DA D1 52 87 49 3B C8 52 18 4E 64 BA E5 FD F8 C5
+ E1 69 F5 E5 72 9D 8A 66 68 2F 5A D5 0D 7A 1B CA
+ A2 75 AB 69 07 4B 1D 27 ED 28 4B D1 AD EE B7 8C
+ 25 17 9A C7 3A B5 FB 99 92 F5 A9 67 7D 53 63 CF
+ 1A EF EA 68 A2 16 B3 63 8D 77 7D 7E 68 10 B3 63
+ 8D 77 BD C7 AF E5 EC 59 E3 5D EF C3 0D 72 EE 59
+ E3 4D F8 10 21 0C 83 5D B0 38 16 AA 23 63 4B 0F
+ A6 76 D6 41 C1 CF F1 0E 24 D6 4F DB AE 08 4F 07
+ 27 57 18 F1 45 53 3B 62 24 D6 63 B7 05 BC AD 71
+ 56 15 B6 D9 48 E1 82 2D FA 3E 5A 63 6C 8D F5 20
+ 36 47 C3 04 C1 26 81 BF 79 AC BF DF 80 78 6D 01
+ DC 84 32 A0 B0 18 F7 46 BB B9 01 EC 4A 34 DE 5F
+ B2 F4 2E E4 AA B8 76 57 4D BC 7F 82 97 44 C6 AA
+ 39 39 F1 84 CC 43 D3 5E 58 30 0B C4 C5 07 C0 97
+ 55 95 87 8C F2 90 11 4C 62 32 0C 5B 6B F8 AE FE
+ 1B 0C 29 42 0C 12 22 34 E5 83 69 3A 2B 9A 80 63
+ 5E 11 12 BD 41 83 4A 46 8D 01 89 18 0C FF A6 A3
+ ED 52 D6 1A 7D 6C 33 62 9E BE C2 07 9C F2 C7 D6
+ 8D B8 50 E7 F9 44 02 81 2B CD 71 51 44 68 BB 93
+ 8D A4 5D CD 96 CA 3B 22 AA 44 EF FA 0F 73 51 DF
+ EA 42 41 4F 55 09 91 58 C9 9E 5B 4D D5 71 28 8C
+ 3C 7D 7D 42 E4 C7 CF 5A BD 31 18 C8 01 43 D7 B9
+ F5 4D C9 9F 6D AE 8F BF D6 00 20 AF 74 8B 7C 8C
+ A8 F0 AB 4D 68 8D D7 1E 72 E2 2B 1D A7 71 FD F2
+ A9 4D 8B 3D 99 B0 B4 77 2C 6D 84 09 7C 27 6D 84
+ CA 69 7C C9 8A C8 7D 4D AA 91 B4 AE 57 53 F9 54
+ 2D 4D 12 1B F1 B1 2E C8 A8 6F 30 8B E0 54 8D 28
+ FC C3 22 B9 D5 54 1D 87 C6 58 EB 8F 9E EE 3D 9F
+ 02 75 A9 D3 C0 3C D4 5A D3 61 1B 1B 98 B4 06 86
+ 77 D6 2E 59 08 53 7A 26 8D 24 00 35 95 C9 04 AD
+ 4A 6C 04 FE D0 3B F5 2D 18 95 8A 08 96 88 24 E7
+ 86 A9 18 87 C2 48 4B 9D CF 87 BA 1A 1B ED 9F 6B
+ A1 F9 5E 47 3A 59 EB 41 4E 56 11 D1 55 A2 D5 11
+ 72 13 9E EA 08 39 10 4F 25 DA 89 56 47 E4 1B D4
+ 03 4E 55 09 91 58 C9 9E 5B 4D D5 71 68 8C 64 EC
+ E7 43 CD C6 0E 25 6A D8 9D AC D0 02 DE 0E 60 22
+ 15 0D 3B A4 45 60 87 06 80 24 6A 34 46 7D 03 68
+ 9C 8A 88 A2 61 73 6E 35 55 C7 A1 31 8A B1 9F 0B
+ 35 1B 5B 35 48 04 C0 0D 01 A1 71 13 A9 84 34 9F
+ 46 8A F7 E3 46 57 25 4A 83 44 00 F2 0D A0 71 AA
+ 46 68 EF C7 B9 D5 54 1D 87 C6 28 C6 7E 2E D4 6C
+ 6C 53 16 AF 60 77 92 BA 93 5C 54 BF 93 73 52 B0
+ 4D 4E 59 BA 9A 9C 8C 74 0C 8D E8 5D 0D 7F C3 EE
+ A4 A7 22 82 25 12 D9 72 AB A9 3A 0E 8D 51 8C FD
+ 5C A8 C5 D8 66 C9 1A B6 51 D5 02 88 45 88 A5 18
+ 0D 7B C9 56 60 2F 29 48 26 8D E8 B0 F9 1B 42 EB
+ A9 88 28 46 C3 EE B9 D5 54 1D 87 C6 A8 8C FD 54
+ A8 D1 D8 0E 7E 07 F3 CF D4 DE 50 75 20 85 49 B7
+ C0 68 D3 D7 55 21 21 16 4A DB 48 3A D4 D8 52 F9
+ 5A 88 4D A2 EF 43 6C 00 A6 BE 99 24 A9 88 60 89
+ 8D 2C 4D 48 11 1C 1A 63 35 F6 13 A2 AE EF 63 96
+ 05 7F 4C AF C6 7E F7 0E 1A 44 66 12 08 44 D3 5E
+ 3C 25 82 5F 84 AF A4 2D BE 7D CB B8 9A 41 AF 49
+ 56 89 B6 B7 33 53 F0 AD 03 FE 86 E1 F8 7A AA 4A
+ 88 44 22 5B 6E 35 55 C7 A1 31 D2 94 ED F9 50 4B
+ CD F6 CE EB 3A D2 48 AA 07 DE 46 45 98 A4 EB 88
+ A7 46 D2 52 2D 46 4A D4 F7 B7 1F A9 B4 F9 1B D6
+ 83 9E 8A 08 96 48 64 CB 8D 52 39 55 EB 1A A1 6A
+ F6 53 A1 56 35 BB 37 C8 56 47 88 6C D5 82 9A 48
+ 27 16 5D 47 5A D3 6A A9 BC 57 25 DA 1B 64 2B 6D
+ AF AB 45 4B 45 04 4B 6C 64 51 75 24 A9 5A A7 DD
+ C8 13 A2 16 63 73 1D 21 00 8D 24 68 AD D4 1A D1
+ 4B B4 91 54 DA 2D D5 62 24 13 AE 23 04 80 BF 59
+ A9 59 8D 60 89 44 B6 DC 28 95 53 86 D0 35 FB 09
+ 51 8B 1B B1 75 F8 CE 0D B2 91 D4 E8 F0 AD 75 21
+ 7C D4 0D D2 BA 24 0D D2 D2 59 A8 26 D1 71 0F 82
+ 4D 8B BF 61 A3 EB A9 88 60 89 44 B6 DC 28 55 C3
+ A1 31 2A 37 F2 54 A8 D5 68 A4 77 35 AD 87 26 B2
+ F5 DD E4 FC 1B D1 3B 86 06 BB 78 05 3B AB 5E 98
+ BB 9A 06 20 6B A4 45 77 F2 2C 91 C8 96 1B F5 EB
+ 56 19 42 77 90 4F 88 BA 8E B3 73 BD 8E D4 1F 19
+ B7 59 3D EE 6D 73 C0 B8 11 ED 52 0C 11 FD 49 F0
+ 46 D2 73 E1 2D 55 5B ED 22 89 7D B5 CB E6 6C D5
+ 37 DC C8 E4 54 95 10 89 95 EC B9 D5 54 1D 87 C2
+ 48 E3 EC E7 43 CD 93 1A 05 1B 07 FA FC 73 9C 02
+ B0 20 22 38 13 22 1B 00 4A A5 96 16 15 6C 1C E8
+ CB 37 23 EF C0 37 82 25 12 E9 FA A4 CD 08 0E 8D
+ 51 26 35 CF 85 5A 6A B6 B1 7D 95 A1 96 76 23 A9
+ 1E 18 7A 8E BB 11 7C DC B2 91 8B D4 91 A5 38 29
+ D1 46 F4 3A C2 DF B0 1E 70 2A 22 58 62 25 7B 6E
+ 98 8A 71 28 8C AA 66 3F 15 EA F5 63 E6 6F EF 53
+ C6 05 0F 78 E2 56 76 34 05 77 33 BE 7B 17 B2 A3
+ 07 AE 1A E7 A0 BD E8 76 A8 21 C1 10 C0 85 5D 9B
+ D1 0A 23 05 83 D5 18 87 30 B3 8F BD 68 A2 A0 CD
+ EE 45 0B 34 0E 5D CB D0 1A E7 88 17 46 14 B2 D9
+ 27 A8 15 32 5C 6F 8B 03 32 E2 1C F2 DE 87 82 36
+ FB 9E 74 5C 60 8C 41 81 54 3D 9E 12 61 DA 2D 50
+ C5 CD 9D 26 53 AF 34 85 7A 24 2B 61 AB 08 9B 67
+ A8 F6 06 A9 8F C6 B4 70 AD 04 B6 91 07 63 05 63
+ A6 ED 9B E4 DB 37 A1 E8 14 54 2C 06 7C 74 3B 34
+ 66 4F 71 31 AD D3 33 18 F4 FD 64 F0 3E 32 FC 1B
+ 4F 8E 6F 0E 65 E2 79 26 48 D0 FC 8C 83 1F 17 FC
+ E1 E1 A7 80 E9 04 61 82 1E 22 B4 D0 FB 1F AE 84
+ A7 AF 8F 1E 63 78 FA 16 9D FE 57 DB 67 20 FB FB
+ A3 7F CB 61 24 2F 3C 94 F8 33 39 3C D6 38 F2 F3
+ 2F 5E 22 18 45 07 9B DC 79 05 86 4F 46 64 E8 0F
+ E3 78 68 A7 B1 8E 3A B4 03 63 F3 FC E0 A9 9D 9C
+ 16 8A E9 A2 40 12 EB C1 93 31 91 4E A6 3D 72 6A
+ 07 1F 7D 48 E3 A9 9D C6 7A 14 5B F5 E2 C7 9C DA
+ 11 03 F2 D1 1A 36 A0 B0 18 F7 46 BB 7D A7 76 38
+ 37 39 B5 33 16 D7 EE BA C9 A7 76 86 BA 39 7B 6A
+ 27 C7 16 12 48 B1 5C 3E 27 75 6A A7 C9 95 C3 34
+ 8D A1 4F ED F4 DF F0 91 9C 26 44 68 CA 47 9F DA
+ C9 E0 F0 92 3E B5 53 6C 38 27 7D 6A A7 31 F4 A9
+ 1D FE 0D A3 6D 52 D6 1A 6D 4F ED E4 7A DB 87 CF
+ BE E4 7A 13 A8 9D 39 C9 21 CA 69 14 22 F8 A4 0A
+ 91 ED 14 0B A5 6A E7 5B 48 22 9F 7D C1 11 9A 7C
+ 4B 59 A5 AA 84 48 AC 64 CF 2D 39 85 43 61 94 53
+ 3B CF 87 FC 33 9C DA F1 D5 8D 7F DE 63 3B 3F 7D
+ 89 78 95 49 9D 45 BE B3 EF F0 06 4F 15 6B CF D7
+ 38 47 F5 1C D0 66 9C 7D A8 E7 F0 06 F7 B0 FC 88
+ 91 58 8F 79 67 8C F5 6C E2 43 3D 87 C7 D8 FD 65
+ E8 7A 3B EB 51 6C E9 98 6E 43 59 AF FB 76 B1 9E
+ B0 18 F4 46 B5 5D DD 86 E4 C6 DD C6 AA AC F6 56
+ CB DE 6B 0C D5 72 B2 D3 80 AC 4D D3 5D 58 61 C1
+ 29 10 3B EA 26 97 7D 79 A3 55 9F D1 7F D1 FB 03
+ 16 21 0C CA 46 F5 19 DE E2 02 5B 94 3E C3 E3 9D
+ E8 A2 3A A7 CE 50 7D 86 FC A6 83 ED 52 D6 0A 6D
+ FA 0C 6F 52 51 9E 17 48 F1 78 1E 87 D3 DD 17 36
+ A2 FB C9 46 92 0F 6D A9 C8 BB 36 89 DD F3 42 CE
+ 41 7D 2B 8B 4A 55 09 91 58 C9 9E 5B 4D D5 71 28
+ 8C DC 67 3C 21 F2 CF D0 67 64 57 1F 5B B8 B7 CF
+ F8 66 33 CD D8 76 19 22 90 DF 6C 97 09 CB 2F 2E
+ DC 00 92 19 1D 1E 30 3E B9 D8 0E 36 B6 19 9D C5
+ DB 88 7D 46 A7 66 73 F0 63 0F 3F 4E A5 CF E6 AC
+ 8D 34 9B DB D7 45 F1 4D 41 39 53 EF F0 94 A4 F7
+ EB 83 E8 8F 77 52 74 B8 BE 9E FF 77 BB 3A 29 05
+ B2 94 F3 0A 63 E5 3C 38 81 00 3D AD 06 36 DB 43
+ 09 B0 14 62 8B 47 CE C8 1A EB 51 68 05 27 C9 0A
+ DB EC 3A 90 60 E3 C9 81 60 1B 27 07 8F CD 57 15
+ B6 D9 85 20 87 CB 1E B6 0C 13 A0 CE F2 8B 5F 64
+ F5 F1 EE F5 15 1F EB 43 AC 1E 7A 91 40 BD FB 8F
+ A6 C1 95 E5 6C C3 08 AE B1 8E 06 97 30 EC 4B F5
+ 44 BF 7C 79 85 59 AC B1 66 FF 42 55 7F 4F 52 E1
+ 6D 9C 83 E1 46 CF AF 09 29 B8 DB B5 AA 83 DD B6
+ A9 71 4E BC CF FC 96 E3 4D B7 1D EB A3 37 F5 FF
+ AB DB 96 C5 24 F6 D2 37 3C B9 BC 93 3A DE 01 FE
+ CB 77 FF 1F 5F F9 43 C6 65 6E 64 73 74 72 65 61
+ 6D 0A 65 6E 64 6F 62 6A 0A 36 20 30 20 6F 62 6A
+ 0A 31 35 37 32 30 0A 65 6E 64 6F 62 6A 0A 34 20
+ 30 20 6F 62 6A 0A 3C 3C 2F 54 79 70 65 2F 50 61
+ 67 65 2F 4D 65 64 69 61 42 6F 78 20 5B 30 20 30
+ 20 35 39 35 2E 32 32 20 38 34 32 5D 0A 2F 52 6F
+ 74 61 74 65 20 39 30 2F 50 61 72 65 6E 74 20 33
+ 20 30 20 52 0A 2F 52 65 73 6F 75 72 63 65 73 3C
+ 3C 2F 50 72 6F 63 53 65 74 5B 2F 50 44 46 20 2F
+ 54 65 78 74 5D 0A 2F 45 78 74 47 53 74 61 74 65
+ 20 31 30 20 30 20 52 0A 2F 46 6F 6E 74 20 31 31
+ 20 30 20 52 0A 3E 3E 0A 2F 43 6F 6E 74 65 6E 74
+ 73 20 35 20 30 20 52 0A 3E 3E 0A 65 6E 64 6F 62
+ 6A 0A 33 20 30 20 6F 62 6A 0A 3C 3C 20 2F 54 79
+ 70 65 20 2F 50 61 67 65 73 20 2F 4B 69 64 73 20
+ 5B 0A 34 20 30 20 52 0A 5D 20 2F 43 6F 75 6E 74
+ 20 31 0A 2F 52 6F 74 61 74 65 20 39 30 3E 3E 0A
+ 65 6E 64 6F 62 6A 0A 31 20 30 20 6F 62 6A 0A 3C
+ 3C 2F 54 79 70 65 20 2F 43 61 74 61 6C 6F 67 20
+ 2F 50 61 67 65 73 20 33 20 30 20 52 0A 3E 3E 0A
+ 65 6E 64 6F 62 6A 0A 37 20 30 20 6F 62 6A 0A 3C
+ 3C 2F 54 79 70 65 2F 45 78 74 47 53 74 61 74 65
+ 0A 2F 4F 50 4D 20 31 3E 3E 65 6E 64 6F 62 6A 0A
+ 31 30 20 30 20 6F 62 6A 0A 3C 3C 2F 52 37 0A 37
+ 20 30 20 52 3E 3E 0A 65 6E 64 6F 62 6A 0A 31 31
+ 20 30 20 6F 62 6A 0A 3C 3C 2F 52 39 0A 39 20 30
+ 20 52 3E 3E 0A 65 6E 64 6F 62 6A 0A 31 32 20 30
+ 20 6F 62 6A 0A 3C 3C 2F 53 75 62 74 79 70 65 2F
+ 54 79 70 65 31 43 2F 46 69 6C 74 65 72 2F 46 6C
+ 61 74 65 44 65 63 6F 64 65 2F 4C 65 6E 67 74 68
+ 20 31 33 20 30 20 52 3E 3E 73 74 72 65 61 6D 0A
+ 78 9C 6D 58 09 58 53 D7 BA 3D 31 E4 9C 53 AB 58
+ 89 29 44 DB 84 6B 5B B5 CE 5A AD A0 75 9E 15 15
+ 10 91 41 45 D4 30 08 21 CC 24 21 09 09 09 E3 86
+ 00 09 21 24 40 98 67 65 90 49 10 67 71 AA D5 D6
+ 59 AB D7 7A 6B 67 3B D0 DE D7 7D B8 9B FB EE DB
+ 07 EF F0 DE BB F7 FB F8 F2 01 39 7B 9F 7F 58 7B
+ AD F5 6F 0E E1 34 8E E0 70 38 13 FC 22 A5 92 84
+ 79 BE 32 69 68 0C FB F7 5C 66 1A 87 79 6B 1C F3
+ 36 37 1D C5 8C FC 36 B2 81 F7 36 E1 55 C1 9D 08
+ 26 70 C1 04 A7 AA B7 A6 65 BA 30 DA C9 F0 6F 93
+ E0 E9 37 08 2E 87 D3 F9 F1 D3 F5 B2 58 45 7C 64
+ 78 44 A2 FB AC 3D BE 7B DF 9F 33 67 EE BF FE B3
+ C8 D3 D3 D3 FD 90 E2 1F DF B8 6F 90 24 44 86 C7
+ B8 CF C0 BF 24 4B A2 65 B1 52 49 4C E2 0A F7 F5
+ F8 E9 E8 E8 C8 C3 EE E1 D1 8A D8 88 04 F7 D0 23
+ 47 24 47 D8 65 FE A1 D1 92 28 F7 4D 91 D1 91 B1
+ B1 B2 64 F7 59 EB DF 77 5F BC 70 E1 A2 79 F8 63
+ F1 0A F7 9D 49 52 49 BC 6C AE 7B 64 4C 58 64 4C
+ 64 A2 C2 3D 34 E6 88 FB 2E A9 24 3C D4 5D 1A 7A
+ 44 C2 6E B0 41 1A 99 18 AF 70 5F B2 30 32 E6 9F
+ AB 77 46 4A 0F 25 25 B8 8F A5 EC BE 53 E6 E9 EE
+ E5 EE 2B 09 4F 8A 0E 8D FF F7 6F 08 82 58 E3 B5
+ 56 11 73 38 60 C7 3A A5 EC 48 E0 CE F5 B1 92 5D
+ 1B C2 BC 37 C6 6F 4A 88 F0 DD 9C 18 B9 7B 4B 92
+ DF D6 E4 A8 3D DB 52 A2 43 FD B7 4B 0F CD 71 9F
+ 37 7F C1 C2 45 8B 3F 58 B2 F4 C3 7D CB 3C 3C 43
+ 96 AF 26 88 79 C4 74 22 88 D8 45 6C 20 3C 89 F9
+ C4 3B 44 30 E1 4D 6C 24 96 13 0B 88 77 09 1F 62
+ 13 B1 90 78 8F D8 4C 2C 22 66 10 BB 89 99 84 1F
+ B1 95 F8 80 98 45 EC 21 B6 11 4B 88 F7 09 7F 62
+ 29 31 9B D8 4B 78 11 1F 12 73 88 00 62 07 B1 8E
+ 58 46 CC 25 76 12 EB 89 09 04 87 70 26 26 11 6F
+ 10 93 09 17 82 4F 4C 21 04 C4 9B 84 2B B1 92 70
+ 23 84 C4 54 62 0D 31 8D 70 27 D6 E2 56 13 4E 38
+ 84 53 9C 15 9C E3 E3 78 E3 1A B9 53 B8 03 DC BF
+ 3A 6D 75 BA CC 5B CE 6B 26 A7 93 35 14 87 52 53
+ 90 F6 A1 AF BE B6 F7 B5 DE F1 EF 8D 3F F3 FA 92
+ D7 CF 4E F0 9B D0 38 E1 2F 13 6D CE 93 9C 55 CE
+ D7 26 39 4D 3A 3C E9 2F 6F 1C 7D E3 C4 E4 4D 93
+ F5 2E EF B8 A4 F2 C7 F3 07 A6 BC 39 65 C5 94 55
+ 53 76 4E 09 9B A2 9E F2 47 C1 BB 02 E5 9B E3 DE
+ 5C F6 66 BB AB C8 75 99 EB 61 D7 AF DD FC DD C2
+ DD CA 85 53 A0 D1 99 81 C0 21 3F C1 FC E2 70 F9
+ 69 D8 95 1F CB 7C 06 D7 09 94 12 75 A2 4A 19 71
+ C4 4F E1 01 E8 2D E4 3A 4D 51 9B 98 91 52 E0 B6
+ CD F6 B8 90 76 A0 36 39 75 2F A3 54 0D 36 D2 A3
+ DE 14 BF 03 6C 54 AB D6 65 D2 72 0A 2F 6F 23 4F
+ C1 75 3C E7 91 30 E0 80 81 DD CC 1F 2A 39 23 FE
+ 0E C1 01 A3 CE 12 71 0F E5 33 37 DC 52 48 74 64
+ 34 6D 3B 9A 91 96 1A 9C 23 94 C3 20 07 15 9C 52
+ DA 68 35 DA 0A 4B C5 FD F0 35 1E B4 93 DD 73 AC
+ B1 A6 38 A0 16 82 78 A5 DE 3F 97 96 43 33 35 AA
+ 81 16 01 A4 60 23 A4 51 23 CF 99 C9 46 31 C3 CC
+ 29 3B 87 91 31 FE 02 34 4D 45 B6 96 A5 A7 66 E5
+ 66 64 1B C4 B3 51 13 A2 60 51 86 2D AB 14 94 08
+ 41 85 DD D4 9B 4F DB D1 21 35 55 9F 55 AE 35 2B
+ 21 89 72 DD 8C 7A BB B4 31 B0 2C 1C A8 84 40 95
+ E8 A5 94 AA E3 92 E4 6A 90 01 D2 F3 75 85 72 93
+ B2 40 09 E8 C4 94 94 84 A3 AD F1 3D 37 4F 5D 84
+ EF 9E 17 C3 F9 CC DC D2 D6 12 4B AD 51 88 DF 0F
+ EC CC D4 0B 9C CF 9F C1 0D CF B8 65 CC 74 41 91
+ D1 92 57 02 E8 C6 62 55 90 18 E5 51 C0 57 AB 0E
+ C8 A2 55 30 C2 4E 05 14 A8 AC A0 9D 86 C7 A9 53
+ 27 AB AD C7 00 3D 58 1B BD 55 8C 24 14 F0 D2 28
+ 03 D9 87 8E D8 A9 A0 C2 34 2B 18 A4 A1 82 FA 2E
+ E4 E2 DA FD D1 CA ED 9B 45 8F 29 43 7E 90 22 52
+ EB 97 8A DF E8 AD BB C3 F0 9A 38 75 0F B9 CC 74
+ B8 50 10 BC 31 3C C1 17 D0 0B B7 7F 0E A9 5F 2F
+ DC 7E D2 5E AA 0D B3 88 8B 92 CC B2 0A 45 15 10
+ D6 57 3B 6A 2E 6E 1C 58 16 14 90 12 7E 48 1C 18
+ 22 DB 0C 3E A2 D1 9B 8F E7 43 EE C9 AE B2 96 76
+ 51 43 AD A3 A1 F9 32 3D D6 2A 79 D5 C8 38 87 0B
+ BF 6A C4 6B 64 B6 00 A5 CB C9 F3 39 65 06 90 08
+ 54 5A 45 4C 38 E2 21 91 5B E8 E5 9D 5F 24 F4 82
+ 6A 21 A8 B4 9B 8F E5 35 E6 B9 39 D0 05 39 75 23
+ BB 42 F5 23 12 43 0E 5A E2 86 16 A1 3D 8B FF 90
+ 99 15 90 85 DB AA 76 50 3E 05 0A 33 A8 01 76 7B
+ 5D 47 3F 7C 1D CE 72 FB 1E B9 1F 0B AA 88 C4 15
+ E7 1F 04 8A 54 5D 64 2E CD AF CA 02 DA DC 34 B6
+ C5 A7 1D 94 7F 91 CA 72 70 08 F9 C1 06 37 38 03
+ 6E BB F1 A8 D2 FA 71 81 D0 F9 2F 13 81 63 C4 C9
+ C1 81 9C 3E A6 62 98 3B F2 21 F3 99 60 34 90 02
+ 1E 69 9A 8F 30 EC E0 31 07 B5 AE 50 6D 03 B7 69
+ C6 1B 83 B4 B4 F4 5E 11 06 69 30 85 E2 46 F3 51
+ 2A 93 CF 43 41 72 F2 69 66 69 1A 58 47 8F CE A6
+ C0 BB 6A B9 47 06 5E 97 E6 A0 56 15 28 6B C0 2F
+ 34 33 93 82 05 A3 03 3C 1B E9 3C B2 00 97 A3 03
+ F6 74 41 6B 87 DC E1 02 79 C3 30 73 78 39 A4 5C
+ F9 6D E5 B8 38 72 EA 59 A6 55 0B D6 B2 C8 07 6B
+ 35 1A 8F 6C 16 F7 12 F8 27 F2 11 B8 5D D5 71 BC
+ BD B5 F2 24 38 05 FA 14 5D D1 4D D2 86 58 EB B6
+ B2 B3 A5 55 96 DA 2A 9A DF 56 57 6D EF E8 9E 0A
+ 9D 16 0F A1 B5 22 4F F4 42 F0 12 F4 67 B6 AB 68
+ BE E4 52 42 C3 61 AF A9 60 4F F2 91 C3 89 51 8A
+ 43 FA AD 80 0E 52 17 B7 8A 61 B7 13 86 03 FF C3
+ 2A 53 B1 5D D4 47 42 EA 6A F0 E2 95 FE 21 F3 C4
+ 18 0C A0 99 99 DA CC 61 3E 84 D3 04 8A 02 5D 60
+ 46 AA 46 29 54 2B 23 D3 03 00 8D 44 24 AC 66 DE
+ E7 D9 D1 CF 54 36 1A CF AB 20 8B EF DA ED 57 00
+ 0D 45 24 72 8C BE CF 53 31 13 29 8C 60 5D 23 B3
+ B8 91 D3 F4 15 B4 7D C5 85 46 E6 A0 00 BD B9 70
+ 0E 12 A1 69 DF CE 80 2E D0 E5 87 FF 82 22 E8 BA
+ E0 7B 34 45 AC 91 09 9E 5D 9E 83 DE 46 BC 03 9B
+ D7 1C 09 AB ED 4A 16 CB CE A6 7E 86 2B FE FD C0
+ B5 DB 22 76 AF B3 CC D4 46 4E C3 73 98 F2 8C 0B
+ 5F EA 04 70 E6 59 5E 19 A5 C8 CD 01 D9 80 0E D7
+ 97 F4 8B 99 8F A9 CC FC 60 65 84 6E BB 52 98 4A
+ 99 F3 8A 80 19 D0 1D C5 BA 43 62 B4 90 92 B4 C6
+ 96 1C C6 91 53 F3 31 DA A6 A3 29 F7 97 C0 71 17
+ 3B 2B 07 8E 8B B7 53 90 E3 04 0C 86 34 9D 56 91
+ 12 AF 8B 01 B4 87 DF E7 70 12 E4 0D DE 7B 70 6E
+ 70 9F BF 78 0C C0 63 F0 B8 85 B1 B1 9B 05 B0 4C
+ 4E 9E CD 2D D7 83 04 A0 CB 4C 4B 57 A1 77 50 B2
+ 1B 9A 05 E3 B5 65 19 E5 63 8C 60 2B 6E CD 2F 00
+ 16 50 92 87 81 72 4C 4E 9D CA B1 A9 7F 46 7F 80
+ AE C8 CF 0D AD A3 C0 12 9D 6E 61 16 46 C8 65 07
+ B5 38 5F 6D 05 0F 68 E8 4F C1 59 30 F9 EA 97 F5
+ D5 67 30 24 47 C2 B4 55 3A F6 AD 2E 2C 28 3F E8
+ 73 E5 9F 64 18 AD 80 A9 A1 C0 15 4B 87 A3 D4 66
+ B1 15 74 16 E0 CD D3 E4 54 67 B6 2D CB 9E 5E A9
+ 2E 0E 07 3B 68 F4 15 35 2A 60 E4 3C B4 5A 4E F6
+ 02 9B BE 6B 1F 3D BA 83 E2 CB FF 13 28 DF A2 F0
+ AE 3B 31 2C 31 28 D5 7D 8C 47 15 F4 EC E2 60 FE
+ E3 8E 10 98 F3 D2 61 32 2F 99 CC 48 4E 4D 4B 01
+ E9 40 65 54 15 05 95 05 9A F7 01 4F E0 11 BD C3
+ 6F E3 0E C9 7C 80 C6 81 F9 CD 4B CF F8 5E D9 F6
+ 8D E4 27 00 79 E0 A7 FE AB 4F 68 45 C5 DA 0D 5B
+ A5 1E 40 E8 05 76 57 1E EC F4 1B 8C FE 0A 40 2E
+ 0D B7 7E 0B 5F 83 EF 5D 3A 9B 7C B8 4B D4 1A 65
+ 97 39 B6 D1 2C CD 4A CB 95 15 D0 A7 95 71 BE E2
+ 72 FF 19 4C 7A EE CA 57 15 33 6F 0B 8A F3 4C A0
+ 18 D0 C7 4D BA 7D E2 D1 08 8A 3F 08 F6 6A B5 DE
+ 19 B4 92 E2 AB 60 66 05 B9 26 4F 53 02 AE D3 70
+ 11 D5 76 B4 56 D7 83 C1 37 FE 1B E8 04 DF 83 6F
+ 6C 7C 31 7B 77 48 FC 9E 10 F1 43 2A 23 7F 4F 72
+ 84 C6 4F 29 84 B3 D7 08 9A 2F B6 F7 DF 1B 5C 8D
+ 68 C4 0D 5A B3 7E 9F 6F 7B B3 88 25 BD 4F 61 4C
+ 2B A4 DA 39 CC 5C E8 21 08 5E 7D 30 66 3B F0 05
+ 07 9B 62 2E 29 3A 0D C7 72 AE D2 F0 2A A9 BF A1
+ 6B 8A 6F 95 B6 EF AF DA 0B 02 C1 3E 85 24 72 DF
+ A1 D8 0D C0 13 9F 84 3B 4B 21 F5 FD FD CB 90 E8
+ 11 A1 47 70 AE A0 E4 D1 F1 8E AB E0 2A A8 95 95
+ 2E 61 B9 4F DD CE FC 77 3B E7 38 24 99 55 90 E4
+ C2 BF 8E 78 08 D0 6E F4 16 7A 17 ED 9F D7 BA F0
+ BC 8F 78 C8 EB C5 91 2F 71 F4 81 F0 2D E8 0E F7
+ FF 14 F3 85 DF 15 B1 D7 A7 CB DA E7 60 5C 3B F5
+ 83 7E 45 7B D4 F9 A0 96 79 00 BD 0E BC 35 9B 52
+ F6 A6 C7 2B E3 13 13 23 22 0E 28 FC C1 7E 70 A0
+ 22 A2 65 6F FF D1 5F 70 85 C1 70 E3 CB 9E 01 FA
+ 44 EF 60 F5 05 F0 77 DE ED 60 BE 60 59 E6 B7 61
+ 86 84 1C 57 7E F9 6F 90 23 00 EB D3 34 AB C7 E4
+ 34 1A 76 90 90 06 7F 3E 76 ED E2 8D CB 1D 2F C0
+ 4B F0 95 F4 91 DF 85 CD 9F 22 4E 3B 7A 1B D0 FC
+ 72 54 23 27 1F 1B 8A D3 31 21 0D 1F 13 F0 A3 5B
+ 4A CC DD CF 6F A4 46 9E 12 3D DA D3 BD 14 20 02
+ A0 F1 87 96 2D DF 17 10 E3 93 B6 04 D0 87 D3 30
+ AB 38 C3 E7 58 BB 66 B6 72 7E C5 47 F5 1A AB 9E
+ 93 20 4D 0E 39 5A 3A AB 6C BA 98 0A 51 59 9C 55
+ 57 0E E8 1A 47 45 4D 7B 48 FD AE 1D FE B1 FB E3
+ C4 71 21 FA F0 DC 15 B4 67 D4 53 74 93 04 EB B4
+ 69 EB 59 D9 2A B5 53 9E 46 6D 09 B8 4F C3 9B D0
+ 19 73 CA 39 2C FB D5 5D F0 34 9B D4 CF C3 30 95
+ 4D EA 25 3C 00 FB 04 F5 39 E5 B9 F5 E0 11 38 6F
+ E9 AD BD D2 DA 7E 15 7C 02 7A D4 9D B1 4D 87 FB
+ 96 34 CE C3 A9 3C 41 E5 72 F2 9E DE A2 03 EB E9
+ D1 8D 14 58 A6 D7 AD 36 BC 22 F7 8F 8C 2A 1B B8
+ 4B 33 C9 4E FC 97 0D 26 53 03 9C 76 6D DF BB B3
+ BD 03 11 95 A2 CE CB 4F 14 BD F2 30 1D B0 B7 FB
+ 7E 25 5C DA 29 7F 65 65 E2 99 EF E0 4A 81 8C 0C
+ 44 C4 C1 04 F4 0E A0 63 C9 20 10 5A 68 30 65 1A
+ 73 4A 40 39 0D 01 9C 4F 3D 05 76 4D A9 07 5D 03
+ 55 89 A4 E1 50 96 4A AB D6 28 65 FA 7D 98 89 E6
+ C3 78 92 AF 6C 2C 2A 6A 10 C1 69 24 3E 3B D5 AA
+ F2 45 74 1D C9 EF CD 86 EF F0 46 1B 71 B0 FF B4
+ 40 FF 32 40 4A A6 83 1C AB 2F FC F9 47 CE 83 67
+ 5C 13 33 55 60 33 16 E7 59 01 5D 57 9C 1A 22 46
+ 46 0A 04 1A 0C DB D3 70 F1 0C 76 6A B3 51 69 07
+ 97 68 98 44 B5 F6 9E 6E 28 2A CE D4 95 88 CA D4
+ 25 19 A5 80 AE B5 97 37 1E 4B AE 8C 0C 8D 49 DC
+ 10 24 FE 06 73 A7 7F 52 B8 C6 5B 2E 7C 55 E4 AB
+ FF 27 D7 3F 33 09 30 55 80 93 A0 D2 56 28 54 2B
+ 70 F8 EF E1 F0 1B 0B D9 E0 DF FA DF C1 BF FC FF
+ C1 E3 4A 7B 68 C7 E0 C6 56 7A 55 01 96 D1 3B 34
+ 8C 81 EF 51 4F 40 B9 CA BA 1C 53 80 50 57 9D 5A
+ C5 2C AA D4 54 BB 9C B9 06 3D 3F C3 30 85 B7 E0
+ 4D 01 7F 6E 16 7C 8B A7 25 73 72 D2 0D B9 B9 59
+ 40 98 01 74 F9 DA 42 8C 4A 73 52 52 41 DC B4 8F
+ 7C 03 D6 EF 6E 3D FC 45 B0 78 E8 68 5B 4A 79 02
+ 88 16 86 44 C9 02 22 A3 4B AB E5 A2 E4 BA F4 1A
+ CD 25 3A 95 E4 7B A1 85 A5 94 C9 52 90 6F C5 7C
+ 62 CB A9 C9 C0 1B 64 34 36 64 55 4C 7B F8 F1 D0
+ 67 A7 13 8E ED 6A 17 23 E2 63 59 99 AA 0E 34 08
+ BB 5A 1A FB 2F 35 47 2E AE 11 BD B2 60 D3 CE 73
+ EE 3E 83 3B 31 92 17 C1 1F 04 3D FD CD E5 27 00
+ 7D BA 2E 7C A3 18 05 51 60 B3 4E E3 93 F1 CA 83
+ ED B1 64 98 C1 A7 34 0C A6 FE 1C 7A 7E B9 77 68
+ C2 AE FD 22 78 89 CA 34 46 A6 C5 EB 77 A7 0A 63
+ F5 BC 54 AA 20 CF 08 0A 01 DD 6B D6 1F 14 8F 46
+ E1 BE 66 A4 FB E8 F1 FA 68 3B E5 53 A4 B3 E2 F5
+ 63 FE 80 F9 95 C5 F7 F0 30 D4 B0 F8 3E 39 32 D3
+ 21 90 18 53 2C 31 C7 D1 21 58 E4 76 B3 B4 D9 7A
+ AC A1 B5 DE D1 03 06 40 AF A6 23 AE 89 E6 3F EC
+ 96 78 D4 CF 9B C6 3F 89 9A E4 E4 7D BD 45 0B 36
+ BC AA BD 2E 6D 0D CB FA CD B8 F6 85 9A 52 B6 F6
+ 81 D4 C5 7C 98 8E AE F2 E0 52 72 34 98 79 2E E0
+ 3F 6C 2C 31 77 C1 C9 43 07 E7 05 26 87 86 CB 45
+ FB E3 22 32 E6 E4 8C B1 57 17 BC 5E 01 B9 55 70
+ 76 17 A7 15 73 98 FB 4B EE 48 20 FC 5D 80 CC 0A
+ B2 37 DB 9A 6D D5 DB D3 8B 12 C1 41 1A 7D 48 45
+ ED 8C 5D 8F 96 CD 84 24 DC F9 5D E3 D7 7D 83 A2
+ BE C1 6B 0D B7 C0 45 30 28 3F 11 DE 2C 2B 8B AD
+ DB 49 D7 90 7A 18 CE 4B 22 33 E4 0A 75 32 D0 81
+ 54 A3 C2 74 C0 BE DF 7C 00 23 6A 1F 96 D1 99 E8
+ E0 FB 0D 6B 2E 7A 8B 6F 6E FA 41 02 C7 81 E7 00
+ 4E 6E EB 6A A3 61 08 05 2E 5B 4B 87 0A 69 67 D8
+ 82 AD C0 84 56 CE 67 B8 25 66 4C 2E 33 30 B7 58
+ 72 8D 19 22 43 7A 46 BA 41 27 F1 3B 18 9C 9A A5
+ 35 64 18 40 26 C8 CE CB 31 E6 D0 E7 D0 79 72 59
+ F3 C1 CB 83 9D B5 67 8F 89 34 25 C9 F1 4A 5D 12
+ 10 86 A9 1A AE 8B E1 89 5F 28 BC 25 6E F4 F5 61
+ CE F7 78 CB F5 AC 4D 59 E0 C7 53 61 07 61 CD 2F
+ CD 2B 06 C2 DA B1 83 A5 A2 C0 7A 9D 76 13 CB 4A
+ 3A 3B B5 B5 50 6F 61 8B 09 A9 00 98 2C 88 4D 4C
+ 94 C9 AA 13 1B 9B 6A AA 9B 1A 13 6B 62 B0 7F 3A
+ A7 A9 4A 6E 63 76 54 C1 39 DD 2E B7 9F 43 F5 2F
+ AE FC 41 66 37 66 FF 64 32 2B 51 AB 55 E2 E4 F1
+ 08 60 0E B3 85 99 A3 C0 41 10 A2 3C 1A 13 11 AD
+ 08 05 7B C1 8A BE DD D0 C9 FB 8E E4 EC A1 3A 49
+ B1 A6 30 19 24 D0 7C D5 96 C0 FD EB 16 7B 5D 80
+ CE 81 A2 44 92 3F D8 8C 22 78 D5 64 9E C3 6A B3
+ 03 CC 35 59 0E 43 A7 AA 4B DF 85 65 84 7A F1 F8
+ D7 A7 7E 37 90 DB 6D F1 F4 A1 D0 3E 70 9E BE D0
+ D3 79 ED 64 8F 3C BC 4D D4 12 65 8B 2B F3 C6 C7
+ F4 D5 F8 34 D8 07 3B 1C 9C DF 87 E1 C5 61 2E 94
+ 40 24 C0 1E 04 DC 29 29 79 68 C2 BE A2 45 4E 3D
+ 34 94 68 FF 41 96 BA B4 95 EC 11 6E 71 50 6B 8A
+ 30 8C 6E D3 F0 10 BC 88 F6 FE A7 6F 58 8F FC EF
+ BB 20 FF 31 47 38 C4 08 CA D5 36 97 DB CF E0 A6
+ 67 AC A7 49 38 2D C8 24 F7 6B B1 7D 83 3F 50 FC
+ 87 68 B1 92 BC 96 6D D5 81 40 1A A5 51 40 96 A9
+ 56 6B 63 93 A2 D3 A4 80 3E 12 75 BC 47 CC 3F 09
+ 1F A3 19 6A EA 54 B6 4D 05 F6 D3 A8 90 FA E8 54
+ C0 DD 8E 13 65 0D 0D A2 DE 5E 9E 07 55 90 73 BA
+ B2 BD E4 8C 4D 38 C6 D9 CC 8F 3D 1C 68 C2 D9 99
+ 46 08 C1 68 36 05 3E D4 6A 3D D8 68 4F 3A 28 CF
+ 02 75 29 4B FA E6 F3 14 24 41 B5 A2 06 8D A3 6B
+ C9 0C B8 8A 37 7A 95 CC 40 AB 78 B5 64 2D E4 D4
+ 38 A0 13 D6 52 CC B8 AF 2C 20 85 37 A3 58 0D 5D
+ A3 49 5B 96 FD 6A AA F0 34 A6 8E C9 07 CE FB AE
+ AD F4 19 EB CA 4E CB A9 2F 5E D9 78 9C 34 B3 19
+ 4F 91 71 AC 0E 8A F1 14 99 6D D7 01 39 D0 E5 E8
+ B2 74 B3 90 D5 ED 3D 58 9C 61 CB B6 81 62 EC 1A
+ 4B 4C 6D 46 3C 47 06 A8 A8 CE 1C 93 AE FF 5D 38
+ 01 75 B9 E5 67 18 0D 46 7D 91 A2 48 5F 04 8A 80
+ A9 D4 DE 01 A7 C0 7B 6E 4D B7 8A 4C CD 46 FA 15
+ 49 79 DA 38 4F B1 16 8C 70 05 18 B0 79 16 40 1F
+ B3 68 82 C5 A3 C9 14 D8 9B 9D BD 9E D5 02 8D 9D
+ 4A C9 3B 9C 8F 75 AE 4D 08 BD 28 E8 8E 76 19 B3
+ F2 B3 F3 B3 8D D9 42 B3 CE 98 01 32 E9 F4 F4 8C
+ 34 91 5C 05 63 EC 64 88 31 DA 11 7A 06 CD 83 FE
+ 6E 4D 0D B7 3F B9 D6 DF 64 16 DA 0B 6C F9 58 B5
+ CD 76 74 50 4D 9E C8 2D C9 02 6A A0 4F 57 AB D3
+ B0 6B 77 76 63 3C A8 AC 7C 49 5A 8C DE 27 55 28
+ D5 B3 F3 39 36 94 23 0E CE 6F C3 F0 AF 7D 5C 06
+ 32 56 01 18 B6 96 3D B5 E0 E2 A8 E4 D4 A3 8C B2
+ 24 30 93 46 D8 CE 6E 36 48 52 A5 B1 C1 DB A3 D7
+ 80 0D 20 A8 36 76 40 D1 6A E8 60 8D DD DD 31 18
+ 7D CE C2 A8 5D 4E 3D CE C0 30 5A 47 A3 1B 14 5A
+ FB C4 13 AE 82 9C FB 6D B7 4E 88 6A 7B 8A FB C1
+ 43 56 44 D4 9D CC DF 70 83 36 E0 06 B5 30 A7 05
+ E0 6E 49 C9 13 76 4C EB 92 53 4F 5F AD 1D 3D 4C
+ 1D 48 4B 8E 53 67 98 EB 0C 22 5D 5B 6A 59 1C D6
+ EC A4 C4 D8 D0 6E E9 10 24 AE DE 81 93 59 AF 3F
+ D6 AD 5B B8 5B 2A EA B8 C1 62 00 4A A0 CA 48 D0
+ C6 2E 42 F1 6E CB 60 A2 B2 1F 00 50 2A 04 D5 25
+ A6 01 13 EE 55 88 8A EA C8 B2 6A 2B F7 98 E4 26
+ 79 91 62 21 0A 76 9B 05 6D 59 96 1C 0B B0 08 41
+ 95 D5 7C BC 00 3F B5 45 45 D5 E4 98 75 D5 01 70
+ 1A FA DE CD 2A 35 AB 8B B0 0C 98 4B AD F5 D8 B1
+ 1A DC BE 46 5A 5B 58 41 46 11 10 9A 40 61 71 59
+ 17 1E 8B 7E 72 AB E8 31 16 56 E2 57 BC A2 27 CE
+ 8F CF B8 0E DC DF 22 B2 24 CF 9A 87 07 9B 56 8B
+ 1A FB E2 38 0A EC 51 6B BC 32 71 87 B5 76 CA AB
+ 20 CD 02 2E D0 CC 77 B8 17 7B 95 12 DD 26 E5 D8
+ 54 3F C4 B8 D5 BA 74 7C B9 E9 4B F8 CE 13 57 FE
+ B7 CC CE 4F 04 4A 75 5A A6 0A D0 89 06 5B 9F 18
+ E2 53 7C 36 B3 49 55 9B D4 7E D0 E1 8D 9D D2 C3
+ 79 6B 83 BC 12 2B 53 6A 6A AB 2A AB 0B 72 0B 73
+ 4D E2 9C E2 5C 33 30 D1 0D AD D5 5D 83 0D 31 7B
+ 44 3B 29 34 7F 87 52 7F 50 42 F3 BF 4D 4A 51 47
+ 1E 9D EA D5 17 72 B5 AF BB EA EC 55 51 E1 DE 8A
+ E4 6E 70 1C 27 DF D6 49 A3 05 7F 14 80 E8 CC F4
+ E4 B4 04 B5 2C 3D 19 D0 11 B2 E3 BD E2 02 CC E6
+ DD ED 70 62 1F 3D 36 E8 8C 4C 74 70 46 76 B0 83
+ 55 A8 9C BC 90 5D A1 05 32 90 6A 88 4D 93 A2 99
+ A3 5C 37 34 07 7E 7D F4 AE 1E 0F FA 42 E0 B0 59
+ D8 C1 AA 24 CF C6 0E 56 0E 39 35 88 07 AB DE C5
+ 30 77 B4 DF CD 4E C2 78 66 E8 D8 E3 92 92 53 46
+ E1 BF 86 B6 37 86 B9 CC A2 11 57 81 35 D7 02 0A
+ 40 73 8E 55 0F 52 40 52 A2 D4 2F 00 6D 44 4B DD
+ 60 28 F5 4F A8 74 B0 C0 B4 6A FE 21 9D DA 57 D3
+ 7F 9B 83 5A C9 5E 9D DC A5 E1 2E AA BE EA BF A6
+ 3F 58 73 7E 03 48 10 02 B5 DA 20 CB CD 04 5A 30
+ 76 BD 30 E4 A0 F6 E6 A9 2D 0B 5F 22 35 34 BA 41
+ 5F E8 7D EB 46 99 F9 56 A1 D0 81 70 0F 47 1C F8
+ 98 BE 7D 96 F3 FC 19 F4 62 7F B8 0E 66 BA A0 D4
+ 68 66 6F 74 EA 8B 53 83 C5 A8 88 6D A5 6A 77 2E
+ 6E 65 BC 9D F2 CF 57 95 80 13 34 6C A3 40 BE D9
+ 62 32 D5 D5 F4 96 B7 01 BA AF 3A 02 1B 0F 29 05
+ 76 6B B5 BE AC 14 25 DA 29 DF 3C 55 39 B8 46 C3
+ 42 AA B9 F7 58 45 3F A0 2F 55 C4 7A 88 51 38 05
+ 7C F5 7A 1F 03 7E 48 66 A7 E2 F2 A5 F9 9A 0A 70
+ 42 08 0F 51 70 FC 91 2B AB 7C 02 E2 7C F6 88 14
+ 97 22 1B F6 80 10 20 53 7B 78 D1 F7 29 43 7E 80
+ 3C 52 EB A7 62 AF 9F 74 AD CC EB D7 39 9F 3E 83
+ 29 5F 72 E1 BC 91 95 82 CC FC 50 55 AC 7E 9F 46
+ 18 C3 3A 99 A2 BC 02 60 02 74 57 71 7A A8 78 B4
+ 8C 8A FE E2 E8 E7 D0 6D 18 8E 83 EF C0 49 AB BF
+ 9B B9 D3 27 3C 28 45 E4 EF 74 62 A0 FD EC A3 D3
+ 2B 91 33 E2 06 6F F7 DC 7B A0 A6 0E FB AA AB A0
+ 0A 06 7F C2 81 F9 9F 70 61 3E 3C 81 E7 E9 AD 50
+ 86 62 3F 81 B1 50 F6 09 92 C1 D8 AD D8 E3 1A 31
+ E9 42 FF EB 9C 13 D0 22 F0 82 B9 D7 F1 39 30 C2
+ C9 3F 0B A4 F1 71 D1 31 75 F1 4D 2D F5 75 4D 2D
+ 71 F5 52 3C 6E B4 A8 AB 46 DE AE E4 C0 2E 2C AF
+ 5B 48 A4 F8 EB 26 DE 2D 12 A7 A0 AE 1F 71 A9 E7
+ D4 FE 00 4B 7F 60 25 C0 43 E0 07 42 95 61 11 3E
+ BB 25 88 02 E8 35 80 38 C7 D0 6B 03 BB 3B 42 CE
+ 24 0C 81 33 A0 B7 BC BD 6D E8 42 27 1E 88 E0 44
+ 1A 86 2E 84 7F 40 AE A2 EC 38 C1 B3 93 88 87 24
+ 48 12 E2 BE 74 69 C8 EF F0 08 8C 38 09 B9 CF C5
+ 63 D4 CB 81 91 CF B9 B0 8F 9D EA B6 2C E4 A9 29
+ 6B 61 49 41 41 7E 85 A9 BC 00 B3 70 55 B1 2A 4A
+ CC 5E 24 1D D5 27 A6 A6 AB D2 D5 D9 A1 6C 7B 9B
+ EC D4 47 79 A9 16 70 8A 66 5E B2 A2 08 1E 30 35
+ F7 38 F0 EB E7 5C 46 06 DF 16 68 0A C3 7C 35 E9
+ 07 80 10 E9 49 F8 11 DC F0 E2 DB 13 0F C0 23 E1
+ CF CB 1F BE E3 B7 37 E9 70 98 28 2A 52 15 A5 DC
+ 50 95 E9 D6 F5 63 7B EB A7 80 7E 76 C9 77 D9 CA
+ FD F3 97 2D 16 A3 4D C8 87 97 C6 4C 65 77 65 46
+ AF B8 C0 3B 8F 25 77 5C F9 E7 E0 3C F8 47 C1 65
+ 50 93 53 9B 4E F3 AB AE 25 9D F0 DD 34 75 99 EF
+ B6 B5 B1 29 A6 DA 30 91 B4 42 69 62 2F 23 55 EA
+ E4 88 DE A4 CF 1E 3E AE EF 1E 10 0F 74 D7 0F 81
+ 9B E0 4C EA 40 4C 4B 4A B5 DC 1A E2 A0 F9 E7 3E
+ 1D A8 EB 38 3F F5 C9 F6 8B 0B 02 43 94 51 E1 22
+ 69 AC 2A 2E 69 97 3D CB AD FB EE C9 63 D7 01 7D
+ E3 64 88 57 B8 2A 3C 3E 5E 2C 95 CA 54 9B 13 C6
+ E4 A9 0A CE F8 98 59 89 DB D3 FF 90 CB 44 E3 31
+ E2 3D C6 27 84 44 37 47 7D 78 DB E1 71 B4 E2 21
+ 5C 31 4C A1 2D 1F 0B 90 81 84 06 F8 03 7B F7 CA
+ 7C FE 98 03 47 3E E3 C2 AD CC E7 02 18 40 96 81
+ 82 7C A3 A9 F3 85 5B BA 49 95 AC CB 4C C6 C5 91
+ 90 88 83 74 B9 39 20 17 E4 08 33 0B B2 CD AD 5D
+ 06 4D B7 08 52 61 E7 76 80 59 F4 9C 9D 6B 56 A6
+ 28 4D D5 52 51 54 4D A2 05 13 4F 8C 3A 2D 5E 32
+ 90 70 FF D9 9D 86 33 A7 C5 FD 27 AB 2E 81 07 E0
+ 8E BC 3F F0 74 48 9F 6F 0D 1A 5F C5 06 AB 6E 64
+ 9C FA 39 C7 BF 85 05 5F 71 19 DF 91 35 02 44 EA
+ 7C E4 EB 02 10 B1 CA 1B 91 00 4D 05 4B 1A 3E E8
+ 0D EC 0C 39 9F 70 0D 9B AD 37 9E 7F 8F B9 7A CA
+ BA 27 88 0A 49 36 48 BC C4 0D 70 0E 66 74 02 2E
+ AA A7 D1 21 74 42 F0 FC F4 7A 34 19 8D 3B B2 73
+ E3 07 7B BE 83 0B CE 98 1B 2B ED E2 AA B2 96 E2
+ 36 D6 54 FC 1D B7 E9 18 3D 50 3E 06 5A A4 18 D9
+ C4 E6 AF AF 62 EE DC E3 30 7B 30 27 8E 92 A4 37
+ 9A 59 AE EF BD 55 51 7A 01 08 A1 94 44 41 A3 DF
+ F2 6E 90 30 62 64 3A 6F 2C E6 11 E7 46 97 8B 0F
+ 36 DE 83 B2 4F FD 1E B8 F2 5F C0 5E 86 C2 AE FE
+ A7 73 6D 3D B7 A6 3E 5D 7F 65 26 E2 2C DF B2 70
+ 9B 23 E6 CF 0B 44 FC 17 88 F0 4C 8A DE 3C 75 F6
+ E3 CD 90 07 27 3C FC E4 D7 87 91 83 68 E2 57 22
+ C5 BB 82 BB 7B 6B C3 C1 6E 7A DB 81 03 DB 56 07
+ 0C FD E9 E3 EA 9E A1 01 D1 E0 43 BC D7 E2 A1 F0
+ FE 8B 53 87 4E 76 5F BF D5 1B B2 C9 57 76 C0 57
+ 22 CA CC 06 20 2B 9B 2D 1B D4 F5 32 4E 8D 9C E6
+ 6F A0 E1 25 F7 72 92 00 3A 95 5E 70 DC 1A FC ED
+ C1 55 F8 06 80 D3 68 E8 B9 00 BE 86 04 E8 F5 C5
+ 33 D0 34 E4 7C 67 39 24 2E F4 94 75 9F 13 1D 42
+ CB 10 D7 1D CD 8D A3 E1 65 38 22 00 29 59 E9 DA
+ 74 59 42 98 26 1C D0 AB 83 EF C3 D7 2F 95 5D A9
+ AA 17 97 57 D6 95 34 01 FA 4F 27 97 A2 8F D8 73
+ 87 26 9F E6 B0 9F 82 D3 A3 D9 81 AC 40 6A 21 17
+ E6 41 2E 07 BE C5 84 FC 3B 43 20 E4 F4 EF AC C1
+ 78 EB 7F 67 FA 9A 39 B7 5E 34 FC DE F2 0D 17 66
+ 43 0F 41 C9 CD F2 AE 8E 81 FE 8B 00 D8 AA 5A 07
+ 4B DB 41 37 E8 D4 B4 27 D6 44 B4 79 D7 EC 01 F4
+ 82 8D 3B 3C 0E 97 27 B5 D4 96 97 D7 DA 32 AC AA
+ 72 71 9A 2D B3 18 98 E9 D6 FE E6 C1 2B A7 FC B7
+ EC D7 F8 25 F8 89 64 DB E5 41 BA A0 DC 10 A1 65
+ 9B 40 9A 98 10 15 53 9D D4 DC 5A 53 DD DC 1C 5F
+ 87 27 83 94 4A C6 BF 12 FA 55 92 CD E3 BF 78 BD
+ D9 3C 61 C2 17 15 13 26 12 C4 FF 00 98 A4 51 E5
+ 0A 65 6E 64 73 74 72 65 61 6D 0A 65 6E 64 6F 62
+ 6A 0A 31 33 20 30 20 6F 62 6A 0A 36 32 38 38 0A
+ 65 6E 64 6F 62 6A 0A 39 20 30 20 6F 62 6A 0A 3C
+ 3C 2F 42 61 73 65 46 6F 6E 74 2F 4A 57 57 4D 52
+ 57 2B 54 69 6D 65 73 2D 52 6F 6D 61 6E 2F 46 6F
+ 6E 74 44 65 73 63 72 69 70 74 6F 72 20 38 20 30
+ 20 52 2F 54 79 70 65 2F 46 6F 6E 74 0A 2F 46 69
+ 72 73 74 43 68 61 72 20 33 32 2F 4C 61 73 74 43
+ 68 61 72 20 31 32 32 2F 57 69 64 74 68 73 5B 0A
+ 32 35 30 20 30 20 30 20 30 20 30 20 30 20 30 20
+ 30 20 30 20 30 20 30 20 35 36 34 20 30 20 33 33
+ 33 20 32 35 30 20 32 37 38 0A 35 30 30 20 35 30
+ 30 20 35 30 30 20 35 30 30 20 35 30 30 20 35 30
+ 30 20 35 30 30 20 35 30 30 20 35 30 30 20 35 30
+ 30 20 32 37 38 20 30 20 30 20 30 20 30 20 34 34
+ 34 0A 30 20 37 32 32 20 36 36 37 20 36 36 37 20
+ 37 32 32 20 36 31 31 20 35 35 36 20 37 32 32 20
+ 37 32 32 20 33 33 33 20 33 38 39 20 37 32 32 20
+ 36 31 31 20 38 38 39 20 37 32 32 20 37 32 32 0A
+ 35 35 36 20 30 20 36 36 37 20 35 35 36 20 36 31
+ 31 20 37 32 32 20 37 32 32 20 30 20 37 32 32 20
+ 37 32 32 20 30 20 30 20 32 37 38 20 30 20 30 20
+ 35 30 30 0A 30 20 34 34 34 20 35 30 30 20 34 34
+ 34 20 35 30 30 20 34 34 34 20 33 33 33 20 30 20
+ 35 30 30 20 32 37 38 20 30 20 35 30 30 20 32 37
+ 38 20 37 37 38 20 35 30 30 20 35 30 30 0A 35 30
+ 30 20 30 20 33 33 33 20 33 38 39 20 32 37 38 20
+ 35 30 30 20 35 30 30 20 37 32 32 20 30 20 35 30
+ 30 20 34 34 34 5D 0A 2F 45 6E 63 6F 64 69 6E 67
+ 2F 57 69 6E 41 6E 73 69 45 6E 63 6F 64 69 6E 67
+ 2F 53 75 62 74 79 70 65 2F 54 79 70 65 31 3E 3E
+ 0A 65 6E 64 6F 62 6A 0A 38 20 30 20 6F 62 6A 0A
+ 3C 3C 2F 54 79 70 65 2F 46 6F 6E 74 44 65 73 63
+ 72 69 70 74 6F 72 2F 46 6F 6E 74 4E 61 6D 65 2F
+ 4A 57 57 4D 52 57 2B 54 69 6D 65 73 2D 52 6F 6D
+ 61 6E 2F 46 6F 6E 74 42 42 6F 78 5B 2D 39 20 2D
+ 32 31 38 20 38 36 33 20 36 38 38 5D 2F 46 6C 61
+ 67 73 20 34 0A 2F 41 73 63 65 6E 74 20 36 38 38
+ 0A 2F 43 61 70 48 65 69 67 68 74 20 36 38 38 0A
+ 2F 44 65 73 63 65 6E 74 20 2D 32 31 38 0A 2F 49
+ 74 61 6C 69 63 41 6E 67 6C 65 20 30 0A 2F 53 74
+ 65 6D 56 20 31 32 39 0A 2F 4D 69 73 73 69 6E 67
+ 57 69 64 74 68 20 32 35 30 0A 2F 43 68 61 72 53
+ 65 74 28 2F 66 6F 75 72 2F 4C 2F 41 2F 79 2F 6E
+ 2F 63 2F 58 2F 66 69 76 65 2F 4D 2F 42 2F 7A 2F
+ 6F 2F 64 2F 59 2F 73 69 78 2F 4E 2F 43 2F 70 2F
+ 65 2F 62 61 63 6B 73 6C 61 73 68 2F 73 65 76 65
+ 6E 2F 4F 2F 44 2F 66 2F 65 69 67 68 74 2F 50 2F
+ 45 2F 72 2F 6E 69 6E 65 2F 46 2F 73 2F 68 2F 75
+ 6E 64 65 72 73 63 6F 72 65 2F 63 6F 6C 6F 6E 2F
+ 52 2F 47 2F 74 2F 69 2F 53 2F 48 2F 75 2F 54 2F
+ 49 2F 76 2F 6B 2F 55 2F 4A 2F 77 2F 6C 2F 61 2F
+ 56 2F 4B 2F 6D 2F 62 2F 71 75 65 73 74 69 6F 6E
+ 2F 70 6C 75 73 2F 73 70 61 63 65 2F 68 79 70 68
+ 65 6E 2F 70 65 72 69 6F 64 2F 73 6C 61 73 68 2F
+ 7A 65 72 6F 2F 6F 6E 65 2F 74 77 6F 2F 74 68 72
+ 65 65 29 2F 46 6F 6E 74 46 69 6C 65 33 20 31 32
+ 20 30 20 52 3E 3E 0A 65 6E 64 6F 62 6A 0A 32 20
+ 30 20 6F 62 6A 0A 3C 3C 2F 50 72 6F 64 75 63 65
+ 72 28 47 50 4C 20 47 68 6F 73 74 73 63 72 69 70
+ 74 20 38 2E 31 35 29 0A 2F 43 72 65 61 74 69 6F
+ 6E 44 61 74 65 28 44 3A 32 30 30 36 30 33 30 36
+ 32 30 32 35 33 37 29 0A 2F 4D 6F 64 44 61 74 65
+ 28 44 3A 32 30 30 36 30 33 30 36 32 30 32 35 33
+ 37 29 0A 2F 54 69 74 6C 65 28 50 72 6F 74 65 6C
+ 20 53 63 68 65 6D 61 74 69 63 29 0A 2F 43 72 65
+ 61 74 6F 72 28 50 53 63 72 69 70 74 35 2E 64 6C
+ 6C 20 56 65 72 73 69 6F 6E 20 35 2E 32 29 0A 2F
+ 41 75 74 68 6F 72 28 52 6F 62 20 42 72 6F 77 6E
+ 29 3E 3E 65 6E 64 6F 62 6A 0A 78 72 65 66 0A 30
+ 20 31 34 0A 30 30 30 30 30 30 30 30 30 30 20 36
+ 35 35 33 35 20 66 20 0A 30 30 30 30 30 31 36 30
+ 35 39 20 30 30 30 30 30 20 6E 20 0A 30 30 30 30
+ 30 32 33 34 39 30 20 30 30 30 30 30 20 6E 20 0A
+ 30 30 30 30 30 31 35 39 39 30 20 30 30 30 30 30
+ 20 6E 20 0A 30 30 30 30 30 31 35 38 32 36 20 30
+ 30 30 30 30 20 6E 20 0A 30 30 30 30 30 30 30 30
+ 31 35 20 30 30 30 30 30 20 6E 20 0A 30 30 30 30
+ 30 31 35 38 30 35 20 30 30 30 30 30 20 6E 20 0A
+ 30 30 30 30 30 31 36 31 30 37 20 30 30 30 30 30
+ 20 6E 20 0A 30 30 30 30 30 32 33 30 36 38 20 30
+ 30 30 30 30 20 6E 20 0A 30 30 30 30 30 32 32 36
+ 30 33 20 30 30 30 30 30 20 6E 20 0A 30 30 30 30
+ 30 31 36 31 34 38 20 30 30 30 30 30 20 6E 20 0A
+ 30 30 30 30 30 31 36 31 37 38 20 30 30 30 30 30
+ 20 6E 20 0A 30 30 30 30 30 31 36 32 30 38 20 30
+ 30 30 30 30 20 6E 20 0A 30 30 30 30 30 32 32 35
+ 38 32 20 30 30 30 30 30 20 6E 20 0A 74 72 61 69
+ 6C 65 72 0A 3C 3C 20 2F 53 69 7A 65 20 31 34 20
+ 2F 52 6F 6F 74 20 31 20 30 20 52 20 2F 49 6E 66
+ 6F 20 32 20 30 20 52 0A 2F 49 44 20 5B 28 AF CC
+ AE 2E FD DC 2F AB 73 5C 29 31 A8 CF FA 73 FB 29
+ 28 AF CC AE 2E FD DC 2F AB 73 5C 29 31 A8 CF FA
+</pre></td>
+<td class="st0200ff" valign="top"><pre>º·:&nbsp;ŽØxN¾$©$Ò.$Ó
+J.‘ik.:Ó/ÆV/™Vòˆ
+L[«×™J³÷vÉ'.M¯ãH
+ö.‰™z..¥¾#9|.~øŽ
+äð=.QGrø¾Ê.ýo'9
+ÿ¸¸¬å7Rð•Å¨ïÂd|!
+.¯äwò1£.X’!¤s0hÓ
+_¿ÿú%‚sñ6¾ÿÇ.ïßÿ
+ߗWh1.:ð÷ŸÂþ{ø¿Ú
+¸þ××?yçü.ô~.W.,V
+ø_¿ÿً†–ãûÿx1öì
+‹õï¿{.(..þË.ŠÃ
+ .›aNæýï^.éyY,Ê3
+.ža&nbsp;°Â¬¯^¬..êÇÿÉ
+.*¶Â.è‹1DþŸ—×.
+’R‰ïÿå%,.üíPê«IË
+9ú.ö—/ˆ0.²šê¿Yú¨
+.zØW0OSì./.Ânôà\
+µìõï&gt;t.üo–«L(ªüñ
+Ë«Ãà)B|.ÙT¯/à:.¨
+ü./.ºÂì‚.ó»þ‘e9
+árá/.{..Ö.Ƭ”ÿöB
+aüý%ÃŒÂÚÃ_®ä·ÿTEð
+Û..ÂB..¾Û€.3h°ˆÂ
+ø럾ûú{¿~ÿ§/µ#Ë­
+ªµú¥,älª•Ä¨ü..
+.~ÿ7Ãþ9.úÆ~d
+a—´ý.æ­ª„|øg¶áï;
+¿³.õ7̔¿þîå.:Qw6
+b.®.Reþ«“.Ta}ÑÚ
+×ÿ{.˜ÒY0¯M.J*`IQ
+¿U.ð.œ÷R.ðPX4҆.
+6:.›M.Mäúï:„‡2ë.
+÷œCÿ}¢ß;t:mØ~Ž.F
+û&lt;Êÿ7ø—Âì—tz…ê.x
+K¤™.N)@DĎõµ@+±
+.µŠ.P?„.¾ðô—ÂÂç.
+ˆ.džÂ+Â-~ýþÇú?{
+IÖ6·‚ýC.ŠÂ½.ùßÃ
+#À€n)è4.vfØ3§.։
+Â"=î†oa`‚³!0N ø?
+ï5áWý.ðóÆtÇ.½jTª
+ØYU.xV. Wt±Ùž4ËA
+û/wªRÕXP.ì.`l.¾²
+µ~ýþG/àXr€&gt;..ƒÿ
+ü&nbsp;Ë.çX].··\¤~q¹Œ
+õëÃjÃ¥&nbsp;ûp­\Ä.~ñ.#
+¶­\ËÃ&nbsp;›d.ü¬..ª.@
+Ñåñ&lt;ÞÂ.5Èy”³Øs
+J§Â.%Â’wŠY`â˜Âé‚ä
+ƒª..ø­ëUýRõø~ußÞ
+XýýO_^..|¬�CˆCõ
+i3¬À¶§5Ž€žªÿù€Â)
+à[.ÃŒ"l\Ã4.:7ÃŽ?Ân
+ï»ËŸB?._‹WÃ...ä
+”.gÿ«ð_‘ÿ¢Q]YœŒ.
+‹/Â¥W8QðmGl2.LcÃ
+.ŒY«†2)‡k«°,Ì1Šò
+çf.W‚aF¬£1èu&nbsp;.Q.
+ô‘Ñ.k...+£ÓÕÖd.¸
+¬°æä¬2׬±úÃÚ.*.x
+Ã.¦Û'g[nȓsÃÎÌÚ£
+×:ÑUûP.ÀõC°À.ÒՉ
+‘ÂyæâêÂã{óY±.Â…Ã¥m
+uh*ó-‡’}z÷픡¡yR
+m.C3+.1ô±.ÅÀ .&amp;b
+.{óD.åË:ÆËip)˜Œ\
+Š§.åbÞ'þká¿þƒÿbï
+H~BÆw·.‘@W7¶ð\.ö
+¦æv‘Âhï..ZÂÑm.M{
+Qå›&gt;:˜èE3ÌëÂÇÑ.ô
+uç”O.k¾½Y.NÃÂ'.]
+Ìy‰utT2vTÌzp@‘ka
+â Ãœ.­2ºü=*˨Ã..£
+Œ.¹.ªª±³"ÛÀã»w.†
+56.cCaõ67Ѽ֣~¨h
+à.\Þô?“.š‹¶.ƒ¨j*
+¬qD&gt;)‡z/Ãq0¸,y_‡
+æb2m8.Õ&amp;×å´.a¼(œ
+9X.Œ$«§ƒŠ..0.“.W
+.֔œUފc¡Dò\¯¨Œä
+@L:mí¶O̅2Ûeœ­Â™
+µK­U¢k֑¾.ô?¹Â¤/
+³S}™ÊI.È,h¾.«™d¾
+Ã¥P²¹¾Ì.Ãœ\(ƒÂÂ…Uϯ
+ùà¾,Ô9¬.¬Æ.}Y°—‡
+Ǟ=_â¿Ä.þ.ÿµêË&amp;]
+„.G5tdÌÙã z.ö.Âq
+—{ðÉⶋ®ºètÃ^ÿà.
+Âã.í..ü.ÃœNÿ°Î\³ö
+4%¶.×ïÑn»„l.l—i¶
+&amp;fÖ.•V‰®šfå.&nbsp;Yìu
+.’•˜ÂYì.$÷.¬].Â.
+Ûª.[ZXŸßA.Ã3ÿÿQ.
+a­Å54m.fíq.œˆ}.s
+îr.¸4BS.®Ã.z.šùì
+h.v.0².œ.îòÅ´ÓI¬
+3׬=-JìÄÕ|eº}b..
+Û.ólÃ̬]j­.]5ÃÊQ
+.ÜòÞç($+± ³Ø+Hî.
+X»..:.ª.lja}vGáŠ
+¬ºþO:.›±±ä™åÿ7̹
+dœü)9W.Τ§°e©¥.©
+m•|µaü'èƒE—ÕoDA
+˜å%wÚhüqfò\p™yX¬
+R¬&amp;¸@1æx.Þ\N1&nbsp;÷.
+ô^±6.ûø‚uFýÆ¥.&lt;
+fìÑ.ÃiF½™Õ.çڀ®Ã
+›ÉÉ-P[RÑzoX.ÆÂo
+.\ÿWy.¿BnjyµÃ..\
+ïÓµYX$Ø-`Ôn&nbsp;›Ë.
+.à¨öŠµa&nbsp;ÚÑ¡.Q¿.
+f.Â.;ô6KÂÄZoauÃ`
+ÃänÀû¸Yš¹{..:y˜”
+F\·ª®R6..ºÊpÓAþÙ
+°.5ë Ù.ò‘°ÚòÔÔò
+.'’ðˎvÖA&amp;Ãœ0­½£
+MèwÙ[.iXaí.vAÃù
+¡‹JÃpÖ*ÃÉÙª%¬ÞÃï
+’ÓÇ..Š§ÂµA.Öü8j
+“.YP-ËfYG£&nbsp;΃.K
+;Æiñ´Y¶‘ÎX.™Œ%òÃ
+ÑÕ¥Ò.L­Â•É.çÛÃ2.
+2˜­óîìÚRʇ›.†.0
+.ç’vžù/«Úþz+ñág
+9ÇÃé5Ž¬ß^Û{ÃÂÆÃ
+¶¦ºd‡ºR^·ùËכ%
+òOJô.·´™ÎiÖ.9«¥#
+ÅÙ#e½@­Y;äÈF".ìò
+^îú@‘3¡À$~©çCÂÇ.
+«Q.%ÂÛ.j».~ÂO~)ý
+×.&amp;&lt;w.&amp;Âõï°.8g.t
+vQï!tÖA‡‰\NØGG.^
+&nbsp;.\Â=*¤PÂÄÌ +ç±
+ý#..‹..h³G.šs.ž
+èÃØ.ë1p.ªÂ.°ÃžäQ
+ØÀö.Â؈õ(¶Œ—]4¸Ù
+3:..ÜÇÙÛ.\c=..Âÿ
+ÂÂ¥.vƒÃ3®~l.Âõ 8&lt;
+Ú4`‹û±áqå.Zå&lt;Š,£
+.ÖÃÃ’nh.‚ŽÂ¡±...
+.s?Ú-ï.—&nbsp;.[Cc=.
+ÎÛóØ.Ênl.­?6†Æz.
+[ÃSš¡@&gt;ýX€Qg.&nbsp;RO
+.Z.VèÃâØ6.ëA¬´Âv
+.«¹.+.\J.Tâ&lt;ˆ...
+XWÂÚû–L#6.•XÂb-
+ØÉ]ÃêîÂZ&nbsp;¤Òؒ.ëA
+¬.F.Wk€¿.+t£–f¿Œ
+µ³.Ě.öÂW°†û°ÂØ/
+Ç.+±.Ã…Z°K¼‚5ޅ.Â
+„•.*q.DZpuí.Ãt.P
+¼ŒåG¤Äz.jX.v˜W°æ
+»°ZWh."X.ëA¬í¢Óe
+Œ&gt;¬x^|lXÂõ(Öt^µ
++ûXÂ.£.G.Ã.jc=.Õ
+úMïj.ë±&lt;N.‡3]Âó
+R˜’¬ûVûXÂÃ¥}Lg36¬
+Æz.kÚô®ö±.ËcI™±a
+5փXqÆrµ.Œ=Ö±ËZ0
+vÅ£ÿ0¾3|à³.wí.Wá
+ʲõÂøó/è*Vö.õ_.Ë
+Ö´bQ¡:ëÉN.ÓJ=tL
+ÂüD¤Ã푺Dè,®Q,.t
+.ÒÊ×ß~o³¶qœðo1¨Ã
+ã'jÛÊ.^ÞõÃÂ?ê+‚¼
+4Èk‰Ë.üÃU.ºeÑ:j
+•7Z8›ŒÖ.Ó..&lt;PÚQ.
+£.•ÃbrsôW7LöÕKΎ
+²ÉBÔJjÂ7j8.£G­dˆ
+k“.&amp;í “Ñ2Ã..û)^`
+»h1o††¤UÞháÃ.*.1
+íh±ã¤.f±ºø4˜ì›n.
+º§è’¹d²/¯V2Ÿ†–¤u
+Þ¨á`¾?(™Öíò8iG™Œ
+–Äî0Ù__ueæAÉ4´¤
+Q.çËÃÂ’0íh²ã¤.e²º
+P·ß÷sÃ`.´ETÔ.o”
+p!...Ó®.v˜´Ã.V×.
+´XôC;Ã’*o´pÑ.í.Ó
+ÂŽ.;NÚQ.£EÃý.ûÕu‹
+•¡.i•7Z¸.Ë&nbsp;cY7Êã
+¤.e±ºÒ:.Œ»H.*@.û
+±ÿü³þñ.Ãl\´X.C;Ò
+*o´.8QëˆiG‹.'í0‹
+Õõß;LöG/!ú‹&amp;ËÆh%
+µÎ.5\ÊCC´£ÉŽ“v”
+Éh.zÞd.Þ®e9f­¤Öy
+£†ËnhI˜ve²Ã¤.e2Z
+.¿Ãd×kY±CSÒ:oÔp¹
+.M.ӎ&amp;;NÚa&amp;+›©Ò”
+óÿÉ.à»l±&lt;´$­òF.W
+‚.tÌëvyœ´£,F›.ƒÅ
+~B!¬k7üSVuëç׺I
+¿¸¡.iU7èa‚¶(ÃjÚÃ
+R.J;ÊR´5ñ¦¥¾äöøç
+×MU‚RnÃu.ß/1.Êa”
+¸ÑT‡I;ÌTe33ºdª.r
+.œØ/‡SïÚT&amp;ØA9¥ë.
+¾7V·˜šv4ÕqÃ’ÂŽ2UÚ
+™o~?¾Ö.ÖhqJ5­é.¼
+7yh0˜v4ÔqÒ.2TÛ.z
+ÓR_qó»^§ðr¸RNëºÂ
+ï­KƒrqÃüŽ“v”©h_j
+0U.Öµ„Ã@}.ñõµe/ï
+ìÃ`´®.øÞ.½~\ӎ¦:
+NÚa¦Jë¹Ã.½`ˆEŒÉæ
+Ôlº5¿qŸd0T*Z5­é.
+&lt;ÌQ‡.ƒiW†:LÚQ†¢M
+¹#,Ã¥].tSªnÃ{¿.í.
+ӎ–:NÚQ–¢MÃÃRÒÒ¤
+õý•.G¯..˵iôª.ô
+ÞÇ¡¹`ڕ¥.“v˜¥¶[A
+ƒOj.}ÂR.ÊTëV†ö2¢
+÷ÃêM›šv´ÔqҎ².mˆ
+îŸ×\ê.圴±0Yò-Žn
+ºhðÜ4.•¶!À/Bû.ÂŒ
+‡Œ½çht\2Öz&lt;ÿmëÉ1
+.âƒôQ..“C.….P·VÚ
+sn@úXG².pc=.d'Æ
+³½‚Ônö·'î.a..2h®
+V@_˜Ãq©Ãvü‚1.gÃŽÃœ
++9µ&nbsp;0fCôw.aû‰œ†o
+§.¼#cG9vîöÂ.i—µ
+±0oËas^Â’Cø&gt;ËUãâ
+°í«“°¿–õD&gt;ˆ@т_é
+&lt;Âoä'ÿÿ!;RÙ..ç*
+.W¶¬Ø£Œ3Øù.]ý8ˆT
+F.v5”ÿ.!º@ž.ß.úÛ
+ÇbtÂNi&nbsp;.ÃŒR¼³ò.¸.
+©¾f..kSn.íÃ.fê$t
+,..ŠªßˆXƒä~|×ÈPè
+[M.(².I$..½ú†÷k
+9U%Db%{n5UÇ¡0~¼p
+Ãä.•À¾¹².ž°.جÃ
+ÂœÃE.‹‚§?.¶³Ñs&amp;Â
+h°å.^´åT•.‰D.†-8
+.F²ýó¡þvÿÂ.ƒƒ`è˜
+B‘!°[võ@|ç..˜99Û
+‚¾L_¥bˆrí›1vÖ£Q—
+ë5K…mö.•ÂÖ.j*lC`
+ÎÇ"B+l³w©...èÓÆ
+Â}.Ã8WÀfïQE.ì.ç
+¤8Â.ûTháX£ib˜Ãì6
+ԤwÂQ.®}Ã….+³..›8
+ô§.k/LðejQðpL½0V
+¯aÊì./à^¹ˆYŒkiêe
+LšoÄBóÂc.U`2ð…¸ú
+dá.}γÈèçOôÛ.`Ôz
+.XFXW÷âJŸ€Yµóûóí
+¯åU.ùý..Ž¸p®æƒ;Y
+—»Ã‡q.“Æ».D*šè.š
+ÈHޛRÑ..Mbè&gt;ßG«¾
+¥E¥ª„H$²åVSu..cí
+©ô.áù.¨#„Ê’ÂM.Ã.
+..Z.j.ÃÃ."Û.Â…RµÃ
+.IäÂM.Àß..§ª„H¬d
+í¦ê8.F.!&lt;.j6¶³~
+Q°;Y¡9ë¬"¬S°ñø2Ã
+vv‘.íDƒ-ß.š¤ª„H¬
+dí¦ê8.F1ös¡.c{W
+4ìF.4ïŒ"¬Õ°½q.ÛÓ
+zW“HD‡Ãß..§ª„H¬d
+í¦ê8.Feì§B-Ǝý±
+&amp;.ÃH‚.ª0Ñ..;.+°
+ã"ç..6Chϻ."±’
+=·šªãP.•±Ÿ.µšh¼±
+žã1b..†—¥Þfõ.ђ¢
+1UΣïräzCÔf.%ÙöK
+bh‘O°¿ß³&gt;±‰:2°.f
+µ2n|¶'.“ï%h#“Ÿ..
+¹t..径ÜILË_Û¤ÿ@
+‰.­Ž›.qœ.`h™Ììâ¸
+õ×O|¢}•Š¥Ã;¢%sD
+Q˜îiE«„ÃtGË&lt;Êx6Âœ
+ý`».ãÚñègègc&gt;cœ
+®!ZóÂ.8.ÕJÖ´ƒáŽ“
+vӃ&nbsp;5v·ÃðTž...é
+.‘™.Åõ,YsvÄÕÙÌ.µ
+Âœ=+âx=Ãۓ.ð..‘Ã
+Ë(.~€÷.×Ë(“æ.9..
+a±wËéK'JÎü›&amp;J/–#
+zÃË..³ox.@8;ÃŒ,‰8
+v°v˜'.˜bÙ¬á0gÂV
+¸ËVÆÒb֎Ps!Æ@.ÃÄ
+ÊÌÚ#'GO])o6.kOëZ
+­R*1¼n)‚‡pÀÓ.,!»
+:vÃU–èk.…Æ.ÂóàØ.
+Š.jE,™_‘zt첶Âæh
+Èëu¤.(p—«O.ÂtÔ.m
+Ê2®#Ã¥ÂÚ..ýÃâÖÙ]›
+Õ|Ãyò-‡֞.V}\ŠX
+îÂãÅ.XÙv;p.«¡íŽã
+%.U…í˜×.qÔ¢±¹áIµ
+‰.ó.¥ŒAà¢Ã..p[.&gt;
+Âx4o&amp;.oô.xÉ·fm).
+Âp&nbsp;ŽÀôæäñù.ŒÊïe
+F.ƒ·l.ýñÂ...ìÿè
+[Ö,‚.”ËGÙÕ..¥.Gç
+].ŽG“dB$$è(ÚwFÙÓ
+¯.ù8.ÇûBÂÂ..FõCÂ
+Q¬Þ]áQã.‹f.˜º‡Â”
+ù±ó.&gt;¬»¹c—”iÓÃGu
+¤ãvä.Ã/f}àÃœ‚^ԃ
+žH.r•íûkgÌg·å{M•
+]ùnªÃ;U—òIèƒm‘
+"ÉÑ{¬.W.¯¬í.|–Ãà
+fJM...&amp;†wøæ*bÀ«
+.rsuB.]Ÿ.Ì9È3[.d
+.:BÇ.ǧ RTQ^øªÃ½
+/·²BÖ[*.V¨q.ó”.„
+9;èñÃæžÃ.ü¬£.ð.š
+Æ.è.ëAø¾.?x«.ø’Ø
+Z“Ù-I“LÄٜªW.F.!
+¯êÕ£Õ©.ŒZ¼ÒÃn«.ü
+Üçýµ².ª@º.Ç.Hqg
+S®+Â..ŸŒz8w6h¤(Â
+Âõ8²YàÑÆ°j.‚}9«
+ª4.SR.E}z~h.Äy.:
+.‰ñ¢˜j.´“.³.U.W^
+g¾ÔHfCR*ÃðID?ªF¬
+.u‹õ,†Öí«.µ‹ŽªÙ`
+/¼œÃžØÂÂd).Mtâšv
+¨N..­\×éFy¹ZR¬Úl
+ LÂ¥Z¯ˆ¢ÙÂ..†`ý9µ
+K.ñBaل.{ý»7x¦èg
+qÚ...ëA.S=~sYC3
+£!.Ù½!7EC.ã²8ºóÆ
+zTÃ.`ârå4{*ç¶,÷.
+@.×"š²k9TӋ®åfY¾
+.ýÀ½Â&gt;EC©­¬á¡µõb
+Ç0U–]Óm­Ã.&amp;Ôà¤.ç
+Œ68O!M…•.o&lt;K9™d
+aî™Ñ¥.ˆíÉ$õBû‡ëe
+ø.ý…±É^x³|R=œ.Q˜
+waE.îŽÕ§ôsuYHë÷Â
+(õå.L»2 çÃKø8ó.í
+.çWqHÂÂòÚ¥&gt;_cpÃu
+ýÚ&lt;»9ý4t»ð.³Z™Ëò
+í.§.‡4°ËÎdrÂGÆðø
+°’.†‘¦Ä¨‚¶ÃÊY..¦
+W,°¾›~½=Ó[h‚§?&lt;Ü
+Y;Ã¥Pæƒ.ÂgvZ}KA|j
+ËÃ&gt;Ù°²îÀ*0©¹pˆþî
+)UÃ,ÀÓ.i3.aÃœðòÄ
+ð.Éø.¹üõ/wÕ0^}ÂÂ’
+..ÙrÊp’ˆ.'¬.5À£
+3nÄ.a.¶©.Ór¸¦Š.Â
+g¶†ÃTPՌi1\Qe.HW
+ÔCjX½zcLä§ÃeÃ¥Â.Ãœ
+kí/ÕÃÃÃQÃdò.ÖKnÂœ
+.CqLîÃI"\%­›eJN®
+/€MÉéÞFãi&gt;©³vÊ¡Ì
+.9.Ã^GvIÃ6.Ùg¨fÃ
+k..GT³bÎèÇÀ.aíǒ
+t£ë·”®W°õxf¯/S…*
+¬.•Œ.I.ˆœ.•¬û §
+ù&nbsp;]•Läp%.9÷T²[.î
+©dkë^[ü=¤’Ñ*ÄE_.
+6¾.S&amp;_fÃÃc÷.¦2õ
+íÅÂ5o=IäSj¯Z..Ÿ7
+œ|Ö.ŸžÅ§ç...[@çÂ
+¬}rZæZ΀g²šÃVp¾=
+n¬;°¢Ü·9&nbsp;š¹¥..ÛX
+Öëõ0£¶Ú3é.0y.n¹ð
+×.‡6{PÂø¸œ3n.†˜k
+.xƒ%Z7Èsà=ÔÚjL²
+&lt;gÛ. cvÊÙ旚¥õx«
+·õ.û.µÈbqã/¨.¦.—
+ r=.gqQ¨&lt;r.הDý
+«Õ.f.PuÂ¥ÂìÒ/ˆ..`
+&amp;åôeU»@Ù{¿^V•Ò×
+•.½î&lt;]ÙÙ.ÉÂ.;&nbsp;ÃŽ
+z°xñ &lt;´îÂø-W9.ä¸
+ê:¾oiÂ…Ã.ïÂ.gP`º
+Ã×Eƒ&amp;Éáìv••xË%·.
+̄µC̺|5˜¡ÄçÊ;:˜
+ÜÆaJ%Û÷ÃêÆò¨s³Ãq
+¸xB.çwžSb”²%É(ÂÚ
+Â’4g;`›¾$+ØzÃ*lù€
+§é`|‰ÛR.Üô-Y.׫®
+`;fûÆã"ª†6}OV&nbsp;õš
+¬°.³i†s"ÂmvçX°±›
+.lǬ³C‡ëÇ2ÂÃ..pÃœ
+..¸ƒ¶9..ÅÕàf·w.¸
+Ø.£Sàâ.ÂѵáÂ.7»O
++àúÂ.ÃvÈ€\W.5´Ã
+..Ê8]XÑßÿԘl.à‰}
+¼.ÂՋ8_Ôm.ŸíûŸë+
+äûz\&gt;.§°3ëXìÃ&nbsp;ãM
+ìvƒ}sì¬,./Ô.¾!†
+v¥üúÛ¾ ×3Œ” ÉÓ¾
+j.Ñÿ|è´Ø‚/¬Åób¯.
+þ.ÞŖ-.9û'œǧæ
+n³mÜ/°&nbsp;źe8š!¬¾.
+'…½åŒÅ?Ù.Z"Ã.¶ün
+k±Â§ÇY]Êå©ëôª ïH
+2k.Þf‘G³´˜ýCvë@N
+=./k.ÂuØ..ǚ&gt;ÿ.F
+ﲜ%¬A.uY.z=\û¤è
+2¨½/L~jd´©“)áyš.
+lÂÒò×vAñ@‰.].k}2
+®óúk.!ƒÂˆsh—T´j‹
+µZµJŠjKX´j5­6ÖÂÃ’
+ÂŽ2.–/.ŠÎ2ӁÃ.*9
+ÔÅ´KƒÃ8.î.¶¨Œ6¦À
+_;.(&lt;ħ––I4ÔqҎz
+.̂-êp*Ӄ.¯Ø´ÇpÂ
+{¯.òdõºs®ÂÛÛpJ-f
+$.T.!¡#çԮè.‘èb
+.^ñF.¯.Öo˜ª..GÂ.
+Qo—{õ.æÂÂ’..%.IÃŽ.
+S1.…ñb&lt;³çSbˆ­€ï
+uš!~Õ]./..ɖ™‹—˜
+`ænÂŽ.óÂv~..ïLa[R
+Ù^`QÂO[YS.¹P¶.Ê.
+À”eê..N4°4žcÇ£.o
+2åSÄkÂÃa·2F5Ò§#.
+_쓿~ø.k8Ø4ž ÚU‚
+ÂÃ}•.}ã.îîª.5“v{
+.֘i—Fe»eµ„Ÿ¶²öU
+-.&nbsp;¬.ìªZ”H³.&lt;ÚÃß
+[Ÿ&lt;.Ÿû.¬N|£×a..?
+\òu.dpn" ‰`à×æ)—
+/.ÃV§˜ë•¦.˜Oø.³&gt;
+)VËö“JxÂÃ….g4âDx.
+k.€Xsr.¢³Ã2.‘XÇU
+§`ñÀ"Ê÷·êӅC.Ö«.
+ÈÿŒ.ePÉí¯Oý¦¹*6f
+í©O=‘ªO./±O×'[o¤
+h`.†Ã%.õ‰Yªòô„.X
+Ȑ.'âú$.vÔ'Â(õ‰!
+~¦ú.2.¡9¨&gt;M»%ª3š
+µ'4úîiÖ g¶.q€..
+#n€.¬&lt;»à¡Òpõ.–÷x
+—mN.Ã…+ÃhZÀ‚ÎÚ'†²
+.Äh4³^à–zCd†i9="
+Æ:˜ÄÃ=q¢ðdCÜÊUM_
+Ÿ®Àú½\ø«½.cóû?.f
+‡³5Âc8¼þ.†p ;‚É
+¨D.~CX.Ãgr䎡.Ãœ.
+.º..…µO.e=ˆÑhf«Ú
+-õv4ȵi.–î·.ñª5À
+oÄSÃåf].¯ê¹^%þë_
+ù¯ûj˜„¿q¹5{aQ,þ)
+ÛIü›.1WÉÃ`p“Uc.u
+\.ñÄBÇ,.k§.Ê|£ñ
+ÌÖ±[.³¶î6.ÑÂî
+ŒÂäáî[¸YÇdËdO.›n
+NÜï2kìwU$^‡3kKcã
+ï€.Â…It1@Pt²FÄ.ëÂ
+HZAm©&lt;…0$‰¾‡Lu0u
+“oP.$U%Db%{n5UÇ¡
+0^\ßz&gt;%j.ÃÊZ‚×°.
+IÃ...ᒆÂKQ.{¡ÃÂ’
+M"Ǚ¬.ø.BãT•.‰•ì
+¹ÕT.‡ÂH¶&gt;Ô.³4,A
+‡ZídÂð.„Q„סVÃâ$
+ÔjX¬„ZíD‹þ)ßÒ¢RU
+B$V2H¨Uá0JÌÒçBM
+/Qؤa/&amp;ËÃ.cD..Âœ.
+‘..Â¥jÃH"Ã^ÀË·ª_
+OU.‘H.k¹ÕT.‡ÂØ^¢
+x:Ôdlè..¾.Õ`§À$.
+§..ƒ".£©¤o/\ÔT-¾
+2Iìñ•Ã..Dþ..J*"X
+"‘=·šªãP.›±Ÿ.µÔì
+h{.áZÚ¤z.í¢.ÓÂ.
+‘‹•:.JÂ.mD¯#ü.ë.
+§ª„H¬dÃ.S1.Â…QÕì§
+B-5;Ê;&lt;XÚ1«j.ùe.
+$ä՜J†,u$ö¶T%.Fƒ
+¥ÿÕzÃS.Ã.‰ì¹ÕT.
+‡Â¨jöS¡–.2g.…Œ.Õ
+HêNrŠŠˆ.ý’!IW“Ã
+".C#zWÃß°;áT•.‰•
+ì¹ÕT.‡Â¨:ȧBÂÆ.‘
+â#.ò.—ÂS‚k4I.ºg(
+.Â#..¬äÑu))¿À]
+-Âi΃9..Kh(WzÔ2ù
+ÃUNÚI.^£àfUkUT¯Q
+¨ÆHdk¨”ªÂ¦‚ÓûÖ.
+þ†µŠSUbxÂBr«©Ôk.
+£Sz&gt;ÔÊØÜq..›.Ò֕
+.ÃÃ.‘‹ÄìçΩJ”Ž«.
+ào.ZOU.‘Xɞ[Â…Ãq(
+ŒÚØÄZÂŒ-C².&nbsp;.Â…*´
+&gt;H"‚.PDzÃ¥KÂz¨C.É
+*.þ†Ã8U%Db%{n5UÇ
+¡0*c?.êõᖩ._ëP„
+†.hñ.®Åœœ&lt;ƒªÄ\.
+18)†4¸.àorÑPÃmêF
+Ú\wÚuGJ.3¬osíÚò
+ÖÔ`..®L.¦¢(³$Ö.'
+¼ÀZÃ7š.`Ã’..±æ.Ã.
+Mh†.ˆÄú.G€Ú•-}.W
+Žšª£è²voùœ&nbsp;üõÃWï
+Þ֕P|¼Sžôrn‘§´œu
+òÈV#º{ ²=ÎE©ú*T•
+ÈOz9&lt;¯Ìßðb1§ª„H$
+²åVSu..ãå•Ã§S‚VB
+‘eهW.Â$hm…µ.ìq‰
+ôI`÷'¢H"ûð.€¿!4N
+U.‘Xɞ[MÕq(Œm%ôé
+P³±M6YÃîdÂ….Ä¢ˆÅ(
+Ø&amp;.Ë°Mü¬JäÇÃ*.ù
+†.V9..Jb%{n&gt;+..£
+.û¹PßÓÃ.kÃŽ6.Âܙµ
+ç.«1¾œ‡“\Ìá#5óR.
+.K."j¿!Ã…a¥ƒ˜ÎÚ¥
+.'ê/Æ.gÇ¡ .’?çÑ6
+ÌÚcœžH©År.óLŽ.TA
+—H‡)…µÃÞJN�¯Xà.
+&amp;.eæâÎ6Âx`nm½bí”
+C™.r4žÉaÞm.ç+Ôƺ
+.Ë_Œ%rÀ`Ƹú.-F¯I
+›è5&lt;˜ñè9nÄHjG]–p
+ßA.iÈ0€ÃnhÚó‡…$M
+o‘Ì..[¾ðl.KJç¥.
+k§.Ê|£ñLÖ³.Úíð~
++³^óćœ?&nbsp;H›^¢¶Hð
+­‹£äÃQ±Äµw¯¡.÷.½
+†4rŚ÷b¦^Ù-#žÔÎn
+îðbJN÷bJÎ.^춂wu
+‹Ã‹­{ÊãjXs]1¬N¸¬
+jXZŸ×».s뱺&amp;ý-{.
+aípc’¨·táìpdÃG&lt;—
+¤áàº\ÚëÈD.;2‘sÂ#
+»¥ßŽ&amp;¹¶íՑÓÂÎìâÛ
+.ÓÎl¢ªÉ.@ñô®{qtA
+.†.Î.œbéš~±eE/gº
+¸Æœº..¿è.ðR!Ã’=ÂF
+¬c¡á.í•0–ÃiɃ9.
+E—ÃQ®ô¸´Rð‡««ÌqÛ
+RlŸ-.5.‡f”.!.½*é
+út.S¹¾(R˜è³Eþ†3B
+NU.‘Xɞ[M.ÕüÓô£c
+&lt;Ç}*Ôu3³. ï.¡sz
+Eé.…î..‡ðˆ..+yt]
+zEà_´ŠÂ.˜æ&lt;˜ÓP°„
+†rÂ¥.mfþÃ*7..FÄ.µ
+k.Æîh±IhŸVÚ9:˜'.
+èÂkÉÃ-+íú/:ö.ÂiÃŽ
+ƒ9..Kh(WzŒE÷.§œ¸
+8Vš}#É!4qÂè¹5ÒÉ
+êcGÚ$vE¨Ùó·.Uª..
+‰!ªÜjªè•DU&amp;OˆZŒ]
+oÂ.ìF.´ÂÂ"’×°.»N
+L.ÔZa#:lþV_.ë©*!
+.+Ùs«©ŠòõÂPÆ~*ԃ
+SbäÜê.‡[e“(tÃP8Ã
+ý±..+y.v&nbsp;Ëø‹Þ*».
+¦9.æ4.,¡Œn]—É.®r
+÷,w»lÊÙZ=..–ž»Þ.
+ã.˜›/ꞃfíX.–D.G
+X;–†=î‰ÖûÇ"‡Y;Ôâ
+4|wEX{Þ$Ç»'i4.³ö
+˜‡.‰ZÌÚÌÿ&amp;æïRÖÖ,
+tkH±æí­êL.\±ršÂ
+x»T–s}“UáÂ.C!Ãœ'¦
+å­Ä.h&amp;§ï·Õ›®N.Ó.
+,}÷ìàõn_£µûè×ëÃz
+óޟó­.Ú4}ÃÙÜ·R¤š
+qiãxå!ôµÖi9Ü$…•ì
+ìí_Wè.¶.ÂÂ.“£±vÊ
+¡Ì.9.Ãd]»­à..¸¶î
+U—|ÄZQ¨1É|Ž.Bj¬a
+7.ÃK5;à.±òØÃÂ(Ö=
+..·xŚwh.‹.`k&lt;Þ
+·¨!ó.Mä°G.9÷¸´Û.
+ÞÓCv—¶é4.\‘¬~,€Ù
+|š¼BüY¯««Î—ˆôë;
+œšÈá6/¬y§æ½i!..N
+ê!.æ}šˆa—&amp;bîqi7Õ
+ÛÑ(׶½:Œ:Î¥..#m}
+ÖʦÎÀá9U¿¸Ø&amp;Œx*¶
+“õ¼¬_Ô)fðçí.Z'Û.
+ٚj‘“¯ÂhgiÃ¥[ZT*"
+Xb%{n5UÇ¡0^Žv÷tJ
+Ãe§.4lèÅåç.LÂ’Y..
+ÂœI#..Â¥jÃH"Ã^¢RiI
+V¥"‚%V²ç.•ù4ÆvÙé
+éP‹±ñ•*.»‘.ÃÚ¤ˆ~
+¤«‘K.ضßs«..«aó7
+„Æ©*!.+Ùs«©:.…Q.
+û©Pó½..»6­þóÚèº
+"8."..JÕo9T‰.»6-
+«n@HªJˆÄJöÜjªŽCa
+”{.ÃÂ…Zj¶Â=.B-íFR
+=ðíð..^np"Ù[LMe‹
+”h#z.áoX.8U%Db%{
+n5UTµ®.ªf?.j6¶Ë.
+)جÃ\î9.±(Ø0÷6.
+ÛåÅs&amp;Âh°å.@“T•.‰
+D.†-8.F1ös¡~lm‘‡
+}Â.VÃj3R.ÃFË@°93
+ÄFtøD6Õ(Õ"W&gt;•A°Ñ
+Ê7hΒª."‘ÈÂM]p(Œ
+W‡=Ã¥„4¡èøj:V«FR
+…‹m/‡.Ž.B¤é—Ì1Õ"
+=P'zeäoXá8U%Db%{
+n5UÇ¡0ª&amp;ôT¨ÅØÞ..
+»‘.Ã;£.k5loœÀö‹Œ
+­:Ñaó7„Æ©*!.+Ùs«
+©\Q.]Y.û©P‹±ÛíÂ.
+»_æ¨Ã0r¤.ÖiØÖxÂm
+.å..Ñaó7„Æ©*!.+Ù
+s«©:.…Q.û©P.{†|C
+„7Ã….‡7ÃÚÃ.¡ûÅ.æ´
+{.,¡].á&lt;øÎ.oŠõ_ô
+M³.¡Ó’.s.Š.¡£\é1
+î.þÃ)֯MX~.†OíËë
+0Ââ{Ÿ×^C»™Ûæy·ïj
+¤.k‡.˜Âê™)Ӑy3³
+z..‘@‡H..²§x.Pñó
+Å.€ê;.®þ.~.j‹)ô.
+þXù..O÷ú56|‰.ïñ
+Žp—¾0tÿ³l`—zùýìÚ
+*ÖÂ_ÌÙ._äm.z.ÃÛ¨
+.°¾ÿ..¡¾6ú.~3ãÃð
+ÚhÂl...|.Þ.ýú7ó.
+ù).ôJ¤LpÌ£o´Z.3‰
+þF1?õÑWòþü.Ã×k.¢
+¯Xc™³†×Öð.×IëÃÇh
+ŽÙ·.½.õ@ï«-Îáæ‘b
+9pí.êþї³.Z°§.~H
+žùàç²~&amp;ò;(¯¦)ÓÊ
+vö­AïÀ!å¬.Bd–Ü£~
+H.,\Ü.¨ñ1«.߈._ò
+{`_¾D|®‹..C…Ã&gt;¬.
+Ãìó„}5\•Lã.\0Nâ—
+ï,˜Ù×.¥–©‚i¬c.FU
+²ù‚iÚÌ&gt;Ø·ôù..‡A
+Mœ]½ óØ«8øÜ[¿ËóW
+£ÃÄǃ~À.ä§/ØÃçâÕ
+¶&amp;¹.o¬r._4×.µ×À.
+]”.f.Yd.`.Âz®DlÃ
+X.../BÜc.;e„tË.³
+Â9JWÂotJWrÃŒ.ÂøŒU
+“Ã-twŸ.†&gt;³z!vE³
+oCŠ¦üà§hzß.Ûbˆ
+†Û¯”îvä0ÙC.u.cÿZ
+.åqÓl_À|eŽþĨ2Ç1
+O΅GîfÃ1Y.Ã’Âœ9ÃŒÃæ
+蚊5.yÔ..Ô ,&nbsp;ƒi
+cÉm‹.ÊÃz54ÔªÙûUã
+‡EE7b=ª\9›ø†ræ‚r
+Ԅµrn§rìÄù.HqâÂ5
+w..&amp;}.'Ja‰ô¸‘Ãà@
+&amp;.kNŽËõý %g-úÃN.
+FQºK‘Wùä¯ë½..)..
+w…ÑÌÙoJ.».¿óÃI..
+®eR.GÖ2­ü_¼àÒavá
+ýû.+°‹¹mŽ¡Æ]7G
+¸Û.ß(k.çO..ƒ5.c
+°}n.Ã_2Æè‚Ã.ñ^cp
+_#Ö8²¯¹Ü0ä4ÃzÊzÃ
+.áR.ٚ!í4.Æd.ÑO
+..4ÂH.øU=.úÂL ޞ
+K8ƒ¯†iM_aT..5.ãI
+ý.ò[çÚÚá:5ë묃§}
+P.ËVÓ.—4Âë2.vhèU
+U›,.(÷–j;ߥ‹µ.ù:
+jbH.,ÔÞþ^°R÷+Öñ‡
+&lt;­àSRnQ.j¥@—=.Ê.
+ªi|c.=Â..ߚÇ÷"\)
+‡E¸÷íuYtQ+HÂut•
+U—·jlºYc•ºÛçÚgG„
+&lt;j’.á8jz`”.Ú¨ÚÚ.
+ï‡õ2âíi×—†ÆÞèŨ
+..ïžá£²D1t’WY‚X.
+Z.&nbsp;%;kŒÛ“&nbsp;//.¥»1
+¤.t.þncÈÓñlŒñ.ú»
+ÂQê.3sÆ°SÆ°sÆ.w.
+£¯Â‰-ÂŽ[!›´„›²„›³
+D¼ß..,qœ?6փ¶.§k
+§Â᧌áç.FºÛ.u.pt
+ÂÂõèªáR·^æŒ.¦Œ.æ
+Œ‘ïž|wç©&amp;߃ó¼-.c
+¯Ò.9R€.5÷ŽÓ.Ä..1
+iêÃ¥¬äÎIÂq±ƒ”Qî
+Üý!.&lt;˜AÈ(vNˆ-õÆ.
+KY‰=¤cÒS&amp;‰J+.I™F
+.OV¯/M£¾¼¸H¿šDÉ.
+÷Þá6W:Þû”JwäÞçeÃ
+ð.þ‡[.ê.²Æ{c­Å©+
+\÷Ú&nbsp;í€+.¨.ð.7¾µ.
+¤ÈwZÀܚJ‹.vÂØÅ.÷
+Ã.å‡ÂÛ½™ÃüŸ\Ì·W7
+ÿõ3ÃÛ.Þª÷q.©K=q.
+À„©­Ìÿª#.îç¼.‡ãµ
+WS×Ù+Jé‹DyYyú!ó~
+Ô.J‚m÷BÅùöaXoÃyè
+s…3.õœ..Æ.G.èð×3
+·¿1.tp£¸PW¡Ö£¢7ä
+¤.}.$Â.&lt;jcƹµOÂÚ
+'§žhJƒœÆš“ÓõRÆîz
+Â.Âœ7¬½Êü@½Ö&amp;;ìޚ
+s.'ÙX-ºãûkÃ06QÛ.
+;°óË+´•Å•¬¼š4Œ?ë
+bþ»‹™qó«=yT}i/.Ü
+Se-8³8ˆ³.}ÃjFó†.
+[_øÖB\.l¿O.CÃ7äê
+ÑY.ÚôäK²*o‘ÓYƒœ
+YW³U...1íTo°ë­r{
+¸Æ...¸.×ASǧ.ä.ê
+KO.ü+ÿu×M^)99IÑ.
+°Ç?³é•˜^–»ät8.¨o
+ñCÂÂÓΊ¥„0.¿óyó
+KªqµÚ¥ÚhV]±.1GÔ¬
+€...Gž†.X³fýÞ[z¾
+!gmcd-56­’#¬Þ6/7
+yu–õÂlq. .ç...˓
+.Ö(ò±œ..Ë&nbsp;&gt;BÞNj
+JܑoúbùŒÑזѬ.µª
+\7Eª].\ð—7‚®l%L
+››c&amp;8üÃÒv.¾.!œ.g
+.ÅÔ.™E^_—áþ..ß´Ç
+.uÞÄ릋ÇEÂ…5¼ÿ3o
+a2§I¥.Øقû.Ìzp‰
+.VðÂØÂAvþèÅà;à1¨
+yÑ7.ÃPïÙßiúkÃŽ&nbsp;Àô
+„Äܦ..Ú®X.7Â.Ú·
+å„..uÜ.·ô¼û(†zb&lt;
+sïðFšïo.Z‡wÒ.i]½
+%Dï.6¢?.ØH.&nbsp;ÖRÑs
+wMb.údÔ7&lt;³Ã©*!
+.+Ùs«©:.Â…QnûõÃÄ.
+ª€7=ˆ.â.»‘.-..;ø
+.vp.vp.vp.lþ†Ã8U
+%ü.›s«©¢‚.TÈÊ'DÂ
+ÆV‹.Ö9ÃÂ¥ið®Þ/ùž
+\.ù§.÷jqAÇcGì\À!
+Ù؉õI³|&lt;GÂœaª„Âõ
+íƒGVꊰ.G.šÃ“.Àr
+PåO†ù¢éºîñQ|.‰]Ô
+p.iÎCÉ1¦î&nbsp;´.ñO.:
+pÕ¸ýR¤QùÅJs#‚›"‘
+­™RªÖ€I"7nèŒÔ7.T
+ªJˆÄJöÜjªŽCa¼àŸž
+O…êŸ*KZz.Ã[X…ÖÛ.
+.~€ÃÛ,Â¥r.¶´ô.€¿!
+4NU.?ÀæÜjª¨`.þéù
+PoüS‘ÞÆ,Çù'h¬1Âþ
+‰XÚ?Â.α.þ‰YÂú§Œ
+c²ß‡â.£â&nbsp;†.£“.J
+β‹Òb”ÂJahà1ª†.
+Ô€.iÂŽA.%(UoÄU¢4
+ðìÕ·¢ÃB.]FÑê8
+.ÆK&gt;êéT .…,ÕÚ..·
+²&nbsp;Æ.Dø.6·ÛšÊ)تµ
+#.þV´Â(£ÿ(Ú·ÔTQÃ
+.}ÔÓ¡^û(ïóçðQ؄“
+.|Tc.&gt;*.ËÂ&gt;ª³.ôQ
+´‘õ{ðQr½€}Ԟë.ÃG
+©[.ÃG.bÄG.7L’‚U“
+¤`Ô$‰.nŽD¶¦J©Z#&amp;
+‰ÜÀƒW“¤à•[ B$zåN
+(UÇ¡0^ðQçBõQ•%­
+½.è­¬BëíÂ.?Àîí–R
+9.[Z{.Àß¼ò.Dø.6ç
+æՌIc$.õ|¨×&gt;*,ás
+ø(¹ˆ#¹_ÄQ,ÓÞRS.
+;ë1.å.ÚSü=ø(&gt;…%&gt;
+jÇ),öQr˜‹}”.£|T.
+C.Çp.Ü°’SM®.Ò.+Ù
+›jMÕ.q.C./ÒmÙ¸(·
+@.K$²çV²Â¡0^òQO§
+.ù¨\†Öž.ÕÊ..·¿Jø
+.6·ÛšÊ)تµ.™D.´ž
+Š.?ÀæÜJV8.Æ棞.õ
+ÆGE5×;n-ŠÂ.J[n'ü
+.'9z:O%ë¬G=TÃf¾ß
+CÃîâ½µº=+çö.Ô´”7
+扳rÞ.ËM˙ð·.ý€Å
+Gär.ì.ê=.d.zß°³f
+€ÙlÛí-‘Ã,Ãœ.ôÛÃê.
+5Ԗ.P.ȅI»@..bQD
+.ÿÖH..×RQø&amp;±.”.
+(Y}ƒŠ#©*!.+Ùs«©:
+.…ñBGð|*Ԏ&nbsp;²²·.v
+#.Zv^.6hØÙDÂÂ)|k
+“¸..›¿!4NU.‘Xɞ[
+MÕq(ŒÔ.&lt;.êuG°X‹.
+¸&gt;XuáÂÂŽ.Ê4¶¦ÛÃtÑ
+i7Raº..C`àìY%ì¬
+o[¨®éñ£M.&gt;š¡½ÇàÃ
+KXûÂU{O&gt;èòk$•Q¢(
+™Â°Y—_2EÊ/.eíFôò
+Kº}pªJˆÄJöÜj*¯š_
+ê‘q/·÷§RAWÃÎ.ƒ+
+Ã.¿ÎòÆ·;þ}ÃÚ¤Wª
+ÑQ†N‰8ûú$–".kñŒò
+ºŠÚ.µ?·1‰.…áŸxX"
+Øû.يÂR5ŸM.ٟ[ÃJ
+¾.Õ..!.‹ê=(UÇ¡0^
+¨¢Ã§Bí’*KÂœ{.ÃÂjÂ…
+ÖÃ-.슉lnšR5.N.Ù
+¹W.ü­¨.Â.‘XTWB©:
+.…‘º¤çC½î’,ô.Ü%™
+ú¤ºÆj†.©±t—ä–H.
+”$!³.蒸¹s¤Âƪµ
+‹7¯åýh-¡î_‰`ßKd
+ó˔Ê([‹7¯åÂtëàTe
+è.ˆì¹ÕT^5¾ë.Òó©ð
+.:¤ìñPÖ].Ò.U.#„8
+ucJÃiÚ©+³œéž‰ú¡
+Ar¿Ž&amp;¹..ÔÞh«ɛf
+uÃŒWî}M.ÞvɌïÊÂ:.
+.«ö½.Û+l=¦ÓÈOÂ..
+×Éè&nbsp;XÉû}jiùë6.üÂ
+Âk-}üœm‹0£ÃÙþäÅ@
+=)ƨÛq|ÓëçùPm·º
+.§TSšnÀ[oŠV­¦Õv;
+PÚQ†¢ÈDo.J.å¹f©º
+# ºiU7è­Ç&nbsp;ž¢[M;X
+ê8i‡YªFuyËRr‰è—Ã
+.úÃRqh.ZÕ.z.ÃœÃ\j
+ÚÑR‡I;ÈR.NdºåýøÅ
+áiõårŠfh/ZÕ.z.Ê
+¢u«i.K.'í(Kѭ
+%.šÇ:µû™’õ©g}ScÃ
+.ïêh¢.³cÂw}~h.³c
+Âw½Ç¯åìYã]ïÃ.rîY
+ãMø.!.ƒ]°8.ª#cK.
+¦vÖAÃÃñ.$ÖOÛ®.O.
+'W.ñES;b$Öc·.¼­q
+V.¶ÙHá‚-ú&gt;ZclÂõ
+6GÃ.Ã&amp;¿y¬¿ß€xm.
+܄2&nbsp;°.÷F»¹.ìJ4Þ_
+²ô.䪸vWM¼‚—Dƪ
+99ñ„ÌCÓ^X0.ÄÅ.À—
+U•‡ŒòÂ.Lb2.[kø®þ
+..)B.."4åƒi:+š€c
+^..½AƒJFÂ.‰..ÿ¦£
+íRÖ.}l3bž¾Â.œòÇÖ
+¸PçùD.Â+ÃqQDh»“
+¤]ÖÊ;"ªDïú.sQß
+êBAOU.‘Xɞ[MÕq(Œ
+&lt;}}BäÇÃZ½1.È.C×¹
+õMɟm®Â¿Ö. ¯t‹|ÂŒ
+¨ð«MhÂ×.râ+.§qýò
+©M‹=™°´w,m„.|'m„
+Êi|ɊÈ}Mª‘´®WSùT
+-M..ñ±.Ȩo0‹àTÂ(
+üÃ"¹ÕT.‡ÆXëžî=Ÿ
+.u©ÓÀ&lt;ÔZÓa..˜´.†
+wÖ.Y.Sz&amp;Â$.5•É.­
+Jl.þÃ;õ-.•Š.–ˆ$ç
+†©.‡ÂHKÂǺ..íŸk
+¡ù^G:YëANV.ÑU¢Õ.
+r.žê.9.O%ډVGä.Ô
+.NU.‘Xɞ[MÕqhŒdì
+çCÃÆ.%jجÃ.Þ.`"
+..;¤E`‡.€$j4F}.h
+œŠˆ¢asn5UÇ¡1Š±Ÿ.
+5.[5H.À..¡q.©„4Ÿ
+FŠ÷ãFW%JƒD.ò.&nbsp;qª
+FhïǹÕT.‡Æ(Æ~.Ôl
+lS.¯`w’º“\T¿“sR°
+MNYºšœŒt.Âè].Ãî
+¤§"‚%.Ùr«©:.ÂQŒý
+\¨ÅØfÉ.¶QÕ.ˆEˆ¥.
+.{ÉV`/)H&amp;Âè°ù.Bë
+©ˆ(FÃî¹ÕT.‡Æ¨ŒýT
+¨ÑØ.~.óÃÔÞPu Â…I·
+ÀhÓ×U!!.JÛH:ÔØRù
+ZˆM¢ïCl.¦¾™$©ˆ`‰
+Â,MH...c5ö.¢®ïc–
+.L¯Æ~÷..Df..DÓ^
+&lt;%‚_„¯¤-¾}˸šA¯I
+V‰¶·3Sð­.þ†áøzªJ
+ˆD"[n5UÇ¡1ҔíùPK
+ÃöÎë:Ã’Hª.ÞFE˜¤ëˆ
+§FÒR-FJÔ÷·.©´ù.Ö
+ƒžŠ.–HdËÂR9Uë.¡j
+öS¡V5»7ÈVGˆlՂšH
+'.]GZÓj©¼W%Ú.d+m
+¯«EKE.KldQu$©Z§Ã
+È.¢.cs.!.Â$h­Ô.Ñ
+K´‘TÚ-Õb$.®#.€¿Y
+©YÂ`‰D¶Ü(•S†Ã5û.
+Q‹.±uøÎ.²‘Ôèð­u!
+|Ô.Òº$.ÒÒY¨&amp;Ñq.‚
+M‹¿a£ë©ˆ`‰D¶Ü(UÃ
+¡1*7òT¨Õh¤w5­‡&amp;²
+õÃäü.Ñ;†.»x.;«^˜
+»š. k¤Ewò,‘È–.õë
+V.BwÂOˆºŽ³s½ŽÔ..
+·Y=îmsÀ¸.íR..ýIð
+FÒsá-U[í"‰}µËælÕ
+7ÜÈäT•.‰•ì¹ÕT.‡Â
+HãìçCÓ....úüsÂœ.
+° "8."..J¥–..l.è
+Ë7#ïÀ7‚%.éú¤Ã..Â
+Q&amp;5ÃÂ…Zj¶±}•¡–v#©
+..zŽ».|ܲ‘‹Ô‘¥8)
+ÑFô:Âß°.p*"Xb%{n
+˜Šq(Œªf?.êõcæoïS
+Æ..xâVv4.w3¾{.²£
+.®.ç&nbsp;½èv¨!Ã.À…]›
+Ñ.#.ƒÕ.‡0³Â½h¢&nbsp;Ã
+îE.4.]ËÃ.çˆ.F.²Ù
+'¨.2\o‹.2â.òއ‚6
+ûžt\`ÂŒAÂT=ž.aÚ-P
+Ã…ÃÂ&amp;S¯4Â…z$+a«.›g
+¨ö.©ÂÆ´p­.¶‘.c.c
+¦í›äÛ7¡è.T,.|t;4
+fOq1­Ó3.ôýdð&gt;2ü.
+OÂŽo.eây&amp;HÃüŒƒ..ü
+áᧀé.a‚."´Ãû.®„
+§¯Â.cxú.ÂþWÛg ûû
+£Ëa$/&lt;”ø39&lt;Ö8òó
+/^".E.›Üy.†OFdè.
+ãxh§±Ž:´.cóüà©ÂÂœ
+.Šé¢@.ëÓ1‘N¦=rj
+..}Hã©ÂÆz.[õâǜÚ
+..òÑ.6&nbsp;°.÷F»}§v8
+79µ3.×îºÉ§v†º9{j
+'Ç..H±\&gt;'uj§É•Ã4
+¡Oíôßð‘œ&amp;DhÊGŸÚ
+Éàð’&gt;µSl8'}j§1ô©
+.þ.£mRÖ.mOíäzۇÃ
+¾äz.¨Â9É!Êi."ø¤.
+‘í..Â¥jç[H"Ÿ}Ã.š|
+KY¥ª„H¬dÃ-9Â…Ca”S
+;Çü3œÚñÕÂÞc;?}
+‰x•IÂE¾³ïð.O.kÃ×
+8Gõ.ÃfÂœ}¨çð.÷°üˆ
+‘XÂygΛlâC=‡ÇØýe
+èz;ëQlé˜nCY¯ûv±ž
+°.ôFµ]ÆäÆÃƪ¬öV
+ËÞk.Õr²Ó€¬MÓ]XaÃ
+).;ê&amp;—}y£UŸÑÑû.
+.!.ÊFõ.Þâ.[”&gt;ÃãÂ
+è¢:§ÎP}†ü¦ƒíRÖ.m
+ú.oRQž.Hñx.‡ÓÃ.6
+¢ûÉFÂ’.m©È»6‰ÃóBÃŽ
+A}+‹JU.‘Xɞ[MÕq(
+Άg&lt;!òÃÃgdW.[¸·Ã
+øf3ÃØv."Âßl—.Ë/.
+Ãœ.Â’...0&gt;¹Ø.6¶.ÂÃ…
+ۈ}F§fsðc.?NÂ¥Ãæ¬
+Â4›Û×EñMA9Sïð”¤÷
+ëƒèÂwRt¸¾žÿw»:).
+²”ó.cÃ¥&lt;8Â.=­.6ÛC
+.°.b‹GÎÈ.ëQh.'É.
+Ûì:Â`ãÉÂ`.'.ÂÃW.
+¶Ù… ‡Ë.¶..&nbsp;Îò‹_d
+õñîõ..ëC¬.z‘@½ûÂ
+¦Ã•ålÃ.®±Ž.—0ìKõ
+D¿|y…Y¬±fÿBUORá
+mœƒáFï.)¸ÛµªƒÃ¶
+©qN¼Ãü–ãM·.ë£7õÿ
+«Û–Å$öÒ7&lt;¹¼“:Þ.þ
+Ëwÿ._ùCÆendstrea
+m.endobj.6 0 obj
+.15720.endobj.4
+0 obj.&lt;&lt;/Type/Pa
+ge/MediaBox [0 0
+ 595.22 842]./Ro
+tate 90/Parent 3
+ 0 R./Resources&lt;
+&lt;/ProcSet[/PDF /
+Text]./ExtGState
+ 10 0 R./Font 11
+ 0 R.&gt;&gt;./Content
+s 5 0 R.&gt;&gt;.endob
+j.3 0 obj.&lt;&lt; /Ty
+pe /Pages /Kids
+[.4 0 R.] /Count
+ 1./Rotate 90&gt;&gt;.
+endobj.1 0 obj.&lt;
+&lt;/Type /Catalog
+/Pages 3 0 R.&gt;&gt;.
+endobj.7 0 obj.&lt;
+&lt;/Type/ExtGState
+./OPM 1&gt;&gt;endobj.
+10 0 obj.&lt;&lt;/R7.7
+ 0 R&gt;&gt;.endobj.11
+ 0 obj.&lt;&lt;/R9.9 0
+ R&gt;&gt;.endobj.12 0
+ obj.&lt;&lt;/Subtype/
+Type1C/Filter/Fl
+ateDecode/Length
+ 13 0 R&gt;&gt;stream.
+xœmX.XS׺=1äœS«X
+‰)Dۄk[µÎZ­&nbsp;už..
+.‘AEÔ0.!Ì$!...ã†
+..!$@˜geÂI.gqªÕÖ
+Y«×zkg;ÃÞ×}¸›ûîÛ
+.ïðÞ»÷ûøò.9{ŸX{
+­õo.á4Žàp8.ü"¥’„
+y¾2ih.û÷\f.‡yk.ó
+67.Ōü6²Â÷6áUÃÂ.
+&amp;pÃ.§ª·¦eº0ÚÉðo“
+àé7..‡ÓùñÓõ²XE|d
+xD¢û¬=¾{ߟ3gî¿þ³
+ÈÓÓÓýÂâ.߸oÂ$D†Ç
+¸ÃÀ¿$K¢e±RILâ.÷õ
+øéèèÈÃîáъ؈.÷Ã#
+G$GØeþ¡Ñ’(÷M‘Ñ‘±
+±²d÷Yëßw_¼pá¢yøc
+ñ.÷ÂIRI¼l®{dLXdL
+d¢Â=4æˆû.©$&lt;Ô].z
+DÂn°A.™.¯p_²02æŸ
+«wFJ.%%¸Â¥ì¾Sæéî
+åî+.OŠ.Âÿ÷o.‚Xãµ
+V.s8`Ç:¥ìHàÎõ±’]
+.¼7ÆoJˆðÃÂœ.¹{KÂ’
+ßÖä¨=ÛR¢Cý·K.ÃqŸ
+7ÃÂE‹?X²ôÃ}Ë&lt;&lt;C
+–¯&amp;ˆyÄt"ˆØEl &lt;‰ù
+Ä;D0áMl$–..ˆw..b
+.±ÂxÂØL,"f.»‰™„.
+±•ø€˜Eì!¶.Kˆ÷.b
+)1›ØKx...sˆ.b.±Ž
+XFÌ%v.ë‰..‡p&amp;&amp;.o
+.“..‚OL!.ě„+±’p
+#„ÄTb.1Âp'ÖâV.N8
+„Sœ.œããxã.¹S¸.Ü¿
+:muºÌ[Îk&amp;§“5.‡RS
+Âö¡¯¾¶÷µÞñïÂ?óú’
+×ÃNð›Ã8á/.mÜUÃŽ
+×&amp;9M:&lt;é/o.}ãÄäM“
+õ.︤òÇó.¦¼9eŔU
+SvN.›¢žòGû.å›ãÞ
+\öf»«Èu™ëaׯÃüÃÂ
+ÃʅS&nbsp;љÂÀ!?Ãüâpù
+iؕ.Ë|.×.”.u¢J.q
+ÄOá.è-ä:MQ›˜‘Rà¶
+Ãö¸Âv&nbsp;69u/£T.6Ò£
+Þ.¿.lT«ÖeÒr./o#O
+Ãu&lt;ç‘0à€ÂÃÃŒ.*9#þ
+.Ã.£Î.q.Ã¥37ÃœRHtd
+4m;š‘–.œ#”à ..œR
+Úh5Ú.KÅýð5.´“Ãs¬
+±¦8&nbsp;.‚x¥Þ?—–C35ª
+Â..¤`#¤Q#ÙÉF1ÃÌ
+);‡‘1þ.4ME¶–¥§få
+fd.ijQ.¢`Q†-«.”.
+AÂ…ÃԛOÛÑ!5UŸU®5+
+!‰rÃÂŒz»´1°,.¨„@•
+襔ªã’äjÂ.ÒóuÂ…r“
+²@.èĔ”„£­ñ=7O]„
+ïž.ÃùÌÜÒÖ.K­Qˆß.
+ìÌÔ.ϧÃ.øeÃŒtA‘
+ђW.èÆbUÂ.Ã¥QÀW«.
+È¢U0ÂN..¨¬&nbsp;†ǩS
+'«­Ç.=X.½UŒ$.ðÒ(
+.هŽØ©&nbsp;Â4+.¤¡‚ú.
+äâÚýÑÊí›EÂ)C~Â"R
+뗊ßè­»Ãðš8u.¹Ìt
+¸P.¼1&lt;Ã.Ã.·.©_/
+Ü~Ò^ª.³ˆ‹’̲.E..
+ÖW;j.n.X..Â.~H..
+"Û.&gt;¢Ñ›ÂçCîÉ®²–v
+QC­£¡ù2=Ö*yÕÈ8‡.
+¿jÄkd¶.¥ËÉó9e.Â.
+TZEL8â!‘[èåÂ_$ô‚
+j!¨´›ÂÃ¥5æ¹9Ã.9u#
+»Bõ#.C.Zâ†.¡=‹ÿÂ
+™.Â…ÛªvP&gt;..3¨.v{
+]G?|.Îrû.¹..ªˆÄ.
+ç..ŠT]d.ïÊ.ÚÜ4¶
+ŧ.”‘Êrp.ùÃ.78.
+n»ñ¨ÒúqÂÃù/.ÂcÄÉ
+ÃÂÂœ&gt;¦b˜;ò!ó™`4Â.
+.išÂ0ìà1.µ®Pm.·i
+Æ.ƒ´´ô^..i0…âFóQ
+*“ÃCAròifi.XGÂΦ
+À»j¹G.^—æ&nbsp;V.(kÀ/
+43“‚.£.&lt;.é&lt;².—£.
+ötAk‡Üá.yÃ0sx9¤\
+ùmå¸8rêY¦U.Ö²È.k
+5.Âl.÷.ø'ò.¸]Õq¼
+½µò$8.ú.]ÑM҆Xë¶
+²³¥U–Ú*šßVWmïèž.
+Â..¡µ"OôBð.ôg¶«h
+¾äRBÃa¯©`Oò‘ÉQŠ
+Cú­€.R.·Ša·.†.ÿÃ
+*S±]ÔGBêjðâ•þ!óÄ
+..&nbsp;™™ÚÌa&gt;„Ó.Š.]`
+FªF)T+#Ó..ÂD$¬fÞ
+çÙÑÃT6.ë ‹ïÚíW.
+.E$rŒ¾ÃS1.)ÂŒ`]#³
+¸‘Óô.´}ŅFæ&nbsp;.½¹p
+..¡iß΀.Ãå‡ÿ‚"èº
+à{4E¬‘.ž]žƒÞF¼.›
+×..«íJ.ËΦ~†+þýÀ
+µÛ"v¯³ÌÔFNÃs˜òŒ.
+_ê.pæY^.¥ÈÃ.ـ.×
+—ô‹™Â©Ìü`e„n»R˜J
+™óŠ€.Ã.źCb´Â’´Æ
+–.ƑSó1Ú¦£)÷—Àq.
+;+.Ž‹·SÂã..†4ÂV‘
+.¯‹.´‡ßçp.ä.Þ{pn
+pŸ¿x.Àc𸅱±›.°L
+NžÃ-׃.&nbsp;ËLKW¡wP²
+.š.ãµe.Ã¥cÂŒ`+nÃ/.
+.P’‡ÂrLNÂ汩F€
+®ÈÃ.­£À.Âna.FÈe.
+µ8_m..hèOÃY0ùê—õ
+Õg0$G´U:ö­.,(?è
+såŸd.­€©¡À.K‡£Ôf
+±.t.àÃÓäTg¶-˞^©
+...;hô.5*`ä&lt;´ZNö
+.›¾k.=ºƒâËÿ.(ߢð
+®;1,1(Õ}ŒG.ôìâ`þ
+ãŽ.˜óÒa2/™ÌHNMK.
+é@eT..•.š÷.Oà.½Ã
+oã.É|ۮÂùÃKÃø^Ùö
+Âä'.yà§þ«OhEÅÚ.[
+¥.@è.vW.ìô.Œþ.@.
+.·~._ƒï]:›|¸KÔ.e
+—9¶Ñ,ÃJ˕.ç•q¾â
+rÿ.LzîÊW.3o.ŠóL&nbsp;
+.ÃÇMº}âÑ.Š?.öjµÞ
+.´’â«`f.¹&amp;OS.®Óp
+.Õv´V׃Ã7þ.è.߃o
+l|1{wHüž.ñC*#Or
+„ÆO)„³×.š/¶÷ß.\Â
+hÄ.Z³~Ÿo{³ˆ%½OaL
++¤Ú9Ì\è!.^}0f;ð.
+.›b.):.Çr®Òð*©¿¡
+kŠo•¶ï¯Ú..Ã&gt;Â…$rß
+¡Ø.À.Ÿ„;K!õýýËÂè
+.¡Gp®&nbsp;äÑñŽ«à*¨••
+.a¹OÃÎüw;ç8$™UÂä
+¿Žx.Ãnô.z.íŸ×ºð
+¼ÂxÈëő/qôÂð-è.÷
+ÿ.ó…ß.±×§ËÚç`\;õ
+ƒ~E{Ôù&nbsp;–y.½.¼5›R
+ö¦Ç+ã..#".(üÃ~p&nbsp;
+"¢eoÿÑ_pÂ…Ãpã˞.ú
+Dï`õ.ðwÞí`¾`Yæ·a
+†„.W~ùoÂ#.ëÓ4«Çä
+4.vÂÂ.&gt;víâÂË./À
+Kð•ô‘߅ß"N;z.Ãü
+rT#'..ŠÓ1!...ð£[
+JÃŒÃÃo¤Fž.=ÚÓ½. .
+&nbsp;ñ‡–-ß..㓶.ÇÓ0
+«8ÃçX»f¶r~ÅGõ.«ž
+“ M.9Z:«lº˜.QYœU
+W.è.GEM{Hý®.þ±ûã
+Äq!úðÜ.´gÔSt“.ë´
+iëYÙ*µSžFm.¸OÛÃ
+.sÊ9,ûÕ]ð4›ÔÃÃ0•
+Mê%&lt;.û.õ9å¹õà.8o
+é­½ÒÚ~.|.zÔ±M‡û
+–4Îé&lt;AåròžÞ¢.ëé
+ÑÂ.X¦×­6¼"÷ÂÂŒ*.¸
+K3ÉNü—.&amp;S.œvmß»³
+½..•¢ÎËO.½ò0.°·û
+~%\Ú)eeâ™ïàJÂÂŒ.
+DÄÃ.ô.&nbsp;cÉ .Zh0e.
+sJ@9..œO=.vM©.].
+U‰¤áP–J«Ö(eú}˜‰æ
+Ãx’¯l,*j.Ãi$&gt;;Õª
+òEt.ÉïÆïðF.q°ÿ´
+@ÿ2@J¦ƒ.«/üùG΃g
+\.3U`3.çY.]Wœ."F
+F....ÛÓpñ.vj³Qi.
+—h˜Dµöžn(*ÎԕˆÊÔ
+%.¥€®µ—7.K®Œ.ÂIÃœ
+.$þ.s§R¸Æ[.|Uä«
+ÿ'×?3.0U€“&nbsp;ÒV(T+
+pøïáð..Ùàßúßÿüÿ
+ÃãJ{hÇàÆVzU.–Ñ;4
+ÂŒÂïQO@¹Êº.S€PWÂZ
+Å,ªÔT»œ¹.=?Ã0…·à
+M.n.|‹§%srÒ.¹¹Y
+@˜.tùÚBÂŒJsRRAÜ´Â
+|.Öïn=üE°xèh[Jy.
+ˆ.†DÉ."£K«å¢äºô.
+Ã%:•ä{¡…¥”ÉRÂoÃ…|
+bË©ÉÀ.d46dUL{øñÃ
+g§.Žíj.#âcY™ª.4.
+»Z.û/5G.®.½²`ÓÎs
+î&gt;ƒ;1Â’.Ã..=ýÃÃ¥'.
+}º.|£..Q`³Nã“ñʃ
+í±d˜Ã§4.¦þ.z~¹wh
+®ý"x‰Ê4F¦Åëw§.c
+õ¼Tª Ã...ÃkÖ..ÂF
+á¾f¤ûèñúh;åS¤³âõ
+cþ€ù•Å÷ð0Ô°ø&gt;92Ó
+!Â.S,1ÇÑ!Xäv³´Ùz
+¬¡µÞÑ..@¯¦#®‰æ?ì
+–xÔÃݮ?‰šää}½E.6
+¼ª½.m.Ëúøö…šR¶ö
+ÂÔÅ|˜Ž®òàRr4˜y.à
+?l,1wÃÉC.ç.&amp;‡†ËE
+ûã"2æ䌱W.¼^.¹Up
+v.§.s˜ûKîH ü]€Ì.
+²7ۚmÕÛӋ.ÃA.}HE
+íŒ]–Ä$Üù]ã×}Ģ
+¾Ãk.·ÀE0(?.Þ,+‹­
+ÛI×Âz.ÃŽK"3ä.u2ÃÂ
+T£ÂtÀ¾ß|.#j.–Ñ™è
+àû.k.z‹onúA.ÇÂç.
+Nnëj£a...[K‡.igØ
+‚­À„VÎg¸%fL.30·X
+rÂ."CzFºA'ñ;.œš¥
+5d.@&amp;ÈÎË1æÃçÃyrY
+óÃ˃µg‰4%ÉñJ].
+.†©.®‹á‰_(¼%nôõa
+Î÷xËõ¬MYàÇSa.aÃ/
+Ã+.ÂÚ±ƒ¥¢ÀzÂv.ËJ
+:;µµPoa‹.©.˜,ˆML
+”ɪ..›jª›..kb°:
+§©JncvTÃ9Ã.·ŸCõ/
+®üAf7fÿd2+Q«Uâäñ
+.`.³…™£ÀA.¢&lt;...­
+..{ʾÃÃÉûŽäì¡:I
+±¦0.$Ã|ՖÀýë.{]€
+΢DÂ’?،"xÕdžÃj³
+.Ì5Y.C§ªK߅e„zñø
+ק~7ÂÛmñô¡Ã&gt;pž¾Ã
+ÓyídÂ&lt;¼MÔ.e‹+óÆÇ
+ôÕø4Ø.;.œß‡áÅa.”
+@$À..Ü))yh¾¢EN=
+4”hÿA–º´•ì.nqPkŠ
+0ÂŒnÓð.¼ˆöþ§oXÂüï
+» ÿ1G8Ä.ÊÕ6—ÛÃà¦
+g¬§I8-È$÷k±}ƒ?Pü
+‡h±’¼–mÕÂ@.Â¥Q@–©
+Vkc“¢Ó¤€&gt;.u¼GÌ?.
+.£.jêT¶M.öÓ¨ÂúèT
+ÀÃÂŽ.e..¢Þ^ž.UÂsº
+²½äŒM8ÆÙÌÂ=.hÂٙ
+F.Ãh6.&gt;Ôj=ØhO:(Ã
+.u)Kúæó.$Aµ¢.£k
+É.¸Š7z•Ì@«xµd-äÔ
+8&nbsp;.ÖR̸¯, …7£X.]
+£I[–ýjªð4¦ŽÉ.Îû®
+­ô.ëÊNË©/^Ùxœ4³.
+O‘q¬.Šñ.™m×.9Ãåè
+²t³ÂÕí=XÂœa˶Âbì.
+KLmF&lt;G.¨¨Î.“®ÿ]8
+.u¹åg..F}‘¢H_.Š€
+©ÔÞ.§À{nM·ŠLÃFú.
+IyÚ8O±.Œp..°y.@.
+³h‚Å£É.؛½žÕ.ÂÂ
+JÉ;ÂœÂu®M.½(èŽv.³
+ò³ó³ÂÙB³Î˜.2éôôŒ
+4‘\.cìdˆ1Ú.z.Ãþ
+nM.·?¹Ößd.Ú.lùXµ
+ÃvtPMžÈ-É.j&nbsp;OW«Ó
+°kwvc&lt;¨¬|IZŒÞ'U(
+Õ³ó96”#.ÎoÃð¯}\.
+2V..¶–=µàâ¨äÔ£Œ²
+$0“FØÎn6HR¥±ÃÛ£×
+€. ¨6v@Ñjè`ÂÃÃ1.
+}Ψ]N=ÎÀ0ZG£..Z
+ûÄ.®‚œûm·Nˆj{ŠûÃ
+CVDÔÂÌßpƒ6à.µ0§.
+ànIÉ.vLë’SO_­.=L
+.HKŽSg˜ë."][jY.Ö
+ì¤ÄØÃné.$®Þ“Y¯?
+Ö­[¸[*ê¸Ãb.J&nbsp;ÊHÃ
+Æ.BñnË`¢²..P*.Õ%
+¦..îUˆŠêȲj+÷˜ä&amp;
+y‘b!.v›.mY–..°.A
+•Õ|¼.?µEEÕä˜uÕ.p
+.úÞÃ*5«‹°.˜K­õر
+.ܾFZ[XAF..š@aqY
+..‹~r«è1.VâW¼¢'Î
+Âø.Üß"²$Ú‡.›V‹
+.ûâ8.ìQk¼2q‡µvÊ«
+ Ã..ÃÃŒw¸.{•.Ã&amp;åØ
+T?ĸպt|¹éKøÎ.Wþ
+·ÌÎO.JuZ¦.É.[Ÿ.
+âS|6³IU›Ô~ÃáÂÂÒÃ
+ykƒ¼.+Sjj«*«.r.s
+Mâœâ\30Ñ.­Õ]ƒ.1{
+D;)4‡RPBó¿MJQG
+.ÂêÕ.rµ¯»êìUQáފ
+änp.'ßÖI£..€èÌô
+ä´.µ,=.Ã.²ã½â.Ìæ
+Ãípb.=6èŒLtpFv°ƒ
+U¨œ¼Â]¡.2ÂjˆM“¢™
+£\74.~}ô®..úBà°Y
+Øê$ÃÆ.V.95ˆ.«ÞÅ
+0w´ßÃNÂxfèØ㒒SF
+ῆ¶7†¹Ì¢.WÂ5×..
+@sÂŽU.R@R¢Ô/.mDKÃ
+`(õO¨t°À´jþ!ÂÚWÓ
+›ƒZÉ^ÂÜ¥á.ª¾ê¿¦
+?Xs~.H..µÚ ËÃ.Z0
+v½0ä&nbsp;öæ©-._"54ºA
+_è}ëF™ùV¡ÃÂp.G.ø
+˜¾}–óü.ôb¸.fº&nbsp;Ô
+hfotê‹SƒÅ¨ˆm¥jw.
+ne¼ÂòÃW•€.4l£@¾Ù
+b2ÕÕô–·.º¯:...).
+vkµ¾¬.%Ú)ß&lt;U9¸FÃ
+Bª¹÷XE?&nbsp;/UÄzˆQ8.
+|õz..~Hf§âò¥ùš.p
+B..Qpü‘+«|.â|öˆ.
+—".ö€. S{xÑ÷)C~€
+&lt;Rë§b¯Ÿt­Ìë×9Ÿ&gt;ƒ
+)_rἑ•‚ÌüPU¬~ŸF
+.Ã:™¢¼.`.tWqz¨x´
+ŒŠþâèçÃm.ŽƒïÀI«¿
+›¹Ó'&lt;(Eäïtb&nbsp;ýì£Ó
++‘3â.o÷Ü{&nbsp;¦.ûª«&nbsp;
+..ÂÂùŸpa&gt;&lt;Âçé­P
+†b?±Pö.Â’ÃØ­Øã.1
+éBÿëœ.Ã"ð‚¹×ñ90Â
+É?.¤ñqÑ1uñM-õuM-
+qõR&lt;n´¨«FÞ®äÀ.,¯
+[H¤øë&amp;Þ-.§&nbsp;®.q©ç
+Ôþ.K`%ÀCà.B•a.&gt;
+»%ˆ.è5€8ÇÃk.»;BÃŽ
+$.Â3&nbsp;·¼½mèB'.ˆàD
+.†.„@®¢ì8󓈇$
+H.â¾tiÈïð.ÂŒ8.¹ÃÃ…
+cÔË‘ù°ÂÂê¶,ä©)
+kaIAA~…©¼.³pU±*J
+Ì^$.Õ'¦¦«ÒÕÙ¡l{›
+ìÔGy©.pŠf^²¢..05
+÷8ðëç\F.ß.h.Ã|5é
+.€.éIø.ÜðâÛ..À#á
+ÃË.¾ã·7ép˜(*R.¥Ü
+P•éÖõc{맀~vÉwÙÊ
+ýó—-.£Mȇ—ÆLeweF
+¯¸À;Â%w\ùçà&lt;øGÃe
+P“S›Nó«®%ÂðÃ4u™ï
+¶µ±)¦Ú0‘´Bib/#Uê
+äˆÞ¤Ã.&gt;®ï...t×.Â
+›àLê@LKJµÜ.â&nbsp;ùç&gt;
+.¨ë8?õÉö‹..C”Qá"
+i¬*.i—=Ë­ûîÉc×.}
+ãdˆW¸*&lt;&gt;^,•ÊT›.Æ
+ä©.Îø˜Y‰ÛÓÿÂËDã1
+â=Æ'„D7G}xÛáq´â!
+\1L¡-..„.ø.{÷Ê
+|þ˜.G&gt;ã­Ìç..@–Â
+‚|£©ó…[ºI•¬ËLÆő
+ˆƒt¹9 .ä.3.²Ã­]
+.M·.Raçv€YôœÂkV¦
+(MÕRQTM¢..OŒ:-^2
+ÂpÿÙ†3§Åý'«.Â.à
+Ž¼?ðtHŸo.._Å.«nd
+œú9Ç¿…._q.ߑ5.Dê
+|äë..±Ê.‘.M.K.&gt;è
+.ì.9Ÿp.›­7ž¹zÊ
+º'ˆ.I6H¼Ä.p.ft..
+ª§Ñ!tBðüôz4.Â;²s
+ã.{¾ƒ.Θ.+í⪲–â
+6ÖTü.·é.=P&gt;.Z¤.Ù
+Ä毯bîÜã0{0'Ž’¤7
+šY®ï½UQz..¡”DA£ß
+ònÂ0bd:o,æ.çF—‹.
+6ރ²Oý.¸ò_À^†Â®þ
+§sm=·¦&gt;]e&amp;â,ß²p
+›#æÃ.Dü.ˆðLŠÞ&lt;uö
+ãÃÂ.'&lt;üäׇ‘ƒhâW"
+Å»‚»{kÃÃnzÛÂ.ÛV.
+.ýéãꞡ.ÑàC¼×â¡ð
+þ‹S‡Nv_¿Õ.²ÉWvÀW
+"ÊÌ. +›-.Ôõ2NÂϾ
+o&nbsp;á%÷r’.:•^pÜ.üí
+ÃUø.€Óhè¹.¾†.èõÅ
+3Ã4ä|g9$.ô”uŸ..B
+Ë.×.ãáe8".)YéÚ
+tYB˜&amp;.ëƒïÃ×/•]©
+ª.—W֕4.úO'—¢ÂØs
+‡&amp;Ÿæ°Ÿ‚Ó£Ù¬@j!.
+æA..¾Å„ü;C äôï¬Ã
+xëgúš9·^4üÞò..f
+C.AÉÃò®ŽÂþ‹.تZ.
+KÛA7èÔ´'ÖD´y×ì.ô
+‚Â;&lt;.—'µÔ–—×Ú2»
+rqš-³.˜éÖþæÃ+§ü·
+ì×ø%ø‰dÛåAº&nbsp;Ü.¡e
+›@š˜..SÂÔÜZSÃÃœ._
+‡'ƒ”JÆ¿.úUÂ’Ãã¿x½
+Ù&lt;aÂ...&amp;.Äÿ.˜¤Qå
+.endstream.endob
+j.13 0 obj.6288.
+endobj.9 0 obj.&lt;
+&lt;/BaseFont/JWWMR
+W+Times-Roman/Fo
+ntDescriptor 8 0
+ R/Type/Font./Fi
+rstChar 32/LastC
+har 122/Widths[.
+250 0 0 0 0 0 0
+0 0 0 0 564 0 33
+3 250 278.500 50
+0 500 500 500 50
+0 500 500 500 50
+0 278 0 0 0 0 44
+4.0 722 667 667
+722 611 556 722
+722 333 389 722
+611 889 722 722.
+556 0 667 556 61
+1 722 722 0 722
+722 0 0 278 0 0
+500.0 444 500 44
+4 500 444 333 0
+500 278 0 500 27
+8 778 500 500.50
+0 0 333 389 278
+500 500 722 0 50
+0 444]./Encoding
+/WinAnsiEncoding
+/Subtype/Type1&gt;&gt;
+.endobj.8 0 obj.
+&lt;&lt;/Type/FontDesc
+riptor/FontName/
+JWWMRW+Times-Rom
+an/FontBBox[-9 -
+218 863 688]/Fla
+gs 4./Ascent 688
+./CapHeight 688.
+/Descent -218./I
+talicAngle 0./St
+emV 129./Missing
+Width 250./CharS
+et(/four/L/A/y/n
+/c/X/five/M/B/z/
+o/d/Y/six/N/C/p/
+e/backslash/seve
+n/O/D/f/eight/P/
+E/r/nine/F/s/h/u
+nderscore/colon/
+R/G/t/i/S/H/u/T/
+I/v/k/U/J/w/l/a/
+V/K/m/b/question
+/plus/space/hyph
+en/period/slash/
+zero/one/two/thr
+ee)/FontFile3 12
+ 0 R&gt;&gt;.endobj.2
+0 obj.&lt;&lt;/Produce
+r(GPL Ghostscrip
+t 8.15)./Creatio
+nDate(D:20060306
+202537)./ModDate
+(D:2006030620253
+7)./Title(Protel
+ Schematic)./Cre
+ator(PScript5.dl
+l Version 5.2)./
+Author(Rob Brown
+)&gt;&gt;endobj.xref.0
+ 14.0000000000 6
+5535 f .00000160
+59 00000 n .0000
+023490 00000 n .
+0000015990 00000
+ n .0000015826 0
+0000 n .00000000
+15 00000 n .0000
+015805 00000 n .
+0000016107 00000
+ n .0000023068 0
+0000 n .00000226
+03 00000 n .0000
+016148 00000 n .
+0000016178 00000
+ n .0000016208 0
+0000 n .00000225
+82 00000 n .trai
+ler.&lt;&lt; /Size 14
+/Root 1 0 R /Inf
+o 2 0 R./ID [(¯Ì
+®.ýÜ/«s\)1¨Ãúsû)
+(¯Ì®.ýÜ/«s\)1¨Ãú
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000106: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:02.6562500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x1e bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 73 FB 29 5D 0A 3E 3E 0A 73 74 61 72 74 78 72 65
+ 66 0A 32 33 36 37 38 0A 25 25 45 4F 46 0A</pre></td>
+<td class="st0200ff" valign="top"><pre>sû)].&gt;&gt;.startxre
+f.23678.%%EOF.</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000107: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2812500 +0.6250000
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000108: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2812500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 1D 00 00 00 09 30 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....0..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000109: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x30 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 30 00 00 00 02 00 01 98 1D 00 00 00 10 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+</pre></td>
+<td class="st0200ff" valign="top"><pre>0......˜........
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000110: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1D 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000111: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1E 00 00 00 02 DC 00 00
+ 09 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000112: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 1E 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000113: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1E 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000114: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1F 00 00 00 4F DC 00 00
+ 09 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000115: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 1F 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000116: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1F 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000117: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.2968750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 20 00 00 00 41 DC 00 00
+ 09 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜ ...AÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000118: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 20 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜ ...AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000119: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 20 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000120: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 21 00 00 00 08 30 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜!....0..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000121: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x30 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 30 00 00 00 02 00 01 98 21 00 00 00 10 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+</pre></td>
+<td class="st0200ff" valign="top"><pre>0......˜!.......
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000122: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 21 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... !...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000123: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 22 00 00 00 02 DC 00 00
+ 08 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜"....Ü..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000124: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 22 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜"....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000125: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 22 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... "...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000126: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 23 00 00 00 4F DC 00 00
+ 08 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜#...OÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000127: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3125000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 23 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜#...OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000128: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 23 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... #...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000129: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 24 00 00 00 41 DC 00 00
+ 08 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜$...AÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000130: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 24 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜$...AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000131: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 24 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... $...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000132: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 25 00 00 00 01 B9 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜%....¹..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000133: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x32 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 32 00 00 00 02 00 01 98 25 00 00 00 11 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+ 99 DE</pre></td>
+<td class="st0200ff" valign="top"><pre>2......˜%.......
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+™Þ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000134: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 25 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... %...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000135: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 26 00 00 00 02 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&amp;....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000136: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 26 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&amp;....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000137: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 26 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... &amp;...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000138: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 27 00 00 00 4F DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜'...OÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000139: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3281250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 27 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜'...OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000140: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 27 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... '...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000141: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 28 00 00 00 41 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜(...AÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000142: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 28 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜(...AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000143: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 28 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... (...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000144: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 29 00 00 00 01 30 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜)....0..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000145: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 01 98 29 00 00 00 0B 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 05 DC 07 DC 08 DC 0B DC
+ 41 DC 4F DC 44 DC</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜).......
+.Ü.Ü.Ü.Ü.Ü.Ü.Ü.Ü
+AÜOÜDÜ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000146: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 29 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... )...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000147: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 2A 00 00 00 02 DC 00 00
+ 01 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜*....Ü..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000148: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 2A 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜*....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000149: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 2A 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... *...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000150: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 2B 00 00 00 4F DC 00 00
+ 01 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜+...OÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000151: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3437500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 2B 00 00 00 4F DC 02 00
+ 01 00 08 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜+...OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000152: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 2B 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... +...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000153: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 2C 00 00 00 41 DC 00 00
+ 01 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜,...AÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000154: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 2C 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜,...AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000155: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 2C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ,...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000156: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 2D 00 00 00 02 DC 00 00
+ 00 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜-....Ü..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000157: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 2D 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜-....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000158: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 2D 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... -...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000159: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 2E 00 00 00 41 DC 00 00
+ 00 30 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....AÜ..
+.0..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000160: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 2E 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜....AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000161: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 2E 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000162: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3593750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x20 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 20 00 00 00 01 00 05 98 2F 00 00 00 01 40 00 00
+ 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre> ......˜/....@..
+....ÿÿÿÿ........
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000163: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3750000 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xb7 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> B7 00 00 00 02 00 05 98 2F 00 00 00 09 00 00 00
+ 01 40 00 00 01 DC 06 00 01 00 01 00 01 40 00 00
+ 02 DC 04 00 00 30 01 40 00 00 03 DC 04 00 00 00
+ 01 40 00 00 04 DC 08 00 12 5E 00 00 00 00 00 00
+ 01 40 00 00 07 DC FF FF 0D 4B 00 53 00 30 00 36
+ 00 30 00 33 00 30 00 36 00 2E 00 70 00 64 00 66
+ 00 00 00 01 40 00 00 08 DC FF FF 0F 32 00 30 00
+ 30 00 33 00 31 00 31 00 30 00 38 00 54 00 30 00
+ 39 00 32 00 33 00 34 00 30 00 01 40 00 00 0B DC
+ 06 00 00 00 00 00 01 40 00 00 41 DC 0A 00 00 00
+ 00 00 12 5E 00 00 F2 35 00 00 35 03 00 00 01 40
+ 00 00 4F DC 02 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>·......˜/.......
+.@...Ü.......@..
+.Ü...0.@...Ü....
+.@...Ü...^......
+.@...Üÿÿ.K.S.0.6
+.0.3.0.6...p.d.f
+....@...Üÿÿ.2.0.
+0.3.1.1.0.8.T.0.
+9.2.3.4.0..@...Ü
+.......@..AÜ....
+...^..ò5..5....@
+..OÜ...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000164: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3906250 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 2F 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... /...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000165: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3906250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 05 10 30 00 00 00 01 00 01 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>........0.......
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000166: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3906250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x4a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 4A 00 00 00 02 00 05 10 30 00 00 00 03 00 02 00
+ 00 00 00 00 F4 3C 00 00 00 00 00 00 0D 3C 00 00
+ 00 00 FF FF FF FF 11 49 00 6E 00 74 00 65 00 72
+ 00 6E 00 61 00 6C 00 20 00 53 00 74 00 6F 00 72
+ 00 61 00 67 00 65 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>J.......0.......
+....ô&lt;.......&lt;..
+..ÿÿÿÿ.I.n.t.e.r
+.n.a.l. .S.t.o.r
+.a.g.e....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000167: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:03.3906250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 30 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 0...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000168: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:25.5625000 +22.1718750
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 0B 10 31 00 00 00 01 40 00 00
+ 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>........1....@..
+....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000169: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:25.6406250 +0.0781250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 31 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 1...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000170: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +10.8906250
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 32 00 00 00 01 B9 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜2....¹..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000171: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x32 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 32 00 00 00 02 00 01 98 32 00 00 00 11 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+ 99 DE</pre></td>
+<td class="st0200ff" valign="top"><pre>2......˜2.......
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+™Þ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000172: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 32 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 2...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000173: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 33 00 00 00 01 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜3....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000174: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 33 00 00 00 01 DC 06 00
+ 00 00 00 00 00 01 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜3....Ü..
+..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000175: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 33 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 3...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000176: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 34 00 00 00 02 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜4....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000177: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5312500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 34 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜4....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000178: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 34 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 4...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000179: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 35 00 00 00 03 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜5....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000180: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 35 00 00 00 03 DC 04 00
+ 00 00 00 40 00 00 00 02 02 00 00 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜5....Ü..
+...@..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000181: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 35 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 5...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000182: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 36 00 00 00 04 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜6....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000183: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 36 00 00 00 04 DC 08 00
+ 00 00 00 00 00 00 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜6....Ü..
+..............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000184: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 36 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 6...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000185: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 37 00 00 00 07 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜7....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000186: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 37 00 00 00 07 DC FF FF
+ 00 00 04 00 00 00 05 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜7....Üÿÿ
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000187: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 37 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 7...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000188: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5468750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 38 00 00 00 08 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜8....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000189: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 38 00 00 00 08 DC FF FF
+ 01 00 40 00 00 00 03 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜8....Üÿÿ
+..@.....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000190: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 38 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 8...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000191: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 39 00 00 00 0B DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜9....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000192: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 39 00 00 00 0B DC 06 00
+ 00 00 00 00 00 40 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜9....Ü..
+.....@....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000193: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 39 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... 9...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000194: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 3A 00 00 00 41 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜:...AÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000195: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 3A 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜:...AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000196: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 3A 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... :...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000197: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5625000 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 3B 00 00 00 4F DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜;...OÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000198: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 3B 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜;...OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000199: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 3B 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ;...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000200: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 3C 00 00 00 9A DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&lt;...šÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000201: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 3C 00 00 00 9A DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&lt;...šÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000202: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 3C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... &lt;...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000203: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 3D 00 00 00 46 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜=...FÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000204: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 3D 00 00 00 46 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜=...FÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000205: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 3D 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... =...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000206: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 3E 00 00 00 93 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&gt;...“Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000207: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5781250 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x34 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 34 00 00 00 02 00 02 98 3E 00 00 00 93 DE 06 00
+ 00 00 00 00 00 80 00 00 00 02 06 00 40 1F 00 00
+ 80 3E 00 00 22 56 00 00 00 7D 00 00 44 AC 00 00
+ 80 BB 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>4......˜&gt;...“Þ..
+.....€......@...
+€&gt;.."V...}..D¬..
+€»..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000208: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 3E 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... &gt;...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000209: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 3F 00 00 00 94 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜?...”Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000210: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 3F 00 00 00 94 DE 04 00
+ 00 00 00 80 00 00 00 02 02 00 01 00 02 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜?...”Þ..
+...€..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000211: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 3F 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ?...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000212: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 40 00 00 00 9A DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜@...šÞ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000213: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 40 00 00 00 9A DE 06 00
+ 00 00 00 00 00 80 00 00 00 01 88 13 00 00 B0 8F
+ 06 00 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜@...šÞ..
+.....€....ˆ...°Â
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000214: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 40 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... @...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000215: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 41 00 00 00 44 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜A...DÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000216: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 41 00 00 00 44 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜A...DÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000217: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 41 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... A...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000218: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.5937500 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 42 00 00 00 89 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜B...‰Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000219: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6093750 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 42 00 00 00 89 DC 06 00
+ 01 00 00 00 00 80 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜B...‰Ü..
+.....€....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000220: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 42 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... B...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000221: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6093750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 43 00 00 00 99 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜C...™Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000222: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0x28 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 28 00 00 00 02 00 02 98 43 00 00 00 99 DE 06 00
+ 00 00 00 00 00 20 00 00 00 02 03 00 60 01 00 00
+ 61 01 00 00 30 01 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>(......˜C...™Þ..
+..... ......`...
+a...0...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000223: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6093750 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 43 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... C...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000224: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6093750 +0.0
+</span>Pipe Handle: 0x898c8ba4
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 05 10 44 00 00 00 01 00 01 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>........D.......
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000225: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6250000 +0.0156250
+</span>Pipe Handle: 0x898c8b84
+Get 0x4a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 4A 00 00 00 02 00 05 10 44 00 00 00 03 00 02 00
+ 00 00 00 00 F4 3C 00 00 00 00 00 80 0D 3C 00 00
+ 00 00 FF FF FF FF 11 49 00 6E 00 74 00 65 00 72
+ 00 6E 00 61 00 6C 00 20 00 53 00 74 00 6F 00 72
+ 00 61 00 67 00 65 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>J.......D.......
+....ô&lt;.....€.&lt;..
+..ÿÿÿÿ.I.n.t.e.r
+.n.a.l. .S.t.o.r
+.a.g.e....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000226: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:36.6250000 +0.0
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 44 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... D...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000227: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:55.1718750 +18.5468750
+</span>Pipe Handle: 0x898c8ba4
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 0F 10 45 00 00 00 01 00 01 00
+ 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>........E.......
+....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000228: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:57.0625000 +1.8906250
+</span>Pipe Handle: 0x898c8b84
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 45 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... E...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000229: PnP Event: Surprise Removal (UP), 12.09.2006 21:06:57.1875000 +0.1250000
+</span>The USB device has just been disconnected from the system.</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000230: Bulk or Interrupt Transfer (UP), 12.09.2006 21:06:57.2187500 +0.0312500
+</span>Pipe Handle: 0x898c8ba4
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 03 10 46 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>........F...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000231: Class-Specific Request (DOWN), 12.09.2006 21:06:57.2187500 +0.0
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 4C F5 73 00 00 00 00 00
+ 67 A1 01 00 44 00 72 00 69 00 76 00 65 00 72 00
+ 7B 00 37 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...Lõs.....
+g¡..D.r.i.v.e.r.
+{.7.</pre></td></tr></tbody></table>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000232: Class-Specific Request (UP), 12.09.2006 21:06:57.7343750 +0.5156250
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 4C F5 73 00 00 00 00 00
+ 67 A1 01 00 44 00 72 00 69 00 76 00 65 00 72 00
+ 7B 00 37 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...Lõs.....
+g¡..D.r.i.v.e.r.
+{.7.</pre></td></tr></tbody></table>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000233: Class-Specific Request (DOWN), 12.09.2006 21:06:57.7343750 +0.0
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 33
+Request: 0x66
+Value: 0x0
+Send 0x0 bytes to the device</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000234: Class-Specific Request (UP), 12.09.2006 21:06:58.2500000 +0.5156250
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 33
+Request: 0x66
+Value: 0x0
+Send 0x0 bytes to the device</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000235: Class-Specific Request (DOWN), 12.09.2006 21:06:59.2500000 +1.0
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 BC F4 73 00 00 00 00 00
+ 67 A1 01 7C 00 00 01 00 00 00 02 00 00 00 04 00
+ 04 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...¼ôs.....
+g¡.|............
+....</pre></td></tr></tbody></table>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000236: Class-Specific Request (UP), 12.09.2006 21:06:59.2812500 +0.0312500
+</span>Destination: Inrterface, Index 0
+Reserved Bits: 161
+Request: 0x67
+Value: 0x0
+Get 0x24 bytes from the device</p>
+<p class="st0200ff"></p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 00 00 00 00 24 00 00 00 BC F4 73 00 00 00 00 00
+ 67 A1 01 7C 00 00 01 00 00 00 02 00 00 00 04 00
+ 04 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....$...¼ôs.....
+g¡.|............
+....</pre></td></tr></tbody></table>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000237: PnP Event: Device Disconnected (UP), 12.09.2006 21:06:59.4062500 +0.1250000
+</span>The USB device has just been removed from the system, all drivers unloaded.</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000238: PnP Event: Query ID (UP), 12.09.2006 21:07:03.1250000 +3.7187500
+</span>Hardware IDs: USB\Vid_0930&amp;Pid_0011&amp;Rev_0100, USB\Vid_0930&amp;Pid_0011</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000239: PnP Event: Query ID (UP), 12.09.2006 21:07:03.1250000 +0.0
+</span>Compatible IDs: USB\MS_COMP_MTP, USB\Class_ff&amp;SubClass_00&amp;Prot_50, USB\Class_ff&amp;SubClass_00, USB\Class_ff</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000240: Get Descriptor Request (DOWN), 12.09.2006 21:07:03.1250000 +0.0
+</span>Descriptor Type: Device
+Descriptor Index: 0x0
+Transfer Buffer Size: 0x12 bytes
+</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000241: Control Transfer (UP), 12.09.2006 21:07:03.1250000 +0.0
+</span>Pipe Handle: 0x89a36260
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 12 01 00 02 00 00 00 40 30 09 11 00 00 01 01 02
+ 03 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......@0.......
+..</pre></td></tr></tbody></table>
+<p class="st0000ff">Setup Packet</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 80 06 00 01 00 00 12 00</pre></td>
+<td class="st0200ff" valign="top"><pre>€.......</pre></td></tr></tbody></table>
+<p class="st0000ff">Recipient: Device
+Request Type: Standard
+Direction: Device-&gt;Host
+Request: 0x6 (GET_CONFIGURATION)
+Value: 0x100
+Index: 0x0
+Length: 0x12</p>
+<p class="st0000ff"><span class="st0100ff">000242: Get Descriptor Request (DOWN), 12.09.2006 21:07:03.1250000 +0.0
+</span>Descriptor Type: Configuration
+Descriptor Index: 0x0
+Transfer Buffer Size: 0x9 bytes
+</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000243: Control Transfer (UP), 12.09.2006 21:07:03.1250000 +0.0
+</span>Pipe Handle: 0x89a36260
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 09 02 27 00 01 01 04 80 FA</pre></td>
+<td class="st0200ff" valign="top"><pre>..'....€ú</pre></td></tr></tbody></table>
+<p class="st0000ff">Setup Packet</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 80 06 00 02 00 00 09 00</pre></td>
+<td class="st0200ff" valign="top"><pre>€.......</pre></td></tr></tbody></table>
+<p class="st0000ff">Recipient: Device
+Request Type: Standard
+Direction: Device-&gt;Host
+Request: 0x6 (GET_CONFIGURATION)
+Value: 0x200
+Index: 0x0
+Length: 0x9</p>
+<p class="st0000ff"><span class="st0100ff">000244: Get Descriptor Request (DOWN), 12.09.2006 21:07:03.1250000 +0.0
+</span>Descriptor Type: Configuration
+Descriptor Index: 0x0
+Transfer Buffer Size: 0x27 bytes
+</p>
+<p class="st0200ff"></p>
+<p class="st0000ff"><span class="st0100ff">000245: Control Transfer (UP), 12.09.2006 21:07:03.1250000 +0.0
+</span>Pipe Handle: 0x89a36260
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 09 02 27 00 01 01 04 80 FA 09 04 00 00 03 FF 00
+ 50 05 07 05 81 02 00 02 00 07 05 02 02 00 02 00
+ 07 05 83 03 40 00 10</pre></td>
+<td class="st0200ff" valign="top"><pre>..'....€ú.....ÿ.
+P...Â...........
+..ƒ.@..</pre></td></tr></tbody></table>
+<p class="st0000ff">Setup Packet</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 80 06 00 02 00 00 27 00</pre></td>
+<td class="st0200ff" valign="top"><pre>€.....'.</pre></td></tr></tbody></table>
+<p class="st0000ff">Recipient: Device
+Request Type: Standard
+Direction: Device-&gt;Host
+Request: 0x6 (GET_CONFIGURATION)
+Value: 0x200
+Index: 0x0
+Length: 0x27</p>
+<p class="st0000ff"><span class="st0100ff">000246: Select Configuration (DOWN), 12.09.2006 21:07:03.1250000 +0.0
+</span>Configuration Index: 1
+</p>
+<p class="st0000ff"><span class="st0100ff">000247: Select Configuration (UP), 12.09.2006 21:07:03.3125000 +0.1875000
+</span>Configuration Index: 1
+Configuration Handle: 0x88bc18d8</p>
+<p class="st0000ff"><span class="st0100ff">000248: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:03.8281250 +0.5156250
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 02 10 00 00 00 00 01 00 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000249: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +8.2968750
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000250: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 04 10 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000251: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x14 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 02 00 04 10 01 00 00 00 01 00 00 00
+ 01 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000252: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000253: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 05 10 02 00 00 00 01 00 01 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>................
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000254: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x4a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 4A 00 00 00 02 00 05 10 02 00 00 00 03 00 02 00
+ 00 00 00 00 F4 3C 00 00 00 00 00 80 0E 3C 00 00
+ 00 00 FF FF FF FF 11 49 00 6E 00 74 00 65 00 72
+ 00 6E 00 61 00 6C 00 20 00 53 00 74 00 6F 00 72
+ 00 61 00 67 00 65 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>J...............
+....ô&lt;.....€.&lt;..
+..ÿÿÿÿ.I.n.t.e.r
+.n.a.l. .S.t.o.r
+.a.g.e....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000255: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1250000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 02 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000256: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1406250 +0.0156250
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0xc bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 01 00 01 10 03 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000257: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1406250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x159 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 59 01 00 00 02 00 01 10 03 00 00 00 64 00 06 00
+ 00 00 64 00 30 6D 00 69 00 63 00 72 00 6F 00 73
+ 00 6F 00 66 00 74 00 2E 00 63 00 6F 00 6D 00 3A
+ 00 20 00 31 00 2E 00 30 00 3B 00 20 00 6D 00 69
+ 00 63 00 72 00 6F 00 73 00 6F 00 66 00 74 00 2E
+ 00 63 00 6F 00 6D 00 2F 00 57 00 4D 00 44 00 52
+ 00 4D 00 50 00 44 00 3A 00 20 00 31 00 30 00 2E
+ 00 31 00 00 00 00 00 24 00 00 00 01 10 02 10 03
+ 10 04 10 05 10 06 10 07 10 08 10 09 10 0B 10 0C
+ 10 0D 10 14 10 15 10 16 10 02 98 01 98 03 98 04
+ 98 05 98 06 98 08 98 01 91 02 91 03 91 04 91 05
+ 91 06 91 07 91 08 91 09 91 0A 91 0B 91 0F 10 F1
+ 97 F2 97 02 00 00 00 02 40 03 40 02 00 00 00 01
+ D1 02 D1 00 00 00 00 05 00 00 00 09 30 08 30 01
+ B9 01 30 00 30 09 54 00 4F 00 53 00 48 00 49 00
+ 42 00 41 00 20 00 00 00 11 67 00 69 00 67 00 61
+ 00 62 00 65 00 61 00 74 00 20 00 20 00 20 00 20
+ 00 20 00 20 00 20 00 20 00 00 00 0E 25 00 4F 00
+ 55 00 54 00 5F 00 50 00 41 00 44 00 3A 00 31 00
+ 32 00 38 00 25 00 00 00 10 34 00 30 00 30 00 32
+ 00 46 00 39 00 44 00 31 00 36 00 34 00 31 00 32
+ 00 38 00 34 00 41 00 30 00</pre></td>
+<td class="st0200ff" valign="top"><pre>Y...........d...
+..d.0m.i.c.r.o.s
+.o.f.t...c.o.m.:
+. .1...0.;. .m.i
+.c.r.o.s.o.f.t..
+.c.o.m./.W.M.D.R
+.M.P.D.:. .1.0..
+.1.....$........
+................
+..........˜.˜.˜.
+˜.˜.˜.˜.‘.‘.‘.‘.
+‘.‘.‘.‘.‘.‘.‘..ñ
+—ò—.....@.@.....
+Ñ.Ñ.........0.0.
+¹.0.0.T.O.S.H.I.
+B.A. ....g.i.g.a
+.b.e.a.t. . . .
+. . . . ....%.O.
+U.T._.P.A.D.:.1.
+2.8.%....4.0.0.2
+.F.9.D.1.6.4.1.2
+.8.4.A.0.</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000258: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 03 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000259: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 04 00 00 00 01 B9 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....¹..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000260: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x32 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 32 00 00 00 02 00 01 98 04 00 00 00 11 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+ 99 DE</pre></td>
+<td class="st0200ff" valign="top"><pre>2......˜........
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+™Þ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000261: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 04 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000262: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 05 00 00 00 01 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000263: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 05 00 00 00 01 DC 06 00
+ 00 00 00 00 00 01 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000264: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 05 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000265: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 06 00 00 00 02 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000266: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 06 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000267: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 06 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000268: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1562500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 07 00 00 00 03 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000269: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 07 00 00 00 03 DC 04 00
+ 00 00 00 40 00 00 00 02 02 00 00 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+...@..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000270: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 07 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000271: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 08 00 00 00 04 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000272: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 08 00 00 00 04 DC 08 00
+ 00 00 00 00 00 00 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+..............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000273: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 08 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000274: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 09 00 00 00 07 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000275: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 09 00 00 00 07 DC FF FF
+ 00 00 04 00 00 00 05 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000276: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 09 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000277: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0A 00 00 00 08 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000278: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 0A 00 00 00 08 DC FF FF
+ 01 00 40 00 00 00 03 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+..@.....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000279: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0A 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000280: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0B 00 00 00 0B DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000281: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 0B 00 00 00 0B DC 06 00
+ 00 00 00 00 00 40 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.....@....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000282: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0B 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000283: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0C 00 00 00 41 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....AÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000284: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 0C 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜....AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000285: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000286: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0D 00 00 00 4F DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000287: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 0D 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000288: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.1875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0D 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000289: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0156250
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0E 00 00 00 9A DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....šÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000290: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 0E 00 00 00 9A DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....šÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000291: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0E 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000292: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 0F 00 00 00 46 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....FÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000293: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 0F 00 00 00 46 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....FÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000294: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 0F 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000295: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 10 00 00 00 93 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....“Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000296: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x34 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 34 00 00 00 02 00 02 98 10 00 00 00 93 DE 06 00
+ 00 00 00 00 00 80 00 00 00 02 06 00 40 1F 00 00
+ 80 3E 00 00 22 56 00 00 00 7D 00 00 44 AC 00 00
+ 80 BB 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>4......˜....“Þ..
+.....€......@...
+€&gt;.."V...}..D¬..
+€»..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000297: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 10 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000298: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2031250 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 11 00 00 00 94 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....”Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000299: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 11 00 00 00 94 DE 04 00
+ 00 00 00 80 00 00 00 02 02 00 01 00 02 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....”Þ..
+...€..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000300: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 11 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000301: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 12 00 00 00 9A DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....šÞ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000302: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 12 00 00 00 9A DE 06 00
+ 00 00 00 00 00 80 00 00 00 01 88 13 00 00 B0 8F
+ 06 00 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜....šÞ..
+.....€....ˆ...°Â
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000303: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 12 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000304: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 13 00 00 00 44 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....DÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000305: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 13 00 00 00 44 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....DÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000306: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 13 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000307: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2343750 +0.0156250
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 14 00 00 00 89 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....‰Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000308: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2343750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 14 00 00 00 89 DC 06 00
+ 01 00 00 00 00 80 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....‰Ü..
+.....€....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000309: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2343750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 14 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000310: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2343750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 15 00 00 00 99 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....™Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000311: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2343750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x28 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 28 00 00 00 02 00 02 98 15 00 00 00 99 DE 06 00
+ 00 00 00 00 00 20 00 00 00 02 03 00 60 01 00 00
+ 61 01 00 00 30 01 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>(......˜....™Þ..
+..... ......`...
+a...0...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000312: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:12.2343750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 15 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000313: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +5.4218750
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x10 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 10 00 00 00 01 00 01 98 16 00 00 00 01 B9 00 00
+</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....¹..
+</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000314: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x32 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 32 00 00 00 02 00 01 98 16 00 00 00 11 00 00 00
+ 01 DC 02 DC 03 DC 04 DC 07 DC 08 DC 0B DC 41 DC
+ 4F DC 9A DC 46 DC 93 DE 94 DE 9A DE 44 DC 89 DC
+ 99 DE</pre></td>
+<td class="st0200ff" valign="top"><pre>2......˜........
+.Ü.Ü.Ü.Ü.Ü.Ü.ÜAÜ
+OܚÜFܓޔޚÞD܉Ü
+™Þ</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000315: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 16 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000316: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 17 00 00 00 01 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000317: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 17 00 00 00 01 DC 06 00
+ 00 00 00 00 00 01 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000318: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 17 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000319: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6562500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 18 00 00 00 02 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000320: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 18 00 00 00 02 DC 04 00
+ 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000321: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 18 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000322: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 19 00 00 00 03 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000323: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 19 00 00 00 03 DC 04 00
+ 00 00 00 40 00 00 00 02 02 00 00 00 01 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+...@..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000324: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 19 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000325: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1A 00 00 00 04 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000326: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 1A 00 00 00 04 DC 08 00
+ 00 00 00 00 00 00 00 00 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+..............</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000327: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1A 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000328: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1B 00 00 00 07 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000329: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6718750 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 1B 00 00 00 07 DC FF FF
+ 00 00 04 00 00 00 05 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000330: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1B 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000331: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1C 00 00 00 08 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000332: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x18 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 18 00 00 00 02 00 02 98 1C 00 00 00 08 DC FF FF
+ 01 00 40 00 00 00 03 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Üÿÿ
+..@.....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000333: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1C 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000334: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1D 00 00 00 0B DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000335: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 1D 00 00 00 0B DC 06 00
+ 00 00 00 00 00 40 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜.....Ü..
+.....@....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000336: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1D 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000337: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1E 00 00 00 41 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....AÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000338: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 1E 00 00 00 41 DC 0A 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 04 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜....AÜ..
+................
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000339: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1E 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000340: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.6875000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 1F 00 00 00 4F DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000341: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1b bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1B 00 00 00 02 00 02 98 1F 00 00 00 4F DC 02 00
+ 01 00 10 00 00 00 02 02 00 00 01</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜....OÜ..
+...........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000342: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 1F 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000343: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 20 00 00 00 9A DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜ ...šÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000344: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 20 00 00 00 9A DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜ ...šÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000345: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 20 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... ...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000346: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 21 00 00 00 46 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜!...FÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000347: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 21 00 00 00 46 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜!...FÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000348: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 21 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... !...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000349: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7031250 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 22 00 00 00 93 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜"...“Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000350: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x34 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 34 00 00 00 02 00 02 98 22 00 00 00 93 DE 06 00
+ 00 00 00 00 00 80 00 00 00 02 06 00 40 1F 00 00
+ 80 3E 00 00 22 56 00 00 00 7D 00 00 44 AC 00 00
+ 80 BB 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>4......˜"...“Þ..
+.....€......@...
+€&gt;.."V...}..D¬..
+€»..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000351: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 22 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... "...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000352: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 23 00 00 00 94 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜#...”Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000353: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1e bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1E 00 00 00 02 00 02 98 23 00 00 00 94 DE 04 00
+ 00 00 00 80 00 00 00 02 02 00 01 00 02 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜#...”Þ..
+...€..........</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000354: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 23 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... #...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000355: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 24 00 00 00 9A DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜$...šÞ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000356: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x26 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 26 00 00 00 02 00 02 98 24 00 00 00 9A DE 06 00
+ 00 00 00 00 00 80 00 00 00 01 88 13 00 00 B0 8F
+ 06 00 01 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>&amp;......˜$...šÞ..
+.....€....ˆ...°Â
+......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000357: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 24 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... $...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000358: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 25 00 00 00 44 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜%...DÜ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000359: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7187500 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x17 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 17 00 00 00 02 00 02 98 25 00 00 00 44 DC FF FF
+ 01 00 10 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜%...DÜÿÿ
+.......</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000360: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7343750 +0.0156250
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 25 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... %...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000361: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7500000 +0.0156250
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 26 00 00 00 89 DC 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&amp;...‰Ü..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000362: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7500000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x1a bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 1A 00 00 00 02 00 02 98 26 00 00 00 89 DC 06 00
+ 01 00 00 00 00 80 00 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜&amp;...‰Ü..
+.....€....</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000363: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7500000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 26 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... &amp;...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000364: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7500000 +0.0
+</span>Pipe Handle: 0x897f5bfc (Endpoint Address: 0x2)
+Send 0x14 bytes to the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 14 00 00 00 01 00 02 98 27 00 00 00 99 DE 00 00
+ 01 B9 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>.......˜'...™Þ..
+.¹..</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000365: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7500000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0x28 bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 28 00 00 00 02 00 02 98 27 00 00 00 99 DE 06 00
+ 00 00 00 00 00 20 00 00 00 02 03 00 60 01 00 00
+ 61 01 00 00 30 01 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>(......˜'...™Þ..
+..... ......`...
+a...0...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+<p class="st0000ff"><span class="st0100ff">000366: Bulk or Interrupt Transfer (UP), 12.09.2006 21:07:17.7500000 +0.0
+</span>Pipe Handle: 0x897f5bdc (Endpoint Address: 0x81)
+Get 0xc bytes from the device:</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="st0200ff" valign="top"><pre> 0C 00 00 00 03 00 01 20 27 00 00 00</pre></td>
+<td class="st0200ff" valign="top"><pre>....... '...</pre></td></tr></tbody></table>
+<p class="st0000ff"></p>
+</pre></body></html> \ No newline at end of file
diff --git a/logs/mtp-detect-archos-5-v1.txt b/logs/mtp-detect-archos-5-v1.txt
new file mode 100644
index 0000000..fe897c9
--- /dev/null
+++ b/logs/mtp-detect-archos-5-v1.txt
@@ -0,0 +1,693 @@
+~/usr/bin/mtp-detect
+libmtp version: 0.3.7-cvs
+
+Listing raw device(s)
+Found 1 device(s):
+Archos: 5 (MTP mode) - 1 (0e79:1331) @ bus 0, dev 29
+Attempting to connect device(s)
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 0
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 0e79
+idProduct: 1331
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Raw device info:
+Bus location: 0
+Device number: 29
+Device entry info:
+Vendor: Archos
+Vendor id: 0x0e79
+Product: 5 (MTP mode) - 1
+Vendor id: 0x1331
+Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+0020: 0000 0000 0000 0000 ........
+Device info:
+Manufacturer: ARCHOS
+Model: Archos 5
+Device version: 1.6.03
+Serial number: U7NK88G3T989P8
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+Detected object size: 64 bits
+Supported operations:
+9101: Get secure time challenge
+9102: Get secure time response
+9103: Set license response
+9104: Get sync list
+9105: Send meter challenge query
+9106: Get meter challenge
+9107: Get meter response
+9108: Clean data store
+9109: Get license state
+1001: get device info
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+1017: Reset device property value
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+100f: Format storage
+1010: Reset device
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+100c: Send object info
+100d: Send object
+100b: Delete object
+1019: Move object
+101a: Copy object
+9801: Get object properties supported
+9802: Get object property description
+9803: Get object property value
+9804: Set object property value
+9805: Get object property list
+9806: Set object property list
+9807: Get interdependent property description
+9808: Send object property list
+9810: Get object references
+9811: Set object references
+101b: Get partial object
+9201: Report Added/Deleted Items
+Events supported:
+0x4001
+0x4004
+0x4005
+0x400a
+Device Properties Supported:
+0xd101: Secure Time
+0xd102: Device Certificate
+0x5001: Battery Level
+0xd401: Synchronization Partner
+0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+3000: Undefined Type
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+3009: MP3
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1000, MAX 327680,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+b901: WMA
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+3008: MS Wave
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 64000, MAX 3072000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, READ
+ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+b903: AAC
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 255, READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+300a: MS AVI
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ
+ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, 85, 353,
+READ ONLY
+de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 5120000,
+STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 1482049860,
+808802372, 1395937357, 1145656920, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 8192000,
+STEP 1 READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6,
+7, GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX
+30000, STEP 1 GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+b981: WMV
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ
+ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, 85, 353,
+READ ONLY
+de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 10240000,
+STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911,
+GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 13312000,
+STEP 1 READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6,
+7, GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX
+30000, STEP 1 GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+300c: ASF
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ
+ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, 85, 353,
+READ ONLY
+de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 10240000,
+STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911,
+1482049860, 808802372, 1395937357, 1145656920, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 13312000,
+STEP 1 READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6,
+7, GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX
+30000, STEP 1 GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+300b: MPEG
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ
+ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 80, READ ONLY
+de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 10240000,
+STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 826757197,
+843534413, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 13312000,
+STEP 1 READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6,
+7, GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX
+30000, STEP 1 GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+b982: MP4
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ
+ONLY
+dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1
+READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000,
+STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 255, READ ONLY
+de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 5120000,
+STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 875967048,
+1129726276, 826496577, 875967064, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 8192000,
+STEP 1 READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6,
+7, GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX
+30000, STEP 1 GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+3801: JPEG
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+3808: JFIF
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+3804: BMP
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+380b: PNG
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ba03: Abstract Audio Album
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc81: RepresentativeSampleFormat UINT16 data type enumeration:
+14337, GET/SET
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX
+1024, STEP 1 READ ONLY
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX
+1024, STEP 1 READ ONLY
+dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX
+-1, STEP 1 GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ba05: Abstract Audio Video Playlist
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+3001: Association/Directory
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770,
+32771, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+dc09: DateModified STRING data type DATETIME FORM READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc42: SyncID STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+Storage Devices:
+StorageID: 0x00010001
+StorageType: 0x0003 fixed RAM storage
+FilesystemType: 0x0002 generic hierarchical
+AccessCapability: 0x0000 read/write
+MaxCapacity: 59709652992
+FreeSpaceInBytes: 59337244672
+FreeSpaceInObjects: 4294967295
+StorageDescription: Internal Hard Drive
+VolumeIdentifier: (null)
+Special directories:
+Default music folder: 0x0000001d
+Default playlist folder: 0x00000066
+Default picture folder: 0x0000002b
+Default video folder: 0x00000068
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x00000000
+Default text folder: 0x00000000
+MTP-specific device properties:
+Friendly name: Archos 5
+Synchronization partner: (NULL)
+Battery level 3 of 3 (100%)
+libmtp supported (playable) filetypes:
+ISO MPEG-1 Audio Layer 3
+Microsoft Windows Media Audio
+RIFF WAVE file
+Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+Audio Video Interleave
+Microsoft Windows Media Video
+Microsoft Advanced Systems Format
+MPEG video stream
+MPEG-4 Part 14 Container Format (Audio+Video Emphasis)
+JPEG file
+JFIF file
+BMP bitmap file
+Portable Network Graphics
+Abstract Album file
+Abstract Playlist file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080428
+05:40:39Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">AAAAAAAAAAAAAAAAA</UNIQUEID><PUBLICKEY
+private="1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</PUBLICKEY><KEYDATA>AAAAAAAAAAAAAAAAAAAAAA</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>AAAAAAAAAAAAAAAAAAAAAA</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.110.51</SECURITYVERSION><CERTIFICATE
+private="1">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>606H</NAME>
+<MANUFACTURER>Archos</MANUFACTURER>
+<MAKE>606H</MAKE>
+<DISTRIBUTOR>Archos</DISTRIBUTOR>
+<MODEL>606H</MODEL>
+<SECURITYLEVEL>2000</SECURITYLEVEL>
+<HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+<HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+<FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+<FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+<FEATURES>
+<CLOCK>2</CLOCK>
+<SECURECLOCK>
+<URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+<PUBLICKEY>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</PUBLICKEY>
+</SECURECLOCK>
+<METERING>1</METERING>
+<LICENSE_ACQ>1</LICENSE_ACQ>
+<LICENSE_SYNC>1</LICENSE_SYNC>
+<ENCRYPTION>1</ENCRYPTION>
+<SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+<SUPPORT_REVOCATION>
+<GUID>{AAAAAAAAAAAAAAAAAAAA}</GUID>
+</SUPPORT_REVOCATION>
+</FEATURES>
+<LIMITS>
+<MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+<MAXLICENSESIZE>10240</MAXLICENSESIZE>
+<MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2455</AUTH_ID><PUBLICKEY>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-archos-5.txt b/logs/mtp-detect-archos-5.txt
new file mode 100644
index 0000000..fef58a1
--- /dev/null
+++ b/logs/mtp-detect-archos-5.txt
@@ -0,0 +1,12 @@
+Device 0 (VID=0e79 and PID=1333) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+usb_claim_interface(): Device or resource busy
+LIBMTP PANIC: Unable to initialize device
+Unable to open raw device 0
+libmtp version: 0.3.1
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0e79:1333 @ bus 0, dev 20
+Attempting to connect device(s)
+OK.
diff --git a/logs/mtp-detect-archos-a504.txt b/logs/mtp-detect-archos-a504.txt
new file mode 100644
index 0000000..acc32c3
--- /dev/null
+++ b/logs/mtp-detect-archos-a504.txt
@@ -0,0 +1,561 @@
+libmtp version: 0.1.5
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0e79
+ idProduct: 1307
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: ARCHOS
+ Model: a504
+ Device version: 1.6.20
+ Serial number: C5B8X71AC13UGG
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+Supported operations:
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 1001: get device info
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 100f: Format storage
+ 1010: Reset device
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1019: Move object
+ 101a: Copy object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1000, MAX 327680, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 64000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 255, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, 85, 353, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 5120000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1482049860, 808802372, 1395937357, 1145656920, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 8192000, STEP 1 READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX 30000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, 85, 353, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 10240000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 13312000, STEP 1 READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX 30000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, 85, 353, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 10240000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1482049860, 808802372, 1395937357, 1145656920, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 13312000, STEP 1 READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX 30000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 300b: MPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 10240000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 826757197, 843534413, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 13312000, STEP 1 READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX 30000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 720, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 576, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX -1, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 255, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 10240, MAX 5120000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 875967048, 1129726276, 826496577, 875967064, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 10240, MAX 8192000, STEP 1 READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1, MAX 30000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 8192, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1024, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1024, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX -1, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 79818866688
+ FreeSpaceInBytes: 67965894656
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal HardDisk
+ VolumeIdentifier: HKA540AMC8R3LL
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x0000006a
+ Default picture folder: 0x00000014
+ Default video folder: 0x0000007c
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000118
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Battery level 0 of 3 (0%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Audio Video Interleave
+ Microsoft Windows Media Video
+ Microsoft Advanced Systems Format
+ MPEG video stream
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ JPEG file
+ JFIF file
+ BMP bitmap file
+ Portable Network Graphics
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060522 12:13:29Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">C5B8X71AC13UGG</UNIQUEID><PUBLICKEY private="1">efVfIxK3Munlf5HdwwNFJc3e1Wa2t0dyzhgNjXJ2KK8Jv1E0e/L4QQ==</PUBLICKEY><KEYDATA>VXUlmdHQSU+hy+q8cUn04bcfezw=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>3VHCHxifwOjtdNIMFeNItuMZqHGgjnhQxy9PXKw7s5xybRzIjPkTGQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>jyVXx/t+NOmMmdIRqYDTpRXF4/E=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.115</SECURITYVERSION><CERTIFICATE private="1">efVfIxK3Munlf5HdwwNFJc3e1Wa2t0dyzhgNjXJ2KK8Jv1E0e/L4QQIEaHPMNpKrP09P1Me4nkx7VPHPjxreU0o3RQK1hdL9mYjQi195ibK8BOJg</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>A504</NAME>
+ <MANUFACTURER>Archos</MANUFACTURER>
+ <MAKE>A504</MAKE>
+ <DISTRIBUTOR>Archos</DISTRIBUTOR>
+ <MODEL>A504</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>7KiDPsl9CZB/GYmnMNp4uy50pTCLEvjNZSrm2QajhPAQPli1ccLhNQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/edeqZJclq5G6KuHDjMjcPU9NHeT9bbFYGCkBn1GQVhc9pKBWqZKaQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>983</AUTH_ID><PUBLICKEY>2KqzhyuwjFtjObyu99qx/Z9IYEbxvz+r4Cnui049xqxMHCdPDwYDJg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>fKmq5LLr+r7rGhA3M4hE8BV8+GLeV7K09RUbofEYTdJ9iI1D2Q7kIw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>l5TRtNPfdxdretk8bTlY1XGiaFmaevtJuwErqrwpXL82hScj6cjlDg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{4287E9BD-3B39-4BFD-A5AD-FFDCB8B796C8}" RelationshipID="{6870ED09-423F-4172-94B4-FE3AF8069649}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-archos-xs100.txt b/logs/mtp-detect-archos-xs100.txt
new file mode 100644
index 0000000..7b029f8
--- /dev/null
+++ b/logs/mtp-detect-archos-xs100.txt
@@ -0,0 +1,270 @@
+libmtp version: 0.1.5
+
+Attempting to connect device(s)
+Clearing stall on IN endpoint
+Clearing stall on OUT endpoint
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0e79
+ idProduct: 1207
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: ARCHOS
+ Model: GminiXS100
+ Device version: 2.2.02
+ Serial number: FLKMAUF5T26D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.0; microsoft.com/WMPPD: 10.0;
+Supported operations:
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 1001: get device info
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 100f: Format storage
+ 1010: Reset device
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1019: Move object
+ 101a: Copy object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT16 data type ANY 16BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 24000, 32000, 44100, 48000, 64000, 88200, 96000, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 32768, MAX 327680, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT16 data type ANY 16BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 44100, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 192000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT16 data type ANY 16BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 64000, MAX 3072000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1024, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1024, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00100001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4013948928
+ FreeSpaceInBytes: 957349888
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal HardDisk
+ VolumeIdentifier: 55P060EYB0F
+Special directories:
+ Default music folder: 0x00010aea
+ Default playlist folder: 0x00013753
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Battery level 3 of 3 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070508 22:36:32Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">FLKMAUF5T26D</UNIQUEID><PUBLICKEY private="1">C6T0O4YiV1Syf44QgH6rbWEvQIJnJmcWIh4cDOpRT25WFXx44tK3RA==</PUBLICKEY><KEYDATA>TWfNxwNlkYXcOTQbFLW3Rn9nIAM=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>v+i6rrtZWJNG43nTNc1GyQY+eD6z0XgqBJNGqWkFDYEp4lCaj+wAKA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>VFN0PggxNcYVvLaq2xaV0v4wwm0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.189</SECURITYVERSION><CERTIFICATE private="1">C6T0O4YiV1Syf44QgH6rbWEvQIJnJmcWIh4cDOpRT25WFXx44tK3RAIEZr3RRxksnJvewfLyatdCDaMVprlYPYMo/abttSM8WCb1bloyYI1Rpq97</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>GminiXS100</NAME>
+ <MANUFACTURER>Archos</MANUFACTURER>
+ <MAKE>GminiXS100</MAKE>
+ <DISTRIBUTOR>Archos</DISTRIBUTOR>
+ <MODEL>GminiXS100</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>6</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>2</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>5kaA1WqQfBLdeXSUTteJz8br+zQUWhRVzcnpnTtPSMooEZ2T8k0NCw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>TkIj0q4kQAcQJed6fhgjyPHqzBotfz9ttDERew6IsiViZxsyJ5s9Uw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>545</AUTH_ID><PUBLICKEY>9fhV2ah1sQS39/CSjL1zl9UashRlzQqFQfUdi3IHdxG0dP7Ut73VSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Jq35cUiQ6fyyDy01ltFcRtSSKQ95wmjPs67dvh3zl9Un83XSBjS9Rw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ZE56AqYNoyP38mdJVHUx7J6kWjGCP6n1KcB+6LwRxcDhdPPL2trRGA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{DEE8BBA0-88E0-48A4-BFC1-925579726803}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-cowon-iaudio-d2.txt b/logs/mtp-detect-cowon-iaudio-d2.txt
new file mode 100644
index 0000000..12ac908
--- /dev/null
+++ b/logs/mtp-detect-cowon-iaudio-d2.txt
@@ -0,0 +1,458 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0e21
+ idProduct: 0801
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: COWON SYSTEMS, Inc.
+ Model: COWON D2
+ Device version:
+ Serial number: 02230D0010862FDD707091508191B737
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;microsoft.com/WMPPD: 10.0;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: RevocationInfo
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ 3804: BMP
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, 60000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, 60000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b903: AAC
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, 60000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SETUnknown OPFF type 6
+
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3996581888
+ FreeSpaceInBytes: 0
+ FreeSpaceInObjects: 8998
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 02230D0010862FDD707091508191B737
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ JPEG file
+ BMP bitmap file
+ Audio Video Interleave
+ Microsoft Windows Media Video
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+
+
+Device Certificate:
+ <?xml version="1.0" encoding="unicode" ?> <Test> <Description> Faked device certificate </Description> </Test>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-cowon-iaudio-d2plus.txt b/logs/mtp-detect-cowon-iaudio-d2plus.txt
new file mode 100644
index 0000000..d2569fc
--- /dev/null
+++ b/logs/mtp-detect-cowon-iaudio-d2plus.txt
@@ -0,0 +1,526 @@
+# mtp-detect
+libmtp version: 0.3.7
+
+Listing raw device(s)
+Found 1 device(s):
+Cowon: iAudio D2+ (MTP mode) (0e21:0861) @ bus 0, dev 21
+Attempting to connect device(s)
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 0
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 0e21
+idProduct: 0861
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Raw device info:
+Bus location: 0
+Device number: 21
+Device entry info:
+Vendor: Cowon
+Vendor id: 0x0e21
+Product: iAudio D2+ (MTP mode)
+Vendor id: 0x0861
+Device flags: 0x00000006
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: 0100 ..
+Device info:
+Manufacturer: COWON SYSTEMS, Inc.
+Model: COWON D2 2.02
+Device version: 2.02
+Serial number: 0273F000A5EFDD792090410133609071
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;microsoft.com/WMPPD: 10.0;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;audible.com: 1.0;
+Detected object size: 64 bits
+Supported operations:
+1001: get device info
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+100b: Delete object
+100c: Send object info
+100d: Send object
+100f: Format storage
+1010: Reset device
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+9810: Get object references
+9811: Set object references
+9802: Get object property description
+9801: Get object properties supported
+9803: Get object property value
+9804: Set object property value
+9805: Get object property list
+9806: Set object property list
+101b: Get partial object
+9201: Report Added/Deleted Items
+9202: Report Acquired Items
+9101: Get secure time challenge
+9102: Get secure time response
+9103: Set license response
+9104: Get sync list
+9105: Send meter challenge query
+9106: Get meter challenge
+9107: Get meter response
+9108: Clean data store
+9109: Get license state
+910a: Send WMDRM-PD Command
+910b: Send WMDRM-PD Request
+9170: Open Media Session
+9171: Close Media Session
+9172: Get Next Data Block
+9173: Set Current Time Position
+9180: Send Registration Request
+9181: Get Registration Response
+9182: Get Proximity Challenge
+9183: Send Proximity Response
+9184: Send WMDRM-ND License Request
+9185: Get WMDRM-ND License Response
+Events supported:
+0x4004
+0x4005
+Device Properties Supported:
+0xd405: Device Icon
+0xd100: Unknown property
+0x5001: Battery Level
+0xd401: Synchronization Partner
+0xd402: Friendly Device Name
+0xd101: Secure Time
+0xd102: Device Certificate
+0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+3001: Association/Directory
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc9a: AlbumName STRING data type GET/SET
+3009: MP3
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+b901: WMA
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+3008: MS Wave
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+b904: Audible.com Codec
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+da01: unknown(da01) STRING data type GET/SET
+da04: unknown(da04) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+3801: JPEG
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+3804: BMP
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+300a: MS AVI
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, 60000, GET/SET
+de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc8c: Genre STRING data type GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+b981: WMV
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, 60000, GET/SET
+de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc8c: Genre STRING data type GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 128000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+b903: AAC
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+300c: ASF
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, 60000, GET/SET
+de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc8c: Genre STRING data type GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+3001: Association/Directory
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc9a: AlbumName STRING data type GET/SET
+ba05: Abstract Audio Video Playlist
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+3000: Undefined Type
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+b802: Firmware
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ba03: Abstract Audio Album
+dc44: Name STRING data type GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+Storage Devices:
+StorageID: 0x00010001
+StorageType: 0x0003 fixed RAM storage
+FilesystemType: 0x0002 generic hierarchical
+AccessCapability: 0x0000 read/write
+MaxCapacity: 3996581888
+FreeSpaceInBytes: 21168128
+FreeSpaceInObjects: 10355
+StorageDescription: Internal Storage
+VolumeIdentifier: 0273F000A5EFDD792090410133609071
+StorageID: 0x00020001
+StorageType: 0x0004 removable RAM storage
+FilesystemType: 0x0002 generic hierarchical
+AccessCapability: 0x0000 read/write
+MaxCapacity: 16096690176
+FreeSpaceInBytes: 345276416
+FreeSpaceInObjects: 11112
+StorageDescription: External Storage
+VolumeIdentifier: 1273F000A5EFDD792090410133609071
+Special directories:
+Default music folder: 0x20000006
+Default playlist folder: 0x00000000
+Default picture folder: 0x20000003
+Default video folder: 0x20000005
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x00000000
+Default text folder: 0x20000007
+MTP-specific device properties:
+Friendly name: COWON D2 2.02
+Synchronization partner: Longhorn Sync Engine
+Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ISO MPEG-1 Audio Layer 3
+Microsoft Windows Media Audio
+RIFF WAVE file
+Audible.com Audio Codec
+JPEG file
+BMP bitmap file
+Audio Video Interleave
+Microsoft Windows Media Video
+Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+Microsoft Advanced Systems Format
+Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20090503
+10:36:14Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">AnPwAKXv3XkgkEEBM2CQcQAAAAA=</UNIQUEID><PUBLICKEY
+private="1">FocgXnNjh3yjRT7aMhsJXS9JlhBNybR+M0F0C2ki1zHjSz1PI8/lFQ==</PUBLICKEY><KEYDATA>KQ6TsBwEpX86TWal0a/uCsjRLno=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>NG6lq1S5sNGgtBRlqT+9v0fCYH/gECTNQNqXRtkkQBktn5IA1VMrUA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>imRLUBTdYwr/wuCdJ5pYee5ysRo=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.27</SECURITYVERSION><CERTIFICATE
+private="1">FocgXnNjh3yjRT7aMhsJXS9JlhBNybR+M0F0C2ki1zHjSz1PI8/lFQIEaxtY2ogHvahilwVek+LHriDlf4tNGUWnE4kIf0bVWrd0Pd5HeEZ90h2H</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>COWON D2</NAME><MANUFACTURER>COWON Systems,
+Inc.</MANUFACTURER><MAKE>COWON Systems, Inc.</MAKE><DISTRIBUTOR>COWON
+Systems, Inc.</DISTRIBUTOR><MODEL>COWON
+D2</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>nqh5lLdQUwb/0yQ9y3+cUH+Qg2XeitjH+HPqmIt1wGvt8KuMCXeLgg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>RtHy/phLBjyBu6k4EBx1W4S3K1GZJMlR9XnsLYMShOuiOU3NWzoyWA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1663</AUTH_ID><PUBLICKEY>5FiLcleC03a+pIcQA/uDrHgsHW1t2t9dQM9IhYTm5iHJdLD9RsGsBw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dwo25uJJdhF215IfA6swRGEL+yzu+ZUjSyuVJI1rqRCK+y2lZgthWg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>q02PxB6SylsBhUa00Ul6rmqr+yVsLERU3MNfHbdn+XaSzbEEhynAgg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+inep: usb_get_endpoint_status(): Connection timed out
+outep: usb_get_endpoint_status(): Connection timed out
+usb_clear_halt() on IN endpoint: Connection timed out
+usb_clear_halt() on OUT endpoint: Connection timed out
+usb_clear_halt() on INTERRUPT endpoint: Connection timed out
+OK.
diff --git a/logs/mtp-detect-cowon-iaudio-s9.txt b/logs/mtp-detect-cowon-iaudio-s9.txt
new file mode 100644
index 0000000..2daf05c
--- /dev/null
+++ b/logs/mtp-detect-cowon-iaudio-s9.txt
@@ -0,0 +1,535 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ Cowon: iAudio S9 (MTP mode) (0e21:0901) @ bus 0, dev 14
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0e21
+ idProduct: 0901
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 14
+ Device entry info:
+ Vendor: Cowon
+ Vendor id: 0x0e21
+ Product: iAudio S9 (MTP mode)
+ Vendor id: 0x0901
+ Device flags: 0x00000006
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: COWON SYSTEMS, Inc.
+ Model: COWON S9 2.30
+ Device version: 2.30
+ Serial number: 0500001E55504F600923221615144F60
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;microsoft.com/WMPPD: 10.0;audible.com: 1.0;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 9808: Send object property list
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd405: Device Icon
+ 0xd100: Unknown property
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ b904: Audible.com Codec
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ da00: Unknown property UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, GET/SET
+ da02: Unknown property UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: Unknown property UINT16 data type enumeration: 0, 1, READ ONLY
+ da01: Unknown property STRING data type GET/SET
+ da04: Unknown property array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ b301: Unknown(b301)
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ da00: Unknown property UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, GET/SET
+ da02: Unknown property UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: Unknown property UINT16 data type enumeration: 0, 1, READ ONLY
+ da01: Unknown property STRING data type GET/SET
+ da04: Unknown property array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ 3004: Text
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ de97: Scan Depth UINT16 data type enumeration: 1, READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type enumeration: GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ de97: Scan Depth UINT16 data type enumeration: 1, READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type enumeration: GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 128000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ b903: AAC
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ de97: Scan Depth UINT16 data type enumeration: 1, READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type enumeration: GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc9b: Album Artist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 16466681856
+ FreeSpaceInBytes: 6320701440
+ FreeSpaceInObjects: 22075
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0500001E55504F600923221615144F60
+Special directories:
+ Default music folder: 0x20000009
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x20000008
+ Default video folder: 0x2000000b
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: COWON S9 1.06
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ JPEG file
+ Text file
+ Audio Video Interleave
+ Microsoft Windows Media Video
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ Abstract Playlist file
+ Firmware file
+ Abstract Album file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20081119 33:11:26Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">BQAAHlVQT2AJIyIWFRRPYAAAAAA=</UNIQUEID><PUBLICKEY private="1">sCWeVOSyhU9SsrhNn0RDZiIi01IPwgp+5CuyVCrzMvtsKmjHGP+MVA==</PUBLICKEY><KEYDATA>ce70G5QheuTSvE+ROSSWQqC1TIg=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>c9Md3PBgUZ5eN5R9EEa2TdQwEDnz9PCHWrbVLnf9kUFTAm4cDDAlFw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>tHEYk19vY8WEkFEfCISKn3TCbM4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.129</SECURITYVERSION><CERTIFICATE private="1">sCWeVOSyhU9SsrhNn0RDZiIi01IPwgp+5CuyVCrzMvtsKmjHGP+MVAIEb4EYq0t06yvgB7K9WUwi5RBuXUwmIamgqVAB293k8iJ5n2lhnVEiG85o</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>COWON S2</NAME><MANUFACTURER>COWON Systems, Inc.</MANUFACTURER><MAKE>COWON Systems, Inc.</MAKE><DISTRIBUTOR>COWON Systems, Inc.</DISTRIBUTOR><MODEL>COWON S2</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>Uia74XlSFZP/vIWcUyuPcw+WShhaHQPC6ktBj4yh32mjGbqJTtjbEA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>m5gTS8gHUdCuyYUphEm1GW7jLHp98rzYOaP7IlCiVZdjNPoI+sc/hA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2789</AUTH_ID><PUBLICKEY>R5tgyUdDpnrCugiDYIt9/kkJMBSp/Edx9AZtERAYqbnbIMMPRDqwBg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>s3jIdQu6rdrxkJPtIbM4ew74rhr3kIQsZQbnx2aKFCu0mkfrxqk9LA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>T+ZNpPcH8Ply2VOGMBdEkeBMpQ0PBC5vE4LMw4cg4n98aZ7nEnHXVg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-cowon-iaudio-u3.txt b/logs/mtp-detect-cowon-iaudio-u3.txt
new file mode 100644
index 0000000..6ed4629
--- /dev/null
+++ b/logs/mtp-detect-cowon-iaudio-u3.txt
@@ -0,0 +1,260 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0e21
+ idProduct: 0701
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: COWON SYSTEMS, Inc.
+ Model: iAUDIO U3
+ Device version:
+ Serial number: 070709180728009DC10000E04CC34BD9
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b901: WMA
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3801: JPEG
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 300a: MS AVI
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b802: Firmware
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1998856192
+ FreeSpaceInBytes: 1909501789
+ FreeSpaceInObjects: 3463
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 070709180728009DC10000E04CC34BD9
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: iAUDIO U3
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ JPEG file
+ Audio Video Interleave
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20050214
+21:55:58Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">BwcJGAcoAJ3BAADgTMNL2QAAAAA=</UNIQUEID><PUBLICKEY
+private="1">vfDhBXaNQlRRG9V5abU1/R9SpHrjc86jupyGALap5seg4jzOPxGVUw==</PUBLICKEY><KEYDATA>1vX7YOqtS1Lk9Wlmmf/wqZGHtFc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>pbyIv5wY9kKwgq4FwJfu+7DEelOM3PTbAe62illRcG+gR7ak+xKVGQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>DexHP/w29hVmYtDW4IsxKRLiMNk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.169</SECURITYVERSION><CERTIFICATE
+private="1">vfDhBXaNQlRRG9V5abU1/R9SpHrjc86jupyGALap5seg4jzOPxGVUwIEZqlU4PbfqA5uknmVVe6QWGzKbu9KXKnl+lLy5PzubzdMQB+1Q7gVEB5K</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>iAudio U3 MTP</NAME><MANUFACTURER>COWON
+Systems, Inc.</MANUFACTURER><MAKE>COWON Systems,
+Inc.</MAKE><DISTRIBUTOR>COWON Systems, Inc.</DISTRIBUTOR><MODEL>iAudio
+U3</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>3</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>2</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>Ap4rKQEBTuHQZBBcYMqOgcraBkqKHTUXl8pbRIx+quIq0aLccpXZXA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hUe6hoIHQ8Ub6S10Sf7QJQxBfxwWbatdyxZADUvnav5ghZLNv4J9Rg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>525</AUTH_ID><PUBLICKEY>+hVWeQQEOLQH8QxQghdd5Cnb1zcHSQR2HLVlTTInXNFKBkSn9bC4Mg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>cXGlAjnUI7m/AFKFGx/zGf8SYyge+bGSW2S5NwkuBnCRJkDUcpY5XQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>y7C+qgiwu/FP5YRSXzf6vJAv4Tb06hv+Y8IC9z2tnA362aLhpY9MSQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-creative-zen-2GB.txt b/logs/mtp-detect-creative-zen-2GB.txt
new file mode 100644
index 0000000..6a8199e
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-2GB.txt
@@ -0,0 +1,374 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Device 1 (VID=041e and PID=4158) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4158
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN V (Video)
+ Device version: 1.32.01_1.01.10
+ Serial number: D5CBCD0A4003001CD5CDE9C74003001C
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:
+1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 3, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 180, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 20480, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 180, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 2304, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 170, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 20480, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 170, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 3072, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 17, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 388000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 6000, MAX 15000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 128, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 3, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 4000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 128, STEP 1 GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3997827072
+ FreeSpaceInBytes: 3994025984
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: D5CBCD0A4003001CD5CDE9C74003001C
+Special directories:
+ Default music folder: 0x00000056
+ Default playlist folder: 0x0000005a
+ Default picture folder: 0x00000066
+ Default video folder: 0x0000006a
+ Default organizer folder: 0x00000062
+ Default zencast folder: 0x00000076
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Felicity
+ Synchronization partner: (NULL)
+ Battery level 255 of 255 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Microsoft Advanced Systems Format
+ Audible.com Audio Codec
+ JPEG file
+ Audio Video Interleave
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20051015
+19:56:36Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">Cs3L1RwAA0DH6c3VHAADQAAAAAA=</UNIQUEID><PUBLICKEY
+private="1">Ordu04psO2e40IZjKL/72zxhGHYuTdzvG5XIuYIQKO753Mmh0ROCGw==</PUBLICKEY><KEYDATA>LUHkCuT3K9XC+y1EwbGqNk0kjVA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>4m8H1tkGVhVx0q7/RGodNG8vBBf6Ynw7ffKOEf2vofnOlB6o+j6YIA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>KkTSwvtot0c7IGYZ3iCfbqGGGV8=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.185</SECURITYVERSION><CERTIFICATE
+private="1">Ordu04psO2e40IZjKL/72zxhGHYuTdzvG5XIuYIQKO753Mmh0ROCGwIEaLkF5OgCvsEAiRJMPv3B1ZAK3guUHgw43lM/lL+APNZpgBPNkjdoJxNY</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Creative Zen V Plus</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DAP-FL0040</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>SSm10tOG7n2E+lBUEwdKnZfQQEfPcuxO4YXDzx9dAwbU5nUer5vMbQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>cVDd1wa6+5HzUpvZb7bsqGKbiWXlKrihJW90lAYA1EUlOgz33MzwIQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1053</AUTH_ID><PUBLICKEY>aPD+vFB8wJZiyyqhYeYgGIxpZk29uo/JJPSgqJiTwzfeOXY+qlyrFQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SywdNwotVIaw6M7gJSL73CqQcjV+ZPTHjMhFvFeHSqqRx3SRzAquJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>FKndZtwHnby1q9wM50lsjE4lnQYrqctul6h7+sprWWM3UGvrVKUxEw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-creative-zen-4GB.txt b/logs/mtp-detect-creative-zen-4GB.txt
new file mode 100644
index 0000000..cd262e6
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-4GB.txt
@@ -0,0 +1,458 @@
+libmtp version: 0.2.2
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4157
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000080
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN
+ Device version: 1.02.22_0.06.01
+ Serial number: 0100000039029E290002D298BD221E29
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1012: Set object protection
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 3, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b982: MP4
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 160, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 24576, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 160, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ ba01: Abstract Multimedia Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 3328, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 4992, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 4000000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844515635, 878070084, 1482049860, 808802372, 1196444237, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 3000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b981: WMV
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4068704256
+ FreeSpaceInBytes: 2133000192
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 0100000039029E290002D298BD221E29
+Special directories:
+ Default music folder: 0x00000057
+ Default playlist folder: 0x0000005b
+ Default picture folder: 0x00000067
+ Default video folder: 0x0000006b
+ Default organizer folder: 0x00000063
+ Default zencast folder: 0x00000073
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: George
+ Synchronization partner: (NULL)
+ Battery level 244 of 255 (95%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ JPEG file
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070910 00:44:51Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAAAASmeAjmY0gIAKR4ivQAAAAA=</UNIQUEID><PUBLICKEY private="1">Ykl5kTo3EZtQguar55Oml4Z4t1EK/VREbT2XkMs9aHEnRFpqpuxXCQ==</PUBLICKEY><KEYDATA>Nms8tOBTmCJowdwHwQd3h6/49Nw=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>FK15Y1IYOdASh6cGSTcXR7LxXhM+yuazukB8OuQvfBoh+6u1qgedJw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>xdPG75y5b5v7GtB40IkkUkMz3ns=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.193</SECURITYVERSION><CERTIFICATE private="1">Ykl5kTo3EZtQguar55Oml4Z4t1EK/VREbT2XkMs9aHEnRFpqpuxXCQIEbMHoITrNGGcLoesBy/0pqoxur3qKOigmEN7KA9uSUlkY1kBgNK20xKqE</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative ZEN</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DVP-FL0001</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>01jSNo4LLYCkLWpnsvVOxk1wvxbm2krcn20LgpXL9Zf91opCNsMyAQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>DrK/bNN2aO5ImZHdepevdhlT6UePVcdaxTWOMvw/8RYKeQFjSPwWUw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2085</AUTH_ID><PUBLICKEY>U3xlv/ZHjD1bOwjB+VKpZuAf3UI+x+5XtTYc7TvHKdQeGpyFrOmOEw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>iBzmFZxhy/VC9d2REO5iicO+dguqv8zhB7QPZe0JOj7BNKAwmrQoew==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Ko25GwcWTT0R8xP4rS9+h4Z/EHX03y7Gb/281mD8U0nQGG3Rk9O+TA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-creative-zen-V-plus.txt b/logs/mtp-detect-creative-zen-V-plus.txt
new file mode 100644
index 0000000..b2c9c8b
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-V-plus.txt
@@ -0,0 +1,693 @@
+PTP: Opening session
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4152
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative Zen V Plus
+ Device version: 1.15.03_0.05.09
+ Serial number: C69C8C180002FA9DC69FF64F0002FA9D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 3, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 112, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 20480, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 128, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 2304, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 170, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 20480, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 170, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 3072, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 17, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 388000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 6000, MAX 15000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 128, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 3, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 4000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 128, STEP 1 GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 8032681984
+ FreeSpaceInBytes: 3913187328
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: C69C8C180002FA9DC69FF64F0002FA9D
+Special directories:
+ Default music folder: 0x00000056
+ Default playlist folder: 0x0000005a
+ Default picture folder: 0x00000066
+ Default video folder: 0x0000006a
+ Default organizer folder: 0x00000062
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Remy Bosch
+ Synchronization partner: (NULL)
+ Battery level 142 of 255 (55%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Microsoft Advanced Systems Format
+ Audible.com Audio Codec
+ JPEG file
+ Audio Video Interleave
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071003 06:44:50Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">GIycxp36AgBP9p/GnfoCAAAAAAA=</UNIQUEID><PUBLICKEY private="1">uacrz8cfvmxT5HP4f6gXC21JnC6Un6l0qz1nSojtlfhDqlSvygmmSA==</PUBLICKEY><KEYDATA>ykYrz0s9Ggnh305LB+YlKuMxJx4=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>c5O+3ktOUyHhdR9uxBiJGjJNtBplqpo8IRCpVHX2rV7M0Yca4bb0Nw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>qsijKfmekVQKZZz+HCff802Mm3E=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.185</SECURITYVERSION><CERTIFICATE private="1">uacrz8cfvmxT5HP4f6gXC21JnC6Un6l0qz1nSojtlfhDqlSvygmmSAIEaLlw4Nr6rteI3w6kM+QTge1i95SzRgtiFiG5qQOx4M/Cdgf9RGNLhp8i</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative Zen V Plus</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DAP-FL0040</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>SSm10tOG7n2E+lBUEwdKnZfQQEfPcuxO4YXDzx9dAwbU5nUer5vMbQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>cVDd1wa6+5HzUpvZb7bsqGKbiWXlKrihJW90lAYA1EUlOgz33MzwIQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1053</AUTH_ID><PUBLICKEY>aPD+vFB8wJZiyyqhYeYgGIxpZk29uo/JJPSgqJiTwzfeOXY+qlyrFQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SywdNwotVIaw6M7gJSL73CqQcjV+ZPTHjMhFvFeHSqqRx3SRzAquJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>FKndZtwHnby1q9wM50lsjE4lnQYrqctul6h7+sprWWM3UGvrVKUxEw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+PTP: Closing session
+WMPInfo.xml Does not exist on this device
+OK.
+
+Autodetected device "Creative Zen V Plus" (VID=041e,PID=4152) is known.
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4152
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative Zen V Plus
+ Device version: 1.03.03_0.05.09
+ Serial number: A85D040F0002FA9DA85B2F5D0002FA9D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: BuyFlag
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b901: WMA
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: BuyFlag
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3008: MS Wave
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: BuyFlag
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b904: Audible.com Codec
+ da01: unknown(da01)
+ da02: unknown(da02)
+ da03: unknown(da03)
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: BuyFlag
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3801: JPEG
+ dc88: Height
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc87: Width
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 300a: MS AVI
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9d: FramesPerThousandSeconds
+ dc88: Height
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ dc87: Width
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ bb83: vCard3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ be03: vCalendar2
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3000: Undefined Type
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b802: Firmware
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1980399616
+ FreeSpaceInBytes: 458784768
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: A85D040F0002FA9DA85B2F5D0002FA9D
+Special directories:
+ Default music folder: 0x00000056
+ Default playlist folder: 0x0000005a
+ Default picture folder: 0x00000066
+ Default video folder: 0x0000006a
+ Default organizer folder: 0x00000062
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: d wilson
+ Synchronization partner: (NULL)
+ Battery level 170 of 255 (66%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ JPEG file
+ Audio Video Interleave
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20050709 03:36:45Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">DwRdqJ36AgBdL1uonfoCAAAAAAA=</UNIQUEID><PUBLICKEY private="1">NFmSPU3xRI4EDvKuSz2K7t2KMwEGlo9y/6JgqBMx3bgsfFUNkslaIQ==</PUBLICKEY><KEYDATA>ORkAraTaO6DWdqkuNols2lZApEA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>3A3aQBI/1L0z+1UbdWq3K4MTUms1u/R1MuvU1vEzGM5LzjagmNHtYg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>tVtC2vz4V4owPOP8lIC3iYdvHDU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.185</SECURITYVERSION><CERTIFICATE private="1">NFmSPU3xRI4EDvKuSz2K7t2KMwEGlo9y/6JgqBMx3bgsfFUNkslaIQIEaLllMmZGChi1fu6RS/Tm4Kapxip7VpsJ6mnKI0L0aLibkTYEIEx4SHxc</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative Zen V Plus</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DAP-FL0040</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>SSm10tOG7n2E+lBUEwdKnZfQQEfPcuxO4YXDzx9dAwbU5nUer5vMbQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>cVDd1wa6+5HzUpvZb7bsqGKbiWXlKrihJW90lAYA1EUlOgz33MzwIQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1053</AUTH_ID><PUBLICKEY>aPD+vFB8wJZiyyqhYeYgGIxpZk29uo/JJPSgqJiTwzfeOXY+qlyrFQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SywdNwotVIaw6M7gJSL73CqQcjV+ZPTHjMhFvFeHSqqRx3SRzAquJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>FKndZtwHnby1q9wM50lsjE4lnQYrqctul6h7+sprWWM3UGvrVKUxEw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿
+OK.
+
+
diff --git a/logs/mtp-detect-creative-zen-V.txt b/logs/mtp-detect-creative-zen-V.txt
new file mode 100644
index 0000000..ee84afe
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-V.txt
@@ -0,0 +1,317 @@
+Autodetected device with VID=041e and PID=4150 is UNKNOWN.
+Please report this VID/PID and the device model name etc to the
+libmtp development team!
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ bMaxPacketSize0: 64
+ idVendor: 041e
+ idProduct: 4150
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative Zen V
+ Device version: 1.10.03_0.05.09
+ Serial number: C8F0CA150002FA9DC8F6751C0002FA9D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 0x1001
+ 0x1002
+ 0x1003
+ 0x1004
+ 0x1005
+ 0x1007
+ 0x100c
+ 0x100d
+ 0x100f
+ 0x1014
+ 0x1015
+ 0x1006
+ 0x1008
+ 0x1009
+ 0x100b
+ 0x1010
+ 0x1016
+ 0x1017
+ 0x9801
+ 0x9802
+ 0x9803
+ 0x9804
+ 0x9805
+ 0x9806
+ 0x9808
+ 0x9807
+ 0x9810
+ 0x9811
+ 0x9201
+ 0x9101
+ 0x9102
+ 0x9103
+ 0x9104
+ 0x9105
+ 0x9106
+ 0x9107
+ 0x9108
+ 0x9109
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b901: WMA
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3008: MS Wave
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 300c: ASF
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b904: Audible.com Codec
+ da01: unknown(da01)
+ da02: unknown(da02)
+ da03: unknown(da03)
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3801: JPEG
+ dc88: Height
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc87: Width
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ bb83: vCard3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ be03: vCalendar2
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3000: Undefined Type
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b802: Firmware
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+Special directories:
+ Default music folder: 0x00000051
+ Default playlist folder: 0x00000055
+ Default picture folder: 0x00000061
+ Default video folder: 0x00000000
+ Default organizer folder: 0x0000005d
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: My Zen
+ Synchronization partner:
+ Total bytes on device: 971440128 (926 MB)
+ Free bytes on device: 936771584 (893 MB)
+ Storage description: "Storage Media"
+ Volume label: "C8F0CA150002FA9DC8F6751C0002FA9D"
+ Battery level 255 of 255 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Microsoft Advanced Systems Format
+ Audible.com Audio Codec
+ JPEG file
+ VCard version 3
+ VCalendar version 2
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20050403 15:39:31Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">FcrwyJ36AgAcdfbInfoCAAAAAAA=</UNIQUEID><PUBLICKEY private="1">IMyjsSEUDWFZTQzjI0Zz5hdLE0dLFGYkXqBpJOGKtIUerw+QbgtvFA==</PUBLICKEY><KEYDATA>2mHbaCxFUmI+iWrsNvQz9IieH9w=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>BjVxd4okZ1Yqav43NW/Ffs5LDEyuA+lxcHhYmMgPg2u2ffwK3t8paQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>HiX3tAwfxY/yexXe6gQMLHLAAk4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.139</SECURITYVERSION><CERTIFICATE private="1">IMyjsSEUDWFZTQzjI0Zz5hdLE0dLFGYkXqBpJOGKtIUerw+QbgtvFAIEaIt8JQF2IuBQudqJcdcn/plo8sPGc/Jix194wunu4/GA67FhZIQNGRln</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative Zen V</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DAP-FL0036</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>AwE2OSTIgFuzHvE8vC1w6E9MG1PCQ3HzTPJGtSMl8NvC2U7OikanZw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ANlrFR1DlR4vZwcsaLD6roTpv3nImj/OnFG3yOSWUwsCVD4kb+uhfQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1007</AUTH_ID><PUBLICKEY>fP5fVUkHCjq7OoLGkVhca1u5ehuKNerfFzwY8+38k6idDPn3KNhYGA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>uvG3IvEcpr+y86jyvARIl/3r8US21GTPDEh176DnbwZ5aiTLgiWyPg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>TNP/C0hseezVflFmD5hyoSk8AUYsz6sn6q0hyDFaB6Fj6DEjaG2QQQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿ï¿¿
+OK.
diff --git a/logs/mtp-detect-creative-zen-micro.txt b/logs/mtp-detect-creative-zen-micro.txt
new file mode 100644
index 0000000..871d983
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-micro.txt
@@ -0,0 +1,288 @@
+libmtp version: 1.0.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ Creative: ZEN Micro (MTP mode) (041e:4130) @ bus 0, dev 3
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4130
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: Creative
+ Vendor id: 0x041e
+ Product: ZEN Micro (MTP mode)
+ Vendor id: 0x4130
+ Device flags: 0x00000001
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative Zen Micro
+ Device version: 2.21.02_0.00.65
+ Serial number: 01052551C6038F82BC171936C6038F82
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: Audio WAVE Codec UINT32 data type enumeration: 85, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ b901: WMA
+ de99: Audio WAVE Codec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ b904: Audible.com Codec
+ da01: Unknown property UINT32 data type enumeration: 2, 3, 4, GET/SET
+ da02: Unknown property array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: Unknown property UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ bb83: vCard3
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ be03: vCalendar2
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3001: Association/Directory
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ b802: Firmware
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc4f: Non Consumable UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 4979793920
+ FreeSpaceInBytes: 4129079296
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 01052551C6038F82BC171936C6038F82
+Special directories:
+ Default music folder: 0x0000008b
+ Default playlist folder: 0x0000008f
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000097
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Dokktor Lajban
+ Synchronization partner: (NULL)
+ Battery level 255 of 255 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ Abstract Playlist file
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060802 10:50:22Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AQUlUcYDj4K8Fxk2xgOPggAAAAA=</UNIQUEID><PUBLICKEY private="1">k912GjDbPJaNV6m2b+Ao7I6gERKu9q/HknX/Xk6Eof7RGsti0t8vKg==</PUBLICKEY><KEYDATA>UUBc4Bwahh3pLnmKCYNybLhvvDo=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>C1S5c4HGU1qbAVsuYaL93PSPXS/c27En5jtyJb7CdQmS0lFgA08pBg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>YghjWMJr8V1Uo4n+quT/C7TNMWk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.101.71</SECURITYVERSION><CERTIFICATE private="1">k912GjDbPJaNV6m2b+Ao7I6gERKu9q/HknX/Xk6Eof7RGsti0t8vKgIEZUfAbNZ0RU3logPBMUDW1Nwms7RvhZXdHSetXBT5t7zEnMSty5/eDVJV</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative Zen Micro</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DAP-MD0004</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>2</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>10</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>/jJLKJbGuP2rKvXxgUXD5RiwSl6kZBtlE6dpZQJOkyHXVjJYP0ZaWQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>JFCrHlYa9i+gf35AzJUBwaiKWkHLPIGsC1UIDcfpr+lca+u/a3gxPQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>171</AUTH_ID><PUBLICKEY>wSdKzyFHUEP/ZH6n+XWM9QNUkmxAjSozkDnwvfq8JAFs+rMjryeXCw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lbcFC77eUPJxJeL/OPc/4GQakgUeeaNtA4iZAyYaymOgIDrLFKNCMA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3wxl5dz2o0IeP1OYxjxB+wdmXl0QcRk9/ZxpHHOX4uE58knkNZoqQA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-creative-zen-microphoto.txt b/logs/mtp-detect-creative-zen-microphoto.txt
new file mode 100644
index 0000000..0f0d2f8
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-microphoto.txt
@@ -0,0 +1,273 @@
+PTP: Opening session
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 413c
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative Zen MicroPhoto
+ Device version: 1.20.01_0.00.65
+ Serial number: 010525514103909B99130D0F4103909B
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumableUnknown OPFF type 6
+ UINT8 data type ANY 8BIT VALUE form GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 2304, STEP 1 GET/SET
+ dc04: ObjectSize UINT32 data type range: MIN 0, MAX 4194304, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 170, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 12288, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 170, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 3072, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7978778624
+ FreeSpaceInBytes: 22511616
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 010525514103909B99130D0F4103909B
+Special directories:
+ Default music folder: 0x00000061
+ Default playlist folder: 0x0002065b
+ Default picture folder: 0x00000071
+ Default video folder: 0x00000000
+ Default organizer folder: 0x0000006d
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: marcus meissner
+ Synchronization partner: (NULL)
+ Battery level 232 of 255 (90%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ JPEG file
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071001 02:38:44Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AQUlUUEDkJuZEw0PQQOQmwAAAAA=</UNIQUEID><PUBLICKEY private="1">bc5tBkpC1vKhKspg9x3NtvOQc3eUs1Hr3yuU8iNMVWO+edg6jUGdWQ==</PUBLICKEY><KEYDATA>wHKExHqjKZ87Yl4YF7xpiJu0ZlI=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>ly3ICs9QWPTP: Closing session
+v3Lwoe6r0tGK17Aj3G8zXx+eJLZ1M2YI3Y7fhTzVrJSOg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>4DmVMqMxdT4QMevC/Gpg52Gd58I=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.43</SECURITYVERSION><CERTIFICATE private="1">bc5tBkpC1vKhKspg9x3NtvOQc3eUs1Hr3yuU8iNMVWO+edg6jUGdWQIEZisUUkulIYvUbBHVCmDF9Z9kW+RWUfLN+Ih6A3hVNs+5k9c516BdJGt0</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative Zen MicroPhoto</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DAP-MD0004</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>UjurbLh8ap+B8EsXb9FuVhRbWCbKRGDdm7xWTAgK02eLpTDRUPjUWA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>quB0u/cTiyb2QncI62t/E98g5xt/YQMQDnLFwXEqwg+twcZXVM9GJw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>399</AUTH_ID><PUBLICKEY>Gf5Ommhs90oQ3m98RF9NNLuJ3nxgcFg4j0FGrLXshCI05uubNR46Iw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3KK+1dNO2r967UrH998VO7cgb1fx/QXunT3EXOXIgyYH/2/IHt7bLQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>K/+ULUEJBJr1Lw6cieqoCrSr3RjzfJgtu8/at2FrBpVmLTGl/yKOJQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-creative-zen-mozaic.txt b/logs/mtp-detect-creative-zen-mozaic.txt
new file mode 100644
index 0000000..a294575
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-mozaic.txt
@@ -0,0 +1,443 @@
+libmtp version: 0.3.3
+
+Listing raw device(s)
+Device 0 (VID=041e and PID=4161) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 041e:4161 @ bus 0, dev 4
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4161
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 4
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x041e
+ Product: (null)
+ Vendor id: 0x4161
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN Mozaic
+ Device version: 1.04.06_1.03.04
+ Serial number: 38000001E630462F0002D8F518E1462F
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1012: Set object protection
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+ 0xd001: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 3, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 160, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 24576, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 160, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba01: Abstract Multimedia Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 3328, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 4992, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 128, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2000000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1196444237, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 160, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 16040787968
+ FreeSpaceInBytes: 7159152640
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 38000001E630462F0002D8F518E1462F
+Special directories:
+ Default music folder: 0x00000061
+ Default playlist folder: 0x0003d442
+ Default picture folder: 0x00000071
+ Default video folder: 0x00000075
+ Default organizer folder: 0x0000006d
+ Default zencast folder: 0x0000007d
+ Default album folder: 0x0000114a
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: MP3Diplomat
+ Synchronization partner: {53FCCB67-737B-43D6-8E17-14283B906B22}
+ Battery level 229 of 255 (89%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ Microsoft Advanced Systems Format
+ JPEG file
+ Audio Video Interleave
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20081125 21:07:45Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AQAAOC9GMOb12AIAL0bhGAAAAAA=</UNIQUEID><PUBLICKEY private="1">Au+DnStOMg0vVNrKp0lqSHWc4kPvM8EgOQnmPLw5/nF5Wnh1HKdLgw==</PUBLICKEY><KEYDATA>lWtp/muYHEAGd63blWlvVemNr70=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>jKvt3LlGqATqPNYtWzePyxkmql54ZJuGBI+kF8YzBSEOAxu4WS19Tw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>nHPd0A7ufYLSE+51uJdGhv/qqxg=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.211</SECURITYVERSION><CERTIFICATE private="1">Au+DnStOMg0vVNrKp0lqSHWc4kPvM8EgOQnmPLw5/nF5Wnh1HKdLgwIEb9Mgv1CHavdF6/gCw3NXT4vP1LJcYt2Fkw0YnphHODb50A/VbffVpBMN</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative ZEN Mozaic</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DVP-FL0007</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>I8W51j7/UJL5WJ+QJu7+GUa64VcpBHgMEnr43DtpyngoEHRjBra7QQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HLDGCzBvXiPfPbql58eK/1TbUnNe6Kn61xP7aIWeQ+ncNrn1msebLg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2871</AUTH_ID><PUBLICKEY>De+jIoIGhX264uaAbht0Ws+G+W/JTFM72xIL4oYikI1JHK2Rx+I5Ng==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>bq1wzzsLHdXHNJTpROWkl4WKEy73sUP1OSD76tj4W1XIojygOKMnHg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GcNJaTe1P4BBk0zC0u+MIpg6KQaM+pO2kK04g8sdiOBtqZYPquvDcg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{DB0CA888-31E0-47B3-8F12-0419173403C2}" RelationshipID="{53FCCB67-737B-43D6-8E17-14283B906B22}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK.
+
diff --git a/logs/mtp-detect-creative-zen-pmc.txt b/logs/mtp-detect-creative-zen-pmc.txt
new file mode 100644
index 0000000..db52d78
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-pmc.txt
@@ -0,0 +1,334 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4123
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000001
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:041e and ProductID:4123 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Zen Portable Media Center
+ Device version: PMC: 1.0 (292:130322); Platform: 1.3 (5.12)
+ Serial number: 468a40dd - 00020801 - 3800bc9c - d646df6f
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9807: Get interdependent property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1500000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1500000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9e: KeyFrameDistance UINT32 data type enumeration: 3, READ ONLY
+ dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc98: Subtitle STRING data type GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc94: ParentalRating STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 3, READ ONLY
+ de9f: BufferSize UINT32 data type enumeration: 3, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 READ ONLY
+ dea0: EncodingQuality UINT32 data type enumeration: 50, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 827739479, 844516695, 861293911, 1347833175, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 736000, STEP 1 READ ONLY
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9e: KeyFrameDistance UINT32 data type enumeration: 3, READ ONLY
+ dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc98: Subtitle STRING data type GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc94: ParentalRating STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 2, 3, READ ONLY
+ de9f: BufferSize UINT32 data type enumeration: 3, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 READ ONLY
+ dea0: EncodingQuality UINT32 data type enumeration: 50, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 827739479, 844516695, 861293911, 1347833175, 844125783, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 736000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 19841679360
+ FreeSpaceInBytes: 13992853504
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: PMC HardDisk
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x09000002
+ Default playlist folder: 0x090000a0
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x09000007
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Battery level 85 of 100 (85%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20090126 15:59:10Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">I0bmPv4Y0HfNXzIjBa/PYycH2tc=</UNIQUEID><PUBLICKEY private="1">e1IT6W/5VRSSlOmzEFTwYW7iYneoOYNYk4N0Z6JMrGdDjhN91cxhZw==</PUBLICKEY><KEYDATA>jr96ej1eM3ySU/pOKsH8OH5e3N0=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>Q4kKNCjEyifQR16hYcNut9aJ+0rzp96M2ydr9fqF4ODB3eQoNvueaw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>DhLnT6rHenq72J3HkEWAkutThoY=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.101.1</SECURITYVERSION><CERTIFICATE private="1">e1IT6W/5VRSSlOmzEFTwYW7iYneoOYNYk4N0Z6JMrGdDjhN91cxhZwIEZQHdeZ8CBTwW9demSrALSCQ1KuDtajy8pAgGj61prcdBR5z8HWYx9v2H</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Zen Portable Media Center</NAME>
+<MANUFACTURER>Creative Technology Ltd.</MANUFACTURER>
+<MODEL>PMC-HD0001</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK>
+<SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>aH!t1TTDvlggK2kDp55oQfKqqgJdWz4w6IZSE8gr1ObCT2Kle8UnPA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>DXdQxutKyTkyAFBZo04b4dUYQi8PFTOy5uqA/nL3247mdZqx8s7DWA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>101</AUTH_ID><PUBLICKEY>WMR8Uct80dL6v5fANe5xvEclVyjYm*Z5lclCcP*FDrBJgG2OEFB*dg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SK2D0AS5mG0qo33sDgddidfb54QhiLSo88HcMFK*8tEag!!fezugew==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Io0kNadzJAsSZdlhn!LYZIFdLBtfdg0O83BOP9yUr7HwBfMFLIlGWQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-creative-zen-vision-M-DVP-HD0004.txt b/logs/mtp-detect-creative-zen-vision-M-DVP-HD0004.txt
new file mode 100644
index 0000000..15efd05
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-vision-M-DVP-HD0004.txt
@@ -0,0 +1,474 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4151
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN Vision:M (DVP-HD0004)
+ Device version: 1.21.02_0.00.25
+ Serial number: 00023C043B753AF9E0557A0BF57B359B
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba01: Abstract Multimedia Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 24576, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 3328, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 4992, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 576, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844515635, 1482049860, 808802372, 1196444237, 1446137933, 1395937357, 1195724877, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, 352, 353, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 576, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1482049860, 808802372, 1196444237, 1446137933, 1395937357, 1195724877, 861293911, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b982: MP4
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 576, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 808802372, 1196444237, 1446137933, 1395937357, 1195724877, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300b: MPEG
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1446137933, 1195724877, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b981: WMV
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 802000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 59958689792
+ FreeSpaceInBytes: 20247904256
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00023C043B753AF9E0557A0BF57B359B
+Special directories:
+ Default music folder: 0x0000005c
+ Default playlist folder: 0x00000060
+ Default picture folder: 0x0000006c
+ Default video folder: 0x00000070
+ Default organizer folder: 0x00000068
+ Default zencast folder: 0x00000078
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Ewoud Van Raamsdonk
+ Synchronization partner: (NULL)
+ Battery level 178 of 255 (69%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ JPEG file
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ MPEG video stream
+ Microsoft Windows Media Video
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20051210 14:47:11Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">BDwCAPk6dTsLelXgmzV79QAAAAA=</UNIQUEID><PUBLICKEY private="1">lmV037sZ0Rw9QuKjAvDW+Pqk1Dz9+vvEvDi/Fk0G7xNaJiKjO1QkMA==</PUBLICKEY><KEYDATA>jOkGc9kVrzZE7GJkuQJoSm8Mr3E=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>81g2njx8uQGOMicv9cHJDKX7fIQSI95hvzFtnPO8keib3fzhHtCEDA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>sepxGvimlQ+nkK6G60ISabnj8bw=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.235</SECURITYVERSION><CERTIFICATE private="1">lmV037sZ0Rw9QuKjAvDW+Pqk1Dz9+vvEvDi/Fk0G7xNaJiKjO1QkMAIEaOsflkmyvfma1OALmEWiME9UxcGtctiuQ/rPELGtkQ36d5ojCDmv9Yhm</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative ZEN Vision:M (DVP-HD0004)</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DVP-HD0004</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>S5DlXEt+k1JXZ2VcBQquRBMEtiNKOeS1ZUHO46p7323ZxV2TlX2+Mg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YC1n+SVlH9HMrfOK/yLFyWxYxxQ1864vr8K0RYtxkI6RfIVxQHD9eA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1103</AUTH_ID><PUBLICKEY>o+njTe9olvrYzas3caoinvqokFzMg3sG1Uple1+CIhBCfPXCVz6EJA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>RJp/keIANZ8FfImo/RCUHMoQtROQhjjlB1vNO6VmBO6qGPJN7nrSHg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Qia46akVEpOGwQYb6V7tQf/loioowm/PFNvMgSamZUmMcBIcDGP7MQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+inep: usb_get_endpoint_status(): Connection timed out
+outep: usb_get_endpoint_status(): Connection timed out
+usb_clear_halt() on IN endpoint: Connection timed out
+usb_clear_halt() on OUT endpoint: Connection timed out
+usb_clear_halt() on INTERRUPT endpoint: Connection timed out
+OK.
+
diff --git a/logs/mtp-detect-creative-zen-vision-M.txt b/logs/mtp-detect-creative-zen-vision-M.txt
new file mode 100644
index 0000000..a0b0437
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-vision-M.txt
@@ -0,0 +1,481 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 413e
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000040
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative Zen Vision:M
+ Device version: 1.62.02_0.00.23
+ Serial number: 00023C02D3940BBCACAFEE5DCCED879A
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+Unknown OPFF type 4
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba01: Abstract Multimedia Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 24576, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 3328, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 4992, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 576, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844515635, 1482049860, 808802372, 1196444237, 1446137933, 1395937357, 1195724877, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, 352, 353, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 576, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1482049860, 808802372, 1196444237, 1446137933, 1395937357, 1195724877, 861293911, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b982: MP4
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 576, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 808802372, 1196444237, 1446137933, 1395937357, 1195724877, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 300b: MPEG
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 9500000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1446137933, 1195724877, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b981: WMV
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 802000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 29952966656
+ FreeSpaceInBytes: 12777095168
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00023C02D3940BBCACAFEE5DCCED879A
+Special directories:
+ Default music folder: 0x00000058
+ Default playlist folder: 0x000dacfa
+ Default picture folder: 0x00000068
+ Default video folder: 0x0000006c
+ Default organizer folder: 0x00000064
+ Default zencast folder: 0x00007edd
+ Default album folder: 0x000dacc3
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Richard Low
+ Synchronization partner: {378A352A-41E8-457F-B6F8-3954579F9561}
+ Battery level 244 of 255 (95%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ JPEG file
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ MPEG video stream
+ Microsoft Windows Media Video
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071004 20:46:41Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AjwCALwLlNNd7q+smoftzAAAAAA=</UNIQUEID><PUBLICKEY private="1">fxBC9Zvpd1LJ8wk57vdq37JiwV8aaKy7nLmynvNBAAFp9pCywNU/Uw==</PUBLICKEY><KEYDATA>38H0+JbPigvu8Qh4qt4W0dJTkPY=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>K7SywRriplbyhnaEnroJZir+gD94nZBEDeB8pQMC++kyrncJo68HNA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>v1TfCeWencbZ5fhzUxJuGHbQL9Y=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.103.61</SECURITYVERSION><CERTIFICATE private="1">fxBC9Zvpd1LJ8wk57vdq37JiwV8aaKy7nLmynvNBAAFp9pCywNU/UwIEZz0J2L4cW4iF03/W9wYFy1C+PxdtU1GK1TpqVN9qL+k/EbcwuV/AVTB2</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative Zen Vision:M</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DVP-HD0003</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>Zyqn8gWDO+E0O5uFWAITnXpHrzfRKPtanLWS4c0CWBv4HVL8VMm0QQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>g27HSbQgG+GZO2dlcOK0qdK/Ql+5HU7kWCXnqSDDHko5fruJpT/pVQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>673</AUTH_ID><PUBLICKEY>apoWlp0LevRxXWHcSskvn/VSsG5YjXoM7Bya7bMdc0GO3VM9fxhIgw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>MJmLft7Asiwh9iDeM/VogDjM4G5U6x0E1Vws11mQN0yJjBMkGWRZVQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dhVs0/oSDCgWs5g9yvEdkRatr1eLsaMe7Kws0MwaOWWebmtq1TZABQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{BB1CC743-3387-493F-9570-04937E49F62C}" RelationshipID="{378A352A-41E8-457F-B6F8-3954579F9561}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK. \ No newline at end of file
diff --git a/logs/mtp-detect-creative-zen-vision-W.txt b/logs/mtp-detect-creative-zen-vision-W.txt
new file mode 100644
index 0000000..0de9cc3
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-vision-W.txt
@@ -0,0 +1,388 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4153
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN Vision W
+ Device version: 1.01.02_0.00.24
+ Serial number: 00023C03E4549F5DE96ACF53DF68FBB4
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: Get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Unknown(9201)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Set meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ dc8a: Rating
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b901: WMA
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ dc8a: Rating
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3008: MS Wave
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ dc8a: Rating
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b904: Audible.com Codec
+ da01: unknown(da01)
+ da02: unknown(da02)
+ da03: unknown(da03)
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc91: UseCount
+ dc8a: Rating
+ d901: unknown(d901)
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba01: Abstract Multimedia Album
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3801: JPEG
+ dc88: Height
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc87: Width
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 300a: MS AVI
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9d: FramesPerThousandSeconds
+ dc88: Height
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ dc87: Width
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 300c: ASF
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9d: FramesPerThousandSeconds
+ dc88: Height
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ dc87: Width
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b982: MP4
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9d: FramesPerThousandSeconds
+ dc88: Height
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ dc87: Width
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 300b: MPEG
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9d: FramesPerThousandSeconds
+ dc88: Height
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ dc87: Width
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b981: WMV
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9d: FramesPerThousandSeconds
+ dc88: Height
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ dc87: Width
+ dc86: RepresentativeSampleData
+ dc81: RepresentativeSampleFormat
+ dc83: RepresentativeSampleHeight
+ dc82: RepresentativeSampleSize
+ dc84: RepresentativeSampleWidth
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de95: AudioBitDepth
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ bb83: vCard3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ be03: vCalendar2
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3000: Undefined Type
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b802: Firmware
+ dc01: StorageID
+ dc0b: ParentObject
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+Special directories:
+ Default music folder: 0x0000005c
+ Default playlist folder: 0x00000060
+ Default picture folder: 0x0000006c
+ Default video folder: 0x00000070
+ Default organizer folder: 0x00000068
+ Default zencast folder: 0x00000078
diff --git a/logs/mtp-detect-creative-zen-x-fi.txt b/logs/mtp-detect-creative-zen-x-fi.txt
new file mode 100644
index 0000000..6f49813
--- /dev/null
+++ b/logs/mtp-detect-creative-zen-x-fi.txt
@@ -0,0 +1,650 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+Device 0 (VID=041e and PID=4162) is UNKNOWN.
+Please report this VID/PID and the device model to the
+libmtp development team
+ Found 1 device(s):
+ 041e:4162 @ bus 0, dev 4
+Attempting to connect device(s)
+PTP: Opening session
+Error 2: PTP Layer error 02ff: get_all_metadata_fast():
+could not get proplist of all objects.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: get_handles_recursively():
+could not get object handles.
+Error 2: (Look this up in ptp.h for an explanation.)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4162
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 4
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x041e
+ Product: (null)
+ Vendor id: 0x4162
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN X-Fi
+ Device version: 1.04.08_1.03.03
+ Serial number: 130300006B749DAF0002D409F474DDAF
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:
+1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD:
+10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1012: Set object protection
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+ 0xd001: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ b901: WMA
+ 3008: MS Wave
+ b904: Audible.com Codec
+ b982: MP4
+ ba03: Abstract Audio Album
+ ba05: Abstract Audio Video Playlist
+ ba01: Abstract Multimedia Album
+ 3801: JPEG
+ 300a: MS AVI
+ 300c: ASF
+ b981: WMV
+ bb83: vCard3
+ be03: vCalendar2
+ b802: Firmware
+ 3000: Undefined Type
+ 3001: Association/Directory
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 32127975424
+ FreeSpaceInBytes: 8015151104
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 130300006B749DAF0002D409F474DDAF
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ JPEG file
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+Unable to acquire device certificate, perhaps this device
+does not support this
+Error 2: PTP Layer error 02ff:
+get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+ERROR: Could not close session!
+inep: usb_get_endpoint_status(): Protocol error
+outep: usb_get_endpoint_status(): Protocol error
+usb_clear_halt() on IN endpoint: Protocol error
+usb_clear_halt() on OUT endpoint: Protocol error
+usb_clear_halt() on INTERRUPT endpoint: Protocol error
+OK.
+
+
+
+libmtp version: 0.2.5
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 4162
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Creative Technology Ltd
+ Model: Creative ZEN X-Fi
+ Device version: 1.03.01_1.03.01
+ Serial number: 330800010F208B970002D42165090B97
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1012: Set object protection
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd201: Unknown property
+ 0xd001: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b904: Audible.com Codec
+ da01: unknown(da01) UINT32 data type enumeration: 2, 3, 4, GET/SET
+ da02: unknown(da02) array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 180, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 24576, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 180, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba01: Abstract Multimedia Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 3328, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 4992, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300a: MS AVI
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 17, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 4000000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844515635, 878070084, 1482049860, 808802372, 1196444237, 1145656920, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 3000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 850000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ be03: vCalendar2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 16030302208
+ FreeSpaceInBytes: 11305451520
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 330800010F208B970002D42165090B97
+Special directories:
+ Default music folder: 0x00000058
+ Default playlist folder: 0x0000005c
+ Default picture folder: 0x00000068
+ Default video folder: 0x0000006c
+ Default organizer folder: 0x00000064
+ Default zencast folder: 0x00000074
+ Default album folder: 0x000002d2
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: My ZEN
+ Synchronization partner: (NULL)
+ Battery level 201 of 255 (78%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ JPEG file
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ VCard version 3
+ VCalendar version 2
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080309 03:51:17Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AQAIM5eLIA8h1AIAlwsJZQAAAAA=</UNIQUEID><PUBLICKEY private="1">qJvS95Ld8fjliLVYU7YoYBmJEWOI7UW+K4WFUQOXY16+uD1yOLU8dA==</PUBLICKEY><KEYDATA>ihbm/JN0v04ZByTL+d01fU86zcY=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>3bz/jgaemb2VD3Y+RUUXzH6ARAUQ1IDH/jX3t9FP1J5FPhzkQPWoAw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>ml/HpvSOmykMcFa9/afdTTrC3gA=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.193</SECURITYVERSION><CERTIFICATE private="1">qJvS95Ld8fjliLVYU7YoYBmJEWOI7UW+K4WFUQOXY16+uD1yOLU8dAIEbMFdxDP2F6TwEgUVpRLE4fbmJEZXKDFw+kDaNQbjnmr8gaIgDfoimp8A</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Creative ZEN</NAME>
+ <MANUFACTURER>CL Direct Pte Ltd.</MANUFACTURER>
+ <MODEL>DVP-FL0001</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>01jSNo4LLYCkLWpnsvVOxk1wvxbm2krcn20LgpXL9Zf91opCNsMyAQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>DrK/bNN2aO5ImZHdepevdhlT6UePVcdaxTWOMvw/8RYKeQFjSPwWUw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2085</AUTH_ID><PUBLICKEY>U3xlv/ZHjD1bOwjB+VKpZuAf3UI+x+5XtTYc7TvHKdQeGpyFrOmOEw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>iBzmFZxhy/VC9d2REO5iicO+dguqv8zhB7QPZe0JOj7BNKAwmrQoew==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Ko25GwcWTT0R8xP4rS9+h4Z/EHX03y7Gb/281mD8U0nQGG3Rk9O+TA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-gigaware-gx400.txt b/logs/mtp-detect-gigaware-gx400.txt
new file mode 100644
index 0000000..d14a3be
--- /dev/null
+++ b/logs/mtp-detect-gigaware-gx400.txt
@@ -0,0 +1,14 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+
+Potential MTP Device with VendorID:0aa6 and ProductID:9702 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0aa6 and PID=9702) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 0aa6:9702 @ bus 0, dev 3
+Attempting to connect device(s)
+usb_claim_interface(): Device or resource busy
+LIBMTP PANIC: Unable to initialize device
+Unable to open raw device 0
+OK.
diff --git a/logs/mtp-detect-haier-ibiza-rhapsody.txt b/logs/mtp-detect-haier-ibiza-rhapsody.txt
new file mode 100644
index 0000000..ec04b52
--- /dev/null
+++ b/logs/mtp-detect-haier-ibiza-rhapsody.txt
@@ -0,0 +1,472 @@
+
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1302
+ idProduct: 1017
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3100 1.
+Microsoft device response to control message 1, CMD 0x31:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x31:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Haier
+ Model: ibiza Rhapsody
+ Device version: LB.2.5.8.27806
+ Serial number: 021C020340053B000000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 10.0; microsoft.com/WMDRMPD: 10.1; audible.com: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4002
+ 0x4003
+ 0x4004
+ 0x4005
+ 0x4006
+ 0x4007
+ 0x4008
+ 0x400a
+ 0x400b
+ 0x400c
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd405: Device Icon
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ 3009: MP3
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ 300a: MS AVI
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 16, MAX 320, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 16, MAX 240, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1446269005, 875967048, READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 16, MAX 320, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 16, MAX 240, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1446269005, 875967048, READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b301: Unknown(b301)
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b901: WMA
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ b903: AAC
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ b904: Audible.com Codec
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form GET/SET
+ da03: unknown(da03) UINT32 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ b981: WMV
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 16, MAX 320, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 16, MAX 240, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 827739479, 844516695, 861293911, READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ b982: MP4
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 16, MAX 320, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 16, MAX 240, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 65535, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1446269005, 875967048, READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1024, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1024, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba14: PLS Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3734740992
+ FreeSpaceInBytes: 3400687616
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Device Storage
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x0000001a
+ Default playlist folder: 0x0000001d
+ Default picture folder: 0x0000001c
+ Default video folder: 0x0000001b
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name:
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ Portable Network Graphics
+ Firmware file
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Audible.com Audio Codec
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
diff --git a/logs/mtp-detect-insignia-DV4G.txt b/logs/mtp-detect-insignia-DV4G.txt
new file mode 100644
index 0000000..1a64e45
--- /dev/null
+++ b/logs/mtp-detect-insignia-DV4G.txt
@@ -0,0 +1,429 @@
+/tlibmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 19ff
+ idProduct: 0303
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: Insignia Products
+ Model: Insignia Video Player
+ Device version: V1.104
+ Serial number: 0103001731CBA92607071111294800B2
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd100: Unknown property
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: RevocationInfo
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b904: Audible.com Codec
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ da01: unknown(da01) STRING data type GET/SET
+ da04: unknown(da04) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 768000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 768000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 768000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3909824512
+ FreeSpaceInBytes: 3676336374
+ FreeSpaceInObjects: 5938
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0103001731CBA92607071111294800B2
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2030960640
+ FreeSpaceInBytes: 1698411316
+ FreeSpaceInObjects: 5888
+ StorageDescription: External Storage
+ VolumeIdentifier: 1103001731CBA92607071111294800B2
+Special directories:
+ Default music folder: 0x20000bc0
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x2000000b
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Insignia Video Player
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ JPEG file
+ Audio Video Interleave
+ Microsoft Windows Media Video
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20061014 03:26:40Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AQMAFzHLqSYHBxERKUgAsgAAAAA=</UNIQUEID><PUBLICKEY private="1">oRTqKySwPHrW9wmL/tY3DUjpvR7lPD6PIIinnNntdoqeDrOP8nTDPg==</PUBLICKEY><KEYDATA>R7jB6y5gumd3rSPc/P60KLMuGTU=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>as/YFmwvhe78S4+n4zZQJVbm+XqJKAwgrYoyIlc+SW5EcjxZFnRcZQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>T4jEP/8b1cFyedqC3Q9FSbr50gQ=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.77</SECURITYVERSION><CERTIFICATE private="1">oRTqKySwPHrW9wmL/tY3DUjpvR7lPD6PIIinnNntdoqeDrOP8nTDPgIEaU0X8IoQlDRmS1MYEBDi/5Bj1bRsUSv1RV/GsMtBAlMThT5i604nrltH</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>NS-DVxG</NAME><MANUFACTURER>INSIGNIA</MANUFACTURER><MAKE>JOYTOTO</MAKE><DISTRIBUTOR>WideWorldImporters</DISTRIBUTOR><MODEL>INSIGNIA</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>AN9JFbxhf1vEcC1FRXIgk6fRPzBKyiw+SaIwqqhm3/RpmijB9tFWYw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>rBWeBfgAXPNmmg79CGdeMhc3PwvqNgpONZmxbd9zWIeIM8MMEkx+Rg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1201</AUTH_ID><PUBLICKEY>FJEWrbQhHd+m7M0wqCgDWL+R7BmBOHYvFukq3pLKR3W6rRSruW5vSg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>pNvApYSXWghsnSmXamJDRWRz3hW4z11V9v2tZu6CUHFMGg57qYpBdA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>2iNR1uSacxgKGxFfMc/HtQwlVgy6IhKZ0gAwT2YW+7zGCZnxVFjySA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{032E2600-69E0-496C-938F-79899FF48D44}" RelationshipID="{79EF1DB2-8A69-43CB-97BB-A5EE107F22A3}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-iriver-clix.txt b/logs/mtp-detect-iriver-clix.txt
new file mode 100644
index 0000000..9880f84
--- /dev/null
+++ b/logs/mtp-detect-iriver-clix.txt
@@ -0,0 +1,355 @@
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 112a
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000018
+Device info:
+ Manufacturer: iriver
+ Model: iriver clix
+ Device version: MTP-2.01-N-ENG
+ Serial number: 873ff80f000000f93230303530313031
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd405: Device Icon
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 128000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc87: Width UINT32 data type range: MIN 4, MAX 320, STEP 4 GET/SET
+ dc88: Height UINT32 data type range: MIN 4, MAX 240, STEP 4 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 512000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1145656920, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 8000, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 74, MAX 75, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 99, MAX 100, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b904: Audible.com Codec
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form GET/SET
+ da03: unknown(da03) UINT16 data type enumeration: 0, 0, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 91, MAX 92, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 91, MAX 92, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ ba82: XMLDocument
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2005729280
+ FreeSpaceInBytes: 1900265472
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver clix files
+ VolumeIdentifier: hipdippaaaaaaajpcdadadfdadbdadbd
+Special directories:
+ Default music folder: 0x00070000
+ Default playlist folder: 0x00060000
+ Default picture folder: 0x00090000
+ Default video folder: 0x00010000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00080000
+ Default text folder: 0x00020000
+MTP-specific device properties:
+ Friendly name: Richard's Clix
+ Synchronization partner: (NULL)
+ Battery level 4 of 4 (100%)
+libmtp supported (playable) filetypes:
+ Text file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Audible.com Audio Codec
+ XML file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060129 11:34:35Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">7cVY8s5uhwcwJZBCKY0Nzjwdqwa6eafIWthcYw/oCNPK6gB0fzxxNQ==</PUBLICKEY><KEYDATA>3TG4cp+JFr12+hWLOdquLkbrXf4=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>VyF9BrkcNPOlgrMPN7Ldd86Exk8CyzpcW7FehyuAAtXTB4Ns5JXeZA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>pY98DivHN3zgKe/0MPv2wPx2+7Q=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.3</SECURITYVERSION><CERTIFICATE private="1">7cVY8s5uhwcwJZBCKY0Nzjwdqwa6eafIWthcYw/oCNPK6gB0fzxxNQIEZgPBcUIyUBSjrPOpAasS0zG/uY/xA2MSYeYMBFyXNJzlaYDonEw76411</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>8jeq4PyJZUL8NpU2+/tgvUZC9ijn3RdlK3wd04Iws6oXHoA+D6vFfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HZ85tGf5VnDwKLGq2S0OlK/oJCKbCx3A2yudzMOv8ERwi6drHW5xOA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>359</AUTH_ID><PUBLICKEY>DpMhgaZkXUFNFIs4KJe7S9MZYwuE1bBic6AV6wAc7Ir0Stfx8U+SKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GWscwHnDoSazgB+YOP2D7xrqDifWEFztujqAWwrkM7onynIcfOBBMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QndHdJ4ZoSgvokVCOWsqVnvuckGL5cn6Vrua0j4tcGBrjD9PgNd0AA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{38F6CE81-F97C-4359-B9A8-236F2FCBF6A0}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-iriver-clix2.txt b/logs/mtp-detect-iriver-clix2.txt
new file mode 100644
index 0000000..a06061f
--- /dev/null
+++ b/logs/mtp-detect-iriver-clix2.txt
@@ -0,0 +1,391 @@
+PTP: Opening session
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1126
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x0000000c
+Device info:
+ Manufacturer: iriver
+ Model: iriver clix
+ Device version: MTP-1.10-N-ENG
+ Serial number: AA5562CFC92734313338313818180407
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; audible.com: 1.0; microsoft.com/AAVT: 1.0; microsoft.com/WMDRMND: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd405: Device Icon
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc87: Width UINT32 data type range: MIN 128, MAX 320, STEP 16 GET/SET
+ dc88: Height UINT32 data type range: MIN 128, MAX 240, STEP 16 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 2320000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1482049860, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 8000, MAX 2000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 29970, 30000, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 74, MAX 75, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 99, MAX 100, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b904: Audible.com Codec
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form GET/SET
+ da03: unknown(da03) UINT16 data type enumeration: 0, 0, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc87: Width UINT32 data type range: MIN 128, MAX 320, STEP 16 GET/SET
+ dc88: Height UINT32 data type range: MIN 128, MAX 240, STEP 16 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 1088000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 8000, MAX 768000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 29970, 30000, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 91, MAX 92, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 91, MAX 92, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ ba82: XMLDocument
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3997171712
+ FreeSpaceInBytes: 3990781952
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver clix files
+ VolumeIdentifier: AA5562CFC92734313338313818180407
+Special directories:
+ Default music folder: 0x00010000
+ Default playlist folder: 0x00030000
+ Default picture folder: 0x00020000
+ Default video folder: 0x00040000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default albumPTP: Closing session
+inep: usb_get_endpoint_status(): Connection timed out
+outep: usb_get_endpoint_status(): Connection timed out
+usb_clear_halt() on IN endpoint: Connection timed out
+usb_clear_halt() on OUT endpoint: Connection timed out
+usb_clear_halt() on INTERRUPT endpoint: Connection timed out
+ folder: 0x00000000
+ Default text folder: 0x00070000
+MTP-specific device properties:
+ Friendly name: iriver clix
+ Synchronization partner: 180407
+ Battery level 3 of 4 (75%)
+libmtp supported (playable) filetypes:
+ Text file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Audible.com Audio Codec
+ Microsoft Windows Media Video
+ XML file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070703 15:42:38Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">cD8RQCl30zBejXpidyXkt5f01zAzML46bYQ0t3SxKmBD34Hi83hGNA==</PUBLICKEY><KEYDATA>5IQyWHJekGUBpWbz+Jfj66ILO98=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>ZPVCDjj38p3tg1snrnYP/xs1QxOtjoCGhaXwv81qV5BVCGwL5idVQA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>YEWXKpk1T+gDHh/hJcsVxDJSccA=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.3</SECURITYVERSION><CERTIFICATE private="1">cD8RQCl30zBejXpidyXkt5f01zAzML46bYQ0t3SxKmBD34Hi83hGNAIEZgNDyOxqoZ3LLx8AEUvYlbNSBr2bGOf8iO10ZrxFInMmL47vWZBj3tMI</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT><SUPPORT_REVOCATION><GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID></SUPPORT_REVOCATION></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>CHLiS7bpZCOKg2fVD0JPBHgi3wJC8utLO0XGilzb4eGHzxil3CN4Jg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Ji0nZh3Goy4aZpOq7CfeHK+EGm+GA+yL26SigjlWVI9QuydMLjPzOQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>359</AUTH_ID><PUBLICKEY>DpMhgaZkXUFNFIs4KJe7S9MZYwuE1bBic6AV6wAc7Ir0Stfx8U+SKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GWscwHnDoSazgB+YOP2D7xrqDifWEFztujqAWwrkM7onynIcfOBBMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QndHdJ4ZoSgvokVCOWsqVnvuckGL5cn6Vrua0j4tcGBrjD9PgNd0AA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-iriver-e100.txt b/logs/mtp-detect-iriver-e100.txt
new file mode 100644
index 0000000..47b9c80
--- /dev/null
+++ b/logs/mtp-detect-iriver-e100.txt
@@ -0,0 +1,316 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Device 1 (VID=4102 and PID=1141) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1141
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: iriver
+ Model: iriver E100
+ Device version: TP-0.31-N-ENG
+ Serial number: 221D9DA65E73B749BEE2C2BA869606DB
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 8005951488
+ FreeSpaceInBytes: 7986962432
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver E100 Files
+ VolumeIdentifier: 295BB680
+Special directories:
+ Default music folder: 0x05000160
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x05000161
+ Default video folder: 0x05000167
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x05000166
+MTP-specific device properties:
+ Friendly name: iriver E100
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ Audio Video Interleave
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080607 19:07:51Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">vbwnhPegN0G8TdpyfN8iEHzfIhA=</UNIQUEID><PUBLICKEY private="1">gwgEFp4IDGEN1kTBlsKYi4WjBQyUynbJgLfj/nX3PBiSXcyr72Inhg==</PUBLICKEY><KEYDATA>X9igEHuLA+KGSJLeCSoXezHVDks=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>gwgEFp4IDGEN1kTBlsKYi4WjBQxEBpbLlor68NtpJ9fTpQIoI6sFZg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>TR1/tCkL16gODgMHD9nbaFh8kms=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.110.179</SECURITYVERSION><CERTIFICATE private="1">gwgEFp4IDGEN1kTBlsKYi4WjBQyUynbJgLfj/nX3PBiSXcyr72InhgIEbrODCAQWnggMYQ3WRMGWwpiLhaMFDEJ2vuXzjtooUZDEdNIMca4Ac3sS</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iriver E100</NAME><MANUFACTURER>iriver</MANUFACTURER><MAKE>iriver</MAKE><DISTRIBUTOR>iriver</DISTRIBUTOR><MODEL>E100</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1.0</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>1.0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1.0</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>1.0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>0</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>6656</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>2iVOcUjU7JrpG+uOw9vVbTb8jDP6sV4dDXK6dHIL+Wk5M9Qi/BclQg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>wXNWf4yNWXzMSKmNUPSWSV1AxjzNFLJbobqx0V1p6U8GJhTJCFXgSg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2583</AUTH_ID><PUBLICKEY>+K7NGoI9HmjKoRiHuYZc+jzrxxI5/FyecBmrMwUGMVpVSSz0yf0afw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XQp6TZ6dU7CXjnLV63oEx3QdOUCuKJiUAA8aWwbIUaaagtDFP6ulJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>xyI6ehQfX1XKnjVTtCJgqgjfyy3GzKkucEMXquxs1/KUrpENRGQjBA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+usb_clear_halt() on INTERRUPT endpoint: Broken pipe
+OK.
diff --git a/logs/mtp-detect-iriver-e100v2.txt b/logs/mtp-detect-iriver-e100v2.txt
new file mode 100644
index 0000000..d3f4f05
--- /dev/null
+++ b/logs/mtp-detect-iriver-e100v2.txt
@@ -0,0 +1,324 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Device 1 (VID=4102 and PID=1142) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1142
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: iriver
+ Model: iriver E100
+ Device version: TP-0.31-N-ENG
+ Serial number: 4FDD98183679F5CAF3C86A9B2FE5A30D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3953778688
+ FreeSpaceInBytes: 3934801920
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver Lplayer files
+ VolumeIdentifier: 493FF12A
+Special directories:
+ Default music folder: 0x05000160
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x05000161
+ Default video folder: 0x05000166
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x05000165
+MTP-specific device properties:
+ Friendly name: iriver Lplayer
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ Audio Video Interleave
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20000101 00:57:18Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">1cUpvoFT1km+bWh+y4prYMuKa2A=</UNIQUEID><PUBLICKEY
+private="1">XnLi276Xeko7dP/sImMdFCk/dTZu4C4fP/ZhZs8UHPPccDUsnc8tag==</PUBLICKEY><KEYDATA>VQTzOoKVHVvh+VFTVFLWvvT3NhA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>XnLi276Xeko7dP/sImMdFCk/dTb7U+9CzQ55COFvN8HIpjlgJ52Hdw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>ZmovhTBN3bnjQVf71aL+hATVdyE=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.29</SECURITYVERSION><CERTIFICATE
+private="1">XnLi276Xeko7dP/sImMdFCk/dTZu4C4fP/ZhZs8UHPPccDUsnc8tagIEbx1ecuLbvpd6Sjt0/+wiYx0UKT91Nl+KDIWzrINnft7T8B3NCRbVck8M</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>U15</NAME><MANUFACTURER>iriver</MANUFACTURER><MAKE>iriver</MAKE><DISTRIBUTOR>iriver</DISTRIBUTOR><MODEL>U15</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1.0</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>1.0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1.0</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>1.0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>0</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>6656</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>EdOiLtTuOe4+U3hrVK/IcRZcyGW8BHMjMAL4YfGpoN4u97Tg4CNaiQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>4tBMscZQWvy6rJvyVIFenW0cqgZdZDNAIfqXUU0zAIyo/mOPOoH+Fw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2689</AUTH_ID><PUBLICKEY>8+825nwSOpX5VTPcRs8HwcqZnohYNKwQ2UFYeTsnyFFUrtCVbCWnBg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>2RkkhKJcUpxEmYxc+MOEg1hxTDr2Ciook0lMeKWqVHelB9f6quwMaQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hD5Rlcqn2EDfIR1MBoAgqB9EfS+eupTKTsW2VaVmFL9USNAEP2JnTA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+usb_clear_halt() on INTERRUPT endpoint: Broken pipe
+OK.
+
+
+
diff --git a/logs/mtp-detect-iriver-h10-20GB.txt b/logs/mtp-detect-iriver-h10-20GB.txt
new file mode 100644
index 0000000..7f67969
--- /dev/null
+++ b/logs/mtp-detect-iriver-h10-20GB.txt
@@ -0,0 +1,142 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 2101
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: iriver
+ Model: iriver Device
+ Device version: PP5020AF-01.02-FRE-MT-DT, (Build 129)
+ Serial number: 3fff0040-0010c837-00000000-0000003f-36310000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1001: Get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Set meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ 3009: MP3
+ 3008: MS Wave
+ 3801: JPEG
+ ba05: Abstract Audio Video Playlist
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: iriver H10 20GC
+ Synchronization partner: (NULL)
+ Total bytes on device: 19994066944 (19067 MB)
+ Free bytes on device: 1643121664 (1567 MB)
+ Storage description: "iriver HDD"
+ Volume label: "H10_20GB"
+ Battery level 176 of 100 (176%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20061030
+20:30:04Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">QAD/PzfIEAAAAAAAPwAAAAAAMTY=</UNIQUEID><PUBLICKEY
+private="1">FQBk2GzllIEzGlDOml7u6bqep4er94r3KKYJuEKcsn1ODyL2z8D3Ew==</PUBLICKEY>
+<KEYDATA>KrDm/ouWvbmZJxFfUwGxeoUglus=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>S3Z
+Iz9wduynaJZaZvQgs/NqGGxJL1mGTieY2A1rYkn0+fUMUc6Djcw==</MSDRM_SIGNATURE_VALUE><SY
+MSIGNATURE>261d87MS77pUbix3Cnfuq5eNH94=</SYMSIGNATURE></CERTIFICATE><FALLBACK><S
+ECURITYVERSION>2.4.101.59</SECURITYVERSION><CERTIFICATE private="1">FQBk2GzllIEz
+GlDOml7u6bqep4er94r3KKYJuEKcsn1ODyL2z8D3EwIEZTsZnkCC5cxjRgmjXeaAMuNdn2RsNykcD+hj
+KESFyhpVZDJoyWVin7RD</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NA
+ME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE
+><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECUR
+ITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWA
+RE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FI
+RMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft
+.com/fwlink/?LinkId=25817</URL
+ ><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY
+></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1
+</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATU
+RES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZ
+E><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>anriOiRlE5HtYKyjesddaEu
+A7Hha3F3gn0l1J3T6lzRRwX9TKrGmWA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>iZeXW
+IVwHQsIfNuYamP+4+/emoVa+qDvr6rtxKFvY3tw9YxKtRveSA==</MSDRM_SIGNATURE_VALUE></CER
+TIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLE
+VEL><AUTH_ID>159</AUTH_ID><PUBLICKEY>uTJijzQAocsraT8vDT4rY4klgmorx3ejgic57TT4scC
+JSpSnj5YkaA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GspA/RcLJHtiUqdOwiGn0DfGo
+wAyKCKxBSNdFD20ArIxGnT+SqwQeg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICAT
+E type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgkt
+nbYaEEi4teCse!gz6RvTPuC!zizKJl
+ pU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SGUL1ilPv1AhZ4LcGX0d2Da4QD
+XtUmpZCbsbD4NRLzgHHU6zEKzdYA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT> \ No newline at end of file
diff --git a/logs/mtp-detect-iriver-lplayer.txt b/logs/mtp-detect-iriver-lplayer.txt
new file mode 100644
index 0000000..9480f71
--- /dev/null
+++ b/logs/mtp-detect-iriver-lplayer.txt
@@ -0,0 +1,325 @@
+libmtp version: 0.3.5
+
+Listing raw device(s)
+ Found 1 device(s):
+ iRiver: E100 v2 (4102:1142) @ bus 0, dev 3
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1142
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: iRiver
+ Vendor id: 0x4102
+ Product: E100 v2
+ Vendor id: 0x1142
+ Device flags: 0x0000020c
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: iriver
+ Model: iriver Lplayer
+ Device version: MTP-1.03-N-ENG
+ Serial number: 8FDE9818A67BF5C250C7E0705176630D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 3953778688
+ FreeSpaceInBytes: 3934863360
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver Lplayer files
+ VolumeIdentifier: 89AF5856
+Special directories:
+ Default music folder: 0x05000160
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x05000161
+ Default video folder: 0x05000166
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x05000165
+MTP-specific device properties:
+ Friendly name: iriver Lplayer
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ Audio Video Interleave
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080115 15:07:15Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">aUp7OGNi0E2rTJRK1KNVPNSjVTw=</UNIQUEID><PUBLICKEY private="1">c72VBbwwSXbJBkRYhbk6U+MBClDMfHKPLqwtBTpa7EbhmV5ATAYhew==</PUBLICKEY><KEYDATA>hYwhDdTJn13oa/5Z2JjD43g9I00=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>c72VBbwwSXbJBkRYhbk6U+MBClDUHCKqwsiRpE+PtEoJwO5NQb/2Rg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>TrSOaRr6OzoUkff6iLKafbfrVSY=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.29</SECURITYVERSION><CERTIFICATE private="1">c72VBbwwSXbJBkRYhbk6U+MBClDMfHKPLqwtBTpa7EbhmV5ATAYhewIEbx1zvZUFvDBJdskGRFiFuTpT4wEKUKv/eIp8QwjEmfer6l8unP/niiEb</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>U15</NAME><MANUFACTURER>iriver</MANUFACTURER><MAKE>iriver</MAKE><DISTRIBUTOR>iriver</DISTRIBUTOR><MODEL>U15</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1.0</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>1.0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1.0</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>1.0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>0</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>6656</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>EdOiLtTuOe4+U3hrVK/IcRZcyGW8BHMjMAL4YfGpoN4u97Tg4CNaiQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>4tBMscZQWvy6rJvyVIFenW0cqgZdZDNAIfqXUU0zAIyo/mOPOoH+Fw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2689</AUTH_ID><PUBLICKEY>8+825nwSOpX5VTPcRs8HwcqZnohYNKwQ2UFYeTsnyFFUrtCVbCWnBg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>2RkkhKJcUpxEmYxc+MOEg1hxTDr2Ciook0lMeKWqVHelB9f6quwMaQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hD5Rlcqn2EDfIR1MBoAgqB9EfS+eupTKTsW2VaVmFL9USNAEP2JnTA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+usb_clear_halt() on INTERRUPT endpoint: Broken pipe
+OK. \ No newline at end of file
diff --git a/logs/mtp-detect-iriver-spinn.txt b/logs/mtp-detect-iriver-spinn.txt
new file mode 100644
index 0000000..8cb2749
--- /dev/null
+++ b/logs/mtp-detect-iriver-spinn.txt
@@ -0,0 +1,378 @@
+libmtp version: 0.3.5
+
+Listing raw device(s)
+ Found 1 device(s):
+ iRiver: Spinn (4102:1147) @ bus 0, dev 3
+Attempting to connect device(s)
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1147
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: iRiver
+ Vendor id: 0x4102
+ Product: Spinn
+ Vendor id: 0x1147
+ Device flags: 0x0000020c
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: iriver
+ Model: iriver SPINN
+ Device version: MTP-1.50-N-ENG
+ Serial number: AA5521880E7631313338303914140408
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/AAVT: 1.0; microsoft.com/WMDRMND: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd405: Device Icon
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc87: Width UINT32 data type range: MIN 128, MAX 480, STEP 16 GET/SET
+ dc88: Height UINT32 data type range: MIN 128, MAX 272, STEP 16 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 2320000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1482049860, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 8000, MAX 2000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 29970, 30000, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 480, STEP 16 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 272, STEP 16 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 74, MAX 75, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 99, MAX 100, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, 353, READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 10000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc87: Width UINT32 data type range: MIN 128, MAX 480, STEP 16 GET/SET
+ dc88: Height UINT32 data type range: MIN 128, MAX 272, STEP 16 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 1088000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 8000, MAX 768000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000, 29970, 30000, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 91, MAX 92, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 91, MAX 92, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ ba82: XMLDocument
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 8109948928
+ FreeSpaceInBytes: 8103804928
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver SPINN files
+ VolumeIdentifier: AA5521880E7631313338303914140408
+Special directories:
+ Default music folder: 0x00010000
+ Default playlist folder: 0x00030000
+ Default picture folder: 0x00020000
+ Default video folder: 0x00040000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00070000
+MTP-specific device properties:
+ Friendly name: iriver SPINN
+ Synchronization partner: 140408
+ Battery level 4 of 4 (100%)
+libmtp supported (playable) filetypes:
+ Text file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Microsoft Windows Media Video
+ XML file
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20091188
+11:0㘵:19Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">QUE1NTIxODgwRTc2MzEzMQoKCgo=</UNIQUEID><PUBLICKEY
+private="1">nAq1wBOY9m+POIlxGblh+ibJ10BW+IqfQn+MvCiUBqjXovds/DHYQw==</PUBLICKEY><KEYDATA>VSLNTln0fGxd0M7Tifz5cZ1HtMs=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>ckc98gxLGev9mMFIPWvDeTNlX2Sl9MkqgSq2aW98dRfpNvcKAthkJg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>3NbfN9AExSy1yczfZMaL80bWioI=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.112.127</SECURITYVERSION><CERTIFICATE
+private="1">nAq1wBOY9m+POIlxGblh+ibJ10BW+IqfQn+MvCiUBqjXovds/DHYQwIEcH8mpMKKha/63f9vXQWFP79FbxETgIvVq/ED4jV6+1/zH/0u7R/7uU8g</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>iRiver SPINN
+</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>SPINN</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT><SUPPORT_REVOCATION><GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID></SUPPORT_REVOCATION></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>+ZjeUtikBZ1adtyWpNX+/6MWwFTDag1Vq/4zSuOc03Q6Lj4z3H6tdA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>EqamYa8GHMZucknXJZmImVhM6UQjNrN9gzxgJiatfuUFzyZPMStBKQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>3043</AUTH_ID><PUBLICKEY>2wirC2cl7qFtBS0Uh9Zkh5tpBlsrjdmcfQMY3hyKanQ+R+p+CT4PKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>+cXzNoyHwm8VAZR3NYXLPIacC3EXF4KluBeat1fYKoBB2v66GiAHaw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>wtVxfFn17mSmA8KkVTEA5LFUASUjXXpZ4XK5bwLKx8V7/0Gx3NlVCQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+OK.
diff --git a/logs/mtp-detect-iriver-t10.txt b/logs/mtp-detect-iriver-t10.txt
new file mode 100644
index 0000000..002c8de
--- /dev/null
+++ b/logs/mtp-detect-iriver-t10.txt
@@ -0,0 +1,191 @@
+PTP: Opening session
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 20000
+ bDeviceClass: 111
+ bDeviceSubClass: 46
+ bDeviceProtocol: 111
+ idVendor: 0067
+ idProduct: b7f9
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x0000000c
+Device info:
+ Manufacturer: iriver
+ Model: iriver MP3 T10
+ Device version: MTP-1.76-N-ENG
+ Serial number: 03bff80f000000f03230303630313031
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc95: MetaGenre
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc95: MetaGenre
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ b902: OGG
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ b904: Audible.com Codec
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ da00: unknown(da00)
+ da01: unknown(da01)
+ da02: unknown(da02)
+ da03: unknown(da03)
+ da04: unknown(da04)
+ dc89: Duration
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0PTP: Closing session
+002
+ AccessCapability: 0x0000
+ MaxCapacity: 2044428288
+ FreeSpaceInBytes: 1842839552
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver MP3 T10 files
+ VolumeIdentifier: daplippaaaaaaaapcdadadgdadbdadbd
+Special directories:
+ Default music folder: 0x00040000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: iriver MP3 T10
+ Synchronization partner: WMP 10; Napster;
+ Battery level 4 of 4 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Ogg container format
+ Audible.com Audio Codec
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070304 00:12:49Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+Trying to acquire device certificate
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">7RqSopOusCYv5QMC3DVLKa4yyoOzIqGmCLyWjCzXiUw30sdRJ00aJg==</PUBLICKEY><KEYDATA>9mavUe/KTsOYKWu0vTg/wK1U2Rs=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>B5CPcB+XffZRMK/9eFOV1lshKjq2It2UldHXeDOwg1QMWXQoLn8RQg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>wlP+Zc1g451zJMVLnom5cbcmpf0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.3</SECURITYVERSION><CERTIFICATE private="1">7RqSopOusCYv5QMC3DVLKa4yyoOzIqGmCLyWjCzXiUw30sdRJ00aJgIEZgPhNl4IaMaz8zFguv1JT6b8s81PSKRaaY/GmNhCUe8fl9+WOZtAfUVD</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>8jeq4PyJZUL8NpU2+/tgvUZC9ijn3RdlK3wd04Iws6oXHoA+D6vFfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HZ85tGf5VnDwKLGq2S0OlK/oJCKbCx3A2yudzMOv8ERwi6drHW5xOA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>359</AUTH_ID><PUBLICKEY>DpMhgaZkXUFNFIs4KJe7S9MZYwuE1bBic6AV6wAc7Ir0Stfx8U+SKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GWscwHnDoSazgB+YOP2D7xrqDifWEFztujqAWwrkM7onynIcfOBBMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QndHdJ4ZoSgvokVCOWsqVnvuckGL5cn6Vrua0j4tcGBrjD9PgNd0AA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+Trying to print WMPInfo.xml if it exists
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{437C6424-0B80-4069-9762-60CF3966336F}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-iriver-t20.txt b/logs/mtp-detect-iriver-t20.txt
new file mode 100644
index 0000000..34759ec
--- /dev/null
+++ b/logs/mtp-detect-iriver-t20.txt
@@ -0,0 +1,297 @@
+PTP: Opening session
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1118
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x0000001c
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0000 0001 25b9 46eb ............%.F.
+ 0030: c0b3 6173 0000 0000 0000 0000 0000 0000 ..as............
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 003e 0000 0000 0000 0000 3f3e .....>........?>
+ 0060: 0000 003f 3435 3637 3839 3a3b 3c3d 0000 ...?456789:;<=..
+ 0070: 0000 0000 0000 0102 0304 0506 0708 090a ................
+ 0080: 0b0c 0d0e 0f10 1112 1314 1516 1718 1900 ................
+ 0090: 0000 0000 001a 1b1c 1d1e 1f20 2122 2324 ........... !"#$
+ 00a0: 2526 2728 292a 2b2c 2d2e 2f30 3132 3300 %&'()*+,-./0123.
+ 00b0: 0000 0000 240c e95c 4900 4400 4600 4f00 ....$..\I.D.F.O.
+ 00c0: 5200 5300 4c00 4b00 348b 02ae b63a 588d R.S.L.K.4....:X.
+ 00d0: b6f5 383b 4647 b2cd f577 6731 aae8 3344 ..8;FG...wg1..3D
+ 00e0: 44db 9095 bb7f cc51 809d 2d3a 7fbd 4c08 D......Q..-:..L.
+ 00f0: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0100: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0110: 7a92 e4f3 4b6b 426c 4300 4500 5200 5400 z...KkBlC.E.R.T.
+ 0120: 4300 4100 4300 4800 4dbf d90d d96e 8c9e C.A.C.H.M....n..
+ 0130: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0140: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 0150: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0160: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0170: 7a92 e4f3 4b6b 426c 4dbf d90d d96e 8c9e z...KkBlM....n..
+ 0180: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0190: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 01a0: 240c f7ac 0000 0003 0000 0000 240c f7b4 $...........$...
+ 01b0: 0000 0003 0100 0000 240c f7bc 0000 0002 ........$.......
+ 01c0: 0200 0000 240c f7c4 0000 0002 0300 0000 ....$...........
+ 01d0: 240c f7cc 0000 0002 0500 0000 240c f7d4 $...........$...
+ 01e0: 0000 0002 0600 0000 240c f7dc 0000 0000 ........$.......
+ 01f0: 0700 0000 240c f7e4 0000 0001 0800 0000 ....$...........
+ 0200: 240c f89c 2406 2f64 240c f8a4 2406 2e80 $...$./d$...$...
+ 0210: 240c f8ac 2406 330c 240c f8b4 2406 348c $...$.3.$...$.4.
+ 0220: 240c f8bc 2406 3100 240c f8c4 2406 35b0 $...$.1.$...$.5.
+ 0230: 240c f8cc 2406 361c 240c f8d4 2406 3684 $...$.6.$...$.6.
+ 0240: 240c f8dc 2406 368c 240d 0008 2406 3070 $...$.6.$...$.0p
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0700 0a00 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 2400 20bc ............$. .
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 2400 20bc 0000 0000 ........$. .....
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 2, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0000 0001 25b9 46eb ............%.F.
+ 0030: c0b3 6173 0000 0000 0000 0000 0000 0000 ..as............
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 003e 0000 0000 0000 0000 3f3e .....>........?>
+ 0060: 0000 003f 3435 3637 3839 3a3b 3c3d 0000 ...?456789:;<=..
+ 0070: 0000 0000 0000 0102 0304 0506 0708 090a ................
+ 0080: 0b0c 0d0e 0f10 1112 1314 1516 1718 1900 ................
+ 0090: 0000 0000 001a 1b1c 1d1e 1f20 2122 2324 ........... !"#$
+ 00a0: 2526 2728 292a 2b2c 2d2e 2f30 3132 3300 %&'()*+,-./0123.
+ 00b0: 0000 0000 240c e95c 4900 4400 4600 4f00 ....$..\I.D.F.O.
+ 00c0: 5200 5300 4c00 4b00 348b 02ae b63a 588d R.S.L.K.4....:X.
+ 00d0: b6f5 383b 4647 b2cd f577 6731 aae8 3344 ..8;FG...wg1..3D
+ 00e0: 44db 9095 bb7f cc51 809d 2d3a 7fbd 4c08 D......Q..-:..L.
+ 00f0: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0100: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0110: 7a92 e4f3 4b6b 426c 4300 4500 5200 5400 z...KkBlC.E.R.T.
+ 0120: 4300 4100 4300 4800 4dbf d90d d96e 8c9e C.A.C.H.M....n..
+ 0130: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0140: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 0150: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0160: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0170: 7a92 e4f3 4b6b 426c 4dbf d90d d96e 8c9e z...KkBlM....n..
+ 0180: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0190: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 01a0: 240c f7ac 0000 0003 0000 0000 240c f7b4 $...........$...
+ 01b0: 0000 0003 0100 0000 240c f7bc 0000 0002 ........$.......
+ 01c0: 0200 0000 240c f7c4 0000 0002 0300 0000 ....$...........
+ 01d0: 240c f7cc 0000 0002 0500 0000 240c f7d4 $...........$...
+ 01e0: 0000 0002 0600 0000 240c f7dc 0000 0000 ........$.......
+ 01f0: 0700 0000 240c f7e4 0000 0001 0800 0000 ....$...........
+ 0200: 240c f89c 2406 2f64 240c f8a4 2406 2e80 $...$./d$...$...
+ 0210: 240c f8ac 2406 330c 240c f8b4 2406 348c $...$.3.$...$.4.
+ 0220: 240c f8bc 2406 3100 240c f8c4 2406 35b0 $...$.1.$...$.5.
+ 0230: 240c f8cc 2406 361c 240c f8d4 2406 3684 $...$.6.$...$.6.
+ 0240: 240c f8dc 2406 368c 240d 0008 2406 3070 $...$.6.$...$.0p
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0700 0a00 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 2400 20bc ............$. .
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 2400 20bc 0000 0000 ........$. .....
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 Unknown OPFF type 5
+Unknown OPFF type 5
+Unknown OPFF type 5
+0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Device info:
+ Manufacturer: iriver
+ Model: iriver T20
+ Device version: MTP 1.01P
+ Serial number: T20-oodapfdoaaaaaalpcdada
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type READ ONLY
+ dc46: Artist STRING data type READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 350000, STEP 1 READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumaUnknown OPFF type 5
+Unknown OPFF type 5
+ble UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type READ ONLY
+ dc46: Artist STRING data type READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 350000, STEP 1 READ ONLY
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1045151744
+ FreeSpaceInBytes: 1043693568
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: FAT16 System
+ VolumeIdentifier: oodapfdoaaaaaalpcdadadfdadbdadbd
+Special directories:
+ Default music folder: 0x00030000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: iriver T20
+ Synchronization partner: WMP 10; Napster;
+ Battery level 4 of 4 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20050119 13:05:14Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">hlyUU+srTalkBBJJXsm5WJfoGG+cDAQ4ciNf1rwacpiENfUNqxqkfw==</PUBLICKEY><KEYDATA>FIfIfFBLeASr5lGJdTf6N0sQ9qs=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>DBAP9cxNWlPp5KdpzQ0k5qBeEFoSr+t9rwKffLletujBd2d8V/1zTw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>iBBOxLKP9T+PdFIoqQJfBHGR+fU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.3</SECURITYVERSION><CERTIFICATE private="1">hlyUU+srTalkBBJJXsm5WJfoGG+cDAQ4ciNf1rwacpiENfUNqxqkfwIEZgMEhLVvBJ/Jqw0ZeRjl4T4rNDC2R423VDfWyfMw2QZrsBc5IUYZmIVi</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIPTP: Closing session
+ZE></LIMITS><PUBLICKEY>8jeq4PyJZUL8NpU2+/tgvUZC9ijn3RdlK3wd04Iws6oXHoA+D6vFfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HZ85tGf5VnDwKLGq2S0OlK/oJCKbCx3A2yudzMOv8ERwi6drHW5xOA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>359</AUTH_ID><PUBLICKEY>DpMhgaZkXUFNFIs4KJe7S9MZYwuE1bBic6AV6wAc7Ir0Stfx8U+SKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GWscwHnDoSazgB+YOP2D7xrqDifWEFztujqAWwrkM7onynIcfOBBMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QndHdJ4ZoSgvokVCOWsqVnvuckGL5cn6Vrua0j4tcGBrjD9PgNd0AA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{2AD8E0B4-575C-4175-9816-CFD6BDB0531B}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-iriver-t30.txt b/logs/mtp-detect-iriver-t30.txt
new file mode 100644
index 0000000..382111f
--- /dev/null
+++ b/logs/mtp-detect-iriver-t30.txt
@@ -0,0 +1,287 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1119
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x0000001c
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0000 0001 25b9 46eb ............%.F.
+ 0030: c0b3 6173 0000 0000 0000 0000 0000 0000 ..as............
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 003e 0000 0000 0000 0000 3f3e .....>........?>
+ 0060: 0000 003f 3435 3637 3839 3a3b 3c3d 0000 ...?456789:;<=..
+ 0070: 0000 0000 0000 0102 0304 0506 0708 090a ................
+ 0080: 0b0c 0d0e 0f10 1112 1314 1516 1718 1900 ................
+ 0090: 0000 0000 001a 1b1c 1d1e 1f20 2122 2324 ........... !"#$
+ 00a0: 2526 2728 292a 2b2c 2d2e 2f30 3132 3300 %&'()*+,-./0123.
+ 00b0: 0000 0000 240d 0fec 4900 4400 4600 4f00 ....$...I.D.F.O.
+ 00c0: 5200 5300 4c00 4b00 348b 02ae b63a 588d R.S.L.K.4....:X.
+ 00d0: b6f5 383b 4647 b2cd f577 6731 aae8 3344 ..8;FG...wg1..3D
+ 00e0: 44db 9095 bb7f cc51 809d 2d3a 7fbd 4c08 D......Q..-:..L.
+ 00f0: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0100: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0110: 7a92 e4f3 4b6b 426c 4300 4500 5200 5400 z...KkBlC.E.R.T.
+ 0120: 4300 4100 4300 4800 4dbf d90d d96e 8c9e C.A.C.H.M....n..
+ 0130: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0140: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 0150: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0160: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0170: 7a92 e4f3 4b6b 426c 4dbf d90d d96e 8c9e z...KkBlM....n..
+ 0180: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0190: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 01a0: 240d 1e3c 0000 0003 0000 0000 240d 1e44 $..<........$..D
+ 01b0: 0000 0003 0100 0000 240d 1e4c 0000 0002 ........$..L....
+ 01c0: 0200 0000 240d 1e54 0000 0002 0300 0000 ....$..T........
+ 01d0: 240d 1e5c 0000 0002 0500 0000 240d 1e64 $..\........$..d
+ 01e0: 0000 0002 0600 0000 240d 1e6c 0000 0000 ........$..l....
+ 01f0: 0700 0000 240d 1e74 0000 0001 0800 0000 ....$..t........
+ 0200: 240d 1f2c 2406 5a78 240d 1f34 2406 5994 $..,$.Zx$..4$.Y.
+ 0210: 240d 1f3c 2406 5e20 240d 1f44 2406 5fa0 $..<$.^ $..D$._.
+ 0220: 240d 1f4c 2406 5c14 240d 1f54 2406 60c4 $..L$.\.$..T$.`.
+ 0230: 240d 1f5c 2406 6130 240d 1f64 2406 6198 $..\$.a0$..d$.a.
+ 0240: 240d 1f6c 2406 61a0 240d 2698 2406 5b84 $..l$.a.$.&.$.[.
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0700 0a00 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 2400 2180 0000 0000 ........$.!.....
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 2400 2180 0000 0000 0000 0000 ....$.!.........
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 2, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0000 0001 25b9 46eb ............%.F.
+ 0030: c0b3 6173 0000 0000 0000 0000 0000 0000 ..as............
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 003e 0000 0000 0000 0000 3f3e .....>........?>
+ 0060: 0000 003f 3435 3637 3839 3a3b 3c3d 0000 ...?456789:;<=..
+ 0070: 0000 0000 0000 0102 0304 0506 0708 090a ................
+ 0080: 0b0c 0d0e 0f10 1112 1314 1516 1718 1900 ................
+ 0090: 0000 0000 001a 1b1c 1d1e 1f20 2122 2324 ........... !"#$
+ 00a0: 2526 2728 292a 2b2c 2d2e 2f30 3132 3300 %&'()*+,-./0123.
+ 00b0: 0000 0000 240d 0fec 4900 4400 4600 4f00 ....$...I.D.F.O.
+ 00c0: 5200 5300 4c00 4b00 348b 02ae b63a 588d R.S.L.K.4....:X.
+ 00d0: b6f5 383b 4647 b2cd f577 6731 aae8 3344 ..8;FG...wg1..3D
+ 00e0: 44db 9095 bb7f cc51 809d 2d3a 7fbd 4c08 D......Q..-:..L.
+ 00f0: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0100: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0110: 7a92 e4f3 4b6b 426c 4300 4500 5200 5400 z...KkBlC.E.R.T.
+ 0120: 4300 4100 4300 4800 4dbf d90d d96e 8c9e C.A.C.H.M....n..
+ 0130: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0140: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 0150: 45b1 a7e1 9081 9837 00cc 89a7 5724 72b9 E......7....W$r.
+ 0160: c129 a362 d955 7404 027d 6e69 79e9 6ad9 .).b.Ut..}niy.j.
+ 0170: 7a92 e4f3 4b6b 426c 4dbf d90d d96e 8c9e z...KkBlM....n..
+ 0180: 325f 4f3d eca9 8459 6b5e 0686 e7e2 c28b 2_O=...Yk^......
+ 0190: de14 4b29 2cec 4d1d 76fd 5a14 903a 1077 ..K),.M.v.Z..:.w
+ 01a0: 240d 1e3c 0000 0003 0000 0000 240d 1e44 $..<........$..D
+ 01b0: 0000 0003 0100 0000 240d 1e4c 0000 0002 ........$..L....
+ 01c0: 0200 0000 240d 1e54 0000 0002 0300 0000 ....$..T........
+ 01d0: 240d 1e5c 0000 0002 0500 0000 240d 1e64 $..\........$..d
+ 01e0: 0000 0002 0600 0000 240d 1e6c 0000 0000 ........$..l....
+ 01f0: 0700 0000 240d 1e74 0000 0001 0800 0000 ....$..t........
+ 0200: 240d 1f2c 2406 5a78 240d 1f34 2406 5994 $..,$.Zx$..4$.Y.
+ 0210: 240d 1f3c 2406 5e20 240d 1f44 2406 5fa0 $..<$.^ $..D$._.
+ 0220: 240d 1f4c 2406 5c14 240d 1f54 2406 60c4 $..L$.\.$..T$.`.
+ 0230: 240d 1f5c 2406 6130 240d 1f64 2406 6198 $..\$.a0$..d$.a.
+ 0240: 240d 1f6c 2406 61a0 240d 2698 2406 5b84 $..l$.a.$.&.$.[.
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0700 0a00 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 2400 2180 0000 0000 ........$.!.....
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 2400 2180 0000 0000 0000 0000 ....$.!.........
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Device info:
+ Manufacturer: iriver
+ Model: iriver T30
+ Device version: MTP 1.23P
+ Serial number: 6eb1d8d2000000fd3230303531313130
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type READ ONLY
+ dc46: Artist STRING data type READ ONLY
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 26, 27, 28, 30, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 350000, STEP 1 READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type READ ONLY
+ dc46: Artist STRING data type READ ONLY
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 26, 27, 28, 30, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 350000, STEP 1 READ ONLY
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1045151744
+ FreeSpaceInBytes: 629784576
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: FAT16 System
+ VolumeIdentifier: ogblincnaaaaaanpcdadadfdbdbdbdad
+Special directories:
+ Default music folder: 0x00030000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: iriver T30
+ Synchronization partner: WMP 10; Napster;
+ Battery level 4 of 4 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071115 17:28:55Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">Fqb8j0UuoPItsjL2Az8gSpHrh2D89BaCb3LIGk3BSTrx+4Z2VgeLew==</PUBLICKEY><KEYDATA>lGoZKzHk8qu8nFJmBHtGCpKsAY4=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>LyIMBcOxxtTj9ZmBULhuS9Ibd1+BH+/HyKAXO1KPk1fslMW3D+QBMw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Q9EQB0qQlXpGezb6azJ16xq0reY=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.3</SECURITYVERSION><CERTIFICATE private="1">Fqb8j0UuoPItsjL2Az8gSpHrh2D89BaCb3LIGk3BSTrx+4Z2VgeLewIEZgP20xt7aGudp/I3E12+Ml4/khUdTGfPZrc5IBnf2x3MrdcA/oWyde00</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>8jeq4PyJZUL8NpU2+/tgvUZC9ijn3RdlK3wd04Iws6oXHoA+D6vFfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HZ85tGf5VnDwKLGq2S0OlK/oJCKbCx3A2yudzMOv8ERwi6drHW5xOA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>359</AUTH_ID><PUBLICKEY>DpMhgaZkXUFNFIs4KJe7S9MZYwuE1bBic6AV6wAc7Ir0Stfx8U+SKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GWscwHnDoSazgB+YOP2D7xrqDifWEFztujqAWwrkM7onynIcfOBBMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_
+ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QndHdJ4ZoSgvokVCOWsqVnvuckGL5cn6Vrua0j4tcGBrjD9PgNd0AA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-iriver-t60.txt b/logs/mtp-detect-iriver-t60.txt
new file mode 100644
index 0000000..9f9e429
--- /dev/null
+++ b/logs/mtp-detect-iriver-t60.txt
@@ -0,0 +1,211 @@
+mtp-detect log:
+Autodetected device with VID=4102 and PID=1134 is UNKNOWN.
+Please report this VID/PID and the device model name etc to the
+libmtp development team!
+PTP: Opening session
+Connected to MTP device.
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 0
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 4102
+idProduct: 1134
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Device flags: 0x00000000
+Device info:
+Manufacturer: iriver
+Model: iriver MP3 T60
+Device version: MTP-1.03-N-ENG
+Serial number: 1557c6f40000003a3230303630313031
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com:
+1.0
+Supported operations:
+1001: get device info
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+100b: Delete object
+100c: Send object info
+100d: Send object
+100f: Format storage
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+9801: Get object properties supported
+9802: Get object property description
+9803: Get object property value
+9804: Set object property value
+9805: Get object property list
+9810: Get object references
+9811: Set object references
+9101: Get secure time challenge
+9102: Get secure time response
+9103: Set license response
+9104: Get sync list
+9105: Send meter challenge query
+9106: Get meter challenge
+9107: Get meter response
+9108: Clean data store
+9109: Get license state
+910a: Send WMDRM-PD Command
+910b: Send WMDRM-PD Request
+Events supported:
+None.
+Device Properties Supported:
+0x5001: Battery Level
+0xd401: Synchronization Partner
+0xd402: Device Friendly Name
+0xd101: Secure Time
+0xd102: Device Certificate
+0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+3000: Undefined Type
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+3001: Association/Directory
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+3009: MP3
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+dc46: Artist
+dc95: MetaGenre
+de93: SampleRate
+de94: NumberOfChannels
+de99: AudioWAVECodec
+de9a: AudioBitRate
+b901: WMA
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+dc46: Artist
+dc95: MetaGenre
+de93: SampleRate
+de94: NumberOfChannels
+de99: AudioWAVECodec
+de9a: AudioBitRate
+b902: OGG
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+b904: Audible.com Codec
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+da00: unknown(da00)
+da01: unknown(da01)
+da02: unknown(da02)
+da03: unknown(da03)
+da04: unknown(da04)
+dc89: Duration
+ba05: Abstract Audio Video Playlist
+dc01: StorageID
+dc02: ObjectFormat
+dc04: ObjectSize
+dc07: ObjectFileName
+dc0b: ParentObject
+dc41: PersistantUniqueObjectIdentifier
+dc44: Name
+dc4f: NonConsumable
+Storage Devices:
+StorageID: 0x00010001
+StorageType: 0x0003
+FilesystemType: 0x0002
+AccessCapability: 0x0000
+MaxCapacity: 2009825280
+FreeSpaceInBytes: 209584128
+FreeSpaceInObjects: 4294967295
+StorageDescription: iriver MP3 T60 files
+VolumeIdentifier: fbhfgmepaaaaaakdcdadadgdadbdadbd
+Special directories:
+Default music folder: 0x00010000
+Default playlist folder: 0x00040000
+Default picture folder: 0x00000000
+Default video folder: 0x00000000
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x00000000
+Default text folder: 0x00000000
+MTP-specific device properties:
+Friendly name: iriver MP3 T60
+Synchronization partner: WMP 10; Napster;
+Battery level 3 of 4 (75%)
+libmtp supported (playable) filetypes:
+ISO MPEG-1 Audio Layer 3
+Microsoft Windows Media Audio
+Ogg container format
+Audible.com Audio Codec
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070731
+19:24:07Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+LIBMTP panic: Found a bad handle, trying to ignore it.
+LIBMTP panic: Found a bad handle, trying to ignore it.
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+ptp2/ptp_usb_getdata: read 1 bytes too much, expect problems!
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-iriver-t7-volcano.txt b/logs/mtp-detect-iriver-t7-volcano.txt
new file mode 100644
index 0000000..03ead6e
--- /dev/null
+++ b/logs/mtp-detect-iriver-t7-volcano.txt
@@ -0,0 +1,207 @@
+~$ mtp-detect
+
+libmtp version: 0.3.3
+
+Listing raw device(s)
+ Found 1 device(s):
+ 1043:1143 @ bus 0, dev 9
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1043
+ idProduct: 1143
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 9
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x1043
+ Product: (null)
+ Vendor id: 0x1143
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: iriver
+ Model: iriver T7
+ Device version: MTP-1.01-N-ENG
+ Serial number: A00000600001
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 4059193344
+ FreeSpaceInBytes: 4059160576
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver T7 files
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080114
+19:26:48Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">nrDQMNYHb0qoz1fqYUDqxmFA6sY=</UNIQUEID><PUBLICKEY
+private="1">WbWEVwzD/6k56XKst4OnRTXFJSFurpcN/nEqZeM8/1nMhaqcqrUEQw==</PUBLICKEY><KEYDATA>yZBMmoENcUJrZlqoKjB3RqWbZBk=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>WbWEVwzD/6k56XKst4OnRTXFJSENGS5l+4hHr9gLDu1ThP1y59iwSQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>AZDXn3sieh4rYaQNQl/MdIAKcL0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.31</SECURITYVERSION><CERTIFICATE
+private="1">WbWEVwzD/6k56XKst4OnRTXFJSFurpcN/nEqZeM8/1nMhaqcqrUEQwIEbx9ZtYRXDMP/qTnpcqy3g6dFNcUlIf4NogOPQJYt/s2w7iE5BAM/r9Iq</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>T7</NAME><MANUFACTURER>iriver</MANUFACTURER><MAKE>iriver</MAKE><DISTRIBUTOR>iriver</DISTRIBUTOR><MODEL>T7</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1.0</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>1.0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1.0</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>1.0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>0</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>6656</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>3BpF6JtA7FbR1nASAkawbHYRtEWT5o8TrP7a2L6Bvxb7/P0+i5NLLA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>WRTND1A2JBpLj8Qsi40ZqMRWx4h/7FCW2OCTmtILKq2DJfeA99WGVg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2691</AUTH_ID><PUBLICKEY>WmzVzzbfShRhYsmIVMx/NHFUoxx4e0Mw84ZZX/Jkb5TDaeO2+Y3whA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GU1KjL5g1ZWk23mePnHrT1lJSWscoAt36qwgV2jL+BX5R/uUTr3ADg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>97tzJe/maHwwV07tt0FoMe84Hn9adZfKZ7PJ9j3dWh11FiAzG8jxJA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-iriver-u10.txt b/logs/mtp-detect-iriver-u10.txt
new file mode 100644
index 0000000..4660a26
--- /dev/null
+++ b/logs/mtp-detect-iriver-u10.txt
@@ -0,0 +1,169 @@
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 4102
+ idProduct: 1116
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x0000001c
+Device info:
+ Manufacturer: iriver
+ Model: iriver U10
+ Device version: MTP-1.28-N-FRE
+ Serial number: 3e855e73000000fc323030353
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type READ ONLY
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 26, 27, 28, 30, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 350000, STEP 1 READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type READ ONLY
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 26, 27, 28, 30, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 350000, STEP 1 READ ONLY
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1009516544
+ FreeSpaceInBytes: 994571924
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: iriver U10 files
+ VolumeIdentifier: odfiofdhaaaaaampcdadadfdadbdadbd
+Special directories:
+ Default music folder: 0x000b0000
+ Default playlist folder: 0x000e0000
+ Default picture folder: 0x00060000
+ Default video folder: 0x00070000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00080000
+MTP-specific device properties:
+ Friendly name: iriver U10
+ Synchronization partner: WMP 10; Napster;
+ Battery level 4 of 4 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070707 12:21:10Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">GBqHHaqO+pqv/ONmwK163V+99wcvhIGg8ejENGcqxmDRgatTYT5pLg==</PUBLICKEY><KEYDATA>ImdEQacSpOcuyTX8LShcPujn6ZU=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>8+8w53BteDaRuDYpCUnH7VqsGIXOACG0e1xxhphp0uWeZujfLD0HAQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>fJJmQt+jz3ss5lIu0d+AHqspSQo=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.3</SECURITYVERSION><CERTIFICATE private="1">GBqHHaqO+pqv/ONmwK163V+99wcvhIGg8ejENGcqxmDRgatTYT5pLgIEZgNTl1aNjjIDx38pP578Ybicaf16IAl67726OApjZ1Jz+QU3dxMnZ5hU</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>iRiver H10 Series</NAME><MANUFACTURER>iRiver</MANUFACTURER><MAKE>iRiver</MAKE><DISTRIBUTOR>ReignCom</DISTRIBUTOR><MODEL>H10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>8jeq4PyJZUL8NpU2+/tgvUZC9ijn3RdlK3wd04Iws6oXHoA+D6vFfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HZ85tGf5VnDwKLGq2S0OlK/oJCKbCx3A2yudzMOv8ERwi6drHW5xOA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>359</AUTH_ID><PUBLICKEY>DpMhgaZkXUFNFIs4KJe7S9MZYwuE1bBic6AV6wAc7Ir0Stfx8U+SKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GWscwHnDoSazgB+YOP2D7xrqDifWEFztujqAWwrkM7onynIcfOBBMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QndHdJ4ZoSgvokVCOWsqVnvuckGL5cn6Vrua0j4tcGBrjD9PgNd0AA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{D5ED8A01-F396-4F84-A2E1-41D6776B2BBA}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-lg-km900.txt b/logs/mtp-detect-lg-km900.txt
new file mode 100644
index 0000000..21b41a6
--- /dev/null
+++ b/logs/mtp-detect-lg-km900.txt
@@ -0,0 +1,334 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+Device 0 (VID=1004 and PID=6132) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development
+team
+Found 1 device(s):
+1004:6132 @ bus 0, dev 14
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 0
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 1004
+idProduct: 6132
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Raw device info:
+Bus location: 0
+Device number: 14
+Device entry info:
+Vendor: (null)
+Vendor id: 0x1004
+Product: (null)
+Vendor id: 0x6132
+Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: fa00 ..
+Microsoft device response to control message 1, CMD 0xfa:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 3034 0000 0000 ..MTP.....04....
+0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfa:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 3034 0000 0000 ..MTP.....04....
+0020: 0000 0000 0000 0000 ........
+Device info:
+Manufacturer: LG Electronics
+Model: ����0Mu
+Device version: Sync Pla
+Serial number: : <[EDIT]deleted garbled info[/EDIT]>
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com/WMPPD: 10.0;
+LGElectronics.com/Dispatcher: 0.0a; microsoft.com/WMPPD: 11.0;
+vodafone.com/omadrmv2: 1.0;
+Detected object size: 64 bits
+Supported operations:
+1010: Reset device
+1013: Power down device
+1017: Reset device property value
+1001: get device info
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+100b: Delete object
+100c: Send object info
+100d: Send object
+100f: Format storage
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+101b: Get partial object
+9801: Get object properties supported
+9802: Get object property description
+9803: Get object property value
+9810: Get object references
+9811: Set object references
+9805: Get object property list
+9804: Set object property value
+9806: Set object property list
+9202: Report Acquired Items
+9203: Get transferable playlist types
+9201: Report Added/Deleted Items
+Events supported:
+0x4004
+0x4005
+Device Properties Supported:
+0x5001: Battery Level
+0x501f: Copyright Info
+0xd401: Synchronization Partner
+0xd402: Friendly Device Name
+0xd404: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+b984: 3GP
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, 352, 353, 354,
+GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 2, 1, GET/SET
+de93: SampleRate UINT32 data type range: MIN 32768, MAX 45158, STEP 1
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 8192, MAX 196608, STEP
+1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc96: Composer STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 2, 0, 1, 2, GET/SET
+b901: WMA
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, 352, 353, 354,
+GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 2, 1, GET/SET
+de93: SampleRate UINT32 data type range: MIN 32768, MAX 45158, STEP 1
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 8192, MAX 196608, STEP
+1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc96: Composer STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 2, 0, 1, 2, GET/SET
+3009: MP3
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, 352, 353, 354,
+GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 2, 1, GET/SET
+de93: SampleRate UINT32 data type range: MIN 32768, MAX 45158, STEP 1
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 8192, MAX 196608, STEP
+1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc96: Composer STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+3008: MS Wave
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, 352, 353, 354,
+GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 2, 1, GET/SET
+de93: SampleRate UINT32 data type range: MIN 32768, MAX 45158, STEP 1
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 8192, MAX 196608, STEP
+1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc96: Composer STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ba05: Abstract Audio Video Playlist
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ba10: WPL Playlist
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+3000: Undefined Type
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+b902: OGG
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, 352, 353, 354,
+GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 2, 1, GET/SET
+de93: SampleRate UINT32 data type range: MIN 32768, MAX 45158, STEP 1
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 8192, MAX 196608, STEP
+1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc96: Composer STRING data type GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+300c: ASF
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, 352, 353, 354,
+GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 2, 1, GET/SET
+de93: SampleRate UINT32 data type range: MIN 32768, MAX 45158, STEP 1
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 8192, MAX 196608, STEP
+1 READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc96: Composer STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+3001: Association/Directory
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+StorageID: 0x12345678
+StorageType: 0x0003
+FilesystemType: 0x0002
+AccessCapability: 0x0000
+MaxCapacity: 7485345792
+FreeSpaceInBytes: 7235375104
+FreeSpaceInObjects: 0
+StorageDescription: Internal Drv
+VolumeIdentifier: 1234500LG000000000
+Special directories:
+Default music folder: 0x00000000
+Default playlist folder: 0x00000000
+Default picture folder: 0x00000000
+Default video folder: 0x00000000
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x00000000
+Default text folder: 0x00000000
+MTP-specific device properties:
+Friendly name: KM900 Music Sync Player
+Synchronization partner: Longhorn Sync Engine
+Battery level 10 of 100 (10%)
+libmtp supported (playable) filetypes:
+Microsoft Windows Media Audio
+ISO MPEG-1 Audio Layer 3
+RIFF WAVE file
+Ogg container format
+Microsoft Advanced Systems Format
+Unable to acquire device certificate, perhaps this device does not support
+this
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-lg-vx8550.txt b/logs/mtp-detect-lg-vx8550.txt
new file mode 100644
index 0000000..a6eb101
--- /dev/null
+++ b/logs/mtp-detect-lg-vx8550.txt
@@ -0,0 +1,255 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ LG Electronics, Inc.: V CAST Mobile Phone - VX8550 (1004:6010) @ bus 0, dev 7
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1004
+ idProduct: 6010
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 7
+ Device entry info:
+ Vendor: LG Electronics, Inc.
+ Vendor id: 0x1004
+ Product: V CAST Mobile Phone - VX8550
+ Vendor id: 0x6010
+ Device flags: 0x00000804
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Verizon
+ Model: Verizon Music Phone
+ Device version: 01.02.046(1198)
+ Serial number: 801D4298
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 9806: Set object property list
+ 9808: Send object property list
+ 100d: Send object
+ 1009: Get object
+ 100b: Delete object
+ 9802: Get object property description
+ 1014: Get device property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 1015: Get device property value
+ 1016: Set device property value
+ 9811: Set object references
+ d402: Unknown (d402)
+ 9804: Set object property value
+ 1006: Get number of objects
+ 100c: Send object info
+ 1012: Set object protection
+ 9103: Set license response
+ 9104: Get sync list
+ 9109: Get license state
+ 9201: Report Added/Deleted Items
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, 354, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 64744960
+ FreeSpaceInBytes: 57827328
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Phone Internal Memory
+ VolumeIdentifier: 801D4298
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 4098195456
+ FreeSpaceInBytes: 3340582912
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Removable Storage Card
+ VolumeIdentifier: 000002974391892
+Special directories:
+ Default music folder: 0x0000000a
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: V CAST Mobile Phone
+ Synchronization partner: V CAST Sync Partner
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+ JPEG file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">mEIdgDCFOgBgCnUAwBTqAIAp1AE=</UNIQUEID><PUBLICKEY private="1">a5hvmorJaWvi5sBflFHdeJmOBTZNRxdP8XYiGUyrJ1VhbOJkkhzWHQ==</PUBLICKEY><KEYDATA>VysFTyNiAJDnKHdHIqd6sP1Q3zk=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>11iF3zhT3lFjAh6Vf3pkyovXyzUItI6H2eT4VQEpOWcCJIhmxXOrAA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>HIc5E/Oj7ugNsH1tKPGZTwq8bqQ=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.79</SECURITYVERSION><CERTIFICATE private="1">a5hvmorJaWvi5sBflFHdeJmOBTZNRxdP8XYiGUyrJ1VhbOJkkhzWHQIEa0/edOvHOI0SjKYcBvmy1ry3ENZXeiSk4zoVXvAvWpQxHRH/G5PAzC8x</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>LG VX-8550</NAME>
+
+ <MANUFACTURER>LG</MANUFACTURER>
+
+ <MAKE>8550</MAKE>
+
+ <DISTRIBUTOR>Verizon Wireless</DISTRIBUTOR>
+
+ <MODEL>MOD 01.02.003</MODEL>
+
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+
+ <HARDWARE_VER_MAJOR>1.0</HARDWARE_VER_MAJOR>
+
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+
+ <FIRMWARE_VER_MAJOR>1.0</FIRMWARE_VER_MAJOR>
+
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+
+ <FEATURES>
+
+ <CLOCK>1</CLOCK>
+
+ <METERING>0</METERING>
+
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+
+ <ENCRYPTION>1</ENCRYPTION>
+
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+
+ </FEATURES>
+
+ <LIMITS>
+
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+ </LIMITS><PUBLICKEY>PqQw8EcWiY/L8UeL3rdKtolpZRpG+ZBaHacknE9/Vf68r3elwwNbAg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XZ9/hQdwYM1MwVhvrQL3Bkwvek95+Lr1KcUVtIc6br8ufRXz5aC8KA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1715</AUTH_ID><PUBLICKEY>TM9uz8oinDQEzw5K3a2A9FXR+Byfqjj2MsY4vHzPZCi8ssv1EP/ICQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dmvVMtOpecD5jQBdFQCzl0XVGG4TKYC8RyLovM0+dTdGA6dw7smaEg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QhbZYfTjjdEwhSQKvbM7cLPVJ2alLFSir10y4CKybbA3upe/QXX7dQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-logik-dax-dab.txt b/logs/mtp-detect-logik-dax-dab.txt
new file mode 100644
index 0000000..a36b459
--- /dev/null
+++ b/logs/mtp-detect-logik-dax-dab.txt
@@ -0,0 +1,220 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 13d1
+ idProduct: 7002
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Logik Inc.
+ Model: DAX MTP-JANUS Player v8.75
+ Device version: v8.75
+ Serial number: 000000112F6A7BE20605252207080096
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b901: WMA
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3001: Association/Directory
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b802: Firmware
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 926679040
+ FreeSpaceInBytes: 650257204
+ FreeSpaceInObjects: 6810
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 000000112F6A7BE20605252207080096
+Special directories:
+ Default music folder: 0x20000003
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: DAX MTP-JANUS Player v8.75
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19770910 02:52:42Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAAAES9qe+IGBSUiBwgAlgAAAAA=</UNIQUEID><PUBLICKEY private="1">TRqeXBB6zG7j2kGKAfFxRhVlPlE82SQkAADhG7FRyayFstleVHwdcg==</PUBLICKEY><KEYDATA>RJuD+zWQkDXKTXTUHS1TtDPofUc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>vwSZqybBO84HJ4PIEUrrfERmm3RSfQ96ROVEnfZm6IK45oyfc+jjfw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Y/rqtWkS9t77w9h53qsX3CUxpms=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.231</SECURITYVERSION><CERTIFICATE private="1">TRqeXBB6zG7j2kGKAfFxRhVlPlE82SQkAADhG7FRyayFstleVHwdcgIEaOcnJejTsr/nPw0ea7XdnSvFZSZ9DIQPENAPbBW/AoR0C6zOFOHePdkN</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>DIXONS</NAME><MANUFACTURER>AMAX</MANUFACTURER><MAKE>AMAX</MAKE><DISTRIBUTOR>DIXONS</DISTRIBUTOR><MODEL>LogikDAX1GB</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>1.1</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>8</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>75</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>9/31dQvE0FSIdy9UUT5sgJ+qk2OpaqSf3rbRiGaC5g6wuwUuu65pWg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>EsneZWhjXJo79Skt2B+ywpSAw3bmPuSxZlFiAzPlyZxZlVUdBYBXVA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1099</AUTH_ID><PUBLICKEY>EFOteztjJaNJacTdQjaRNtV5XBS0vQjYHy/0jjC9TPPYH3ypgt7FdQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>2OH2NwflQYtMSxqwf7Hsx5FFu0qA9TOp9hjf6LefaBADPfYFp0DJDA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DPTP: Closing session
+ATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>6sck/NeJa1EWjMolvlX/kNbm5jNnDkD7MmWBay/AyxPaTuHNu3RPIg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{C32790AF-4DE3-45E3-9529-BBD40A53360C}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-maxfield-g-flash-ng-1GB.txt b/logs/mtp-detect-maxfield-g-flash-ng-1GB.txt
new file mode 100644
index 0000000..bcf85ac
--- /dev/null
+++ b/logs/mtp-detect-maxfield-g-flash-ng-1GB.txt
@@ -0,0 +1,145 @@
+Device 0 (VID=066f and PID=846c) is a Maxfield G-Flash NG 1GB.
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+ERROR: Could not close session!
+inep: usb_get_endpoint_status(): No such device
+outep: usb_get_endpoint_status(): No such device
+usb_clear_halt() on IN endpoint: No such device
+usb_clear_halt() on OUT endpoint: No such device
+usb_clear_halt() on INTERRUPT endpoint: No such device
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ Maxfield: G-Flash NG 1GB (066f:846c) @ bus 0, dev 30
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 066f
+ idProduct: 846c
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 30
+ Device entry info:
+ Vendor: Maxfield
+ Vendor id: 0x066f
+ Product: G-Flash NG 1GB
+ Vendor id: 0x846c
+ Device flags: 0x00000006
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: SigmaTel
+ Model: MTP Player
+ Device version: SDK4.210
+ Serial number: 0002FA82174ED9C80002FA82174ACA0C
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+ 97f3: Unknown (97f3)
+ 1010: Reset device
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ 3008: MS Wave
+ b901: WMA
+ b902: OGG
+ 3007: AIFF
+ b903: AAC
+ 300c: ASF
+ 3001: Association/Directory
+ ba05: Abstract Audio Video Playlist
+ 3801: JPEG
+ ba11: M3U Playlist
+ ba03: Abstract Audio Album
+ 3000: Undefined Type
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 990117888
+ FreeSpaceInBytes: 478984104
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0002FA82174ED9C80002FA82174ACA0C
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ JPEG file
+Unable to acquire device certificate, perhaps this device does not support this
+OK.
+
+
diff --git a/logs/mtp-detect-memorex-mmp8585.txt b/logs/mtp-detect-memorex-mmp8585.txt
new file mode 100644
index 0000000..f08909a
--- /dev/null
+++ b/logs/mtp-detect-memorex-mmp8585.txt
@@ -0,0 +1,327 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: No Devices have been found
+steven@blacks-plum:~$ mtp-detect --help
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 10d6
+ idProduct: 2300
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: .
+ Model: NOYA player
+ Device version: ucos
+ Serial number: 㜱ä°ä¹ã¤±ã‚㈱㘶㤴ã‚㡄㘸㠷䑅㌰㜶ã¸
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc89: Duration UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1234000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 5000, STEP 1 GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 384000, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 0, 859189832, 958804552, 1195724877, 827739479, 844516695, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4047237120
+ FreeSpaceInBytes: 4028313600
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Removable Media
+ VolumeIdentifier: Rainer
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Media Player
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ Audio Video Interleave
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20001002
+17:41:03Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">Vf4G7F7CHUSxavhMPZKiVz2Solc=</UNIQUEID><PUBLICKEY
+private="1">6m7P50bEUpy3fEiaEX533yEmiG2TMuLXgmMMbaSUYa+xKSgdNwb7Ww==</PUBLICKEY><KEYDATA>n1mXuPlGTaLiPj5NZE0H7vvK5qc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>6m7P50bEUpy3fEiaEX533yEmiG1evdnY42hjERHyhFlEwHDKyujsSw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>GwyTmoHExxzUKB6eDtAntomKoNQ=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.69</SECURITYVERSION><CERTIFICATE
+private="1">6m7P50bEUpy3fEiaEX533yEmiG2TMuLXgmMMbaSUYa+xKSgdNwb7WwIEaEXqbs/nRsRSnLd8SJoRfnffISaIbRBYD89+qo2XreQfCNh+Z3EgqBMZ</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>AJT2135</NAME><MANUFACTURER>ACE</MANUFACTURER><MAKE>2007</MAKE><DISTRIBUTOR>ACE</DISTRIBUTOR><MODEL>ATJ2135</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>2</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>1</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>3</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>1</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>0</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>6656</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>aKn63Nc++pV7Pef8YSt+O3OkKoMsEzcIOkyRf1CmG4G2Uvyla6lrPA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>U/dFrSbAAh3r1KcuXqAE++lgKyItgTBSAM8GLKqllDCOcl+wpVMJEQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>937</AUTH_ID><PUBLICKEY>f7dKS06DZFDxQ7ABffaZncjGHzWgeOqlqzqRPGIo5e35oFjJCE9kMQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>X0GQwjWqnUQiZLnEX1jqDQrgghwGDFi3TJT9jWGBQXX72aCg4MKiMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>X2ZRVidfxhHFEoYrvpXpT7O/9oOsaMx3mIeuj88knrszG9b5M9PDbw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+usb_clear_halt() on INTERRUPT endpoint: Broken pipe
+OK.
diff --git a/logs/mtp-detect-microsoft-portkit.txt b/logs/mtp-detect-microsoft-portkit.txt
new file mode 100644
index 0000000..34dc20d
--- /dev/null
+++ b/logs/mtp-detect-microsoft-portkit.txt
@@ -0,0 +1,302 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 045e
+ idProduct: 0622
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Microsoft Corporation
+ Model: Windows Media Mobile Platform Solutions
+ Device version: 100
+ Serial number: 12345
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 1012: Set object protection
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 101a: Copy object
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 0, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 5000000, STEP 1 READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 1, 0, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 0, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 5000000, STEP 1 READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1500, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 1, 0, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 100000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 15000, 25000, 29970, 60000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ dea0: EncodingQuality UINT32 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1500, STEP 1 GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 0, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 5000000, STEP 1 READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 1, 0, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 0, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 5000000, STEP 1 READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1500, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 1, 0, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 100000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 15000, 25000, 29970, 60000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ dea0: EncodingQuality UINT32 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 1, 0, GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, 0, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 270917632
+ FreeSpaceInBytes: 266870272
+ FreeSpaceInObjects: 0
+ StorageDescription: MTP Store - 65537
+ VolumeIdentifier: MTP Volume - 65537
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Battery level 0 of 100 (0%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-motorola-razr2-v8.txt b/logs/mtp-detect-motorola-razr2-v8.txt
new file mode 100644
index 0000000..a6688d2
--- /dev/null
+++ b/logs/mtp-detect-motorola-razr2-v8.txt
@@ -0,0 +1,259 @@
+libmtp version: 0.2.2
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 22b8
+ idProduct: 6415
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000040
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 1c00 ..
+Microsoft device response to control message 1, CMD 0x1c:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 3030 0000 0000 ..MTP.....00....
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Motorola
+ Model: V8
+ Device version: 1.0
+ Serial number: 515325ba0b060c090909090909090909
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1012: Set object protection
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9109: Get license state
+ 9104: Get sync list
+ 9108: Clean data store
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9105: Send meter challenge query
+ 9001: Unknown (9001)
+ 9002: Unknown (9002)
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x400b
+Device Properties Supported:
+ 0x5011: Date & Time
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd405: Device Icon
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3800: Defined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 439676928
+ FreeSpaceInBytes: 438157312
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: MOBILE HANDSET
+ VolumeIdentifier: 515325ba0b060c090909090909090909
+Special directories:
+ Default music folder: 0x00000002
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000001
+ Default video folder: 0x00000003
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: V8
+ Synchronization partner: Longhorn Sync Engine
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19700101 05:31:05Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">UVMlugsGDAkJCQkJCQkJCQ==</UNIQUEID><PUBLICKEY private="1">8gLBM3CeXtn5rhBza8uo/2k/dTMhmuIKAvHciC5hFEwV/mFTTbVQWQ==</PUBLICKEY><KEYDATA>eTjqCXKYG7xT8cY89W0Oar6oluU=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>XsYC8ZCZ0j4vJSYWmSTusMQwlH1TXvWMa8VklHyTtmNCMPMq+379RQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>IkEHcjT8b3/UaTzIHlLXC7hNRpg=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.89</SECURITYVERSION><CERTIFICATE private="1">8gLBM3CeXtn5rhBza8uo/2k/dTMhmuIKAvHciC5hFEwV/mFTTbVQWQIEaVlM/bOOuQjoeXG6v8kErFX1rbnbTG0dFI8dr6C8SdOdCyVwCsQidEBu</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>3GPP_Handset</NAME>
+ <MANUFACTURER>Motorola</MANUFACTURER>
+ <MAKE>ZAS_Platform</MAKE>
+ <DISTRIBUTOR>Motorola-DC</DISTRIBUTOR>
+ <MODEL>LJ-6.1</MODEL>
+ <UNIQUEID>0000036845B7</UNIQUEID>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>odbHAfgr2dCWzzmVFXqmyFmYXWlEWcK18VTRgfPhORtQque5YDpGiQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hAL/qmJIFaZVR9EZNLXfyVvMbQq5OuXRDSZSeO2a2V0WaXXm1TMBgg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1213</AUTH_ID><PUBLICKEY>YwNxtTBKGnuG3NMofm4zTndS9A2mFPoFzDSAWNv5RMNwc8yYok11eQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>0peErT6+EQChZUE788n4ExBoPFdUZbCzKeE2FEJOniRg6HuvkfrhcA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Byrq7t94b/xMrbc1q5z+icY+PgViUS4ok9e+5S9HWDs+SRbTIq7vTw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-motorola-u9.txt b/logs/mtp-detect-motorola-u9.txt
new file mode 100644
index 0000000..1beadb3
--- /dev/null
+++ b/logs/mtp-detect-motorola-u9.txt
@@ -0,0 +1,269 @@
+casanemir:/ # mtp-detect
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:22b8 and ProductID:6415 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=22b8 and PID=6415) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 22b8
+ idProduct: 6415
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 1c00 ..
+Microsoft device response to control message 1, CMD 0x1c:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 3030 0000 0000 ..MTP.....00....
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:22b8 and ProductID:6415 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Motorola
+ Model: U9
+ Device version: 1.0
+ Serial number: 4d5436ba11090a090909090909090909
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1012: Set object protection
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9109: Get license state
+ 9104: Get sync list
+ 9108: Clean data store
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9105: Send meter challenge query
+ 9001: Unknown (9001)
+ 9002: Unknown (9002)
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x400b
+Device Properties Supported:
+ 0x5011: Date & Time
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd405: Device Icon
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 864000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 864000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 864000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3800: Defined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1014333440
+ FreeSpaceInBytes: 941441024
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: MOBILE HANDSET
+ VolumeIdentifier: 836883371494885110243112801240213
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000006
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: U9
+ Synchronization partner: Longhorn Sync Engine
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080310 12:33:22Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">TVQ2uhEJCgkJCQkJCQkJCQ==</UNIQUEID><PUBLICKEY private="1">7ZDJ31Pa+dO6LMg26VeMgoWTew/n9bjodn3JBIxLkH2PJRJSazoCPQ==</PUBLICKEY><KEYDATA>s3tDZlwM53qXMeytm+/oB9Ih4vE=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>OA+buWUJHsKfO1NKWyAhM9lhGDZ2NuN5CeA4MV4vckvpLy9W/fR6aA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>jzs9w5rQTOPy6Y+UprqQW10wk9s=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.91</SECURITYVERSION><CERTIFICATE private="1">7ZDJ31Pa+dO6LMg26VeMgoWTew/n9bjodn3JBIxLkH2PJRJSazoCPQIEaVsF0hiSXY7x9KhL49eqRe+HCW98fMAsrLtdFpeGrStzGXC75LS5QdMy</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>3GPP_Handset</NAME>
+ <MANUFACTURER>Motorola</MANUFACTURER>
+ <MAKE>ZAS_Platform</MAKE>
+ <DISTRIBUTOR>Motorola-DC</DISTRIBUTOR>
+ <MODEL>LJ-6.3</MODEL>
+ <UNIQUEID>000003E4BB78</UNIQUEID>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>G8NVi0eYxdB0Nef+7nvtFzE8KC+OqIoGcwRV0vRF+Qur5Qmar0j1Mw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>+j4/EL6V/RoqltVaUiVlV8ihbzlpxvb7moppuNmp0j6X0ySEsjd2gw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1215</AUTH_ID><PUBLICKEY>ax39VTcv1D9Hxgx4Cer5+3fzmARsQuTGF8cF6uhSoGYFvAxBLTPkMw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yig2bY4W/wlGBfQcSzZXZ7wuP1OEf4xrnza3bi7ozrRCDCWyFDA1Wg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>v6L1ULETofKiIE7BJYwbzpTd8QI1xrOdQfa2WIJwVIu2qGBvtBavPg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-motorola-v3m-verizon.txt b/logs/mtp-detect-motorola-v3m-verizon.txt
new file mode 100644
index 0000000..4484615
--- /dev/null
+++ b/logs/mtp-detect-motorola-v3m-verizon.txt
@@ -0,0 +1,150 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 22b8
+ idProduct: 2a65
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000101
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Verizon
+ Model: Verizon Music Phone
+ Device version: 01.01.008(8084)
+ Serial number: 14B00F17
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 100d: Send object
+ 9808: Send object property list
+ 9802: Get object property description
+ 1014: Get device property description
+ 1015: Get device property value
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 1009: Get object
+ 100b: Delete object
+ 9806: Set object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 192000, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00000001
+ StorageType: 0x0001
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 23298863
+ FreeSpaceInBytes: 7446959
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Phone Internal Memory
+ VolumeIdentifier: 14B00F17
+ StorageID: 0x00000002
+ StorageType: 0x0002
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 1015808000
+ FreeSpaceInBytes: 1179648
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Removable Storage Card
+ VolumeIdentifier: SU01G€15204864
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: V CAST Mobile Phone
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">Fw+wFC4eYClcPMBSuHiApXDxAEs=</UNIQUEID><PUBLICKEY private="1">1hp1UWLVxX31SJBARq+jAOvmE2i1n7d5Tw0B/K6I3TTzawZ4AspYhg==</PUBLICKEY><KEYDATA>XWSKRW03C02IZBazt7616CIlh2Y=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>1ByoWiOq6aFG2tEa/8Zm7p/0wH08rAJHkQF7lzKFn3nzY+4tafu4Fw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>MVLZEMS3kGCK6aSAWJC0/xq4Vwo=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.17</SECURITYVERSION><CERTIFICATE private="1">1hp1UWLVxX31SJBARq+jAOvmE2i1n7d5Tw0B/K6I3TTzawZ4AspYhgIEaBGdBaa43tDT4ly9ha+OssesmhgHZxsVZR61+HdUoZ9oFTgRTV6FpFE5</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>V3m</NAME>
+ <MANUFACTURER>Motorola</MANUFACTURER>
+ <MAKE>V3m</MAKE>
+ <DISTRIBUTOR>Verizon Wireless</DISTRIBUTOR>
+ <MODEL>MOD 1.0.0</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>0</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>w9sptKYU2s6pTa+PNmYtZ8dlSGb0aJEPpMIsst819+vGsllK+IViMg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>JIH185LxQeN5XXsdEZtUAag7MycUvSWgRd5vViP4VDt4E6XbEfj/Bw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>885</AUTH_ID><PUBLICKEY>MMAVZgWISRBBMxtNJXyxjpVymz8oNEBWJdEb6gjJCEniO/F8JGo3Sg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>aXt99Bc+fjwpul3XroBZCPToxWSHwbwSXVnXZeAuCQA3aifv0G8sdA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>6UxCYjXbq9X5f58EqQ49Nf51uQ9JyXIcjZ7HDXL8f9cpc39oj5fOPA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-motorola-v750.txt b/logs/mtp-detect-motorola-v750.txt
new file mode 100644
index 0000000..4e554b1
--- /dev/null
+++ b/logs/mtp-detect-motorola-v750.txt
@@ -0,0 +1,313 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 22b8
+ idProduct: 2a65
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Motorola V750
+ Model: Verizon Music Phone
+ Device version: 02.06.023(0)
+ Serial number: 5CA17800
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 9806: Set object property list
+ 9808: Send object property list
+ 100d: Send object
+ 1009: Get object
+ 100b: Delete object
+ 9802: Get object property description
+ 1014: Get device property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 1015: Get device property value
+ 1016: Set device property value
+ 9811: Set object references
+ d402: Unknown (d402)
+ 9804: Set object property value
+ 1006: Get number of objects
+ 100c: Send object info
+ 1012: Set object protection
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9109: Get license state
+ 9201: Report Added/Deleted Items
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, 354, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b700: Unknown(b700)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: READ ONLY
+ b701: Unknown(b701)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: READ ONLY
+ b702: Unknown(b702)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: READ ONLY
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14344, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 2030960640
+ FreeSpaceInBytes: 2001518592
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Removable Storage Card
+ VolumeIdentifier: SU02G0002102463
+Special directories:
+ Default music folder: 0x000000c8
+ Default playlist folder: 0x000000cc
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: V CAST Mobile Phone - External Memory
+ Synchronization partner: V CAST Sync Partner
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+ JPEG file
+ JFIF file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AHihXA4AAADwQrkcAAAA4IVyOAA=</UNIQUEID><PUBLICKEY private="1">RaB8z89Dq+RzzGZeVO96vOT7dQM+j9EuxaJHdxb/KyzYZX4HHYykdg==</PUBLICKEY><KEYDATA>oTkhLfogUau7ar5YqiXAEyFv51w=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>ifREcA5re+6fpjk/gByYMRYYKCVRoV7SoWx+LMWF19J6F2JiHuSZJw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>hR+lm6Q7o39wOregV793mlwduYU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.109.185</SECURITYVERSION><CERTIFICATE private="1">RaB8z89Dq+RzzGZeVO96vOT7dQM+j9EuxaJHdxb/KyzYZX4HHYykdgIEbbl5VxN+LV4GTXGi/VofwLMhe63CRhorPBDredoTTUgn5+Pq4XckG2Bn</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Charlotte</NAME>
+ <MANUFACTURER>Motorola</MANUFACTURER>
+ <MAKE>V750</MAKE>
+ <DISTRIBUTOR>Verizon Wireless</DISTRIBUTOR>
+ <MODEL>MOD 2.6</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>fU9lcJB/UX7Ocvydt+6tzdxVXn5e44G7Bggv01bd4VQD6N5SG4r1DA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>a96iQXnE5Xw8HyDhCO1Qk0rE/Xpw/8Q1ClwfeSUoVbvI+WToCsY8gQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2333</AUTH_ID><PUBLICKEY>o/NVnyFd6QQ80djHP4LE6y624CGY6QE2gXZXSyFDXCsE+9634ZofXw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>DQqD3lqmRsUe501nUIpNaj1csGHYN5RgiManegaHd3ZsS7YL7MsDPw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8NPt7xp/Wu7Q0Do3RKXOH2eLrD+KgihwtIzjnfAesj7oQTXz4AsUZw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-motorola-z6.txt b/logs/mtp-detect-motorola-z6.txt
new file mode 100644
index 0000000..1e63a7d
--- /dev/null
+++ b/logs/mtp-detect-motorola-z6.txt
@@ -0,0 +1,278 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:22b8 and ProductID:6415 responded to
+control message 2 with a response that was too short. Problems may arrise
+but continuing
+Device 1 (VID=22b8 and PID=6415) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development
+team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 22b8
+ idProduct: 6415
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 1c00 ..
+Microsoft device response to control message 1, CMD 0x1c:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 3030 0000 0000 ..MTP.....00....
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:22b8 and ProductID:6415 responded to
+control message 2 with a response that was too short. Problems may arrise
+but continuing
+Device info:
+ Manufacturer: Motorola
+ Model: Z6
+ Device version: 1.0
+ Serial number: 495534ba190810090909090909090909
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1012: Set object protection
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9109: Get license state
+ 9104: Get sync list
+ 9108: Clean data store
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9105: Send meter challenge query
+ 9001: Unknown(9001)
+ 9002: Unknown(9002)
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x400b
+Device Properties Supported:
+ 0x5011: Date Time
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd405: Device Icon
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 100 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 320000, STEP 1000 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 6, 7, 352, 353, 384, 41222, 85, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3800: Defined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1015529472
+ FreeSpaceInBytes: 969621504
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: MOBILE HANDSET
+ VolumeIdentifier: 8368833714948858796012801180231
+Special directories:
+ Default music folder: 0x00000003
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Z6
+ Synchronization partner: Longhorn Sync Engine
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080228
+06:36:23Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">SVU0uhkIEAkJCQkJCQkJCQ==</UNIQUEID><PUBLICKEY
+private="1">vBZNMF813hLjiTNHakidsssC1ROzq/ZsKaZuYq8Lx+BfTSoWtmRPAA==</PUBLICKEY><KEYDATA>aBcxvmEvrGKMYj39oM8TS1rC2jQ=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>4yDw58JWBJxZbm6mb/hi7D2M5wuC7q+ZPZq2tCJji55UbK0K9K9WEQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>9offoJrDJLDbLVosgEOG9+qyGEk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.89</SECURITYVERSION><CERTIFICATE
+private="1">vBZNMF813hLjiTNHakidsssC1ROzq/ZsKaZuYq8Lx+BfTSoWtmRPAAIEaVld8BI9om04YtcY4IgxUhX9tBuJJG3L1N6zdUZn2fIHDAHRnlOYc14o</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>3GPP_Handset</NAME>
+ <MANUFACTURER>Motorola</MANUFACTURER>
+ <MAKE>ZAS_Platform</MAKE>
+ <DISTRIBUTOR>Motorola-DC</DISTRIBUTOR>
+ <MODEL>LJ-6.1</MODEL>
+ <UNIQUEID>000002B55D10</UNIQUEID>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>XnNQqctLaFox9EIXUgTJqz4Wn2+TVTSVljA2KpkHc8rJOmLJu9SUhg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>OV6UDd4l2t4FwQuj8UwgUJZXanPrPQJgwMO0XM1BY5t+4ACL6AUnQw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1213</AUTH_ID><PUBLICKEY>YwNxtTBKGnuG3NMofm4zTndS9A2mFPoFzDSAWNv5RMNwc8yYok11eQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>0peErT6+EQChZUE788n4ExBoPFdUZbCzKeE2FEJOniRg6HuvkfrhcA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Byrq7t94b/xMrbc1q5z+icY+PgViUS4ok9e+5S9HWDs+SRbTIq7vTw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-mymusix-pd6070.txt b/logs/mtp-detect-mymusix-pd6070.txt
new file mode 100644
index 0000000..0461a47
--- /dev/null
+++ b/logs/mtp-detect-mymusix-pd6070.txt
@@ -0,0 +1,124 @@
+Listing raw device(s)
+ Found 1 device(s):
+ MyMusix: PD-6070 (0aa6:9601) @ bus 0, dev 16
+Attempting to connect device(s)
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0aa6
+ idProduct: 9601
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 16
+ Device entry info:
+ Vendor: MyMusix
+ Vendor id: 0x0aa6
+ Product: PD-6070
+ Vendor id: 0x9601
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: Generic
+ Model: Audio Player
+ Device version: RAD2010005%OUT_PAD:128%
+ Serial number: F03A085089ECCB0C
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+Events supported:
+ 0x4002
+ 0x4003
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ 3008: MS Wave
+ b901: WMA
+ 3001: Association/Directory
+ 3000: Undefined Type
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 1010696192
+ FreeSpaceInBytes: 896000000
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x00000002
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get
+unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_File_To_File_Descriptor(): Could not
+get file from device.
+Error 2: (Look this up in ptp.h for an explanation.)
+ERROR: Could not close session!
+inep: usb_get_endpoint_status(): No such device
+outep: usb_get_endpoint_status(): No such device
+usb_clear_halt() on IN endpoint: No such device
+usb_clear_halt() on OUT endpoint: No such device
+usb_clear_halt() on INTERRUPT endpoint: No such device
+OK.
diff --git a/logs/mtp-detect-nokia-3109c.txt b/logs/mtp-detect-nokia-3109c.txt
new file mode 100644
index 0000000..cf00f6a
--- /dev/null
+++ b/logs/mtp-detect-nokia-3109c.txt
@@ -0,0 +1,470 @@
+From noreply@sourceforge.net Sat Mar 29 00:55:50 2008
+Date: Fri, 28 Mar 2008 16:55:38 -0700
+From: SourceForge.net <noreply@sourceforge.net>
+To: noreply@sourceforge.net
+Subject: [ libmtp-Bugs-1927490 ] New device: Nokia 3109 classic
+
+ [ The following text is in the "UTF-8" character set. ]
+ [ Your display is set for the "ISO-8859-1" character set. ]
+ [ Some characters may be displayed incorrectly. ]
+
+Bugs item #1927490, was opened at 2008-03-27 22:03
+Message generated for change (Comment added) made by snirkel
+You can respond by visiting:
+https://sourceforge.net/tracker/?func=detail&atid=809061&aid=1927490&group_id=158745
+
+Please note that this message will contain a full copy of the comment thread,
+including the initial issue submission, for this request,
+not just the latest update.
+Category: None
+Group: None
+>Status: Closed
+>Resolution: Fixed
+Priority: 5
+Private: No
+Submitted By: Vasily (spc-)
+>Assigned to: Linus Walleij (snirkel)
+Summary: New device: Nokia 3109 classic
+
+Initial Comment:
+Must be very similar to 3110c
+
+$ mtp-detect
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:0421 and ProductID:0065 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=0421 and PID=0065) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 0065
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 1203 4d00 5300 4600 ..........M.S.F.
+ 0030: 5400 3100 3000 3000 fe00 0000 0000 0000 T.1.0.0.........
+ 0040: 0000 0000 0000 0000 0100 0000 0000 0000 ................
+ 0050: 0200 0000 0000 0000 0300 0000 0000 0000 ................
+ 0060: 0400 0000 0000 0000 0002 0402 0216 0000 ................
+ 0070: 0000 0000 53fd 8cf0 9ffc 8cf0 75fb 8cf0 ....S.......u...
+ 0080: a9fe 8cf0 2fff 8cf0 b7ff 8cf0 2500 8df0 ..../.......%...
+ 0090: c700 8df0 e900 8df0 3701 8df0 9101 8df0 ........7.......
+ 00a0: 0000 0000 9d08 8df0 510a 8df0 c509 8df0 ........Q.......
+ 00b0: 2b0b 8df0 e30e 8df0 650f 8df0 df04 8df0 +.......e.......
+ 00c0: 0000 0000 0000 0000 0000 0000 0900 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0b00 0000 ................
+ 00e0: 2828 2830 7830 3030 3021 3d6c 6369 6429 (((0x0000!=lcid)
+ 00f0: 2026 2620 2830 7830 3030 303d 3d72 6369 && (0x0000==rci
+ 0100: 6429 2920 7c7c 2028 2830 7830 3030 303d d)) || ((0x0000=
+ 0110: 3d6c 6369 6429 2026 2620 2830 7830 3030 =lcid) && (0x000
+ 0120: 3021 3d72 6369 6429 2929 0000 a002 0000 0!=rcid)))......
+ 0130: 2100 0000 1700 0000 0000 0000 0100 0000 !...............
+ 0140: cbcd a2f0 edcd a2f0 0100 0000 f5cd a2f0 ................
+ 0150: 27ce a2f0 0100 0000 3dce a2f0 51ce a2f0 '.......=...Q...
+ 0160: 0100 0000 59ce a2f0 7fce a2f0 2828 3020 ....Y.......((0
+ 0170: 213d 2067 5f6d 6365 5f73 6563 5f61 6374 != g_mce_sec_act
+ 0180: 6976 655f 7365 635f 7072 6f63 2920 2626 ive_sec_proc) &&
+ 0190: 2028 6964 203d 3d20 675f 6d63 655f 7365 (id == g_mce_se
+ 01a0: 635f 6163 7469 7665 5f73 6563 5f70 726f c_active_sec_pro
+ 01b0: 632d 3e74 696d 6572 5f69 6429 2900 0000 c->timer_id))...
+ 01c0: 2828 4d43 455f 5345 435f 5354 5f43 414e ((MCE_SEC_ST_CAN
+ 01d0: 4345 4c4c 4544 203d 3d20 675f 6d63 655f CELLED == g_mce_
+ 01e0: 7365 635f 6163 7469 7665 5f73 6563 5f70 sec_active_sec_p
+ 01f0: 726f 632d 3e73 7461 7465 2920 7c7c 2028 roc->state) || (
+ 0200: 4d43 455f 5345 435f 5354 5f41 5554 4845 MCE_SEC_ST_AUTHE
+ 0210: 4e54 203d 3d20 675f 6d63 655f 7365 635f NT == g_mce_sec_
+ 0220: 6163 7469 7665 5f73 6563 5f70 726f 632d active_sec_proc-
+ 0230: 3e73 7461 7465 2920 7c7c 2028 4d43 455f >state) || (MCE_
+ 0240: 5345 435f 5354 5f4c 494e 4b5f 4b45 595f SEC_ST_LINK_KEY_
+ 0250: 5245 5144 203d 3d20 675f 6d63 655f 7365 REQD == g_mce_se
+ 0260: 635f 6163 7469 7665 5f73 6563 5f70 726f c_active_sec_pro
+ 0270: 632d 3e73 7461 7465 2920 7c7c 2028 4d43 c->state) || (MC
+ 0280: 455f 5345 435f 5354 5f50 494e 5f43 4f44 E_SEC_ST_PIN_COD
+ 0290: 455f 5245 5144 203d 3d20 675f 6d63 655f E_REQD == g_mce_
+ 02a0: 7365 635f 6163 7469 7665 5f73 6563 5f70 sec_active_sec_p
+ 02b0: 726f 632d 3e73 7461 7465 2929 0000 0000 roc->state))....
+ 02c0: 2828 4d43 455f 5345 435f 5354 5f4c 494e ((MCE_SEC_ST_LIN
+ 02d0: 4b5f 4b45 595f 5245 5144 2021 3d20 675f K_KEY_REQD != g_
+ 02e0: 6d63 655f 7365 635f 6163 7469 7665 5f73 mce_sec_active_s
+ 02f0: 6563 5f70 726f 632d 3e73 7461 7465 2920 ec_proc->state)
+ 0300: 2626 2028 4d43 455f 5345 435f 5354 5f50 && (MCE_SEC_ST_P
+ 0310: 494e 5f43 4f44 455f 5245 5144 2021 3d20 IN_CODE_REQD !=
+ 0320: 675f 6d63 655f 7365 635f 6163 7469 7665 g_mce_sec_active
+ 0330: 5f73 6563 5f70 726f 632d 3e73 7461 7465 _sec_proc->state
+ 0340: 2929 0000 2828 282a 7365 7276 6963 655f ))..(((*service_
+ 0350: 6964 293d 3d30 7843 3129 207c 7c20 2828 id)==0xC1) || ((
+ 0360: 2a73 6572 7669 6365 5f69 6429 3d3d 3078 *service_id)==0x
+ 0370: 4333 2920 7c7c 2028 282a 7365 7276 6963 C3) || ((*servic
+ 0380: 655f 6964 293d 3d30 7843 3229 2900 0000 e_id)==0xC2))...
+ 0390: 0201 0201 0001 3506 1911 0319 1201 0004 ......5.........
+ 03a0: 350c 3503 1901 0035 0519 0003 0800 0005 5.5....5........
+ 03b0: 3503 1910 0200 0635 0909 656e 0900 6a09 5......5..en..j.
+ 03c0: 0100 0009 3508 3506 1911 0309 0100 0100 ....5.5.........
+ 03d0: 2512 4469 616c 2d75 7020 6e65 7477 6f72 %.Dial-up networ
+ 03e0: 6b69 6e67 0001 3503 1911 0500 0435 1135 king..5......5.5
+ 03f0: 0319 0100 3505 1900 0308 0035 0319 0008 ....5......5....
+Potential MTP Device with VendorID:0421 and ProductID:0065 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 3109c
+ Device version: (null)
+ Serial number: 00000000000000000000000PHL617685
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100a: Get thumbnail
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 101b: Get partial object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4009
+ 0x4003
+ 0x4002
+ 0x400c
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3002: Script
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ bb82: vCard2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ be02: vCalendar1
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2012971008
+ FreeSpaceInBytes: 462979072
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Memory card
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x40000061
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x400001ba
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: NOKIA
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+libmtp supported (playable) filetypes:
+ JPEG file
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ BMP bitmap file
+ GIF bitmap file
+ JFIF file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ VCard version 2
+ VCard version 3
+ VCalendar version 1
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080327 20:57:31Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">DDABE0o0bVY7g+AXlhyDrR/7CMs=</UNIQUEID><PUBLICKEY private="1">opuWk1S4wYOou6/0TYUPqh/+/k+vXD1eqHOcKBfRzTA5bPIbLuVXIw==</PUBLICKEY><KEYDATA></KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>BD+l4Evo9dMB9FR2FY3hl8oJQHjhjs8gjG2MY2RbitKTq1AKbFcceA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE></SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.81</SECURITYVERSION><CERTIFICATE private="1">opuWk1S4wYOou6/0TYUPqh/+/k+vXD1eqHOcKBfRzTA5bPIbLuVXIwIEa1GNXh5oZUqveqxpXg7BmlDJ1siJE6howsyQWaWaybhP7L6rRgrONjJ3</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>3109c</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-274</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>XV2v3rfMc+LuVWo8AEpynYg6gyMXJoegbuQ4QMBR/XkIdFwCaYCTfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>c1l+mmjL78RqzI9ugPsYszQfE3pZp95GeXhwdQjNUoSm9npH7zm+Aw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1717</AUTH_ID><PUBLICKEY>l2NdhCljnoYlzpNgTS6QlW0BxAkp1rY0C/R/K2ZN2b49WwEUK7EyBw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LvQ+xSas5RHHD7YQ28Ss8l7M6S5ng6WPypSo2CkHVh2+c58FdEx1CA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>EmeKPa0xvW62hAz2hYka7xieAwV6UX+LPDFdbdYlb2T68YJSJ6aVbA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{27B81EB6-7893-41F3-A86A-DEFA129D5900}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK.
+
+
+----------------------------------------------------------------------
+
+>Comment By: Linus Walleij (snirkel)
+Date: 2008-03-29 00:55
+
+Message:
+Logged In: YES
+user_id=473872
+Originator: NO
+
+Thanks, device added to CVS...
+
+----------------------------------------------------------------------
+
+You can respond by visiting:
+https://sourceforge.net/tracker/?func=detail&atid=809061&aid=1927490&group_id=158745
diff --git a/logs/mtp-detect-nokia-3110c.txt b/logs/mtp-detect-nokia-3110c.txt
new file mode 100644
index 0000000..0542123
--- /dev/null
+++ b/logs/mtp-detect-nokia-3110c.txt
@@ -0,0 +1,367 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 005f
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 1203 4d00 5300 4600 ..........M.S.F.
+ 0030: 5400 3100 3000 3000 fe00 0000 0000 0000 T.1.0.0.........
+ 0040: 0000 0000 0000 0000 0100 0000 0000 0000 ................
+ 0050: 0200 0000 0000 0000 0300 0000 0000 0000 ................
+ 0060: 0400 0000 0000 0000 0002 0402 0216 0000 ................
+ 0070: 0000 0000 537b 90f0 9f7a 90f0 7579 90f0 ....S{...z..uy..
+ 0080: a97c 90f0 2f7d 90f0 b77d 90f0 257e 90f0 .|../}...}..%~..
+ 0090: c77e 90f0 e97e 90f0 377f 90f0 917f 90f0 .~...~..7.......
+ 00a0: 0000 0000 9d86 90f0 5188 90f0 c587 90f0 ........Q.......
+ 00b0: 2b89 90f0 e38c 90f0 658d 90f0 df82 90f0 +.......e.......
+ 00c0: 0000 0000 0000 0000 0000 0000 0900 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0b00 0000 ................
+ 00e0: 2828 2830 7830 3030 3021 3d6c 6369 6429 (((0x0000!=lcid)
+ 00f0: 2026 2620 2830 7830 3030 303d 3d72 6369 && (0x0000==rci
+ 0100: 6429 2920 7c7c 2028 2830 7830 3030 303d d)) || ((0x0000=
+ 0110: 3d6c 6369 6429 2026 2620 2830 7830 3030 =lcid) && (0x000
+ 0120: 3021 3d72 6369 6429 2929 0000 a002 0000 0!=rcid)))......
+ 0130: 2100 0000 1700 0000 0000 0000 0100 0000 !...............
+ 0140: a767 a6f0 c967 a6f0 0100 0000 d167 a6f0 .g...g.......g..
+ 0150: 0368 a6f0 0100 0000 1968 a6f0 2d68 a6f0 .h.......h..-h..
+ 0160: 0100 0000 3568 a6f0 5b68 a6f0 2828 3020 ....5h..[h..((0
+ 0170: 213d 2067 5f6d 6365 5f73 6563 5f61 6374 != g_mce_sec_act
+ 0180: 6976 655f 7365 635f 7072 6f63 2920 2626 ive_sec_proc) &&
+ 0190: 2028 6964 203d 3d20 675f 6d63 655f 7365 (id == g_mce_se
+ 01a0: 635f 6163 7469 7665 5f73 6563 5f70 726f c_active_sec_pro
+ 01b0: 632d 3e74 696d 6572 5f69 6429 2900 0000 c->timer_id))...
+ 01c0: 2828 4d43 455f 5345 435f 5354 5f43 414e ((MCE_SEC_ST_CAN
+ 01d0: 4345 4c4c 4544 203d 3d20 675f 6d63 655f CELLED == g_mce_
+ 01e0: 7365 635f 6163 7469 7665 5f73 6563 5f70 sec_active_sec_p
+ 01f0: 726f 632d 3e73 7461 7465 2920 7c7c 2028 roc->state) || (
+ 0200: 4d43 455f 5345 435f 5354 5f41 5554 4845 MCE_SEC_ST_AUTHE
+ 0210: 4e54 203d 3d20 675f 6d63 655f 7365 635f NT == g_mce_sec_
+ 0220: 6163 7469 7665 5f73 6563 5f70 726f 632d active_sec_proc-
+ 0230: 3e73 7461 7465 2920 7c7c 2028 4d43 455f >state) || (MCE_
+ 0240: 5345 435f 5354 5f4c 494e 4b5f 4b45 595f SEC_ST_LINK_KEY_
+ 0250: 5245 5144 203d 3d20 675f 6d63 655f 7365 REQD == g_mce_se
+ 0260: 635f 6163 7469 7665 5f73 6563 5f70 726f c_active_sec_pro
+ 0270: 632d 3e73 7461 7465 2920 7c7c 2028 4d43 c->state) || (MC
+ 0280: 455f 5345 435f 5354 5f50 494e 5f43 4f44 E_SEC_ST_PIN_COD
+ 0290: 455f 5245 5144 203d 3d20 675f 6d63 655f E_REQD == g_mce_
+ 02a0: 7365 635f 6163 7469 7665 5f73 6563 5f70 sec_active_sec_p
+ 02b0: 726f 632d 3e73 7461 7465 2929 0000 0000 roc->state))....
+ 02c0: 2828 4d43 455f 5345 435f 5354 5f4c 494e ((MCE_SEC_ST_LIN
+ 02d0: 4b5f 4b45 595f 5245 5144 2021 3d20 675f K_KEY_REQD != g_
+ 02e0: 6d63 655f 7365 635f 6163 7469 7665 5f73 mce_sec_active_s
+ 02f0: 6563 5f70 726f 632d 3e73 7461 7465 2920 ec_proc->state)
+ 0300: 2626 2028 4d43 455f 5345 435f 5354 5f50 && (MCE_SEC_ST_P
+ 0310: 494e 5f43 4f44 455f 5245 5144 2021 3d20 IN_CODE_REQD !=
+ 0320: 675f 6d63 655f 7365 635f 6163 7469 7665 g_mce_sec_active
+ 0330: 5f73 6563 5f70 726f 632d 3e73 7461 7465 _sec_proc->state
+ 0340: 2929 0000 2828 282a 7365 7276 6963 655f ))..(((*service_
+ 0350: 6964 293d 3d30 7843 3129 207c 7c20 2828 id)==0xC1) || ((
+ 0360: 2a73 6572 7669 6365 5f69 6429 3d3d 3078 *service_id)==0x
+ 0370: 4333 2920 7c7c 2028 282a 7365 7276 6963 C3) || ((*servic
+ 0380: 655f 6964 293d 3d30 7843 3229 2900 0000 e_id)==0xC2))...
+ 0390: 0201 0201 0001 3506 1911 0319 1201 0004 ......5.........
+ 03a0: 350c 3503 1901 0035 0519 0003 0800 0005 5.5....5........
+ 03b0: 3503 1910 0200 0635 0909 656e 0900 6a09 5......5..en..j.
+ 03c0: 0100 0009 3508 3506 1911 0309 0100 0100 ....5.5.........
+ 03d0: 2512 4469 616c 2d75 7020 6e65 7477 6f72 %.Dial-up networ
+ 03e0: 6b69 6e67 0001 3503 1911 0500 0435 1135 king..5......5.5
+ 03f0: 0319 0100 3505 1900 0308 0035 0319 0008 ....5......5....
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 3110c
+ Device version: (null)
+ Serial number: 00000000000000000000000PBN978583
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100a: Get thumbnail
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 101b: Get partial object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4009
+ 0x4003
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3002: Script
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UIINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ bb82: vCard2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ be02: vCalendar1
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: NOKIA
+ Synchronization partner: MICROSOFT MEDIAPLAYER
+libmtp supported (playable) filetypes:
+ JPEG file
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ BMP bitmap file
+ GIF bitmap file
+ JFIF file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ VCard version 2
+ VCard version 3
+ VCalendar version 1
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02fe: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
diff --git a/logs/mtp-detect-nokia-5300.txt b/logs/mtp-detect-nokia-5300.txt
new file mode 100644
index 0000000..ca732d1
--- /dev/null
+++ b/logs/mtp-detect-nokia-5300.txt
@@ -0,0 +1,368 @@
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04ba
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 5300
+ Device version: (null)
+ Serial number: (null)
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100a: Get thumbnail
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 101b: Get partial object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4009: Request object transfer
+ 0x4003: Object removed
+ 0x4004: Store added
+ 0x4005: Store removed
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3801: JPEG
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3002: Script
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3004: Text
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3005: HTML
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3008: MS Wave
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3804: BMP
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3807: GIF
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 3808: JFIF
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ 380b: PNG
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ b004: Unknown(b004)
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ b903: AAC
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ ba11: M3U Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ bb82: vCard2
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ bb83: vCard3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ be02: vCalendar1
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 8630784
+ FreeSpaceInBytes: 4424192
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Phone memory (C:)
+ VolumeIdentifier: (null)
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 985399296
+ FreeSpaceInBytes: 970063872
+ FreeSpaceInObjects: 4294967295
+ StorageDescription:
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x40000035
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: NOKIA
+ Synchronization partner: MICROSOFT MEDIAPLAYER
+libmtp supported (playable) filetypes:
+ JPEG file
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ BMP bitmap file
+ GIF bitmap file
+ JFIF file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ VCard version 2
+ VCard version 3
+ VCalendar version 1
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070623 15:08:24Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">JZAAEbVGAFgx+MV+VC/czNMloKA=</UNIQUEID><PUBLICKEY private="1">gUGSG+640hANCmgA6RLrXE+m53F0aAMFk1iXOYk0Rm7M76/D2fi8NQ==</PUBLICKEY><KEYDATA></KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>TcOZj5ejJ/zHYGlCzKS444kT6Wg+rinH3yxNWJNX3R5jAWDwm2RKAw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE></SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.95</SECURITYVERSION><CERTIFICATE private="1">gUGSG+640hANCmgA6RLrXE+m53F0aAMFk1iXOYk0Rm7M76/D2fi8NQIEaV8Z6cCn0YHtkvT7n7D6qmKMTH2gFCJO7mBWOUCJfpZ/fOnrKMAk23lE</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>5300</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-147</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>0</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>9rINx4Chrx4JhS7Kda7EKnSbkkoRTWfda6jDxtkw72kR5+9yVucHKA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ENGLQZMiDlDKvjtsA1ChU2O8EC0okniesTjA8zEocHSvtKJWfhAsSA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1219</AUTH_ID><PUBLICKEY>XCfO2C+e0jeoy+QZ/JUtVF7BkQxz5AWfeYOqFy+63SzL7OPIGc1QMw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>sFJ8k94G4bJPrLaP+n4jB5bw9GQtSph6puqb8GqVbbdxIShDQDngaA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Uy3fwCMxAuj4NHxmC9IKM6kFOkmvG9Hvr5pUPeIMsTZmZa80VAz4TQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>大
+OK.
+
+mtp-folders result:
+PTP: Opening session
+Connected to MTP device.
+1073741824 Graphics
+1073741834 Screen savers
+1073741835 Wallpapers
+1073741825 Themes
+1073741826 Tones
+1073741838 Alert tones
+1073741839 Ringing tones
+1073741829 Images
+1073741830 Video clips
+1073741831 Music files
+1073741832 Recordings
+1073741833 Received files
+1073741877 My Music
+1073741878 Images
+1073741879 Video clips
+1073741880 untitled folder
+1073741881 .Trash-mhicks
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-nokia-5310.txt b/logs/mtp-detect-nokia-5310.txt
new file mode 100644
index 0000000..7137b1e
--- /dev/null
+++ b/logs/mtp-detect-nokia-5310.txt
@@ -0,0 +1,512 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 006c
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 1203 4d00 5300 4600 ..........M.S.F.
+ 0030: 5400 3100 3000 3000 fe00 1203 5000 4300 T.1.0.0.....P.C.
+ 0040: 2000 5300 7500 6900 7400 6500 1e03 5200 .S.u.i.t.e...R.
+ 0050: 6500 6d00 6f00 7600 6100 6200 6c00 6500 e.m.o.v.a.b.l.e.
+ 0060: 2000 4400 6900 7300 6b00 1e03 4d00 6500 .D.i.s.k...M.e.
+ 0070: 6400 6900 6100 2000 5400 7200 6100 6e00 d.i.a. .T.r.a.n.
+ 0080: 7300 6600 6500 7200 0000 0102 0304 0506 s.f.e.r.........
+ 0090: 0700 0000 0000 0000 0000 0000 0100 0000 ................
+ 00a0: 0000 0000 0200 0000 0000 0000 0300 0000 ................
+ 00b0: 0000 0000 0400 0000 0000 0000 0500 0000 ................
+ 00c0: 0000 0000 0600 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0002 0402 ................
+ 0100: 0216 0000 0000 0000 4716 41f0 9515 41f0 ........G.A...A.
+ 0110: 5714 41f0 6317 41f0 e517 41f0 6918 41f0 W.A.c.A...A.i.A.
+ 0120: d318 41f0 8d19 41f0 af19 41f0 fd19 41f0 ..A...A...A...A.
+ 0130: 551a 41f0 0000 0000 4f21 41f0 0123 41f0 U.A.....O!A..#A.
+ 0140: 7122 41f0 df23 41f0 5127 41f0 d127 41f0 q"A..#A.Q'A..'A.
+ 0150: a51d 41f0 0000 0000 0000 0000 0000 0000 ..A.............
+ 0160: 0900 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0b00 0000 2828 2830 7830 3030 3021 3d6c ....(((0x0000!=l
+ 0180: 6369 6429 2026 2620 2830 7830 3030 303d cid) && (0x0000=
+ 0190: 3d72 6369 6429 2920 7c7c 2028 2830 7830 =rcid)) || ((0x0
+ 01a0: 3030 303d 3d6c 6369 6429 2026 2620 2830 000==lcid) && (0
+ 01b0: 7830 3030 3021 3d72 6369 6429 2929 0000 x0000!=rcid)))..
+ 01c0: a002 0000 2100 0000 1700 0000 0000 0000 ....!...........
+ 01d0: 0100 0000 dbc6 32f0 51c7 32f0 0100 0000 ......2.Q.2.....
+ 01e0: 69c7 32f0 9bc7 32f0 0100 0000 bdc7 32f0 i.2...2.......2.
+ 01f0: ddc7 32f0 0100 0000 f5c7 32f0 29c8 32f0 ..2.......2.).2.
+ 0200: 2830 203d 3d20 675f 6d63 655f 7365 635f (0 == g_mce_sec_
+ 0210: 646f 735f 6174 7461 636b 2e72 6563 6f72 dos_attack.recor
+ 0220: 6465 645f 7265 7175 6573 7473 2920 7c7c ded_requests) ||
+ 0230: 2028 3120 3d3d 2067 5f6d 6365 5f73 6563 (1 == g_mce_sec
+ 0240: 5f64 6f73 5f61 7474 6163 6b2e 7265 636f _dos_attack.reco
+ 0250: 7264 6564 5f72 6571 7565 7374 7329 207c rded_requests) |
+ 0260: 7c20 2832 203d 3d20 675f 6d63 655f 7365 | (2 == g_mce_se
+ 0270: 635f 646f 735f 6174 7461 636b 2e72 6563 c_dos_attack.rec
+ 0280: 6f72 6465 645f 7265 7175 6573 7473 2900 orded_requests).
+ 0290: 2867 5f6d 6365 5f73 6563 5f64 6f73 5f61 (g_mce_sec_dos_a
+ 02a0: 7474 6163 6b2e 7365 656e 5f61 6464 7265 ttack.seen_addre
+ 02b0: 7373 6573 203c 3d20 675f 6d63 655f 7365 sses <= g_mce_se
+ 02c0: 635f 646f 735f 6174 7461 636b 2e72 6563 c_dos_attack.rec
+ 02d0: 6f72 6465 645f 7265 7175 6573 7473 2900 orded_requests).
+ 02e0: 2828 3020 213d 2067 5f6d 6365 5f73 6563 ((0 != g_mce_sec
+ 02f0: 5f61 6374 6976 655f 7365 635f 7072 6f63 _active_sec_proc
+ 0300: 2920 2626 2028 6964 203d 3d20 675f 6d63 ) && (id == g_mc
+ 0310: 655f 7365 635f 6163 7469 7665 5f73 6563 e_sec_active_sec
+ 0320: 5f70 726f 632d 3e74 696d 6572 5f69 6429 _proc->timer_id)
+ 0330: 2900 0000 2830 2021 3d20 2828 2830 2021 )...(0 != (((0 !
+ 0340: 3d20 675f 6d63 655f 7365 635f 6163 635f = g_mce_sec_acc_
+ 0350: 7265 715f 6c69 7374 2920 3f20 2876 6f69 req_list) ? (voi
+ 0360: 6429 3020 3a20 5f5f 6173 7365 7274 2829 d)0 : __assert()
+ 0370: 292c 2028 2867 5f6d 6365 5f73 6563 5f61 ), ((g_mce_sec_a
+ 0380: 6363 5f72 6571 5f6c 6973 7429 2d3e 636f cc_req_list)->co
+ 0390: 756e 7429 2929 0000 2828 4d43 455f 5345 unt)))..((MCE_SE
+ 03a0: 435f 5354 5f43 414e 4345 4c4c 4544 203d C_ST_CANCELLED =
+ 03b0: 3d20 675f 6d63 655f 7365 635f 6163 7469 = g_mce_sec_acti
+ 03c0: 7665 5f73 6563 5f70 726f 632d 3e73 7461 ve_sec_proc->sta
+ 03d0: 7465 2920 7c7c 2028 4d43 455f 5345 435f te) || (MCE_SEC_
+ 03e0: 5354 5f41 5554 4845 4e54 203d 3d20 675f ST_AUTHENT == g_
+ 03f0: 6d63 655f 7365 635f 6163 7469 7665 5f73 mce_sec_active_s
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 5310 XpressMusic
+ Device version: (null)
+ Serial number: 00000000000000000000000OF1175719
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0; microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100a: Get thumbnail
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 101b: Get partial object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4009
+ 0x4003
+ 0x4002
+ 0x400c
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3002: Script
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ bb82: vCard2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ be02: vCalendar1
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 985399296
+ FreeSpaceInBytes: 917504
+ FreeSpaceInObjects: 4294967295
+ StorageDescription:
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x10000152
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia 5310 XpressMusic
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+libmtp supported (playable) filetypes:
+ JPEG file
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ BMP bitmap file
+ GIF bitmap file
+ JFIF file
+ Portable Network Graphics
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Audio
+ VCard version 2
+ VCard version 3
+ VCalendar version 1
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">FsABGW5+AlQJxQ1VjErOMZ+D/GM=</UNIQUEID><PUBLICKEY private="1">WHLYeVhRRmte4kD0XjEXSHyEASsjly1VNjExB+5d5uJYDN5a0zL/Iw==</PUBLICKEY><KEYDATA>brjszuhYilN8rHMzR9ZajlMLIOk=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>e9SBJU4r/eU14zKLYu27OBe+E3CExHW8gRJEZbvERMwJmV1fyJFXEQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>BWedlOHnqFHkFApA9lj411ZqhVU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.143</SECURITYVERSION><CERTIFICATE private="1">WHLYeVhRRmte4kD0XjEXSHyEASsjly1VNjExB+5d5uJYDN5a0zL/IwIEbI8yYD/WLG4iOmfZL+LQwVb5wsMlPg94VjcOAqNaJmta1L22DfiFG+YH</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>5310</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-304</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>10</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>3</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>40</FIRMWARE_VER_MINOR>
+- <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+- <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>DG2sL4GQ+ZN9E/O4iEOFO0rG7FNThxP0SBFI2B6Y9Nbao7j4KYZRNA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>MH2shwONWYvadF+/3XmDIMJaDTcixvWLPAVsXKXogrYYdHY+cDDqJw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2035</AUTH_ID><PUBLICKEY>xX/3MFYa+KIkQ1GvKYykLpOKkhrZUEoB4kFgovelMCXzKoU79qkSJw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>babwaSRikvOmkyODRBYVPTnUbQc1mY2MXJ7PjTz74bWyFVqHksHSPg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>oP7nsmODlsrtdrqRm+3SjdPcJ1cYaDhu2Rsb14QaJoaqySGVo2QoHA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>大
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{6F303D5A-442C-4EB1-869D-3EEE90ED3EF6}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
+
+
diff --git a/logs/mtp-detect-nokia-5320.txt b/logs/mtp-detect-nokia-5320.txt
new file mode 100644
index 0000000..0ba1b09
--- /dev/null
+++ b/logs/mtp-detect-nokia-5320.txt
@@ -0,0 +1,470 @@
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:00ea @ bus 0, dev 7
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 00ea
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 7
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x00ea
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: S60
+ Model: Nokia 5320 XpressMusic
+ Device version: v. 1.00
+ Serial number: 354826022953210
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1297101377, 1297101889, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 4066902016
+ FreeSpaceInBytes: 4056357888
+ FreeSpaceInObjects: 1937
+ StorageDescription: Memory card (NO NAME)
+ VolumeIdentifier: 842084407
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: S60 Handset
+ Synchronization partner: S60 Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">E3ABFCG0AVgA6k94aCzVhda9d7s=</UNIQUEID><PUBLICKEY private="1">3grb76ajPfuA6aY0jt4dNuiH/kBrRMw5Qv+62OudoI+Tcaq3yil5Aw==</PUBLICKEY><KEYDATA>hAp415/1nJ2c16YsgaGLtuQ3YG0=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>abX0P5eyNJB26veGOHUSQYukem3P8ZZE7Ew10+sMSpt+Sny3ZskbLw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>iiqiCbMWI+3j6kaqFxTuUGgaGEk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.61</SECURITYVERSION><CERTIFICATE private="1">3grb76ajPfuA6aY0jt4dNuiH/kBrRMw5Qv+62OudoI+Tcaq3yil5AwIEbz2q2effCwlys/0SGM4PyM4qENtGaHOApWfiIk/Vj4wKaN/aPgDgRxyG</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>5320d</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-409</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>I0LconX6Pb6KrZNm3ijBLPCiPiuD9+ZkR45acm/2BStco1VN6OmKKQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>b7+fFNXphKPsTOF/Hq+jQz5yxHrG9wB2KA98/xCz04ji33Vv80d2cA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2721</AUTH_ID><PUBLICKEY>Z2r8PDJdlt36V5Q+vO7m1wOhoXvOSAXQ/ktypTEUsQbIgYD6lNdnCg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>fnPPwWFzvHix+M4KEyxXuUx0l0Q8NYJPBBVssactoKTHNh4VhBBWVA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>zStwaQgvY1PpOR4aRIA73+ihDiy0mxDvIorOqC8s+RYFWUF6n/yARg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-nokia-5530.txt b/logs/mtp-detect-nokia-5530.txt
new file mode 100644
index 0000000..063d1a9
--- /dev/null
+++ b/logs/mtp-detect-nokia-5530.txt
@@ -0,0 +1,489 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:0229 @ bus 0, dev 11
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 0229
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 11
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x0229
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: 5530
+ Device version: 01
+ Serial number: 354200030403081
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9807: Get interdependent property description
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd406: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1297101377, 1297101889, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3955228672
+ FreeSpaceInBytes: 3947927552
+ FreeSpaceInObjects: 1885
+ StorageDescription: Memory card (memorycard)
+ VolumeIdentifier: 3760724115
+ StorageID: 0x00020001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 90251264
+ FreeSpaceInBytes: 54676480
+ FreeSpaceInObjects: 26
+ StorageDescription: Phone memory (NOKIA)
+ VolumeIdentifier: 1196836185
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x0080ad18
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia 5530
+ Synchronization partner: Nokia 5530
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AhABA0R8AFL7RGHA7zHTEtFpRSc=</UNIQUEID><PUBLICKEY private="1">hhE38DlIqmTcANqgQi2MkoXuNUpIj3BOVxSOJ7CXjiCspwhNHxrQVw==</PUBLICKEY><KEYDATA>gb+ifnkXDZeTxhVQ0095WLGZ/bQ=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>9z2Yq1U3+KfZiOkerMEnjKAI/VQDo026jRSmkvJV+zyF8C2c341qBQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>T0ItWYmGjYarIx5yWik25as8RSg=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.114.93</SECURITYVERSION><CERTIFICATE private="1">hhE38DlIqmTcANqgQi2MkoXuNUpIj3BOVxSOJ7CXjiCspwhNHxrQVwIEcl3MRdQrlUlUkPzF9N31NrrOhmUYeuMg2O3zK4aOY1WOqZ074Kx+rSEp</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>5530</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-504</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>3yk2sPiIpFVDE6Yuva1D9ezjfVqfBbs0sP9PTZIL9fFNm+VJQUiRDA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LjyimwxX2+R+AmHnCZpMh1EKtRcEMEvlpDPm+kgqEugWgwQ0zV2wRA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>3521</AUTH_ID><PUBLICKEY>v6i72rytrgoHbVBWIaktH7T/noI8nBvFK/I27Iwbglu+L4ggpxU3Mg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yevxW0BIHBFkXuZhNIDBtK0fBXf0wt55qNs6CwLHjSrfhqyxy1ZLZQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>T5tsgleky+TUHuDPu2eBIqLBrxJt9ME849Z4UdRbpJZWMrXy1ru4cw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{1939B334-E62D-4FFA-857B-C9B4AA577275}" RelationshipID="{1C45F848-19F3-4EB6-A486-30C23F2F488E}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-nokia-5700.txt b/logs/mtp-detect-nokia-5700.txt
new file mode 100644
index 0000000..3b76acf
--- /dev/null
+++ b/logs/mtp-detect-nokia-5700.txt
@@ -0,0 +1,395 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Device 1 (VID=0421 and PID=04b4) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04b4
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 5700 XpressMusic
+ Device version: v. 1.00
+ Serial number: 353964012067344
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd101: Secure Time
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1017380864
+ FreeSpaceInBytes: 919535616
+ FreeSpaceInObjects: 438
+ StorageDescription: (null)
+ VolumeIdentifier: 305419896
+Special directories:
+ Default music folder: 0x00783438
+ Default playlist folder: 0x00787fa8
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: Nokia Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">EBAAGHJYAFiajGATrSV0Q1zM1tw=</UNIQUEID><PUBLICKEY private="1">yupOShuVn+Ohiu66rXU7PsNB8j32PH3itKavoF8Cvj5mp0njFHnTGw==</PUBLICKEY><KEYDATA></KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>IA55p84br2OugD/WBUpPqaKGgnACviPbxUFSPXxqv3J8PyD0OEZyIA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE></SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.309</SECURITYVERSION><CERTIFICATE private="1">yupOShuVn+Ohiu66rXU7PsNB8j32PH3itKavoF8Cvj5mp0njFHnTGwIEaTUYkYBH2YGyvC5quVHELMO2wIMEfZx3xdW/ubyq9Nc3i6F0UD4gfPAu</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>5700</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-230</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>uY3N1oghy/nmhubzGeiZfYmChUT25qfMpmKCTW9Sdj2hHf1HV88jZg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>pghIQN6Dm50S3S+bkQi7IVBZjjXlFcN7wLUEQQD+H6k982gmTzjKSA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1433</AUTH_ID><PUBLICKEY>ntQPNfKKMfukh/0zmGMkUvATHXS0sgF8APhcEN6rFa/11pYrWuobYA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/SdLqMFRITPdTq5OqOkhm1HH7yjvYucr5hJPH8LOEwEmFeP8xE3EYg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>z1TxUr2XXhkskYyNlhksr/PCJAYLet5qY/UxJpC6TNiqkPHmWFMCbg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>ÿÿÿÿ
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-nokia-5800.txt b/logs/mtp-detect-nokia-5800.txt
new file mode 100644
index 0000000..fcd407d
--- /dev/null
+++ b/logs/mtp-detect-nokia-5800.txt
@@ -0,0 +1,155 @@
+Device 0 (VID=0421 and PID=0155) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+Error 2: PTP Layer error 02ff: get_all_metadata_fast(): could not get proplist of all objects.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: get_handles_recursively(): could not get object handles.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: get_handles_recursively(): could not get object handles.
+Error 2: (Look this up in ptp.h for an explanation.)
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:0155 @ bus 0, dev 14
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 0155
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 14
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x0155
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: 5800 XpressMusic
+ Device version: 01
+ Serial number: 354183023422153
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9807: Get interdependent property description
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd406: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ 3001: Association/Directory
+ b903: AAC
+ b982: MP4
+ 3009: MP3
+ b984: 3GP
+ b004: Unknown(b004)
+ b982: MP4
+ b901: WMA
+ 300c: ASF
+ b981: WMV
+ ba11: M3U Playlist
+ ba05: Abstract Audio Video Playlist
+ 3008: MS Wave
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 7964983296
+ FreeSpaceInBytes: 1893857280
+ FreeSpaceInObjects: 908
+ StorageDescription: Memory card
+ VolumeIdentifier: 3455216610
+ StorageID: 0x00020001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 90251264
+ FreeSpaceInBytes: 73989120
+ FreeSpaceInObjects: 35
+ StorageDescription: Phone memory (NOKIA)
+ VolumeIdentifier: 1196836185
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+VError 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+ERROR: Could not close session!
+ideo Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+Unable to acquire device certificate, perhaps this device does not support this
+OK.
+
+
diff --git a/logs/mtp-detect-nokia-6120c.txt b/logs/mtp-detect-nokia-6120c.txt
new file mode 100644
index 0000000..935fb37
--- /dev/null
+++ b/logs/mtp-detect-nokia-6120c.txt
@@ -0,0 +1,331 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Device 1 (VID=0421 and PID=002e) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 002e
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 6120 classic
+ Device version: v. 1.00
+ Serial number: 356972010492171
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1029832704
+ FreeSpaceInBytes: 356383744
+ FreeSpaceInObjects: 170
+ StorageDescription: ******
+ VolumeIdentifier: 969318220
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: Nokia Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-nokia-6205.txt b/logs/mtp-detect-nokia-6205.txt
new file mode 100644
index 0000000..33d4383
--- /dev/null
+++ b/logs/mtp-detect-nokia-6205.txt
@@ -0,0 +1,315 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 05c6
+ idProduct: 3196
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Verizon
+ Model: Verizon Music Phone
+ Device version: 02.06.015L(148000)
+ Serial number: 01307E66
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 9806: Set object property list
+ 9808: Send object property list
+ 100d: Send object
+ 1009: Get object
+ 100b: Delete object
+ 9802: Get object property description
+ 1014: Get device property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 1015: Get device property value
+ 1016: Set device property value
+ 9811: Set object references
+ d402: Unknown (d402)
+ 9804: Set object property value
+ 1006: Get number of objects
+ 100c: Send object info
+ 1012: Set object protection
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9109: Get license state
+ 9201: Report Added/Deleted Items
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, 354, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b700: Unknown(b700)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: READ ONLY
+ b701: Unknown(b701)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: READ ONLY
+ b702: Unknown(b702)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 196608, STEP 1000 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: READ ONLY
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14344, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 2012872704
+ FreeSpaceInBytes: 1994997760
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Removable Storage Card
+ VolumeIdentifier: SD02G2£15566592
+Special directories:
+ Default music folder: 0x000000c8
+ Default playlist folder: 0x000000cc
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: V CAST Mobile Phone - External Memory
+ Synchronization partner: V CAST Sync Partner
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+ JPEG file
+ JFIF file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">Zn4wAQAAoMz8YAIAAECY+cEEAAA=</UNIQUEID><PUBLICKEY private="1">ddMq9cyNFb6o3NE7zvUvT3g3Ziz8PC/tmo3SPLhXCXdwbQN19IVkgA==</PUBLICKEY><KEYDATA>2YPGBugfcXZVcgiyC+9uz7kqbak=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>2S1c2qOkOXfFw++/n0XEOmXrOzv7hLVpDkv1yV+w+qnPLICdlNr2hg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>P2r5oiCTLmJkhyNScalQcVbcT1Y=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.183</SECURITYVERSION><CERTIFICATE private="1">ddMq9cyNFb6o3NE7zvUvT3g3Ziz8PC/tmo3SPLhXCXdwbQN19IVkgAIEa7d2suJJstcZ/AJEMe7bk9gywN5aPf4sPX4BsbJRhfQM6t4+88wQKBkF</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>NBalboa</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Balboa</MAKE>
+ <DISTRIBUTOR>Verizon Wireless</DISTRIBUTOR>
+ <MODEL>MOD 2.0.0</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>0</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>9cmEszzjSU20vZuhB0ZugY+n8i0mIaDJvA7I45sTBkFGjAsGmi8hWQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kuca9wotaGTG0G2dPvftj3zxuIahMaIrRG5Wj+lgx6CY4DVFYcgMDw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1819</AUTH_ID><PUBLICKEY>zrP7+pFmhx/HuQJtNEHLEL4zawwFuTDrB1E1l2bc47IC3+KIcYXGMg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>EPs+i571OXLamr1dak7GAPEVYIZzYKAj1seQNfF8zvsfNkD6jxtpbg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>xrtjH01GlxXwSXZJxwRFvkNwGS/Rqoe38IuZT4yaAaU4+mGXEnfVew==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-nokia-6220.txt b/logs/mtp-detect-nokia-6220.txt
new file mode 100644
index 0000000..bce6727
--- /dev/null
+++ b/logs/mtp-detect-nokia-6220.txt
@@ -0,0 +1,470 @@
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:008d @ bus 0, dev 4
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 008d
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 4
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x008d
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 6220 Classic
+ Device version: v. 1.00
+ Serial number: 356398020636971
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1297101377, 1297101889, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 1018298368
+ FreeSpaceInBytes: 871547904
+ FreeSpaceInObjects: 416
+ StorageDescription: Memory card (Memory card)
+ VolumeIdentifier: 3092154013
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: 6220c-1
+ Synchronization partner: 6220c-1
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">IWABAiC0AVicg85f6B76vJbQMlI=</UNIQUEID><PUBLICKEY private="1">5k6hmeXlWI5spOJzqe9n+IQY+V6fpidK2yywmeuZFqhsRNDU8B4GPA==</PUBLICKEY><KEYDATA>Zp7IQPLFnwPzoDa3LH+3NtiCn4A=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>OQP6gc2+UJ1LSAe2/4sfmklpOFrDSerAY/HKCH9ZXfMaKHPcsqzqHQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>SpmtwJSMPVMnP6kQCXcVErQU8vY=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.110.87</SECURITYVERSION><CERTIFICATE private="1">5k6hmeXlWI5spOJzqe9n+IQY+V6fpidK2yywmeuZFqhsRNDU8B4GPAIEblc7DxAtV0og9ov1pZq3CjHgdY6uYBECupr6IfuP++z5xyrvAEV3y1kr</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>6220c-1</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-328</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>xtJ/7T4Nbfp+lq6OuAfGk6nQN4QylxtXiiD6IyridJNMFooAPYfXbQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Z28fMuSsyfryhx6wzbHhOJ+bU3IHCvnImXjPxrdc1kh+zD7+3FlfBA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2491</AUTH_ID><PUBLICKEY>N0Ov2RK4nmSDCH2Z/vPh4+l39mhKIR/EKsR/frjSACiOb8cWDbTYHQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>bBi39TPLVUOAdbxKjnx9yNAH8oOn2zpfbTUqC/7Rdy/2mJbCGcYEeg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>oZQvM/tSU4uRFwrJ69HYPQfPMSmtMJWenmKsRAWWZWFh7+kpVX3DLg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-nokia-6500c.txt b/logs/mtp-detect-nokia-6500c.txt
new file mode 100644
index 0000000..ad1adce
--- /dev/null
+++ b/logs/mtp-detect-nokia-6500c.txt
@@ -0,0 +1,519 @@
+Potential MTP Device with VendorID:0421 and ProductID:003c responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0421 and PID=003c) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:003c @ bus 0, dev 3
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 003c
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x003c
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 1203 4d00 5300 4600 ..........M.S.F.
+ 0030: 5400 3100 3000 3000 fe00 1203 5000 4300 T.1.0.0.....P.C.
+ 0040: 2000 5300 7500 6900 7400 6500 1e03 5200 .S.u.i.t.e...R.
+ 0050: 6500 6d00 6f00 7600 6100 6200 6c00 6500 e.m.o.v.a.b.l.e.
+ 0060: 2000 4400 6900 7300 6b00 1e03 4d00 6500 .D.i.s.k...M.e.
+ 0070: 6400 6900 6100 2000 5400 7200 6100 6e00 d.i.a. .T.r.a.n.
+ 0080: 7300 6600 6500 7200 7573 6268 5f73 7461 s.f.e.r.usbh_sta
+ 0090: 7274 5f73 7461 636b 0075 7362 685f 7374 rt_stack.usbh_st
+ 00a0: 6f70 5f73 7461 636b 0075 7362 685f 7374 op_stack.usbh_st
+ 00b0: 6172 745f 7374 6163 6b5f 6861 6e64 6c65 art_stack_handle
+ 00c0: 7200 7573 6268 5f73 746f 705f 7374 6163 r.usbh_stop_stac
+ 00d0: 6b5f 6861 6e64 6c65 7200 7573 6268 5f73 k_handler.usbh_s
+ 00e0: 6574 5f73 7461 636b 5f73 7461 7475 7300 et_stack_status.
+ 00f0: 7573 625f 6d61 7463 6800 7573 625f 6174 usb_match.usb_at
+ 0100: 7461 6368 0075 7362 5f65 7665 6e74 5f74 tach.usb_event_t
+ 0110: 6173 6b00 7573 625f 776f 726b 696e 675f ask.usb_working_
+ 0120: 7461 736b 0000 0000 4001 0000 0000 0000 task....@.......
+ 0130: 0000 0000 0000 0000 3f01 0000 0000 0000 ........?.......
+ 0140: 0000 0000 0000 0000 7573 6263 746c 7072 ........usbctlpr
+ 0150: 696e 7400 7573 625f 6469 7363 6f76 6572 int.usb_discover
+ 0160: 0075 7362 5f6e 6565 6473 5f65 7870 6c6f .usb_needs_explo
+ 0170: 7265 0075 7362 5f61 6374 6976 6174 6500 re.usb_activate.
+ 0180: 7573 625f 6465 7461 6368 0075 7362 5f68 usb_detach.usb_h
+ 0190: 6f73 745f 7265 715f 6861 6e64 6c65 7200 ost_req_handler.
+ 01a0: 5000 0000 6914 2bf0 3b15 2bf0 3318 2bf0 P...i.+.;.+.3.+.
+ 01b0: 9b17 2bf0 5802 0000 811a 2bf0 9f29 2bf0 ..+.X.....+..)+.
+ 01c0: b32b 2bf0 032b 2bf0 0000 0000 0000 0000 .++..++.........
+ 01d0: 0100 0000 0000 0000 0200 0000 0000 0000 ................
+ 01e0: 0300 0000 0000 0000 0400 0000 0000 0000 ................
+ 01f0: 0500 0000 0000 0000 0600 0000 0000 0000 ................
+ 0200: 0700 0000 0000 0000 0800 0000 0000 0000 ................
+ 0210: 0900 0000 0000 0000 0a00 0000 0000 0000 ................
+ 0220: 0b00 0000 0000 0000 0c00 0000 0000 0000 ................
+ 0230: 3000 0000 0d3f 2bf0 0000 0000 0000 0000 0....?+.........
+ 0240: 0000 0000 3000 0000 113f 2bf0 0000 0000 ....0....?+.....
+ 0250: 0000 0000 0000 0000 3000 0000 153f 2bf0 ........0....?+.
+ 0260: 0000 0000 0000 0000 0000 0000 3000 0000 ............0...
+ 0270: 193f 2bf0 0000 0000 0000 0000 0000 0000 .?+.............
+ 0280: 7374 726c 6370 7900 7573 6264 5f67 6574 strlcpy.usbd_get
+ 0290: 5f64 6573 6300 7573 6264 5f67 6574 5f63 _desc.usbd_get_c
+ 02a0: 6f6e 6669 675f 6465 7363 0075 7362 645f onfig_desc.usbd_
+ 02b0: 6765 745f 6465 7669 6365 5f64 6573 6300 get_device_desc.
+ 02c0: 7573 6264 5f67 6574 5f64 6576 6963 655f usbd_get_device_
+ 02d0: 7374 6174 7573 0075 7362 645f 7365 745f status.usbd_set_
+ 02e0: 6164 6472 6573 7300 7573 6264 5f67 6574 address.usbd_get
+ 02f0: 5f70 6f72 745f 7374 6174 7573 0075 7362 _port_status.usb
+ 0300: 645f 636c 6561 725f 706f 7274 5f66 6561 d_clear_port_fea
+ 0310: 7475 7265 0075 7362 645f 7365 745f 706f ture.usbd_set_po
+ 0320: 7274 5f66 6561 7475 7265 0075 7362 645f rt_feature.usbd_
+ 0330: 7365 745f 6964 6c65 0075 Potential MTP Device with VendorID:0421 and ProductID:003c responded to control message 2 with a response that was too short. Problems may arrise but continuing
+7362 645f 6765 set_idle.usbd_ge
+ 0340: 745f 7265 706f 7274 5f64 6573 6372 6970 t_report_descrip
+ 0350: 746f 7200 7573 6264 5f67 6574 5f68 6964 tor.usbd_get_hid
+ 0360: 5f64 6573 6372 6970 746f 7200 7573 6264 _descriptor.usbd
+ 0370: 5f72 6561 645f 7265 706f 7274 5f64 6573 _read_report_des
+ 0380: 6300 7573 6268 5f6f 735f 6d61 6c6c 6f63 c.usbh_os_malloc
+ 0390: 0075 7362 685f 6f73 5f66 7265 6500 7573 .usbh_os_free.us
+ 03a0: 6268 5f74 736c 6565 705f 7469 6d65 6f75 bh_tsleep_timeou
+ 03b0: 745f 6973 7200 7573 6268 5f77 616b 6575 t_isr.usbh_wakeu
+ 03c0: 7000 7573 6264 5f78 6665 725f 736c 6565 p.usbd_xfer_slee
+ 03d0: 705f 7365 7475 7000 7573 6264 5f78 6665 p_setup.usbd_xfe
+ 03e0: 725f 736c 6565 7000 7573 6264 5f78 6665 r_sleep.usbd_xfe
+ 03f0: 725f 736c 6565 705f 6361 6e63 656c 0075 r_sleep_cancel.u
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia 6500c
+ Device version: (null)
+ Serial number: 00000000000000000xxxxxxxxxxxx415
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0; microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100a: Get thumbnail
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 101b: Get partial object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4009
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3002: Script
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ bb82: vCard2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ bb83: vCard3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ be02: vCalendar1
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1026719744
+ FreeSpaceInBytes: 999260160
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Galerij
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x10001aca
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0xPTP: Closing session
+00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: NOKIA
+ Synchronization partner: MICROSOFT MEDIAPLAYER
+libmtp supported (playable) filetypes:
+ JPEG file
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ BMP bitmap file
+ GIF bitmap file
+ JFIF file
+ Portable Network Graphics
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Audio
+ VCard version 2
+ VCard version 3
+ VCalendar version 1
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">EPABDuH1AVTgJ/j/jXdqvDFtAW0=</UNIQUEID><PUBLICKEY private="1">pXpGASBX5UekFbFMD5BWPfGMuWLjaKeONDWvforch79aeRgqoM4rNw==</PUBLICKEY><KEYDATA></KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>nWkose4Vy0IRngk3ykStXcTkw2iXrt8XCqKMBpC6bSDAU0scsz9nHw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE></SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.139</SECURITYVERSION><CERTIFICATE private="1">pXpGASBX5UekFbFMD5BWPfGMuWLjaKeONDWvforch79aeRgqoM4rNwIEbItHZjBlghQMCijtAimZwy5qYA2OE1iX+V0WX3z0sx3kgljDgEBw6HE0</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>6500 Classic</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-265</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>10</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>3</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>20</FIRMWARE_VER_MINOR>
+- <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+- <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>ALkATg94U1L72WntvkKrGFJLXlgj5Ys8saMz/774KeCtFcKd5zlaQw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>K6q8VLOLPtBQe7bFab4kag0iwAQtsHPlLC3aq65J37O8tLIkq7XgMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2031</AUTH_ID><PUBLICKEY>2a++RTLVAsuiI/lJWmeQfC/83CpAUHlnzUdd2SxXlJFOpU9k0AVwcg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>A32uqD8d8PkT6cHCew/wCIr+Yl/1M1A3kCiDIpdHA1x0+KMcNRZsWQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LGczDqH0o9vbft7FSiTvaZe47wAIBC6Knaew77ypVY8lHzmZmppPaQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>大
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-nokia-e66.txt b/logs/mtp-detect-nokia-e66.txt
new file mode 100644
index 0000000..7ef97a9
--- /dev/null
+++ b/logs/mtp-detect-nokia-e66.txt
@@ -0,0 +1,408 @@
+Device 0 (VID=0421 and PID=00e5) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:00e5 @ bus 0, dev 4
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 00e5
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 4
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x00e5
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia E66
+ Device version: v. 1.00
+ Serial number: Nokia Handset
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1297101377, 1297101889, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2012971008
+ FreeSpaceInBytes: 1658522624
+ FreeSpaceInObjects: 792
+ StorageDescription: (null)
+ VolumeIdentifier: 4252076090
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">EtAAEuWWAVhiiOFM8MsAHndih1c=</UNIQUEID><PUBLICKEY private="1">KHoxgun4dFpT88ajFtz0GYjR7VWBRVcU+7McRpKY65NM/6jTmVlYFA==</PUBLICKEY><KEYDATA>II335cVhOrGc5jVStLT7gRnLYF0=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>KgJ6xgik2vq0EE3Sx/FFX1AovGAdw1gL+nDXHOSDQ5+fHZxDzmqCaQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Q0HSLd8Vhrp75qsS9fwwvvCb65Q=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.109.251</SECURITYVERSION><CERTIFICATE private="1">KHoxgun4dFpT88ajFtz0GYjR7VWBRVcU+7McRpKY65NM/6jTmVlYFAIEbfs7o/+Tt7UslHJXSsCadYYr9KsyKE3HouOfbgQMO1mbMlHUUUyxC8QR</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>E66</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-343</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VEPTP: Closing session
+R_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>blv5ZJA8E/QsN5dEqitbfCmGsFh4k8iYXH0cD8gMEMxsCBWGEok/YQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>FNBwUHgxl3sI7yIJfpgxzJJrAACDeTD/0mkRsvirSg+YV/Th2oaPHQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2399</AUTH_ID><PUBLICKEY>ApRGW3Fze7nYrkWKJDHRZ7HoQRQ878KvWcf2k6pev1aauHz7sKjuXw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dZoQR6gV2Jar9AwOnudJxwU4Vl9VZCMSxT2o5v2epQVMycT8N1NrLQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>nh1u9TcgyNEtsWe+kkF9GWkiQjj+h8/vuqmfviq2KJ2uDoJnxcJUGg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>66_
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{101BF840-050D-40A1-9587-4FFCA4767906}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-nokia-e71.txt b/logs/mtp-detect-nokia-e71.txt
new file mode 100644
index 0000000..75ee820
--- /dev/null
+++ b/logs/mtp-detect-nokia-e71.txt
@@ -0,0 +1,403 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+Device 0 (VID=0421 and PID=00e4) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 0421:00e4 @ bus 0, dev 5
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 00e4
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 5
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x00e4
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia E71
+ Device version: v. 1.00
+ Serial number: Nokia Handset
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1297101377, 1297101889, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2041282560
+ FreeSpaceInBytes: 1490871296
+ FreeSpaceInObjects: 712
+ StorageDescription: (null)
+ VolumeIdentifier: 4252076090
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: Nokia Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">B/AAEp+SAVgn4tyC5/v8LAQYfnk=</UNIQUEID><PUBLICKEY private="1">03rFVrKlvnSTwrh+4aOy8hlsn3RG1G3n5zfDz2aF6RWZ6qv1FGr1Yg==</PUBLICKEY><KEYDATA>pG1pzDbNIs3yxEjqeicC4bXLGd8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>Xm7iXr34hnnCOZE2ih301kE8cxyENjEQVxEOHg0XhPYmP5GOK0aPeA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>YCmKuEZU6rfZgCmcDefd+y0Pj+o=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.110.37</SECURITYVERSION><CERTIFICATE private="1">03rFVrKlvnSTwrh+4aOy8hlsn3RG1G3n5zfDz2aF6RWZ6qv1FGr1YgIEbiX+ZxExKSKRlKoDbf2Um3ZUkoQ+U+3CzdsGyt3eDuJo3QbbwiBvHapw</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>E71</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-346</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>AvORj/aqZI8mhtQlniAF5MU912YRakQePsgKH1z6Gh7DpiPMj7fsbQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>J5TYwg9lnMSO8BRrJ1C3esbd83yGYf2IXE1AXL9OPe2BMdWG6y1MRA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2441</AUTH_ID><PUBLICKEY>i9ktHQcIDGzkzq1yZOtqoLwTSYZc1fb7DO4DQMKBRG0DGbpRrrSDBQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>pmejQPJN0bpxr9f5hpB3vbBRwiBfu3g7O1Wn3k8MN2m/RfIdCV04HA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>zRQhrNw1zCSczmo9pelMYdi8RBKyyOCY9WUr5NvhYZ8U3NP40xNIgw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-nokia-n73.txt b/logs/mtp-detect-nokia-n73.txt
new file mode 100644
index 0000000..8fd0a87
--- /dev/null
+++ b/logs/mtp-detect-nokia-n73.txt
@@ -0,0 +1,324 @@
+$ sudo mtp-detect -v
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+PTP: Opening session >> This takes 10-15secs before program continues!
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04d1
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia N73
+ Device version: v. 1.00
+ Serial number: xxxxxxxxxxxxxxx
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD:11.0
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2030960640
+ FreeSpaceInBytes: 44834816
+ FreeSpaceInObjects: 22
+ StorageDescription: (null)
+ VolumeIdentifier: 3661586555
+Special directories:
+ Default music folder: 0x00798128
+ Default playlist folder: 0x00794ee8
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: Nokia Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+Unable to acquire device certificate, perhaps this device does not
+support this
diff --git a/logs/mtp-detect-nokia-n75.txt b/logs/mtp-detect-nokia-n75.txt
new file mode 100644
index 0000000..55a1d66
--- /dev/null
+++ b/logs/mtp-detect-nokia-n75.txt
@@ -0,0 +1,386 @@
+libmtp version: 0.2.0
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04e1
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia N75
+ Device version: v. 1.00
+ Serial number: ###############
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get type of playlists that are allowed to be transfered
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd101: Secure Time
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 252837888
+ FreeSpaceInBytes: 207028224
+ FreeSpaceInObjects: 98
+ StorageDescription: Memory card
+ VolumeIdentifier: 2979423943
+Special directories:
+ Default music folder: 0x0075a438
+ Default playlist folder: 0x0075aff8
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia N75
+ Synchronization partner: Nokia N75
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MAAwADQANAAwADAAOQA4ADEANwAwADIAMwAzADMA</UNIQUEID><PUBLICKEY private="1">yfU5i9JAJj8US/NBG9610tzxBEu9WtjY001laPckGolXV6IxVLOpfg==</PUBLICKEY><KEYDATA>AEPx+IjlAAnc9wj/jJMFXOpg5jM=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>fWlj8yrfDFRih3OQc10B2dxsNmxTqPr5KJFFcVcsmw2sSTlx1meCRQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>oHBlLp43JLsai1sOfHN+KNd2e+Y=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.85</SECURITYVERSION><CERTIFICATE private="1">yfU5i9JAJj8US/NBG9610tzxBEu9WtjY001laPckGolXV6IxVLOpfgIEaVWtMScbzr2guqSZfn4vjUWI9KhARpZcOmlZxtwny3HGe1MpX73rJERU</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>N75</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-128</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>HSgky5T25DpZKVVAJO4tzlaysU1EupWfAd8pQpJbZAC6gH7j+UoZRw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>+GIvCXGxfo+fpXKNhpMpTUbqRFW0ddztNJ8Vd1/rfTdaJSqBCnLkDQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1209</AUTH_ID><PUBLICKEY>lLaXP6uCtehdnMt3Upymhj/pKkXvgNCeb8xghGDSK5yBmzwjqV+OXg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>e8WHZkxrP8ucd0bIbEGVJygnzkTWH/Bg3HP7s3ZDIu4wYH+OG1UnOA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eLFzvX7Lqc105oN4RckF2KA5nEhSYGUovUwmXEKdUgsEYWYOXlLDUQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-nokia-n78.txt b/logs/mtp-detect-nokia-n78.txt
new file mode 100644
index 0000000..8017a1e
--- /dev/null
+++ b/logs/mtp-detect-nokia-n78.txt
@@ -0,0 +1,475 @@
+Device 0 (VID=0421 and PID=0079) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:0079 @ bus 0, dev 26
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 0079
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 26
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x0079
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: S60
+ Model: N78
+ Device version: v. 1.00
+ Serial number: 354172021939177
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1297101377, 1297101889, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2032369664
+ FreeSpaceInBytes: 1479087104
+ FreeSpaceInObjects: 706
+ StorageDescription: Memory card
+ VolumeIdentifier: 4252076090
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: S60 Handset
+ Synchronization partner: S60 Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">FzABEzK1AFgLUxUy+nnoUmCwgas=</UNIQUEID><PUBLICKEY private="1">1vp02ByEod+J21G4Dqxw/uEIx4MOoSWUAXIJiFV/RqCJAIEXyvzagQ==</PUBLICKEY><KEYDATA>PTP: Closing session
+QJYuvV3wUyPqgUL0WbnwpEQ3SMY=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>pvj525Qj6NVw7k4ki8JX4Y3i8h86FPr8pA6mEXT367fE1jGVpX2kfg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>DLzPSHoj4S71CH9IVPgCerUpvy4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.105</SECURITYVERSION><CERTIFICATE private="1">1vp02ByEod+J21G4Dqxw/uEIx4MOoSWUAXIJiFV/RqCJAIEXyvzagQIEbGmN0w5KzHkC6oUyjMjEaX4FfQTnLCn76Hx4KQQxqBvgULQmgegYnPUu</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Nokia N78</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-235</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>AI54fNYUQ3zE0pJDVsXZb6Uy0ARYiD+OE7VSfB78aPL69/Yie/TXVw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>4Pu5wKEJYXOe4J4uArWm1g1ygnDHV+QxmbP5gCGUJnj6Qe6hUXR5Kg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1997</AUTH_ID><PUBLICKEY>Cb4JIMD1Squktiks/vwI77pPHlZC9N6EL5QLOoKwuR6vX9hfvNwCdA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>4n9goyM3yn+Z0IQQqvg0XuzaoFnKflrmmhppLZffguqItGBXvlRELA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hiBulwseEwCkx9KDPeERK1hlCyOTS+UjqGD0bmfu8L655Bo+q6SvCw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-nokia-n80.txt b/logs/mtp-detect-nokia-n80.txt
new file mode 100644
index 0000000..8657b6e
--- /dev/null
+++ b/logs/mtp-detect-nokia-n80.txt
@@ -0,0 +1,324 @@
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04f1
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia N80
+ Device version: v. 1.00
+ Serial number: XXXXXXXXXXXXXXX // Removed - Pat
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD:11.0
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get type of playlists that are allowed to be transfered
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd404: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2030960640
+ FreeSpaceInBytes: 284065792
+ FreeSpaceInObjects: 135
+ StorageDescription: PatsN80
+ VolumeIdentifier: 403941773
+Special directories:
+ Default music folder: 0x0075d460
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: Nokia Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+Unable to acquire device certificate, perhaps this device does not
+support this
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-nokia-n81.txt b/logs/mtp-detect-nokia-n81.txt
new file mode 100644
index 0000000..a46d747
--- /dev/null
+++ b/logs/mtp-detect-nokia-n81.txt
@@ -0,0 +1,433 @@
+Device 1 (VID=0421 and PID=000a) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 000a
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia N81 8GB
+ Device version: v. 1.00
+ Serial number: 356995010034040
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1297101377, 1297101889, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+SPTP: Closing session
+torage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 8044675072
+ FreeSpaceInBytes: 5005864960
+ FreeSpaceInObjects: 2392
+ StorageDescription: Mass memory
+ VolumeIdentifier: 3314929160
+Special directories:
+ Default music folder: 0x0078fe38
+ Default playlist folder: 0x007af528
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia N81 8GB
+ Synchronization partner: Nokia N81 8GB
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">EBAADhJkAFiwgtmK/LgT8b8bK88=</UNIQUEID><PUBLICKEY private="1">oZFrxGl1tZKRt+faQQHfyALgcls33Vb8pWMAA/8MjtXWSH7uD9zMeA==</PUBLICKEY><KEYDATA></KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>A/Z5WFXYS5CIHXKcN4CxWiTwV2As5f9ZF41hKjKkCtrTp8t634+qBA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE></SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.133</SECURITYVERSION><CERTIFICATE private="1">oZFrxGl1tZKRt+faQQHfyALgcls33Vb8pWMAA/8MjtXWSH7uD9zMeAIEa4UMYMKTjxkzDc2tSnzC/SGceoefL9QHoPbIuobYA1ZqJnj/ziCJQd5H</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>N81-1</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-179</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>Eo0GAiKEvOy6FAeqsBH3rY1pHjxl3onG9QV1CW7c6+sikw9MRT6xTQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>QOEJ09Fqv1plw/SLuTzxL3+DdTN1LBObZXrHceq1lalB3x+d+URiEQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1769</AUTH_ID><PUBLICKEY>Ec52jFjRcus6k7HQ3tOWWWqNBQzLwBrX3EMNcyKsN8A5mkwncwW0cQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>UxxiuT4C6iqkt7CowqoOfJQkF2eLjm0kjzrhY3p4+5kIlmCMyTaUTA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/oLCWfAn2/mb39NLqZI7mNaNP0pnx2QTsuujSMjSn1PIXmKEmeefIA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>M
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{6AEEF507-C742-4B0D-8F5D-2300347115D0}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-nokia-n82.txt b/logs/mtp-detect-nokia-n82.txt
new file mode 100644
index 0000000..459cecd
--- /dev/null
+++ b/logs/mtp-detect-nokia-n82.txt
@@ -0,0 +1,439 @@
+libmtp version: 0.3.3
+
+Listing raw device(s)
+ Found 1 device(s):
+ Nokia: N82 Mobile Phone (0421:0074) @ bus 0, dev 15
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 0074
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 15
+ Device entry info:
+ Vendor: Nokia
+ Vendor id: 0x0421
+ Product: N82 Mobile Phone
+ Vendor id: 0x0074
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: N82
+ Device version: v. 1.00
+ Serial number: 356416020835797
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 1297101377, 1297101889, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 2007728128
+ FreeSpaceInBytes: 1368630272
+ FreeSpaceInObjects: 654
+ StorageDescription: (null)
+ VolumeIdentifier: 4252076090
+Special directories:
+ Default music folder: 0x00793278
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">GIAAAs3GAVjvf1Zb8aq/f9mvjPI=</UNIQUEID><PUBLICKEY private="1">7ndtKapkXkyfiBj1TG6w6vlxzS4l2o7YU5m/hQXJBWQnxivBrBtGKw==</PUBLICKEY><KEYDATA>8MysABblU5tHQhP8PoGy2tHusxc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>vq7jbUYEoU4oE2WxWj0QUGJioG7qI3De4tDmW6ruWG8D6sXytwG+aA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>ws7Sdc2jGNIeRD2wzRHIXIak9Xc=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.95</SECURITYVERSION><CERTIFICATE private="1">7ndtKapkXkyfiBj1TG6w6vlxzS4l2o7YU5m/hQXJBWQnxivBrBtGKwIEbF/xbOFgvB/e1MnBR99QxIMX8MH6fMiKjN7s3iEGoohsHbkdQdmdI/JD</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>N82</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-313</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>EHRxED7rQg8nzF8rcoOTWU9eKEwXr5eDO3MnovN4LAmJBkXTRr6Ccg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>4vYuFnkJqMyf4BMjZit34JppWXhf07qvQ/yqdR7Nx4Opi8Uo5e/Bhg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1987</AUTH_ID><PUBLICKEY>H0O0jM6bzFjodLRvN/g4lGQfYFwNrtDbzrAz/vpcW911xTGc4UCpGQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>tHa86/et0cX10SOJU4wTWbNSf0CAwId+W3gkU9BGCdMCdCACCPezJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>m1f2V358o6HRNDybsuu2Xbt37kiRUzGlK806mByPAJ/Z3ezib3B8VA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{9115E1B0-20B2-4770-83D1-DC81C37712DD}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-nokia-n85.txt b/logs/mtp-detect-nokia-n85.txt
new file mode 100644
index 0000000..5881aef
--- /dev/null
+++ b/logs/mtp-detect-nokia-n85.txt
@@ -0,0 +1,473 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:0092 @ bus 0, dev 11
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 0092
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 11
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x0092
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: S60
+ Model: N85
+ Device version: v. 1.00
+ Serial number: 355708020511084
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1297101377, 1297101889, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7964983296
+ FreeSpaceInBytes: 5797640192
+ FreeSpaceInObjects: 2770
+ StorageDescription: Memory card
+ VolumeIdentifier: 3455216610
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: S60 Handset
+ Synchronization partner: S60 Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">ELAAAmW5AVjMi/S3BKGlaWay/vw=</UNIQUEID><PUBLICKEY private="1">CzNZPzLaW7ZDGu5ZozkE5yNumzp8uI/Nu2Hz4V5v+5IKj6HtUvFaFw==</PUBLICKEY><KEYDATA>hAhLh2H+ezjRMLrRwjB/jCw8ck8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>ntY/mVGbxR0lvfw4c9slJvjM43mdEl/RW3Z3MhZf5gBG6eNDqSW2Vg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>bZ0ECXwOKxyqWXSi5CFAbjD0tpU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.153</SECURITYVERSION><CERTIFICATE private="1">CzNZPzLaW7ZDGu5ZozkE5yNumzp8uI/Nu2Hz4V5v+5IKj6HtUvFaFwIEb5mOn55u+QturyMrufgHNUpLdrAnY3jrJkKiw8mUaEteb0pbefD3UbMs</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>N85-1</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-333</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>J7LRqEqXq91lmYxFAxIK6pcl04GIX8v5RD5k5iognBwja+idw/fTDg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LpEs83UHbOzZ6/m0mtaC9HiJv1iSSRWRHIIlATCYF39Q+8ceiIkQfA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2813</AUTH_ID><PUBLICKEY>ecS3xDwpTr7P20wqwHwvIZZvOVjk1RXkzfhzzRTNJiCA6x3Zdk/6DA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Kx2clVbdhiHOBsvFUTQPQrkV0BrRo8nRMsvBJKunIO09mhOpFEHTDw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>nCzUlOt+LxdPMsdMyeVvMkt5GynCizGrNvVoPdtojIqGC+/BRCLXQg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-nokia-n95.txt b/logs/mtp-detect-nokia-n95.txt
new file mode 100644
index 0000000..dcfb00d
--- /dev/null
+++ b/logs/mtp-detect-nokia-n95.txt
@@ -0,0 +1,342 @@
+libmtp version: 0.2.3
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04ef
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia N95
+ Device version: v. 1.00
+ Serial number: xxxxxxxxxxxxxxx
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd101: Secure Time
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, READ ONLY
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc4e: DateAdded STRING data type READ ONLY
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2030960640
+ FreeSpaceInBytes: 1759092736
+ FreeSpaceInObjects: 840
+ StorageDescription: Memory card
+ VolumeIdentifier: 929443894
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00789db8
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia Handset
+ Synchronization partner: Nokia Handset
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+
+Device Certificate:
+ã°€ä€ä”€å˜€äŒ€ä”€åˆ€å€â€€ç˜€æ”€çˆ€çŒ€æ¤€æ¼€æ¸€ã´€âˆ€ã„€â¸€ã€€âˆ€ã¸€ã°€äŒ€ä”€åˆ€å€ä¤€ä˜€ä¤€äŒ€ä„€å€ä”€â€€ç€ç¤€ç€€æ”€ã´€âˆ€ä€ä”€å˜€ä¤€äŒ€ä”€âˆ€ã¸€ã°€ä€ä„€å€ä„€ã¸€ã°€å”€ä¸€ä¤€å„€å”€ä”€ä¤€ä€â€€ç€€çˆ€æ¤€ç˜€æ„€ç€æ”€ã´€âˆ€ã„€âˆ€ã¸€ä¤€ä¨€ä„€äˆ€ä”€ãœ€å˜€å”€ä„€ä˜€æ €ç €æ¬€ä”€æ€ä„€äˆ€äˆ€â¬€çŒ€ç”€ç¨€æ°€â¬€ä”€å„€ã €ã´€ã°€â¼€å”€ä¸€ä¤€å„€å”€ä”€ä¤€ä€ã¸€ã°€å€€å”€äˆ€ä°€ä¤€äŒ€ä¬€ä”€å¤€â€€ç€€çˆ€æ¤€ç˜€æ„€ç€æ”€ã´€âˆ€ã„€âˆ€ã¸€â¬€æˆ€æ°€ç€€çœ€å„€ä¤€äˆ€å€ã„€æ¸€ç €åŒ€ä´€æ €å”€æ¬€ä¸€ã€â¼€åˆ€ã„€ä˜€ä°€æ¬€ã€å”€å¨€ç„€å”€ã„€ä”€ç €å€ä”€ç„€ä´€ã”€å”€æ€ä„€æ”€æ¤€äŒ€çœ€ã€€æ€ã€åˆ€çŒ€ä¸€å„€æœ€çœ€ã´€ã´€ã°€â¼€å€€å”€äˆ€ä°€ä¤€äŒ€ä¬€ä”€å¤€ã¸€ã°€ä¬€ä”€å¤€ä€ä„€å€ä„€ã¸€ã°€â¼€ä¬€ä”€å¤€ä€ä„€å€ä„€ã¸€ã°€â¼€ä€ä„€å€ä„€ã¸€ã°€ä´€åŒ€ä€åˆ€ä´€å¼€åŒ€ä¤€äœ€ä¸€ä„€å€å”€åˆ€ä”€å¼€å˜€ä„€ä°€å”€ä”€ã¸€æ¨€æ¨€åŒ€æ€ã˜€å€â¼€äŒ€ã„€æœ€ç€ãˆ€æ”€æ¤€æ°€çˆ€äœ€ä¼€æˆ€ã€ç€æ„€æ¬€ä€å€€æ €ä°€ä¸€çˆ€æ”€ãœ€æ°€ä´€ã”€ä´€åœ€ç¤€æ¤€æ˜€æ˜€æ¨€æ¬€äˆ€ä €æ¨€ä€æŒ€å¤€ç €ä¸€æ¨€æ°€å€€æœ€ã´€ã´€ã°€â¼€ä´€åŒ€ä€åˆ€ä´€å¼€åŒ€ä¤€äœ€ä¸€ä„€å€å”€åˆ€ä”€å¼€å˜€ä„€ä°€å”€ä”€ã¸€ã°€åŒ€å¤€ä´€åŒ€ä¤€äœ€ä¸€ä„€å€å”€åˆ€ä”€ã¸€ã°€â¼€åŒ€å¤€ä´€åŒ€ä¤€äœ€ä¸€ä„€å€å”€åˆ€ä”€ã¸€ã°€â¼€äŒ€ä”€åˆ€å€ä¤€ä˜€ä¤€äŒ€ä„€å€ä”€ã¸€ã°€ä˜€ä„€ä°€ä°€äˆ€ä„€äŒ€ä¬€ã¸€ã°€åŒ€ä”€äŒ€å”€åˆ€ä¤€å€å¤€å˜€ä”€åˆ€åŒ€ä¤€ä¼€ä¸€ã¸€ãˆ€â¸€ã€â¸€ã„€ã€€ã˜€â¸€ã”€ã¤€ã°€â¼€åŒ€ä”€äŒ€å”€åˆ€ä¤€å€å¤€å˜€ä”€åˆ€åŒ€ä¤€ä¼€ä¸€ã¸€ã°€äŒ€ä”€åˆ€å€ä¤€ä˜€ä¤€äŒ€ä„€å€ä”€â€€ç€€çˆ€æ¤€ç˜€æ„€ç€æ”€ã´€âˆ€ã„€âˆ€ã¸€â¬€æˆ€æ°€ç€€çœ€å„€ä¤€äˆ€å€ã„€æ¸€ç €åŒ€ä´€æ €å”€æ¬€ä¸€ã€â¼€åˆ€ã„€ä˜€ä°€æ¬€ã€å”€å¨€ç„€å”€ã„€ä”€ç €å€ä”€ç„€ä´€ã”€å”€æ€ä„€æ”€æ¤€äŒ€çœ€ã€€æ€ã€åˆ€çŒ€ä¸€å„€æœ€çœ€ä¤€ä”€æ„€æ¨€çŒ€ä”€æ¼€æ€ã €ã„€ç €æ¼€çˆ€ç€åœ€å €ä¸€å€€åŒ€ç¤€ä„€ãˆ€äœ€åŒ€ç¤€æ˜€ä€ä¤€ä¤€ä¬€å¤€å¨€ä„€ã¤€ç˜€å”€ä €åœ€æ¨€ä¤€ä°€å €æ°€æœ€ä¼€ã”€ç¨€ãœ€æ¬€æŒ€ä”€ä¼€äŒ€å„€äˆ€ä°€æ €ã€ã°€â¼€äŒ€ä”€åˆ€å€ä¤€ä˜€ä¤€äŒ€ä„€å€ä”€ã¸€ã°€â¼€ä˜€ä„€ä°€ä°€äˆ€ä„€äŒ€ä¬€ã¸€ã°€äŒ€ä”€åˆ€å€ä¤€ä˜€ä¤€äŒ€ä„€å€ä”€â€€ç€ç¤€ç€€æ”€ã´€âˆ€äœ€åˆ€ä¼€å”€å€€âˆ€ã¸€ã°€ä€ä„€å€ä„€ã¸€ã°€ä¸€ä„€ä´€ä”€ã¸€ä¸€æ¼€æ¬€æ¤€æ„€â€€ä¸€ã¤€ã”€ã°€â¼€ä¸€ä„€ä´€ä”€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä´€ä„€ä¸€å”€ä˜€ä„€äŒ€å€å”€åˆ€ä”€åˆ€ã¸€ä¸€æ¼€æ¬€æ¤€æ„€ã°€â¼€ä´€ä„€ä¸€å”€ä˜€ä„€äŒ€å€å”€åˆ€ä”€åˆ€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä´€ä„€ä¬€ä”€ã¸€ä¸€æ¼€æ¬€æ¤€æ„€ã°€â¼€ä´€ä„€ä¬€ä”€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä€ä¤€åŒ€å€åˆ€ä¤€äˆ€å”€å€ä¼€åˆ€ã¸€ä¸€æ¼€æ¬€æ¤€æ„€ã°€â¼€ä€ä¤€åŒ€å€åˆ€ä¤€äˆ€å”€å€ä¼€åˆ€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä´€ä¼€ä€ä”€ä°€ã¸€åˆ€ä´€â´€ã„€ã”€ã¤€ã°€â¼€ä´€ä¼€ä€ä”€ä°€ã¸€à´€à¨€â€€â€€â€€â€€ã°€åŒ€ä”€äŒ€å”€åˆ€ä¤€å€å¤€ä°€ä”€å˜€ä”€ä°€ã¸€ãˆ€ã€€ã€€ã€€ã°€â¼€åŒ€ä”€äŒ€å”€åˆ€ä¤€å€å¤€ä°€ä”€å˜€ä”€ä°€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä €ä„€åˆ€ä€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä„€ä¨€ä¼€åˆ€ã¸€ã„€ã°€â¼€ä €ä„€åˆ€ä€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä„€ä¨€ä¼€åˆ€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä €ä„€åˆ€ä€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä¤€ä¸€ä¼€åˆ€ã¸€ã€€ã°€â¼€ä €ä„€åˆ€ä€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä¤€ä¸€ä¼€åˆ€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä˜€ä¤€åˆ€ä´€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä„€ä¨€ä¼€åˆ€ã¸€ãˆ€ã°€â¼€ä˜€ä¤€åˆ€ä´€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä„€ä¨€ä¼€åˆ€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä˜€ä¤€åˆ€ä´€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä¤€ä¸€ä¼€åˆ€ã¸€ã€€ã°€â¼€ä˜€ä¤€åˆ€ä´€åœ€ä„€åˆ€ä”€å¼€å˜€ä”€åˆ€å¼€ä´€ä¤€ä¸€ä¼€åˆ€ã¸€à´€à¨€â€€â€€â€€â€€ã°€ä˜€ä”€ä„€å€
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-nokia-n97.txt b/logs/mtp-detect-nokia-n97.txt
new file mode 100644
index 0000000..aee716d
--- /dev/null
+++ b/logs/mtp-detect-nokia-n97.txt
@@ -0,0 +1,495 @@
+libmtp version: 0.3.4
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0421:01f5 @ bus 0, dev 4
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 2
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 01f5
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 4
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0421
+ Product: (null)
+ Vendor id: 0x01f5
+ Device flags: 0x00000000
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Nokia
+ Model: N97
+ Device version: 01
+ Serial number: 354225032477049
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;vodafone.com/omadrmv2: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9807: Get interdependent property description
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+ 0x4003
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd406: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b004: Unknown(b004)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 85, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 1297101377, 1297101889, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc87: Width UINT32 data type range: MIN 176, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 144, MAX 240, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc4e: DateAdded STRING data type DATETIME FORM READ ONLY
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 1536000, STEP 1 GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, 16384, 16385, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 32002539520
+ FreeSpaceInBytes: 18941128704
+ FreeSpaceInObjects: 9054
+ StorageDescription: Mass memory
+ VolumeIdentifier: 1695920643
+ StorageID: 0x00020001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 76582912
+ FreeSpaceInBytes: 17272832
+ FreeSpaceInObjects: 8
+ StorageDescription: Phone memory
+ VolumeIdentifier: 1196836185
+ StorageID: 0x00050001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 1015283712
+ FreeSpaceInBytes: 809226240
+ FreeSpaceInObjects: 386
+ StorageDescription: Memory card (WafaaMcSD1G)
+ VolumeIdentifier: 1684419169
+Special directories:
+ Default music folder: 0x00857a00
+ Default playlist folder: 0x0085b078
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia N97
+ Synchronization partner: Nokia N97
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ RIFF WAVE file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">D8ABB2Z1AFK//5MvJZXyovnmv9w=</UNIQUEID><PUBLICKEY private="1">pNify9zkLFCu+AzarhGKjaVZy2dwRnJAYsb7gBTKcIIVe0c5f8TaLA==</PUBLICKEY><KEYDATA>KmRKV6lO4ud9sZgA0CvjjEGlx6g=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>zxWktCvCM82zWPlIAsw2zIO4roArHwfR/yuYdD4WAY9vvqrriv8PSg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Wf/mNFW8vYxfdmJrl6IvwkwcgLU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.113.133</SECURITYVERSION><CERTIFICATE private="1">pNify9zkLFCu+AzarhGKjaVZy2dwRnJAYsb7gBTKcIIVe0c5f8TaLAIEcYWBNc0i5G82u6t+A4dzS8UqBz6BQ35tebS6nQRLc6R23YWGcJQ5QCx3</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>N97</NAME>
+ <MANUFACTURER>Nokia</MANUFACTURER>
+ <MAKE>Nokia</MAKE>
+ <DISTRIBUTOR>Nokia</DISTRIBUTOR>
+ <MODEL>RM-505</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>Bnzrf4HfEQFTluAifcOGnShfozcFCl4rCLvkVkNrqzPekHu01kt5Yg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>xC5BssDKi9GawHZmwNbRPhF3K1JY+AmWQkeEaxQyC/mNdsY1zwgLZw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>3305</AUTH_ID><PUBLICKEY>pLjNChqCyqHpXcXp91vyznAAHwsCciuxTK5jBIJD5p+kP+JQ/BCLZQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LvMELOwmIdYTJ0biMpfssiO2nB+LsVIpMU9UG/gK6Lm2P8ahHTUkXQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>N5pd/yA5Yle17LAFkhh3jZhcgYjwDD0+mjs1ErQswvOVZnX4XtHMag==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-nokia.txt b/logs/mtp-detect-nokia.txt
new file mode 100644
index 0000000..04d3f00
--- /dev/null
+++ b/logs/mtp-detect-nokia.txt
@@ -0,0 +1,431 @@
+$lsusb -v - output
+Bus 001 Device 006: ID 0421:04e1 Nokia Mobile Phones
+Device Descriptor:
+ bLength 18
+ bDescriptorType 1
+ bcdUSB 2.00
+ bDeviceClass 255 Vendor Specific Class
+ bDeviceSubClass 0
+ bDeviceProtocol 0
+ bMaxPacketSize0 64
+ idVendor 0x0421 Nokia Mobile Phones
+ idProduct 0x04e1
+ bcdDevice 1.00
+ iManufacturer 1
+ iProduct 2
+ iSerial 3
+ bNumConfigurations 1
+ Configuration Descriptor:
+ bLength 9
+ bDescriptorType 2
+ wTotalLength 39
+ bNumInterfaces 1
+ bConfigurationValue 1
+ iConfiguration 4
+ bmAttributes 0xc0
+ Self Powered
+ MaxPower 100mA
+ Interface Descriptor:
+ bLength 9
+ bDescriptorType 4
+ bInterfaceNumber 0
+ bAlternateSetting 0
+ bNumEndpoints 3
+ bInterfaceClass 255 Vendor Specific Class
+ bInterfaceSubClass 0
+ bInterfaceProtocol 0
+ iInterface 5
+ Endpoint Descriptor:
+ bLength 7
+ bDescriptorType 5
+ bEndpointAddress 0x82 EP 2 IN
+ bmAttributes 2
+ Transfer Type Bulk
+ Synch Type None
+ Usage Type Data
+ wMaxPacketSize 0x0040 1x 64 bytes
+ bInterval 0
+ Endpoint Descriptor:
+ bLength 7
+ bDescriptorType 5
+ bEndpointAddress 0x03 EP 3 OUT
+ bmAttributes 2
+ Transfer Type Bulk
+ Synch Type None
+ Usage Type Data
+ wMaxPacketSize 0x0040 1x 64 bytes
+ bInterval 0
+ Endpoint Descriptor:
+ bLength 7
+ bDescriptorType 5
+ bEndpointAddress 0x84 EP 4 IN
+ bmAttributes 3
+ Transfer Type Interrupt
+ Synch Type None
+ Usage Type Data
+ wMaxPacketSize 0x0040 1x 64 bytes
+ bInterval 4
+
+$mtp-detect - output
+Found non-autodetected device "Nokia N##" on USB bus...
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0421
+ idProduct: 04e1
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Nokia
+ Model: Nokia N##
+ Device version: v. 1.00
+ Serial number: ############
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0;microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get type of playlists that are allowed to be transfered
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x400a
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd404: Unknown property
+ 0xd102: Device Certificate
+ 0xd101: Secure Time
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ b903: AAC
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ b982: MP4
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ b004: Unknown(b004)
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ b982: MP4
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ 300c: ASF
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ ba11: M3U Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ 3008: MS Wave
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc4e: DateAdded
+ dc08: DateCreated
+ dc09: DateModified
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc44: Name
+ dc4f: NonConsumable
+ dc46: Artist
+ dc89: Duration
+ dc8b: Track
+ dc8c: Genre
+ dc96: Composer
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ dc9d: DRMStatus
+ dc48: Description
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 252837888
+ FreeSpaceInBytes: 27967488
+ FreeSpaceInObjects: 13
+ StorageDescription: MyCard
+ VolumeIdentifier: 585211725
+Special directories:
+ Default music folder: 0x00753908
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Nokia N##
+ Synchronization partner: Nokia N##
+libmtp supported (playable) filetypes:
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 3
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+
+Device Certificate:
+<...>
+OK.
diff --git a/logs/mtp-detect-panasonic-p905i.txt b/logs/mtp-detect-panasonic-p905i.txt
new file mode 100644
index 0000000..0f5f709
--- /dev/null
+++ b/logs/mtp-detect-panasonic-p905i.txt
@@ -0,0 +1,229 @@
+# mtp-detect
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:04da and ProductID:2145 responded to control
+message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=04da and PID=2145) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04da
+ idProduct: 2145
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:04da and ProductID:2145 responded to control
+message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: NTT DoCoMo, Inc.
+ Model: FOMA P905i
+ Device version: 1.00
+ Serial number: 359932012198934
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD:
+10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 100d: Send object
+ 9808: Send object property list
+ 9802: Get object property description
+ 1014: Get device property description
+ 1015: Get device property value
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9805: Get object property list
+ 1009: Get object
+ 100b: Delete object
+ 9806: Set object property list
+ 9811: Set object references
+ 9810: Get object references
+ 1016: Set device property value
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 9201: Report Added/Deleted Items
+ 9804: Set object property value
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd402: Friendly Device Name
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, 48000, READ
+ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 393216, STEP
+1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337,
+14344, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 51200,
+STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type ANY 32BIT VALUE form
+GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type ANY 32BIT VALUE form
+GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3808: JFIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x20000001
+ StorageType: 0x0004
+ FilesystemType: 0x0000
+ AccessCapability: 0x0000
+ MaxCapacity: 2007105536
+ FreeSpaceInBytes: 1028214784
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: FOMA P905i
+ VolumeIdentifier: FOMA P905i
+Special directories:
+ Default music folder: 0x80000004
+ Default playlist folder: 0x80000006
+ Default picture folder: 0x00000000
+ Default video folder: 0x80000005
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: FOMA P905i
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ JPEG file
+ JFIF file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">MzU5OTMyMDEyMTk4OTM0AA==</UNIQUEID><PUBLICKEY
+private="1">Adw2RbDMqN3623OpbuQ7ITqI30m7NzRg9CzllExqcJp/+8S1mJp2Yg==</PUBLICKEY>
+<KEYDATA>n61BlX1zKoM02xgoMyJExkGQJ6E=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>A4K
++BK7dqQV+5CUHjZanbdQ1PUUzA9U3QqUY49T67mPxBwYiTH2+Yw==</MSDRM_SIGNATURE_VALUE><SY
+MSIGNATURE>CH1xzklFcUG9psOZGdkwk5iP1J8=</SYMSIGNATURE></CERTIFICATE><FALLBACK><S
+ECURITYVERSION>2.4.108.233</SECURITYVERSION><CERTIFICATE
+private="1">Adw2RbDMqN3623OpbuQ7ITqI30m7NzRg9CzllExqcJp/+8S1mJp2YgIEbOkRkrDP4J/p
+41/lyIJhR/emYvf2MsQP+42XHYI6OwPxQ9/U+ooMQRQc</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>FOMA P905i</NAME>
+ <MANUFACTURER>NTT DoCoMo,Inc.</MANUFACTURER>
+ <MAKE>FOMA</MAKE>
+ <DISTRIBUTOR>NTT DoCoMo,Inc.</DISTRIBUTOR>
+ <MODEL>FOMA P905i</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>HwUCI7gHH1ZybUNQRIoCo7lQbDueSYHFAd1hKelLIeIOpcHYSCkVRA==
+</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dthTs0fWHk8uKep5zgaHpNgBQYZ5jlJenfYM1R
+FjHD+A66mQcmJ4ag==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2125</AUT
+H_ID><PUBLICKEY>ThEIUCcbtn0ezIiysPDfAGofE3yX9h56YU2JOuXdI+4m9d2U5a6ITA==</PUBLIC
+KEY></DATA><MSDRM_SIGNATURE_VALUE>qWuUY8ejlOo0YtatVCNw2G1fllU7cKxFKzX65RdUjiIaRe
+E2LHw5Zw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnb
+YaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE
+3ccB47pqSRZsN88JmpROZk9uHIJvrTqo2tFebbaN84urCZ7iAWFOGQ==</MSDRM_SIGNATURE_VALUE
+</CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK. \ No newline at end of file
diff --git a/logs/mtp-detect-philips-aria.txt b/logs/mtp-detect-philips-aria.txt
new file mode 100644
index 0000000..67384ef
--- /dev/null
+++ b/logs/mtp-detect-philips-aria.txt
@@ -0,0 +1,490 @@
+libmtp version: 1.0.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ Philips: GoGear SA1ARA08K/37 (0471:207c) @ bus 0, dev 9
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 207c
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 9
+ Device entry info:
+ Vendor: Philips
+ Vendor id: 0x0471
+ Product: GoGear SA1ARA08K/37
+ Vendor id: 0x207c
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Philips
+ Model: GoGear Aria
+ Device version: PH0E000613
+ Serial number: 09FA0000015B9CA90002DA6D74551CA9
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0; audible.com: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+ 97f3: Unknown (97f3)
+ 97f4: Unknown (97f4)
+ 97f5: Unknown (97f5)
+ 1010: Reset device
+ 1012: Set object protection
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd405: Device Icon
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 4300000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 80, 85, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 2304000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 17, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ b901: WMA
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 0, MAX 30050, STEP 1 GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 861293911, GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 5000, MAX 768010, STEP 1 READ ONLY
+ de97: Scan Depth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3001: Association/Directory
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc05: Association Type UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ 3801: JPEG
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3807: GIF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3804: BMP
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ ba03: Abstract Audio Album
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ b905: Unknown(b905)
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b907: Unknown(b907)
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: Unknown property UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, READ ONLY
+ da02: Unknown property UINT32 data type ANY 32BIT VALUE form GET/SET
+ da01: Unknown property STRING data type READ ONLY
+ da03: Unknown property UINT16 data type enumeration: 0, 1, GET/SET
+ da04: Unknown property UINT128 data type READ ONLY
+ b301: Unknown(b301)
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: Unknown property UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, READ ONLY
+ da02: Unknown property UINT32 data type ANY 32BIT VALUE form GET/SET
+ da01: Unknown property STRING data type READ ONLY
+ da03: Unknown property UINT16 data type enumeration: 0, 1, GET/SET
+ da04: Unknown property UINT128 data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 7901544448
+ FreeSpaceInBytes: 6680379392
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 09FA0000015B9CA90002DA6D74551CA9
+Special directories:
+ Default music folder: 0x00000073
+ Default playlist folder: 0x00000066
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: GoGear Aria
+ Synchronization partner: GoGear Aria
+ Battery level 98 of 100 (98%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ R
diff --git a/logs/mtp-detect-philips-hdd1630_17.txt b/logs/mtp-detect-philips-hdd1630_17.txt
new file mode 100644
index 0000000..e789cc1
--- /dev/null
+++ b/logs/mtp-detect-philips-hdd1630_17.txt
@@ -0,0 +1,250 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ bMaxPacketSize0: 64
+ idVendor: 0471
+ idProduct: 014c
+Device info:
+ Manufacturer: Philips
+ Model: Philips PTP device
+ Device version: PP5022AF-05.40-PP07-05.40-MG02-00.01-DT, 1.3
+ Serial number: DNP635B4YNGN9G
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD:10.1;microsoft.com/WMPPD: 10.0; portalplayer.com: 1.0;
+Supported operations:
+ 0x1014
+ 0x1015
+ 0x1001
+ 0x1002
+ 0x1003
+ 0x1004
+ 0x1005
+ 0x1007
+ 0x1008
+ 0x1009
+ 0x101b
+ 0x100c
+ 0x100d
+ 0x100b
+ 0x1012
+ 0x100f
+ 0x1016
+ 0x9801
+ 0x9802
+ 0x9803
+ 0x9805
+ 0x9806
+ 0x9810
+ 0x9811
+ 0x9201
+ 0x9101
+ 0x9102
+ 0x9103
+ 0x9104
+ 0x9105
+ 0x9106
+ 0x9107
+ 0x9108
+ 0x9109
+ 0x910a
+ 0x910b
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ 3009: MP3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3008: MS Wave
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3801: JPEG
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc99: OriginalReleaseDate
+ dc44: Name
+ dc8a: Rating
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ ba03: Abstract Audio Album
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc81: RepresentativeSampleFormat
+ dc86: RepresentativeSampleData
+ dc83: RepresentativeSampleHeight
+ dc84: RepresentativeSampleWidth
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+Special directories:
+ Default music folder: 0x00010000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00780000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Philips GoGear
+ Synchronization partner: (NULL)
+ Total bytes on device: 6128361268 (5844 MB)
+ Free bytes on device: 2079547188 (1983 MB)
+ Storage description: "Philips HDD"
+ Volume label: "GOGEAR "
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060902
+04:49:38Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE
+type="DEVICE"><DATA><UNIQUEID
+private="1">ICAgICAgRE5QNjM1QjRZTkdOOUc=</UNIQUEID><PUBLICKEY
+private="1">2BNZryntm+AwFPQB+/7ps8kBmiKjPjcTTQx5tk2JLuM9EbgQA2/hbg==</PUBLICKEY><KEYDATA>/MVcBaRhfnQtcg5PdNT/1gi4ldE=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>vJq0MP4vNqqz2va7X9cVJ5RHlGWEUGv+uaYXKlR95v2RoQHBqSAbDg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>OsXzV9+S6QPcaWrYUg+sdyNGbGs=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.75</SECURITYVERSION><CERTIFICATE
+private="1">2BNZryntm+AwFPQB+/7ps8kBmiKjPjcTTQx5tk2JLuM9EbgQA2/hbgIEZkt0I+gaMIFOO/X9qhavGtcu6qagfgvD3pGQOV/4kTqGaLPyhUAdLZYm</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>HDD16xx</NAME>
+<MANUFACTURER>MiTAC Technology Corp.</MANUFACTURER>
+<MAKE>Philips Mobile Infotainment</MAKE>
+<DISTRIBUTOR>Koninklijke Philips Electronics
+N.V.</DISTRIBUTOR>
+<MODEL>00</MODEL>
+<SECURITYLEVEL>2000</SECURITYLEVEL>
+<HARDWARE_VER_MAJOR>00</HARDWARE_VER_MAJOR>
+<HARDWARE_VER_MINOR>10</HARDWARE_VER_MINOR>
+<FIRMWARE_VER_MAJOR>01</FIRMWARE_VER_MAJOR>
+<FIRMWARE_VER_MINOR>00</FIRMWARE_VER_MINOR>
+<FEATURES>
+<CLOCK>2</CLOCK>
+<SECURECLOCK>
+
+<URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+</SECURECLOCK>
+<METERING>1</METERING>
+<LICENSE_ACQ>0</LICENSE_ACQ>
+<LICENSE_SYNC>1</LICENSE_SYNC>
+<ENCRYPTION>1</ENCRYPTION>
+<SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+</FEATURES>
+<LIMITS>
+<MAXCHAINDEPTH>5</MAXCHAINDEPTH>
+<MAXLICENSESIZE>10240</MAXLICENSESIZE>
+<MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>Z3qaAjhCqOB1esbbg4/nbJeQJG9j0muW3uUMpVjhx9PMjgoPwMllOQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kROhCPVXSrV6kWuObwqLBzkjSHqKPyNYf0LLwJ7/p48OSHKhUa7wIw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>431</AUTH_ID><PUBLICKEY>cKc3BWl4UETOcysM5vgzRIHY5l7Ukk0CajoL6evzhUtNVTCERxvcgA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>RQzUsdEClPGWTNiHmu2V0FLW2HASfdGSj2M3NuL1iTK0Ncub4UWlAA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>gnPPdAiiJrQaSiz+HHqsEwpcmTNzF7iqVX8ECdgEoSXLDuKZ+hX1hA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-philips-hdd6320_00.txt b/logs/mtp-detect-philips-hdd6320_00.txt
new file mode 100644
index 0000000..6824f0d
--- /dev/null
+++ b/logs/mtp-detect-philips-hdd6320_00.txt
@@ -0,0 +1,252 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 014b
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Philips
+ Model: Philips PTP device
+ Device version: PP5022AF-05.40-PP07-05.40-MG02-00.01-DT, 2.1
+ Serial number: 95960199M
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD:10.1;microsoft.com/WMPPD: 10.0; portalplayer.com: 1.0;
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1001: Get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 100f: Format storage
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Unknown(9201)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Set meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Unknown(910a)
+ 910b: Unknown(910b)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ 3009: MP3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3008: MS Wave
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3801: JPEG
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc99: OriginalReleaseDate
+ dc44: Name
+ dc8a: Rating
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ ba03: Abstract Audio Album
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc81: RepresentativeSampleFormat
+ dc86: RepresentativeSampleData
+ dc83: RepresentativeSampleHeight
+ dc84: RepresentativeSampleWidth
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+Special directories:
+ Default music folder: 0x00050000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00030000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Philips GoGear
+ Synchronization partner: (NULL)
+ Total bytes on device: 29972721172 (28584 MB)
+ Free bytes on device: 29846908436 (28464 MB)
+ Storage description: "Philips HDD"
+ Volume label: "VOL0_GOGEAR_95960199M"
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20051224
+06:36:39Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE
+type="DEVICE"><DATA><UNIQUEID
+private="1">ICAgICAgICAgICA5NTk2MDE5OU0=</UNIQUEID><PUBLICKEY
+private="1">jBhMqa0lBCpOYWsFK8LkfJAdLH945Kv0pd3mhfqmc5PKin6qmwxCFw==</PUBLICKEY><KEYDATA>29XvtV3A70+LV4diJUsGJ3wV4xI=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>tZUX1sBduQ4NrV/xMaAHIz7GfyNO8w5IUGIM2ORrAvMt0vz3qFL6Xg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>O4YrsP5oIBYnxd98jdocdKXlYXw=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.77</SECURITYVERSION><CERTIFICATE
+private="1">jBhMqa0lBCpOYWsFK8LkfJAdLH945Kv0pd3mhfqmc5PKin6qmwxCFwIEZk3zHJZ2v8JcDBZ2lvcL07mtOM8xKZR8jikVFBru9znaDWLLXgIltZ1u</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>HDD63xx</NAME>
+ <MANUFACTURER>MiTAC Technology Corp.</MANUFACTURER>
+ <MAKE>Philips Mobile Infotainment</MAKE>
+ <DISTRIBUTOR>Koninklijke Philips Electronics
+N.V.</DISTRIBUTOR>
+ <MODEL>00</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>00</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>10</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>01</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>00</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+
+<URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>5</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>iGsKDv08tZMvr6joKFlDDsGWT1IFtS8dN1g3w397Te6K1Vf0Hmliaw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>WRgzjEdWwFxP1Y+LXq/HmDjXynKlQ1kcEZ7E/iFslde05/pdH7CJHA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>433</AUTH_ID><PUBLICKEY>yP70OqmSYjdJMD8v4GtqIwZM6Yfn0jm4klhiFfv2RTPSUXme8q6ahA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Crh93A1ab47cAuDaAwKCb6+07yd6fenkSfGt+UXP93LL7Ddz628RTA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Fzxv+lyKgidFdY65Dhau17C8iR0YQzvgVP+fSwalJLvym9QEyZdqEQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-philips-psa610.txt b/logs/mtp-detect-philips-psa610.txt
new file mode 100644
index 0000000..df42752
--- /dev/null
+++ b/logs/mtp-detect-philips-psa610.txt
@@ -0,0 +1,265 @@
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 0181
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Royal Philips Electronics
+ Model: Philips
+ Device version: PFS-1.2
+ Serial number: 0B0707661E454324C10D43030000F500
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1012: Set object protection
+ 1013: Power down device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9808: Send object property list
+ 9100: Unknown(9100)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771,
+READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000,
+22050, 24000, 32000, 44100, 48000, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP
+1 READ ONLY
+ b901: WMA
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771,
+READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000,
+22050, 24000, 32000, 44100, 48000, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP
+1 READ ONLY
+ de99: AudioWAVECodec UINT16 data type enumeration: 353, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 3001: Association/Directory
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771,
+READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc05: AssociationType UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771,
+READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3000: Undefined Type
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771,
+READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ 3008: MS Wave
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771,
+READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000,
+22050, 24000, 32000, 44100, 48000, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP
+1 READ ONLY
+ de99: AudioWAVECodec UINT16 data type enumeration: 353, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+Storage Devices:
+ StorageID: 0x00030001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3012194304
+ FreeSpaceInBytes: 1737052160
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: My C Drive: To be filled by UI
+ VolumeIdentifier: 2222222222
+Special directories:
+ Default music folder: 0x40000006
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Philips
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070502
+19:41:42Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">ċććŦĞÅ
+ŃĤÇÂÄÂŃăĀĀǵĀĘ
+ÄÂÄ
+Ä
+ęăųũćĈĉěĕĈćƎ</UNIQUEID><PUBLICKEY
+private="1">hd7dNXtiMXooeM6ccYqgxWIEKzG/tBhh1ZOgno52A/naYSvzIzPBbw==</PUBLICKEY>
+<KEYDATA>gTXU21BhNSP2zFhtArjuHhXPc0U=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>BHK
+H3KksTkh6EA2y9t5y2yNfD1OeYicPvJStH9gCpgfX7VM26q0ceQ==</MSDRM_SIGNATURE_VALUE><SY
+MSIGNATURE>YBrqCUevZbLYeGqCYGhBhd+gGas=</SYMSIGNATURE></CERTIFICATE><FALLBACK><S
+ECURITYVERSION>2.4.102.55</SECURITYVERSION><CERTIFICATE
+private="1">hd7dNXtiMXooeM6ccYqgxWIEKzG/tBhh1ZOgno52A/naYSvzIzPBbwIEZjcxSYYks3ew
+05i95w6ev6NP7R5UF8b7BqGgIvdTYgSLoM/tjsXxXkZl</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Psa61x</NAME>
+ <MANUFACTURER>Koninklijke Philips Electronics N.V.</MANUFACTURER>
+ <MAKE>Philips Mobile Infotainment</MAKE>
+ <DISTRIBUTOR>Koninklijke Philips Electronics N.V.</DISTRIBUTOR>
+ <MODEL>00</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>02</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>00</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>01</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>00</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==<
+/PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>5</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>8BqYlFFS7066KuzgTsIW1fguSEyup8i7958ILEmYuaiYLJg6DaJ7Zw==
+</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XCxTnySNWk4UJ/7hYuTIZbFxdxRh55FqZPmSUp
+9ZC1qvALdRXLCTiQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>411</AUTH
+_ID><PUBLICKEY>EL+0DmlzIsP6o3ZZcKTs638MS4ngz6/vGYGSaDqN/mqhj+gyyXejFQ==</PUBLICK
+EY></DATA><MSDRM_SIGNATURE_VALUE>TfZ3N4Zaqmnf2BMrvzhur1a1tw6jaMymf1K+ntUTbYrTdiH
+pDCJoFw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnb
+YaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE
+DYazXJOIDqDLhwSbal+IiwpjrlGa9dCZ9wf51TUwbfnYSS334pekHw==</MSDRM_SIGNATURE_VALUE
+</CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{9E902020-3AD3-436D-BD91-F97AD54BB865}"
+RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-philips-sa5145.txt b/logs/mtp-detect-philips-sa5145.txt
new file mode 100644
index 0000000..c119b73
--- /dev/null
+++ b/logs/mtp-detect-philips-sa5145.txt
@@ -0,0 +1,249 @@
+Attempting to connect device(s)
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 0857
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: Philips
+ Model: SA5125/37
+ Device version: V46.1
+ Serial number: 4002FF44EAE165674002FF44EAE34695
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+ 97f3: Unknown (97f3)
+ 97f4: Unknown (97f4)
+ 1010: Reset device
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd405: Device Icon
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 3008: MS Wave
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ b901: WMA
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 300c: ASF
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 3001: Association/Directory
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ ba05: Abstract Audio Video Playlist
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 3801: JPEG
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 3807: GIF
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 3804: BMP
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ ba03: Abstract Audio Album
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 300a: MS AVI
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ b981: WMV
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+ 3000: Undefined Type
+PTP: request code 0x9801 sending req wrote only 0 bytes instead of 16
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3907256320
+ FreeSpaceInBytes: 3735476224
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 4002FF44EAE165674002FF44EAE34695
+Special directories:
+ Default music folder: 0x00000077
+ Default playlist folder: 0x00000066
+ Default picture folder: 0x00000069
+ Default video folder: 0x00010108
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000086
+ Default text folder: 0x00000000
+MTP-specific device properties:
+PTP: request code 0x1015 sending req wrote only 0 bytes instead of 16
+ Friendly name: (NULL)
+PTP: request code 0x1015 sending req wrote only 0 bytes instead of 16
+ Synchronization partner: (NULL)
+PTP: request code 0x1015 sending req wrote only 0 bytes instead of 16
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ JPEG file
+ GIF bitmap file
+ BMP bitmap file
+ Audio Video Interleave
+ Microsoft Windows Media Video
+PTP: request code 0x1015 sending req wrote only 0 bytes instead of 16
+PTP: request code 0x1015 sending req wrote only 0 bytes instead of 16
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x9805 sending req wrote only 0 bytes instead of 32
+PTP: request code 0x1009 sending req wrote only 0 bytes instead of 16
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_Filelisting_With_Callback(): call to ptp_mtp_getobjectproplist() failed.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: LIBMTP_Get_File_To_File_Descriptor(): Could not get file from device.
+Error 2: (Look this up in ptp.h for an explanation.)
+PTP: Closing session
+PTP: request code 0x1003 sending req wrote only 0 bytes instead of 12
+ERROR: Could not close session!
+inep: usb_get_endpoint_status(): Protocol error
+outep: usb_get_endpoint_status(): Protocol error
+usb_clear_halt() on IN endpoint: Protocol error
+usb_clear_halt() on OUT endpoint: Protocol error
+usb_clear_halt() on INTERRUPT endpoint: Protocol error
+OK.
diff --git a/logs/mtp-detect-philips-sa6025.txt b/logs/mtp-detect-philips-sa6025.txt
new file mode 100644
index 0000000..8a1e812
--- /dev/null
+++ b/logs/mtp-detect-philips-sa6025.txt
@@ -0,0 +1,400 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 084e
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: Philips
+ Model: Philips GoGear SA60XX
+ Device version: PH03010D02
+ Serial number: 0000000B6AF626CC0704240846460CAC
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 2048000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 2048000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 2048000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1966080000
+ FreeSpaceInBytes: 1506623488
+ FreeSpaceInObjects: 5903
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0000000B6AF626CC0704240846460CAC
+Special directories:
+ Default music folder: 0x20000005
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x20000003
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Philips GoGear SA60XX
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ JPEG file
+ Audio Video Interleave
+ Microsoft Windows Media Video
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071222 11:40:21Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAAAC2r2JswHBCQIRkYMrAAAAAA=</UNIQUEID><PUBLICKEY private="1">H10byO2Ds9un2WFTD3U4u0QWmoPcSlgrAARHblcUx6BOfAgztxcdfA==</PUBLICKEY><KEYDATA>XeiwxPRE1GKcTxyl4IBz6bF9jT8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>Ddkhr31ldjv+qlMdCW3hr+268yH2O1Ht4Oeblc4Wus586h+04LqxZg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>0zzpJ9GXmEb8YeVe+qGq2VdPU7g=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION> 2.4.107.107</SECURITYVERSION><CERTIFICATE private="1">H10byO2Ds9un2WFTD3U4u0QWmoPcSlgrAARHblcUx6BOfAgztxcdfAIEa2uAmejzb1HS0H+HUDN6EBm6j7dxQpUT+wMPN6S+tg74Dgtnp6KgqjNr</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>SA60xx</NAME>
+ <MANUFACTURER>Perception Digital Ltd</MANUFACTURER>
+ <MAKE>Philips Audio & Multi Media Applications</MAKE>
+ <DISTRIBUTOR>Koninklijke Philips Electronics N.V.</DISTRIBUTOR>
+ <MODEL>00</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>02</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>00</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>08</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>00</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>5</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>O/xY2BVO97/4QEvlk+ETiHxn13rWyg5HsWO/Uy3DHCQg7rowMRF0gw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>vgUBFIcCPVuNuYhGWODMqCH8XiNw83pAwS9S8KWZckb7T99BX4i+OQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1743</AUTH_ID><PUBLICKEY>Q5qnbSHxftMJXBVdgoi0Ds8CrUgXgToCUcmJIz4LSDcycDSj2n5FfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>cdq3bQ3V+qGBJXT52FXvDw4jVzret3LRWnpa6q7bMHiSeyZWfRuQMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>s9lZMSUkYRzjmE8Ju5CtPS6lclfC1BG7Np/QWoLoOXDlt4gYBywCdw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-philips-sa6045.txt b/logs/mtp-detect-philips-sa6045.txt
new file mode 100644
index 0000000..50859fb
--- /dev/null
+++ b/logs/mtp-detect-philips-sa6045.txt
@@ -0,0 +1,414 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 084e
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: Philips
+ Model: Philips GoGear SA60XX
+ Device version: PH03010D02
+ Serial number: 0000000EA6570F9F0706141006181631
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: RevocationInfo
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 2048000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 2048000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 2048000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4003463168
+ FreeSpaceInBytes: 2491481457
+ FreeSpaceInObjects: 5419
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0000000EA6570F9F0706141006181631
+Special directories:
+ Default music folder: 0x20000004
+ Default playlist folder: 0x20000019
+ Default picture folder: 0x20000018
+ Default video folder: 0x20000016
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Philips GoGear SA60XX
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ JPEG file
+ Audio Video Interleave
+ Microsoft Windows Media Video
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070511
+07:42:09Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">AAAADqZXD58HBhQQBhgWMQAAAAA=</UNIQUEID><PUBLICKEY
+private="1">lb+TWhA19FA+sD+8fEw8PAaJamIZIWURWRZ4x8z5tZ1cKDzwwQiVNg==</PUBLICKEY><KEYDATA>Jy23mPedTghHJBvHK0oxHi92L0U=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>3ZpQV/dynAhxFjt2SFd1WBnuNTptTfR0nCBLFRQE1AJ08DjerYP9dA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>QAMvSPcyOA1DapTTXBVLY9xurLs=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.107</SECURITYVERSION><CERTIFICATE
+private="1">lb+TWhA19FA+sD+8fEw8PAaJamIZIWURWRZ4x8z5tZ1cKDzwwQiVNgIEa2vAdAIRpqxdInYSUyr7KfBg4sZaQiLnlLMg+Ur7sQkFCesrqKdQQ81e</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>SA60xx</NAME>
+ <MANUFACTURER>Perception Digital Ltd</MANUFACTURER>
+ <MAKE>Philips Audio & Multi Media Applications</MAKE>
+ <DISTRIBUTOR>Koninklijke Philips Electronics N.V.</DISTRIBUTOR>
+ <MODEL>00</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>02</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>00</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>08</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>00</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>5</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>O/xY2BVO97/4QEvlk+ETiHxn13rWyg5HsWO/Uy3DHCQg7rowMRF0gw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>vgUBFIcCPVuNuYhGWODMqCH8XiNw83pAwS9S8KWZckb7T99BX4i+OQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1743</AUTH_ID><PUBLICKEY>Q5qnbSHxftMJXBVdgoi0Ds8CrUgXgToCUcmJIz4LSDcycDSj2n5FfQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>cdq3bQ3V+qGBJXT52FXvDw4jVzret3LRWnpa6q7bMHiSeyZWfRuQMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>s9lZMSUkYRzjmE8Ju5CtPS6lclfC1BG7Np/QWoLoOXDlt4gYBywCdw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{67F39E4A-BE30-4778-8A0B-0B4196AB747A}"
+RelationshipID="{4252D0B8-109A-4B34-BE69-CF79F3357D11}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-philips-vibe8gb.txt b/logs/mtp-detect-philips-vibe8gb.txt
new file mode 100644
index 0000000..23c8f5b
--- /dev/null
+++ b/logs/mtp-detect-philips-vibe8gb.txt
@@ -0,0 +1,493 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ Philips: GoGear Vibe SA1VBE08 (0471:207b) @ bus 0, dev 5
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0471
+ idProduct: 207b
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 5
+ Device entry info:
+ Vendor: Philips
+ Vendor id: 0x0471
+ Product: GoGear Vibe SA1VBE08
+ Vendor id: 0x207b
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0471 and ProductID:207b responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Philips
+ Model: GoGear Vibe
+ Device version: PH0F00061A
+ Serial number: 42FF0000B5A9CEB10002D9D3FF288EB1
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0; audible.com: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+ 97f3: Unknown (97f3)
+ 97f4: Unknown (97f4)
+ 97f5: Unknown (97f5)
+ 1010: Reset device
+ 1012: Set object protection
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd405: Device Icon
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 4300000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 80, 85, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 2304000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 17, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ b901: WMA
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 0, MAX 30050, STEP 1 GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 861293911, GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 5000, MAX 768010, STEP 1 READ ONLY
+ de97: Scan Depth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3001: Association/Directory
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc05: Association Type UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ 3801: JPEG
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3807: GIF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3804: BMP
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ ba03: Abstract Audio Album
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ b905: Unknown(b905)
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: Unknown property UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, READ ONLY
+ da02: Unknown property UINT32 data type ANY 32BIT VALUE form GET/SET
+ da01: Unknown property STRING data type READ ONLY
+ da03: Unknown property UINT16 data type enumeration: 0, 1, GET/SET
+ da04: Unknown property UINT128 data type READ ONLY
+ b301: Unknown(b301)
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: Unknown property UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, READ ONLY
+ da02: Unknown property UINT32 data type ANY 32BIT VALUE form GET/SET
+ da01: Unknown property STRING data type READ ONLY
+ da03: Unknown property UINT16 data type enumeration: 0, 1, GET/SET
+ da04: Unknown property UINT128 data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 7918321664
+ FreeSpaceInBytes: 7878770688
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 42FF0000B5A9CEB10002D9D3FF288EB1
+Special directories:
+ Default music folder: 0x00000070
+ Default playlist folder: 0x0000008a
+ Default picture folder: 0x00000077
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: GoGear Vibe
+ Synchronization partner: GoGear Vibe
+ Battery level 96 of 100 (96%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Abstract Playlist file
+ JPEG file
+ GIF bitmap file
+ BMP bitmap file
+ Abstract Album file
+ Audible.com Audio Codec
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02fe: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+ERROR: Could not close session!
+OK.
+
+
diff --git a/logs/mtp-detect-phillips-hdd1630_17.txt b/logs/mtp-detect-phillips-hdd1630_17.txt
new file mode 100644
index 0000000..e789cc1
--- /dev/null
+++ b/logs/mtp-detect-phillips-hdd1630_17.txt
@@ -0,0 +1,250 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ bMaxPacketSize0: 64
+ idVendor: 0471
+ idProduct: 014c
+Device info:
+ Manufacturer: Philips
+ Model: Philips PTP device
+ Device version: PP5022AF-05.40-PP07-05.40-MG02-00.01-DT, 1.3
+ Serial number: DNP635B4YNGN9G
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD:10.1;microsoft.com/WMPPD: 10.0; portalplayer.com: 1.0;
+Supported operations:
+ 0x1014
+ 0x1015
+ 0x1001
+ 0x1002
+ 0x1003
+ 0x1004
+ 0x1005
+ 0x1007
+ 0x1008
+ 0x1009
+ 0x101b
+ 0x100c
+ 0x100d
+ 0x100b
+ 0x1012
+ 0x100f
+ 0x1016
+ 0x9801
+ 0x9802
+ 0x9803
+ 0x9805
+ 0x9806
+ 0x9810
+ 0x9811
+ 0x9201
+ 0x9101
+ 0x9102
+ 0x9103
+ 0x9104
+ 0x9105
+ 0x9106
+ 0x9107
+ 0x9108
+ 0x9109
+ 0x910a
+ 0x910b
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ 3009: MP3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3008: MS Wave
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3801: JPEG
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc99: OriginalReleaseDate
+ dc44: Name
+ dc8a: Rating
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ ba03: Abstract Audio Album
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc81: RepresentativeSampleFormat
+ dc86: RepresentativeSampleData
+ dc83: RepresentativeSampleHeight
+ dc84: RepresentativeSampleWidth
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+Special directories:
+ Default music folder: 0x00010000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00780000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Philips GoGear
+ Synchronization partner: (NULL)
+ Total bytes on device: 6128361268 (5844 MB)
+ Free bytes on device: 2079547188 (1983 MB)
+ Storage description: "Philips HDD"
+ Volume label: "GOGEAR "
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060902
+04:49:38Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE
+type="DEVICE"><DATA><UNIQUEID
+private="1">ICAgICAgRE5QNjM1QjRZTkdOOUc=</UNIQUEID><PUBLICKEY
+private="1">2BNZryntm+AwFPQB+/7ps8kBmiKjPjcTTQx5tk2JLuM9EbgQA2/hbg==</PUBLICKEY><KEYDATA>/MVcBaRhfnQtcg5PdNT/1gi4ldE=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>vJq0MP4vNqqz2va7X9cVJ5RHlGWEUGv+uaYXKlR95v2RoQHBqSAbDg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>OsXzV9+S6QPcaWrYUg+sdyNGbGs=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.75</SECURITYVERSION><CERTIFICATE
+private="1">2BNZryntm+AwFPQB+/7ps8kBmiKjPjcTTQx5tk2JLuM9EbgQA2/hbgIEZkt0I+gaMIFOO/X9qhavGtcu6qagfgvD3pGQOV/4kTqGaLPyhUAdLZYm</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>HDD16xx</NAME>
+<MANUFACTURER>MiTAC Technology Corp.</MANUFACTURER>
+<MAKE>Philips Mobile Infotainment</MAKE>
+<DISTRIBUTOR>Koninklijke Philips Electronics
+N.V.</DISTRIBUTOR>
+<MODEL>00</MODEL>
+<SECURITYLEVEL>2000</SECURITYLEVEL>
+<HARDWARE_VER_MAJOR>00</HARDWARE_VER_MAJOR>
+<HARDWARE_VER_MINOR>10</HARDWARE_VER_MINOR>
+<FIRMWARE_VER_MAJOR>01</FIRMWARE_VER_MAJOR>
+<FIRMWARE_VER_MINOR>00</FIRMWARE_VER_MINOR>
+<FEATURES>
+<CLOCK>2</CLOCK>
+<SECURECLOCK>
+
+<URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+</SECURECLOCK>
+<METERING>1</METERING>
+<LICENSE_ACQ>0</LICENSE_ACQ>
+<LICENSE_SYNC>1</LICENSE_SYNC>
+<ENCRYPTION>1</ENCRYPTION>
+<SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+</FEATURES>
+<LIMITS>
+<MAXCHAINDEPTH>5</MAXCHAINDEPTH>
+<MAXLICENSESIZE>10240</MAXLICENSESIZE>
+<MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>Z3qaAjhCqOB1esbbg4/nbJeQJG9j0muW3uUMpVjhx9PMjgoPwMllOQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kROhCPVXSrV6kWuObwqLBzkjSHqKPyNYf0LLwJ7/p48OSHKhUa7wIw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>431</AUTH_ID><PUBLICKEY>cKc3BWl4UETOcysM5vgzRIHY5l7Ukk0CajoL6evzhUtNVTCERxvcgA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>RQzUsdEClPGWTNiHmu2V0FLW2HASfdGSj2M3NuL1iTK0Ncub4UWlAA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>gnPPdAiiJrQaSiz+HHqsEwpcmTNzF7iqVX8ECdgEoSXLDuKZ+hX1hA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-pioneer-xmp3.txt b/logs/mtp-detect-pioneer-xmp3.txt
new file mode 100644
index 0000000..3478cdb
--- /dev/null
+++ b/logs/mtp-detect-pioneer-xmp3.txt
@@ -0,0 +1,511 @@
+libmtp version: 0.3.5
+
+Listing raw device(s)
+ Found 1 device(s):
+ Pioneer: XMP3 (08e4:0148) @ bus 0, dev 7
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 08e4
+ idProduct: 0148
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 7
+ Device entry info:
+ Vendor: Pioneer
+ Vendor id: 0x08e4
+ Product: XMP3
+ Vendor id: 0x0148
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Pioneer
+ Model: GEX-XMP3
+ Device version: 1.0
+ Serial number: KGJV02WK
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0; microsoft.com: WMPPD10.0; xmradio.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd100: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ d810: unknown(d810) STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ b300: Unknown(b300)
+ d811: unknown(d811) array of UINT8 data type byte array: GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type enumeration: 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 192000, 224000, 256000, 320000, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b904: Audible.com Codec
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba04: Abstract Video Album
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba14: PLS Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 1224638464
+ FreeSpaceInBytes: 1222197248
+ FreeSpaceInObjects: 3016
+ StorageDescription: Internal XM
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x00000013
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: GEX-XMP3
+ Synchronization partner: Unknown Partner
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Audible.com Audio Codec
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20090107 23:54:22Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">a2x4qcENCiWxYXXRPVzfwTLVN2Sd1e/qCOubm7AJP4tcYauiIurxMw==</PUBLICKEY><KEYDATA>+Z+mokydkgcclOT9I3VY2Dg2RUY=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>bCA2nlQJUb13UIalyVeQ858CVkX7/SW/EWeDCulYYoyl+WMCs+eHUw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Kpp340t8jBkQP6yGHztt4Py8+Fc=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.112.9</SECURITYVERSION><CERTIFICATE private="1">a2x4qcENCiWxYXXRPVzfwTLVN2Sd1e/qCOubm7AJP4tcYauiIurxMwIEcAkPT7kyzbnqgrVnBLN/T0vPjbKaADOxrhRYTuFDXyC0tDgq4BRLG7N2</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Tuner</NAME>
+ <MANUFACTURER>Pioneer Corporation</MANUFACTURER>
+ <MAKE>GEX-XMP3</MAKE>
+ <DISTRIBUTOR>Pioneer Corporation</DISTRIBUTOR>
+ <MODEL>GEX-XMP3</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>5gibJa9onBuFn724nkN0WFpB3Vp4qJULn7lHsB1rHIn3tiMhF/EBPA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ajkELHT2t30OVOc6Rl3hYTCLhiq0DS+eUfj8KHHANHtN2pKkDTDvUQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2925</AUTH_ID><PUBLICKEY>ilRdvL8rZKkatIhDUPYViKdTemg77FUVS+2pOABaRR9+BmJDm/8vLA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>zltEMJzjgFZF4b25S/xwGoDAOwXMQ+zRitoaxBa7pRk3WybQBJbYPw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>OcY9VKyByS0dYOkwm1FjpmvuERuGZoDeUzKF8JKzyH5NV3paEWqfDw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+WMPInfo.xml file contents:
+<DeviceInfo>
+ <WMP DeviceID="{6DF897F3-714C-4352-9EBD-873D57E7B389}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-pocket-tunes-4.txt b/logs/mtp-detect-pocket-tunes-4.txt
new file mode 100644
index 0000000..24460b5
--- /dev/null
+++ b/logs/mtp-detect-pocket-tunes-4.txt
@@ -0,0 +1,224 @@
+libmtp version: 0.3.3
+
+Listing raw device(s)
+ Found 1 device(s):
+ Palm Handspring: Pocket Tunes 4 (1703:0002) @ bus 0, dev 110
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 257
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1703
+ idProduct: 0002
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 110
+ Device entry info:
+ Vendor: Palm Handspring
+ Vendor id: 0x1703
+ Product: Pocket Tunes 4
+ Vendor id: 0x0002
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0400 ..
+Microsoft device response to control message 1, CMD 0x04:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x04:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: NormSoft, Inc.
+ Model: Pocket Tunes
+ Device version: 4.0.7
+ Serial number: tdKV8yM0qlbI5q9bJ5C66fQC5IM=
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1014: Get device property description
+ 1015: Get device property value
+ 1008: Get object info
+ 1009: Get object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0x5011: Date & Time
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00020001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 3955228672
+ FreeSpaceInBytes: 3393978368
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: DSM 4GB
+ VolumeIdentifier: SD04G_B0D9A185380807
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Palm Device: DSM
+ Synchronization partner: Pocket Tunes
+ Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1"></UNIQUEID><PUBLICKEY private="1"></PUBLICKEY><KEYDATA></KEYDATA></DATA><MSDRM_SIGNATURE_VALUE></MSDRM_SIGNATURE_VALUE><SYMSIGNATURE></SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.101.143</SECURITYVERSION><CERTIFICATE private="1"></CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Pocket Tunes</NAME>
+ <MANUFACTURER>NormSoft, Inc.</MANUFACTURER>
+ <MODEL>Pocket Tunes</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>3</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>1</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY></PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE></MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>243</AUTH_ID><PUBLICKEY></PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE></MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY></PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE></MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-pocket-tunes.txt b/logs/mtp-detect-pocket-tunes.txt
new file mode 100644
index 0000000..293a21f
--- /dev/null
+++ b/logs/mtp-detect-pocket-tunes.txt
@@ -0,0 +1,201 @@
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 256
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1703
+ idProduct: 0001
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: NormSoft, Inc.
+ Model: Pocket Tunes
+ Device version: 4.0.0
+ Serial number: (null)
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.1;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1014: Get device property description
+ 1015: Get device property value
+ 1008: Get object info
+ 1009: Get object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0x5011: Date Time
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de93: SampleRate UINT32 data type enumeration: 11025, 22050, 44100, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00040001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1029832704
+ FreeSpaceInBytes: 300138496
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Volume #4
+ VolumeIdentifier: SD01G_9191492F280107
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Palm Device: gyp
+ Synchronization partner: Pocket Tunes
+ Battery level 76 of 100 (76%)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+ Ogg container format
+
+Device Certificate:
+
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-polaroid-freescape.txt b/logs/mtp-detect-polaroid-freescape.txt
new file mode 100644
index 0000000..1d5db89
--- /dev/null
+++ b/logs/mtp-detect-polaroid-freescape.txt
@@ -0,0 +1,296 @@
+libmtp version: 0.3.4
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0546:2035 @ bus 0, dev 4
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0546
+ idProduct: 2035
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 4
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0546
+ Product: (null)
+ Vendor id: 0x2035
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Polaroid
+ Model: Polaroid
+ Device version: 4.3.0
+ Serial number: 0016449268b8
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1012: Set object protection
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9001: Unknown (9001)
+ 9002: Unknown (9002)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd402: Friendly Device Name
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 800, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 800, STEP 1 GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 5, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 5, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1500000, STEP 1 GET/SET
+ b904: Audible.com Codec
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 5, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 2, 3, READ ONLY
+ da01: unknown(da01) STRING data type READ ONLY
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 272, STEP 1 GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1500000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 READ ONLY
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type READ ONLY
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 59970191360
+ FreeSpaceInBytes: 59763621888
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Disk
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x00000003
+ Default playlist folder: 0x00000005
+ Default picture folder: 0x00000004
+ Default video folder: 0x00000007
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000001
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Lydia
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ JPEG file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Audible.com Audio Codec
+ Microsoft Windows Media Video
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">qaJ3zLBFyIFm8skJSKN8+Hc8rd4=</UNIQUEID><PUBLICKEY private="1">IKMiAi10rBH++iq8nBLyGeoJ5COWh+SA2/rQBuFqISBZhYxbpmk6Xg==</PUBLICKEY><KEYDATA>dYypP4xQiqOWHGKGvWP6CwDSZ9M=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>xzcxpucLioKBJUvxiGwIlIhtJA4vsANmsmByv8jBdZ0uCHRF6wQvKw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Ajsj3Z0Mn3bQrIhTVhfSFJgcCuU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.109.175</SECURITYVERSION><CERTIFICATE private="1">IKMiAi10rBH++iq8nBLyGeoJ5COWh+SA2/rQBuFqISBZhYxbpmk6XgIEba8t3Hw61UsY2hFR0joH4rMxNaddGTEQvw4/sjfqNnP+FXPY8OZNgCZD</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Polaroid</NAME>
+ <MANUFACTURER>Polaroid</MANUFACTURER>
+ <MODEL>Digital Portable Multimedia Player</MODEL>
+ <HARDWARE_VER_MAJOR>1.27</HARDWARE_VER_MAJOR>
+ <FIRMWARE_VER_MAJOR>4.3.0</FIRMWARE_VER_MAJOR>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <FEATURES>
+ <CLOCK>1</CLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>0</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>n51usq+o1UrqSJ5+U/8Jx+tnDAb4ArK9ibRYVuQFNlseCL/Vo5kcbg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ptrbYV6mH9tlczIYu4SMzbGzQgect5M3Er/KRislbB4PPdVlHNVdag==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2323</AUTH_ID><PUBLICKEY>tcGBtiPZvA3iQMtt3V0nMPVtSYlxet7RQEGhWkQ2YBxehW1161muew==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HfadVe+0kPdh+W9suGMXMDjKLIPx2ej+3bvQOaXgBZSSAXq2czhHMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>d0/CSGv0yF7jFx01iWSYZDpP6CvAI2njDtpOiGmQuIztFzC77eRhCA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-samsung-GT-B2700.txt b/logs/mtp-detect-samsung-GT-B2700.txt
new file mode 100644
index 0000000..06acbdb
--- /dev/null
+++ b/logs/mtp-detect-samsung-GT-B2700.txt
@@ -0,0 +1,431 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+Potential MTP Device with VendorID:04e8 and ProductID:6752 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=04e8 and PID=6752) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 04e8:6752 @ bus 0, dev 16
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 2
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 6752
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 16
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x04e8
+ Product: (null)
+ Vendor id: 0x6752
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:04e8 and ProductID:6752 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Samsung Electronics Co., Ltd.
+ Model: GT-B2700
+ Device version: B2700PNHL
+ Serial number: 358260020471270
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0; microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 1011: Self test device
+ 1012: Set object protection
+ 1017: Reset device property value
+ 1019: Move object
+ 101a: Copy object
+ 9808: Send object property list
+ 9001: Unknown (9001)
+ 9100: Unknown (9100)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd407: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 192999, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 14344, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 192999, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 14344, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 192999, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 14344, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 144, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 6, 7, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 16999, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32000, MAX 96000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 15000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type READ ONLY
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 14344, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 14344, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 144, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 6, 7, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 16999, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32000, MAX 96000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 15000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type READ ONLY
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 14344, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 40566784
+ FreeSpaceInBytes: 13725696
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Phone
+ VolumeIdentifier: 358260020471270
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: GT-B2700
+ Synchronization partner: (NULL)
+ Battery level 35 of 100 (35%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ JPEG file
+ GIF bitmap file
+ Microsoft Advanced Systems Format
+
+Secure Time:
+0030723T193600.
+
+Device Certificate:
+?xml version="1.0" encoding="unicode" ?> <Test> <Description> Faked device certificate </Description> </Test
+OK.
+
+
+
diff --git a/logs/mtp-detect-samsung-gt-s5230.txt b/logs/mtp-detect-samsung-gt-s5230.txt
new file mode 100644
index 0000000..abeed8f
--- /dev/null
+++ b/logs/mtp-detect-samsung-gt-s5230.txt
@@ -0,0 +1,262 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 04e8:e20c @ bus 0, dev 20
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: e20c
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 20
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x04e8
+ Product: (null)
+ Vendor id: 0xe20c
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0c00 0000 0001 0500 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 a814 4a83 0000 0000 ..........J.....
+ 0260: 0000 0000 0000 0000 2412 4a83 6002 4a83 ........$.J.`.J.
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: a0a4 7882 0000 0000 0000 0000 0000 0000 ..x.............
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0400 4a83 0700 0000 ..........J.....
+ 02d0: 00a4 7882 0000 0000 0000 0000 0000 0000 ..x.............
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 2800 4a83 0700 0000 ........(.J.....
+ 0300: 60a3 7882 0000 0000 0000 0000 0000 0000 `.x.............
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 4c00 4a83 0700 0000 ........L.J.....
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0c00 0000 0001 0500 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 a814 4a83 0000 0000 ..........J.....
+ 0260: 0000 0000 0000 0000 2412 4a83 6002 4a83 ........$.J.`.J.
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: a0a4 7882 0000 0000 0000 0000 0000 0000 ..x.............
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0400 4a83 0700 0000 ..........J.....
+ 02d0: 00a4 7882 0000 0000 0000 0000 0000 0000 ..x.............
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 2800 4a83 0700 0000 ........(.J.....
+ 0300: 60a3 7882 0000 0000 0000 0000 0000 0000 `.x.............
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 4c00 4a83 0700 0000 ........L.J.....
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Device info:
+ Manufacturer: Samsung Electronics Co., Ltd.
+ Model: GT-S5230
+ Device version: S5230XXIE7
+ Serial number: 355178033573333
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0; microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 1011: Self test device
+ 1012: Set object protection
+ 1017: Reset device property value
+ 1019: Move object
+ 101a: Copy object
+ 9808: Send object property list
+ 9001: Unknown (9001)
+ 9100: Unknown (9100)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd407: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ 3009: MP3
+ b901: WMA
+ b981: WMV
+ 3801: JPEG
+ 3001: Association/Directory
+ ba05: Abstract Audio Video Playlist
+ 3000: Undefined Type
+ 3807: GIF
+ 300c: ASF
+ ba03: Abstract Audio Album
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ JPEG file
+ GIF bitmap file
+ Microsoft Advanced Systems Format
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-samsung-juke.txt b/logs/mtp-detect-samsung-juke.txt
new file mode 100644
index 0000000..5724530
--- /dev/null
+++ b/logs/mtp-detect-samsung-juke.txt
@@ -0,0 +1,356 @@
+$ examples/detect
+libmtp version: 0.2.2
+
+Attempting to connect device(s)
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 6734
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: Samsung Electronics Co.
+ Model: Samsung Juke
+ Device version:
+ Serial number: B4744780000000000000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ b903: AAC
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32768, MAX 768000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2012217344
+ FreeSpaceInBytes: 1398882304
+ FreeSpaceInObjects: 2908
+ StorageDescription: Internal Storage
+ VolumeIdentifier: B4744780000000000000000000000000
+Special directories:
+ Default music folder: 0x20000003
+ Default playlist folder: 0x20000004
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Samsung Juke
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ JPEG file
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071101
+02:46:56Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">tHRHgAAAAAAAAAAAAAAAAAAAAAA=</UNIQUEID><PUBLICKEY
+private="1">TAgc/2jPXxLq/gHJRijomE0mwTnQhOd/PEUo1DLuQzEAty76lYBTYg==</PUBLICKEY><KEYDATA>XuBkAeQgg2A8GdHVO/lUyVbQLww=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>owp1zrBHh7eMEs/uJQ9C/ppEdCExtOK9B0vOjwe0sEcKkxRgELMpbA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>8OHgXjFSSbjrS/lMIosgZfZU5j4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.219</SECURITYVERSION><CERTIFICATE
+private="1">TAgc/2jPXxLq/gHJRijomE0mwTnQhOd/PEUo1DLuQzEAty76lYBTYgIEbNskkonvYMMgJmc0XbA/vcj2O1bjC0QrZdxTNhedz9B5Pu2XhVmVd3Yi</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>SCH-U470</NAME><MANUFACTURER>Samsung
+Elec.</MANUFACTURER><MAKE>Samsung Elec.</MAKE><DISTRIBUTOR>Samsung
+Elec.</DISTRIBUTOR><MODEL>SCH-U470</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>1</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT><SUPPORT_REVOCATION><GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID></SUPPORT_REVOCATION></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>a/H0OaFHmUy8tvBU+lBAn0g/2SX5aBzazaysIjC+fJyH+KZyI/2KEQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>u0EXC4fOhglw5n4sOlS3Y2jtD0MPP0MpMEZm1PjEjxcyodTfxyOrQQ==</MSDRM_SIGNATURE_VALUE></CERT
+ IFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2111</AUTH_ID><PUBLICKEY>uk8RAuRderOsSQOiiL+cwyuTvi3jyu7fauvsiLVbwkSI3B1XWbzsMQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>7Uz/2vA+NynmkNrdMbHu770r0GS8/3/we4G5D5x7gDJ4ckMu/onpRA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Xer3lXCg0TbG0D4ibUEiNLaE8Ah5l4o8QgYEIzJohL+EnCVhHh42gA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+inep: usb_get_endpoint_status(): Connection timed out
+outep: usb_get_endpoint_status(): Connection timed out
+usb_clear_halt() on IN endpoint: Connection timed out
+usb_clear_halt() on OUT endpoint: Connection timed out
+usb_clear_halt() on INTERRUPT endpoint: Connection timed out
+OK.
diff --git a/logs/mtp-detect-samsung-sgh-a707.txt b/logs/mtp-detect-samsung-sgh-a707.txt
new file mode 100644
index 0000000..f9eecdc
--- /dev/null
+++ b/logs/mtp-detect-samsung-sgh-a707.txt
@@ -0,0 +1,326 @@
+The device has a Microsoft device descriptor, but it's not MTP.
+This is not an MTP device. Presumable it is USB mass storage
+with some additional Janus (DRM) support.
+Device response to control message 1:
+ fffffff0: 6a00 0000 0001 0400 0100 0000 0000 0000 j...............
+ 0000: 0001 4d00 0000 5400 0000 5000 0000 0000 ..M...T...P.....
+ 0010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 ..........
+Found non-autodetected device "Samsung YH-999 Portable Media Center" on USB bus...
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5a0f
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: SAMSUNG Electronics Co. Ltd.
+ Model: SGH-A707
+ Device version: A707UCFJ5
+ Serial number: 353777015294230
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 1011: Self test device
+ 1012: Set object protection
+ 1017: Reset device property value
+ 1019: Move object
+ 101a: Copy object
+ 9808: Send object property list
+ 9001: Unknown(9001)
+ 9100: Unknown(9100)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc46: Artist
+ dc89: Duration
+ dc8a: Rating
+ dc8b: Track
+ dc8c: Genre
+ dc97: EffectiveRating
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc91: UseCount
+ de92: BitRateType
+ dc9b: AlbumArtist
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc46: Artist
+ dc89: Duration
+ dc8a: Rating
+ dc8b: Track
+ dc8c: Genre
+ dc97: EffectiveRating
+ dc99: OriginalReleaseDate
+ dc9a: AlbumName
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc91: UseCount
+ de92: BitRateType
+ dc9b: AlbumArtist
+ b981: WMV
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc87: Width
+ dc88: Height
+ dc8c: Genre
+ dc91: UseCount
+ dc99: OriginalReleaseDate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de97: ScanDepth
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ de9d: FramesPerThousandSeconds
+ de9e: KeyFrameDistance
+ 3801: JPEG
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc46: Artist
+ dc8c: Genre
+ dc9b: AlbumArtist
+ dc87: Width
+ dc88: Height
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ 3807: GIF
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc46: Artist
+ dc8c: Genre
+ dc9b: AlbumArtist
+ dc87: Width
+ dc88: Height
+ 300c: ASF
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc87: Width
+ dc88: Height
+ dc8c: Genre
+ dc91: UseCount
+ dc99: OriginalReleaseDate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de97: ScanDepth
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ de9d: FramesPerThousandSeconds
+ de9e: KeyFrameDistance
+ ba03: Abstract Audio Album
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc09: DateModified
+ dc44: Name
+ dc05: AssociationType
+ dc08: DateCreated
+ dc46: Artist
+ dc8c: Genre
+ dc9b: AlbumArtist
+ dc87: Width
+ dc88: Height
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 54198272
+ FreeSpaceInBytes: 4134912
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Phone
+ VolumeIdentifier: 353777015294230
+Special directories:
+ Default music folder: 0x00000035
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000036
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: SGH-A707
+ Synchronization partner: Longhorn Sync Engine
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ JPEG file
+ GIF bitmap file
+ Microsoft Advanced Systems Format
+
+Secure Time:
+0030723T193600.
+
+Device Certificate:
+?xml version="1.0" encoding="unicode" ?> <Test> <Description> Faked device certificate </Description> </Test
+OK.
diff --git a/logs/mtp-detect-samsung-sgh-l760v.txt b/logs/mtp-detect-samsung-sgh-l760v.txt
new file mode 100644
index 0000000..92816d7
--- /dev/null
+++ b/logs/mtp-detect-samsung-sgh-l760v.txt
@@ -0,0 +1,422 @@
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ Samsung: YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900 (04e8:5a0f) @ bus 0, dev 5
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5a0f
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 5
+ Device entry info:
+ Vendor: Samsung
+ Vendor id: 0x04e8
+ Product: YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900
+ Vendor id: 0x5a0f
+ Device flags: 0x00000001
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0900 ..
+Microsoft device response to control message 1, CMD 0x09:
+ 0000: 6a00 0000 0001 0400 0100 0000 0000 0000 j...............
+ 0010: 0001 4d00 0000 5400 0000 5000 0000 0000 ..M...T...P.....
+ 0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0060: 0000 0000 0000 0000 0000 ..........
+Device info:
+ Manufacturer: Samsung Electronics Co., Ltd.
+ Model: SGH-L760V
+ Device version: L760BUGH1
+ Serial number: 356603013289914
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 1011: Self test device
+ 1012: Set object protection
+ 1017: Reset device property value
+ 1019: Move object
+ 101a: Copy object
+ 9808: Send object property list
+ 9001: Unknown (9001)
+ 9202: Report Acquired Items
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 192999, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 192999, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 192999, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 144, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 6, 7, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 16999, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32000, MAX 96000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 15000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 144, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 6, 7, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 13000, MAX 16999, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 827739479, 844516695, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 32000, MAX 96000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 15000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc44: Name STRING data type GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14343, 14347, 47361, 12299, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 100000, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 69926912
+ FreeSpaceInBytes: 34375680
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Phone
+ VolumeIdentifier: 356603013289914
+Special directories:
+ Default music folder: 0x00000003
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000005
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: SGH-L760V
+ Synchronization partner: SGH-L760V
+ Battery level 85 of 100 (85%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ JPEG file
+ GIF bitmap file
+ Microsoft Advanced Systems Format
+Unable to acquire device certificate, perhaps this device does not support this
+
+WMPInfo.xml file contents:
+<DeviceInfo>
+ <WMP DeviceID="{AA9D2C49-2F20-41F8-853F-82C920DBF235}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-samsung-sgh-u900.txt b/logs/mtp-detect-samsung-sgh-u900.txt
new file mode 100644
index 0000000..c1c75b3
--- /dev/null
+++ b/logs/mtp-detect-samsung-sgh-u900.txt
@@ -0,0 +1,146 @@
+PTP: Opening session
+Error 1: Get Storage information failed.
+Error 2: PTP Layer error 02ff: get_handles_recursively(): could not get object handles.
+Error 2: (Look this up in ptp.h for an explanation.)
+libmtp version: 0.3.3
+
+Listing raw device(s)
+ Found 1 device(s):
+ Samsung: YH-999 Portable Media Center/SGH-A707/SGH-L760V (04e8:5a0f) @ bus 0, dev 7
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5a0f
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 7
+ Device entry info:
+ Vendor: Samsung
+ Vendor id: 0x04e8
+ Product: YH-999 Portable Media Center/SGH-A707/SGH-L760V
+ Vendor id: 0x5a0f
+ Device flags: 0x00000001
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0900 ..
+Microsoft device response to control message 1, CMD 0x09:
+ 0000: 6a00 0000 0001 0400 0100 0000 0000 0000 j...............
+ 0010: 0001 4d00 0000 5400 0000 5000 0000 0000 ..M...T...P.....
+ 0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0060: 0000 0000 0000 0000 0000 ..........
+Device info:
+ Manufacturer: Samsung Electronics Co., Ltd.
+ Model: SGH-U900
+ Device version: U90U+XX+H
+ Serial number: 355243021321028
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 1011: Self test device
+ 1012: Set object protection
+ 1017: Reset device property value
+ 1019: Move object
+ 101a: Copy object
+ 9808: Send object property list
+ 9001: Unknown (9001)
+ 9100: Unknown (9100)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4001
+ 0x4004
+ 0x4005
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd407: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ 3009: MP3
+ b901: WMA
+ b981: WMV
+ 3801: JPEG
+ 3001: Association/Directory
+ ba05: Abstract Audio Video Playlist
+ 3000: Undefined Type
+ 3807: GIF
+ 300c: ASF
+ ba03: Abstract Audio Album
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEGError 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+PTP: Closing session
+ERROR: Could not close session!
+-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ JPEG file
+ GIF bitmap file
+ Microsoft Advanced Systems Format
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-samsung-trance.txt b/logs/mtp-detect-samsung-trance.txt
new file mode 100644
index 0000000..c1b72bd
--- /dev/null
+++ b/logs/mtp-detect-samsung-trance.txt
@@ -0,0 +1,359 @@
+
+
+
+
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ Samsung: SAMSUNG Trance (04e8:6763) @ bus 0, dev 30
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 6763
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 30
+ Device entry info:
+ Vendor: Samsung
+ Vendor id: 0x04e8
+ Product: SAMSUNG Trance
+ Vendor id: 0x6763
+ Device flags: 0x0000200a
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: SAMSUNG Electronics Inc.
+ Model: SAMSUNG Trance
+ Device version: (null)
+ Serial number: 0AE1BE80000000000000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd405: Device Icon
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ b903: AAC
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ b983: MP2
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: Bit Rate Type UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: Scan Depth UINT16 data type enumeration: 1, READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 1000, MAX 10000, STEP 1 GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 32768, MAX 768000, STEP 1 GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: Sample Rate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc9b: Album Artist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 929710080
+ FreeSpaceInBytes: 241811456
+ FreeSpaceInObjects: 3867
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0AE1BE80000000000000000000000000
+Special directories:
+ Default music folder: 0x20000002
+ Default playlist folder: \ No newline at end of file
diff --git a/logs/mtp-detect-samsung-x830.txt b/logs/mtp-detect-samsung-x830.txt
new file mode 100644
index 0000000..5b23a4d
--- /dev/null
+++ b/logs/mtp-detect-samsung-x830.txt
@@ -0,0 +1,324 @@
+Autodetected device with VID=04e8 and PID=6702 is UNKNOWN.
+Please report this VID/PID and the device model name etc to the
+libmtp development team!
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 6702
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: SAMSUNG
+ Model: SGH-X830
+ Device version: V1.00
+ Serial number: 00000016760267513529870104927500 «ûßÿ
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.03
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101a: Copy object
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9201: Report Added/Deleted Items
+ 9001: Unknown(9001)
+ 9002: Unknown(9002)
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc84: RepresentativeSampleWidth
+ dc83: RepresentativeSampleHeight
+ dc86: RepresentativeSampleData
+ dc89: Duration
+ dc8a: Rating
+ dc8b: Track
+ dc91: UseCount
+ de91: TotalBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc96: Composer
+ dc9b: AlbumArtist
+ d901: BuyFlag
+ dc82: RepresentativeSampleSize
+ dc81: RepresentativeSampleFormat
+ dc9a: AlbumName
+ dc8c: Genre
+ dc93: LastAccessed
+ b802: Firmware
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc84: RepresentativeSampleWidth
+ dc83: RepresentativeSampleHeight
+ dc86: RepresentativeSampleData
+ dc89: Duration
+ dc8a: Rating
+ dc8b: Track
+ dc91: UseCount
+ de91: TotalBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc96: Composer
+ dc9b: AlbumArtist
+ d901: BuyFlag
+ dc82: RepresentativeSampleSize
+ dc81: RepresentativeSampleFormat
+ dc9a: AlbumName
+ dc8c: Genre
+ dc93: LastAccessed
+ b903: AAC
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc84: RepresentativeSampleWidth
+ dc83: RepresentativeSampleHeight
+ dc86: RepresentativeSampleData
+ dc89: Duration
+ dc8a: Rating
+ dc8b: Track
+ dc91: UseCount
+ de91: TotalBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ de9a: AudioBitRate
+ dc46: Artist
+ dc96: Composer
+ dc9b: AlbumArtist
+ d901: BuyFlag
+ dc82: RepresentativeSampleSize
+ dc81: RepresentativeSampleFormat
+ dc9a: AlbumName
+ dc8c: Genre
+ dc93: LastAccessed
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba09: Abstract Audio Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba10: WPL Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ ba11: M3U Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc0b: ParentObject
+ dc08: DateCreated
+ dc09: DateModified
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1046151168
+ FreeSpaceInBytes: 381386752
+ FreeSpaceInObjects: 381386752
+ StorageDescription: SGH-X830
+ VolumeIdentifier: 000100167502675135298701049275000«ûßÿ
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: SGH-X830
+ Synchronization partner: Longhorn Sync Engine
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Firmware file
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20110916 09:40:14Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">PxxT7kQIRdpyVpl2bWdZfnMhaF6W4DfsUJkQ5RkXH0lps1jsEsRlhw==</PUBLICKEY><KEYDATA>TA5OeR0fCrQsfuiwmFzcAcMhw3w=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>w4+BYH2GXELBvtSMweNY/niwCTQAUuF67ljdn2k/0UnQj2Qqf/tSfA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>JpNQontONOULhKUYGYTkP0PXDyc=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.249</SECURITYVERSION><CERTIFICATE private="1">PxxT7kQIRdpyVpl2bWdZfnMhaF6W4DfsUJkQ5RkXH0lps1jsEsRlhwIEafnQYfen9/1lF7XVCmhf5GSKVPLXdUKo/4ESTuf0V+SyNX/TGnGFJuoF</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>SAMSUNG</MANUFACTURER>
+ <MODEL>SAMSUNG MOBILE MTP</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>FRWb6sogmyejs+zIk91Q8Pys5Suk3mnC+l7lbgGbe52wwavCTiuAEw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>A7Jf+PoUXIgfuPVT/Y+WoEDE2lhtZtICn4hegNkzKerSWiiiCEssBw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1373</AUTH_ID><PUBLICKEY>sfafmxUhwSGkSopRF/o1gi//mEWxV/OFzRWZg31Ti8n8ItDrrME1eg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>b0cBrnQlTRQVuDLPMFAiLYLK0B2wT12UOBoa9tPjtID7vHMPScYyVw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>f6IENjvI3hQXOD7+QPXabQwl2neR1FMUiV0/sp8G2ZKxB+FLuuNMLA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-samsung-yepp-t9.txt b/logs/mtp-detect-samsung-yepp-t9.txt
new file mode 100644
index 0000000..856ba01
--- /dev/null
+++ b/logs/mtp-detect-samsung-yepp-t9.txt
@@ -0,0 +1,185 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 272
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 507f
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Samsung Electronics Co.,Ltd.
+ Model: Samsung YP-T9
+ Device version: V1.00
+ Serial number: 7A9FE484000000E9
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 10.0; microsoft.com/WMDRMPD: 10.1microsoft.com/WMPPD: 11.,;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1011: Self test device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Unknown(910a)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0x5011: Date Time
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc0b: ParentObject
+ dc4f: NonConsumable
+ dc44: Name
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc0b: ParentObject
+ dc4f: NonConsumable
+ dc44: Name
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc0b: ParentObject
+ dc4f: NonConsumable
+ dc44: Name
+ dc46: Artist
+ dc8b: Track
+ dc8c: Genre
+ dc9a: AlbumName
+ de9a: AudioBitRate
+ dc03: ProtectionStatus
+ de99: AudioWAVECodec
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc89: Duration
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc0b: ParentObject
+ dc4f: NonConsumable
+ dc44: Name
+ dc46: Artist
+ dc8b: Track
+ dc8c: Genre
+ dc9a: AlbumName
+ de9a: AudioBitRate
+ dc03: ProtectionStatus
+ de99: AudioWAVECodec
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc89: Duration
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc0b: ParentObject
+ dc4f: NonConsumable
+ dc44: Name
+ 3801: JPEG
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc41: PersistantUniqueObjectIdentifier
+ dc0b: ParentObject
+ dc4f: NonConsumable
+ dc44: Name
+Special directories:
+ Default music folder: 0x00008001
+ Default playlist folder: 0x00008002
+ Default picture folder: 0x00008004
+ Default video folder: 0x00008005
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Total bytes on device: 3920896000 (3739 MB)
+ Free bytes on device: 3886161920 (3706 MB)
+ Storage description: "Samsung YP-T9 Storage"
+ Volume label: "7a9fe484000000e9"
+ Battery level 60 of 100 (60%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ Microsoft Windows Media Audio
+ JPEG file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060911 18:51:22Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY
+private="1">LUYvz+oPOBIR2OM+rmiV1NesxAtS1GbXrGJ5KTSSYSKLWDteKvKqNg==</PUBLICKEY><KEYDATA>SRD81CpKpIt0FzG
+wiZmXBlgFjN8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>jYvAh4EEtIpFJczOcPYMiheliQeHZFketgWLUNlIhd3woaJ5eY6
+XBA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>nZrrzPrtSob0+7BSXjdTlRBUJwU=</SYMSIGNATURE></CERTIFICATE><FAL
+LBACK><SECURITYVERSION>2.4.105.105</SECURITYVERSION><CERTIFICATE
+private="1">LUYvz+oPOBIR2OM+rmiV1NesxAtS1GbXrGJ5KTSSYSKLWDteKvKqNgIEaWklJ12Ln+6CxMFLhl0lqNrdE+GcY/Jjyj1W
+LNQ1cl236PXPnGhBweRO</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http:/
+/go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*
+ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICE
+NSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</
+MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICK
+EY>2hOkxOCK1QPe10JHYvfVUjYjLBMzXCftotZMbbB+VhO0gpWYnFSNJA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>zVg
+OV3F4q2xlvMfFBZtW/YaNhE/9IBGpQpxDJG4cljg81O1sxP/KhA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1229</AUTH_ID><PUBLICKEY>8l60FgPW
+1vHhfaAFYkoYXMMHTFZCfCf98BXPcKJLbBjofB1fy8Bcbw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LpLd030TMk4F6v
+2kAjf3LecPk0UOgCjPmQrGsKUfmyRBTRujDP3/LQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zi
+zKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YoS6xu8BvaENyvqIISjhFbO5wmakFMYg2/C8ALN0uuXvYRV
+e3JJZYw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
diff --git a/logs/mtp-detect-samsung-yh-820.txt b/logs/mtp-detect-samsung-yh-820.txt
new file mode 100644
index 0000000..7e15121
--- /dev/null
+++ b/logs/mtp-detect-samsung-yh-820.txt
@@ -0,0 +1,331 @@
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 502e
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000001
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 0705 0102 0002 0007 0582 0200 0200 ................
+ 0020: 0705 8103 0002 6400 3200 3000 3000 3700 ......d.2.0.0.7.
+ 0030: 6500 3000 3000 2d00 3000 3000 3900 3500 e.0.0.-.0.0.9.5.
+ 0040: 3000 3000 3300 6600 2d00 3000 3000 3000 0.0.3.f.-.0.0.0.
+ 0050: 3000 3000 6100 3600 3000 0000 0000 0000 0.0.a.6.0.......
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 00c0 6101 40a0 6201 4080 6101 40a0 ....a.@.b.@.a.@.
+ 0110: 6101 4000 0000 0000 0000 0000 0000 0000 a.@.............
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0003 0000 0003 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0028 ...............(
+ 02a0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02b0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02c0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02d0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02e0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02f0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0300: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0310: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0320: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0330: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0340: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0350: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0360: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0370: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0380: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0390: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03a0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03b0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03c0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03d0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03e0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03f0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 3200 3000 3000 3700 ........2.0.0.7.
+ 0030: 6500 3000 3000 2d00 3000 3000 3900 3500 e.0.0.-.0.0.9.5.
+ 0040: 3000 3000 3300 6600 2d00 3000 3000 3000 0.0.3.f.-.0.0.0.
+ 0050: 3000 3000 6100 3600 3000 0000 0000 0000 0.0.a.6.0.......
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 00c0 6101 40a0 6201 4080 6101 4000 ....a.@.b.@.a.@.
+ 0110: 6201 4000 0000 0000 0000 0000 0000 0000 b.@.............
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0006 0000 0006 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0028 ...............(
+ 02a0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02b0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02c0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02d0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02e0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 02f0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0300: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0310: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0320: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0330: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0340: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0350: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0360: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0370: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0380: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 0390: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03a0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03b0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03c0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03d0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03e0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+ 03f0: 5e28 5e28 5e28 5e28 5e28 5e28 5e28 5e28 ^(^(^(^(^(^(^(^(
+Potential MTP Device with VendorID:04e8 and ProductID:502e responded to
+control message 2 with a response that was too short. Problems may arrise but
+continuing
+Device info:
+ Manufacturer: Samsung
+ Model: Samsung PTP Device
+ Device version: PP5020AF-05.22-PP05-05.22-PP05-05.22-DT, (Build 130)
+ Serial number: 25da848a-00100000-02007e00-0095003f-00000a60
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de93: SampleRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1038, MAX 1019, STEP 61454 GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1038, MAX 1019, STEP 61454 GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1038, MAX 1019, STEP 61454 GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de93: SampleRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1038, MAX 1019, STEP 61454 GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de93: SampleRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1038, MAX 1019, STEP 61454 GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type ANY 16BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1038, MAX 1019, STEP 61454 GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4991205376
+ FreeSpaceInBytes: 4921094912
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: PPI HDD
+ VolumeIdentifier: YH-820
+Special directories:
+ Default music folder: 0x00050000
+ Default playlist folder: 0x00030000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Samsung YH820
+ Synchronization partner: (NULL)
+ Battery level 67 of 100 (67%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Microsoft Windows Media Audio
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02fe: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-samsung-yh-925.txt b/logs/mtp-detect-samsung-yh-925.txt
new file mode 100644
index 0000000..49025e9
--- /dev/null
+++ b/logs/mtp-detect-samsung-yh-925.txt
@@ -0,0 +1,219 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ bMaxPacketSize0: 64
+ idVendor: 04e8
+ idProduct: 502f
+Device info:
+ Manufacturer: Samsung
+ Model: Samsung PTP Device
+ Device version: PP5020AF-05.22-PP05-05.22-PP05-05.22-DT, (Build 130)
+ Serial number: 3fff0040-0010c837-00000000-0000003f-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 0x1014
+ 0x1015
+ 0x1001
+ 0x1002
+ 0x1003
+ 0x1004
+ 0x1005
+ 0x1007
+ 0x1008
+ 0x1009
+ 0x101b
+ 0x100c
+ 0x100d
+ 0x100b
+ 0x1012
+ 0x1016
+ 0x9801
+ 0x9802
+ 0x9803
+ 0x9805
+ 0x9806
+ 0x9810
+ 0x9811
+ 0x9101
+ 0x9102
+ 0x9103
+ 0x9104
+ 0x9105
+ 0x9106
+ 0x9107
+ 0x9108
+ 0x9109
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ 3009: MP3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ 3008: MS Wave
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc44: Name
+ dc89: Duration
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ 3801: JPEG
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+Special directories:
+ Default music folder: 0x00040000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Samsung YH-925
+ Synchronization partner: (NULL)
+ Total bytes on device: 19990446080 (19064 MB)
+ Free bytes on device: 19888260096 (18966 MB)
+ Storage description: "PPI HDD"
+ Volume label: "NO NAME "
+ Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060203
+21:15:40Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0">
+<CERTIFICATE type="DEVICE">
+<DATA><UNIQUEID
+private="1">QAD/PzfIEAAAAAAAPwAAAAAAAAA=</UNIQUEID><PUBLICKEY
+private="1">3a3gYfqlBf0VU9QGlqAwF6cq8R/wMVcZZAdhdYpXOzk2LLaqETC7ZA==</PUBLIC
+KEY><KEYDATA>oELEJ44dgHzjcEZSfQnf37FdY60=</KEYDATA></DATA><MSDRM_SIGNATURE_V
+ALUE>Fxzo92f839/8lM/9aeyWT0lIFmiwQmDOueraM3oBCHfTHBgDOGDICg==</MSDRM_SIGNATU
+RE_VALUE><SYMSIGNATURE>Y16XrFWkakK10EscljNwDyPaM5k=</SYMSIGNATURE></CERTIFIC
+ATE><FALLBACK><SECURITYVERSION>2.4.101.87</SECURITYVERSION><CERTIFICATE
+private="1">3a3gYfqlBf0VU9QGlqAwF6cq8R/wMVcZZAdhdYpXOzk2LLaqETC7ZAIEZVemZT1N
+jbFZ7WahsQQA5H3rHOsWhSOI53bGHDrw2rkd/jGmz0524DR0</CERTIFICATE></FALLBACK>
+<CERTIFICATE type="GROUP">
+<DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CL
+OCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUB
+LICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY><
+/SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC
+>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT><
+/FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAX
+LICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>fM517PmyQ
+hbdKTUZaKlz687KxTD0ttFPo5HcltpSVgN9iN6OSe4VGw==</PUBLICKEY></DATA><MSDRM_SIG
+NATURE_VALUE>BzCgrr7SYaHM6hPsHOj9wMfT9Dn7o2vL8GfGIVpR0lTf6JqM0kskZw==</MSDRM
+_SIGNATURE_VALUE>
+</CERTIFICATE>
+<CERTIFICATE type="AUTHORIZATION">
+<DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>187</
+AUTH_ID><PUBLICKEY>6ZDJjbq0X2Mjcil1dC4zpj1JsESE8OYoyMht8O+d4vbgXPha+hXYJw==<
+/PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>q+myxvwrxLK9va28WHcYeMYPKzOBSH/kH/e
+t5BGPhVjPybFaDKnzNQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOg
+ktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATU
+RE_VALUE>M3Km8EZAyFGkkJBZBFJdXekswz85u5tXZWyiUo7sCcVLlidoPHl5AA==</MSDRM_SIG
+NATURE_VALUE>
+</CERTIFICATE>
+</DEVCERT>
diff --git a/logs/mtp-detect-samsung-yp-k3.txt b/logs/mtp-detect-samsung-yp-k3.txt
new file mode 100644
index 0000000..df0c266
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-k3.txt
@@ -0,0 +1,240 @@
+Found non-autodetected device "Samsung YP-K3" on USB bus...
+PTP: Opening session
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5081
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: Samsung Inc.
+ Model: Samsung YP-K3
+ Device version: Ver.1.04 WA JN
+ Serial number: 52D31194000293111814AB37F0003F16ble.com: 1.0;
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ dc8b: Track
+ de9a: AudioBitRate
+ dc46: Artist
+ dc8c: Genre
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc9a: AlbumName
+ dc89: Duration
+ de99: AudioWAVECodec
+ dc99: OriginalReleaseDate
+ b901: WMA
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ dc8b: Track
+ de9a: AudioBitRate
+ dc46: Artist
+ dc8c: Genre
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc9a: AlbumName
+ dc89: Duration
+ de99: AudioWAVECodec
+ dc99: OriginalReleaseDate
+ 3801: JPEG
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ 3001: Association/Directory
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ ba05: Abstract Audio Video Playlist
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ 3000: Undefined Type
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ b802: Firmware
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ ba03: Abstract Audio Album
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ dc46: Artist
+ dc8c: Genre
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4037017600
+ FreeSpaceInBytes: 2622959616
+ FreeSpaceInObjects: 17098
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 52D31194000293111814AB37F0003F16
+Special directories:
+ Default music folder: 0x20000003
+ Default playlist folder: 0x20000008
+ Default picture folder: 0x20000004
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x20000007
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Samsung YP-K3
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ JPEG file
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070220
+21:16:22Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">UtMRlAACkxEYFKs38AA/FgAAAAA=</UNIQUEID><PUBLICKEY
+private="1">YtPj9AvCSm05fwJXTAdgRRxPrXtiqFncz3eFkF7ksqwnFSLk3G0lIw==</PUBLICKEY><KEYDATA>mUFPcatg/R69gpSXuBUAFdjpb9I=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>vhjROwm8YZ05KiCxbjY2AjAbMXYS1ifJpYQsUa0K1JGE2YqGGHQ0Uw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>Xggs8dOmEc+bKZd3Qx6pOsr/Ej0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.107</SECURITYVERSION><CERTIFICATE
+private="1">YtPj9AvCSm05fwJXTAdgRRxPrXtiqFncz3eFkF7ksqwnFSLk3G0lIwIEaWvbaNg3uxfic0BX2xkhsBnWUnDwBL5IplWrIrglSmyQ04VGCdGlbbgJ</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>TCCSDKBoard</NAME><MANUFACTURER>Telechips</MANUFACTURER><MAKE>Telechips</MAKE><DISTRIBUTOR>WideWorldImporters</DISTRIBUTOR><MODEL>TCC7XX</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>qOxIhjTiT16ThbPhUSr8owa0VUkPuULltIn1cK3WdQYpQoZn2vJgYQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3biCcFMgsYuHBQvlL3qw5DhmNjwQk60qmziGE7Oaf/6O9YEap6+
+ /Bg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1231</AUTH_ID><PUBLICKEY>uVjt9gtU10r8MkVOz6naLCacO3grl8HqKs4gN5R73dJBaF7nKmTIHA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3k5byRIQtCXmA6y0BJO1qA7Xmx9/+yMnCaukIoVpqO95vefmrE9DLQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>rjswZ823zQz7gHDqqLTEbryN+F0NpPVMYU3VecFmAJMY+TgwiexHAA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+PTP: Closing session
+OK.
+k \ No newline at end of file
diff --git a/logs/mtp-detect-samsung-yp-k5.txt b/logs/mtp-detect-samsung-yp-k5.txt
new file mode 100644
index 0000000..556c361
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-k5.txt
@@ -0,0 +1,218 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 505a
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Samsung Inc.
+ Model: Samsung YP-K5
+ Device version: Ver.1.03 WA JN
+ Serial number: 3464BDD400016951E712133FF0021F16ble.com: 1.0;
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+Supported operations:
+ 1001: Get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Set meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Unknown(910a)
+ 910b: Unknown(910b)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ dc8b: Track
+ de9a: AudioBitRate
+ dc46: Artist
+ dc8c: Genre
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc9a: AlbumName
+ dc89: Duration
+ de99: AudioWAVECodec
+ dc99: OriginalReleaseDate
+ b901: WMA
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ dc8b: Track
+ de9a: AudioBitRate
+ dc46: Artist
+ dc8c: Genre
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc9a: AlbumName
+ dc89: Duration
+ de99: AudioWAVECodec
+ dc99: OriginalReleaseDate
+ 3801: JPEG
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ 3001: Association/Directory
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ ba05: Abstract Audio Video Playlist
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ 3000: Undefined Type
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ b802: Firmware
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ ba03: Abstract Audio Album
+ dc97: EffectiveRating
+ dc8a: Rating
+ dc44: Name
+ dc01: StorageID
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc09: DateModified
+ dc4f: NonConsumable
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ dc46: Artist
+ dc8c: Genre
+Special directories:
+ Default music folder: 0x20000003
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x20000004
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Samsung YP-K5
+ Synchronization partner: Longhorn Sync Engine
+ Total bytes on device: 1035599872 (987 MB)
+ Free bytes on device: 995304899 (949 MB)
+ Storage description: "Internal Storage"
+ Volume label: "3464BDD400016951E712133FF0021F16gine"
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ Microsoft Windows Media Audio
+ JPEG file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19700101 00:00:00Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">NGS91AABaVHnEhM/8AIfFgAAAAA=</UNIQUEID><PUBLICKEY private="1">lb+TWhA19FA+sD+8fEw8PAaJamIZIWURWRZ4x8z5tZ1cKDzwwQiVNg==</PUBLICKEY><KEYDATA>6EIECFXN5pF4h4/xXnBvWm0X3Ko=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>3ZpQV/dynAhxFjt2SFd1WBnuNTqRRT7NGJ6ur0OVfSjCU/+Ny588dg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>NNMbAxV9x2JNUmpoTKn+EGL4zF0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.243</SECURITYVERSION><CERTIFICATE private="1">lb+TWhA19FA+sD+8fEw8PAaJamIZIWURWRZ4x8z5tZ1cKDzwwQiVNgIEaPPAdAIRpqxdInYSUyr7KfBg4sZaQvPhyKizDQrsIfus/7CH5bxWeG5e</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>YP-K5</NAME><MANUFACTURER>Samsung</MANUFACTURER><MAKE>Samsung</MAKE><DISTRIBUTOR>WorldWideImporters</DISTRIBUTOR><MODEL>YP-K5</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>QZt5UOW2pMsgDW5jPJeSa0oC3yE44+ivNp4dZps6Ofkk3LeLWwX0UQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>WUq0iNivBCcNDPHJa//l7X698WTcN1vmBtumyrUjwIxay9XBj0BiVA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1111</AUTH_ID><PUBLICKEY>xXZnNTfy+kMtWdcE4fV1VKU6Q0XXOtOYmynpZzxuCWaMZQVNduZPLA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Le5pFakN0g5yVyafphKn3wWwqkaVys9oEvA+DzQM6yBInixDJPI8aQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8h+2HXlPASFEa+MnBC6pt4Aikxl/0WuSJQc7cgHZCRQ0+rY02tpQCA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
diff --git a/logs/mtp-detect-samsung-yp-p3.txt b/logs/mtp-detect-samsung-yp-p3.txt
new file mode 100644
index 0000000..26f8ff5
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-p3.txt
@@ -0,0 +1,583 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ Samsung: P3 (04e8:511a) @ bus 0, dev 13
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 511a
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 13
+ Device entry info:
+ Vendor: Samsung
+ Vendor id: 0x04e8
+ Product: P3
+ Vendor id: 0x511a
+ Device flags: 0x00002008
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: SAMSUNG
+ Model: P3
+ Device version:
+ Serial number: 97B5F4A8E0D400000000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;microsoft.com/WMPPD: 10.0;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 9808: Send object property list
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd405: Device Icon
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ 380b: PNG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ 3804: BMP
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ 3807: GIF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ 3004: Text
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300a: MS AVI
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 300d: Apple Quicktime
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1956000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ b903: AAC
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 272, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 1195724877, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ b900: Undefined Audio
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 15867838464
+ FreeSpaceInBytes: 11928313856
+ FreeSpaceInObjects: 23101
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 97B5F4A8E0D400000000000000000000
+Special directories:
+ Default music folder: 0x20000007
+ Default playlist folder: 0x20000023
+ Default picture folder: 0x2000001d
+ Default video folder: 0x20000020
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x20000024
+ Default album folder: 0x00000000
+ Default text folder: 0x2000001f
+MTP-specific device properties:
+ Friendly name: P3
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ JPEG file
+ Portable Network Graphics
+ BMP bitmap file
+ GIF bitmap file
+ Text file
+ Audio Video Interleave
+ Apple Quicktime container format
+ Microsoft Windows Media Video
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ Firmware file
+ Undefined audio file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19702233 16:57:47Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">l7X0qODUAAAAAAAAAAAAAAAAAAA=</UNIQUEID><PUBLICKEY private="1">LsACVu2Yt8pkyMEECI/6JX5SQgRV03IC1i4/jE3uEEFPJAQxht74KA==</PUBLICKEY><KEYDATA>QS7V2Pqp7iDVxoATUHCohrafbNM=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>dNtQynMaBZQaB7OHXP3oirkR/QtEFmHy/ZzMa8gdWFVGP5nh58AhXA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>zMaAU2hYjOVFtIAzsFsXnd3Fb7E=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.112.67</SECURITYVERSION><CERTIFICATE private="1">LsACVu2Yt8pkyMEECI/6JX5SQgRV03IC1i4/jE3uEEFPJAQxht74KAIEcEPJeFd4Q6L7pidFur7Im5x3aGFfQc1dI9s3SndNnWJETiZMkiNH3kJ2</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>YP-P3</NAME><MANUFACTURER>Samsung</MANUFACTURER><MAKE>Samsung</MAKE><DISTRIBUTOR>WorldWideImporters</DISTRIBUTOR><MODEL>YP-P3</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>7yvFR8yNwRRELnfZttGS5XV2FDoIUCeRwEA9hYXyQLFCXtQEpVZHTg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>jTDAoQyOjy1rJbked3M1GxD+NyldSh/7PIDJR4yDbnJ0Wb5Nuic9TQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2983</AUTH_ID><PUBLICKEY>p7HvLakHIqy/0D9VMyGsxLYikHokKnCdE37LwV7JMNSMP2AnNn91ag==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>iVvQ33/MHwVMd+hPARN23AyUcWNsgiPMFgobW6q004ld6HMeF8LWRg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>nOBk3Z/JjccgCjeBIv/D4kmx3xsGfKski8RZu3XkfcfDkYiq2a/zVA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-samsung-yp-q1.txt b/logs/mtp-detect-samsung-yp-q1.txt
new file mode 100644
index 0000000..3bab299
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-q1.txt
@@ -0,0 +1,429 @@
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+libmtp version: 0.3.3
+
+Listing raw device(s)
+ Found 1 device(s):
+ Samsung: YP-Q1 (04e8:5115) @ bus 0, dev 8
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5115
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 8
+ Device entry info:
+ Vendor: Samsung
+ Vendor id: 0x04e8
+ Product: YP-Q1
+ Vendor id: 0x5115
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: SAMSUNG
+ Model: Q1
+ Device version: 1.23
+ Serial number: 9A255DFB0019261397A0DE7CF0008F16
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;microsoft.com/WMPPD: 10.0;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ 380b: PNG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ 3804: BMP
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ 3807: GIF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 3959422976
+ FreeSpaceInBytes: 2829459456
+ FreeSpaceInObjects: 11755
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 9A255DFB0019261397A0DE7CF0008F16
+Special directories:
+ Default music folder: 0x20000003
+ Default playlist folder: 0x20000007
+ Default picture folder: 0x20000005
+ Default video folder: 0x20000004
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x20000008
+ Default album folder: 0x00000000
+ Default text folder: 0x20000006
+MTP-specific device properties:
+ Friendly name: Q1
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ JPEG file
+ Portable Network Graphics
+ BMP bitmap file
+ GIF bitmap file
+ Microsoft Windows Media Video
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080216 04:57:42Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">miVd+wAZJhOXoN588ACPFgAAAAA=</UNIQUEID><PUBLICKEY private="1">f5ZTnfdVJCBr+EZcGcyOeItdZGTzCMoua/q75vyJmbbRkCsiiGONXA==</PUBLICKEY><KEYDATA>9Vf+jY5NiA6PGacv7Svi9vn5OVI=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>WQpEBcHBBUV+Xx+/UkHSMkwvolOFQPWF5zmJI9oBbCaC1DNC2XFBQg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>NS9/kxJ4fUU/xtsm2rzt1EMMWrw=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.81</SECURITYVERSION><CERTIFICATE private="1">f5ZTnfdVJCBr+EZcGcyOeItdZGTzCMoua/q75vyJmbbRkCsiiGONXAIEbFGfuQhkfsFBSgpanwXNtdYK2FqFO0xvoaG8W14Te4ivup3gxJLYbLkx</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>YP-T10</NAME><MANUFACTURER>Samsung</MANUFACTURER><MAKE>Samsung</MAKE><DISTRIBUTOR>WorldWideImporters</DISTRIBUTOR><MODEL>YP-T10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><PTP: Closing session
+inep: usb_get_endpoint_status(): Connection timed out
+outep: usb_get_endpoint_status(): Connection timed out
+usb_clear_halt() on IN endpoint: Connection timed out
+usb_clear_halt() on OUT endpoint: Connection timed out
+usb_clear_halt() on INTERRUPT endpoint: Connection timed out
+MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>vRW/PPkzAfSzYbHv8LiL7SlduCMIW81dE7wFRuHHwZRIpgo8I6RGWg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>+leZFfHTUpPiJuxKrZY2NGc/E1NDZTaCFl84wvYcHSHdyMBbTL0AJw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1973</AUTH_ID><PUBLICKEY>LA99x43GKtSfbrir3YWgsHH/Ih/txGBoe5E8LV4KVNb9uQABohtMDw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>rId2DudMrmY+yzso2pVn0lNzYIHUpiH/CJBb+TvgT7FOGD7omELtGw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SmPt0XQ5U8r9y+GecoWQ/zMpF2YxJ/6kRzS3tQKbVjUY2kJGVpqoJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-samsung-yp-q2.txt b/logs/mtp-detect-samsung-yp-q2.txt
new file mode 100644
index 0000000..8e1f1ff
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-q2.txt
@@ -0,0 +1,444 @@
+Device 0 (VID=04e8 and PID=511d) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ 04e8:511d @ bus 0, dev 8
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 511d
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 8
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x04e8
+ Product: (null)
+ Vendor id: 0x511d
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Samsung
+ Model: Q2
+ Device version: 1.06
+ Serial number: 4103000113E6C8980002D9B1810A8898
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.3;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 270, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 1254400, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 16000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 870400, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1500, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 270, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 1254400, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 30000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 16000, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 870400, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b404: Unknown(b404)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 1 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 384000, STEP 1 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ b402: Unknown(b402)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 7931461632
+ FreeSpaceInBytes: 6935363584
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 4103000113E6C8980002D9B1810A8898
+Special directories:
+ Default music folder: 0x00000013
+ Default playlist folder: 0x00000018
+ Default picture folder: 0x00000015
+ Default video folder: 0x00000014
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000016
+ Default album folder: 0x00000000
+ Default text folder: 0x00000017
+MTP-specific device properties:
+ Friendly name: Q2
+ Synchronization partner: Samsung
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Microsoft Windows Media Video
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19800215 12:50:53Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">NDEwMzAwMDExM0U2Qzg5ODAwMDI=</UNIQUEID><PUBLICKEY private="1">Xja2g6o3hjBEit2HcWBUdTvxz2kym4vtsrpGr8usZ58NX3RVFG3ZWw==</PUBLICKEY><KEYDATA>JGGIx01qBfhJ6Dg5TKUrh7X2u3k=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>Hy9CKc+2j8J3xFtzhVx25c45KHm2iBaCl1jVO1Iol2xrlXhCzsA0SA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>kHvzESPeKaF+9Q3HV6fr6hKH0Qc=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.15</SECURITYVERSION><CERTIFICATE private="1">Xja2g6o3hjBEit2HcWBUdTvxz2kym4vtsrpGr8usZ58NX3RVFG3ZWwIEaQ/pt8HY91pPIIAvtDdVMB+/86fiPwRIGms4v7Isd4Us7t8qS419C4U/</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>E8w0ujcvj9/PvgR5wH7qnmJ+ayw5Va97nGWq6tlZK/H6wASCvK5qgQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>C5tRRT2sUN5tvjkCPGUkyNkVpgQks5svZn1M6mi4Q09iIceEOkVMMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1139</AUTH_ID><PUBLICKEY>+etanHDKVWpDHUNpwbhHNc6v7F+uUIjNL2eXRuV+rNX6M0Wag++uQg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/kEvwFp8ZZYs1XWmEbsEuVIT2Qn+/685LI1g33fBlL1rK8Mt1pbIIA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Det7NJ7u813uPm1Anr3inWDYwyr2gFwDcEJjzrlGs98GqMgHzdkUfA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-samsung-yp-s3.txt b/logs/mtp-detect-samsung-yp-s3.txt
new file mode 100644
index 0000000..a9d50cc
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-s3.txt
@@ -0,0 +1,405 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Device 1 (VID=04e8 and PID=5091) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5091
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0400 ..
+Microsoft device response to control message 1, CMD 0x04:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0403 0904 3a03 5300 ............:.S.
+ 0030: 6100 6d00 7300 7500 6e00 6700 2000 4500 a.m.s.u.n.g. .E.
+ 0040: 6c00 6500 6300 7400 7200 6f00 6e00 6900 l.e.c.t.r.o.n.i.
+ 0050: 6300 7300 2000 4300 6f00 2e00 2c00 4c00 c.s. .C.o...,.L.
+ 0060: 7400 6400 2e00 0803 5300 3300 0000 2203 t.d.....S.3...".
+ 0070: 3000 3700 6400 6600 3800 6100 6600 3400 0.7.d.f.8.a.f.4.
+ 0080: 3000 3000 3000 3000 3000 3000 6600 6400 0.0.0.0.0.0.f.d.
+ 0090: 0008 73f7 1b08 73f7 1f08 73f7 5908 73f7 ..s...s...s.Y.s.
+ 00a0: 6100 0000 0000 0000 0200 0000 0022 0100 a............"..
+ 00b0: 0022 0200 0000 0000 0000 0000 8000 0000 ."..............
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0100 0002 0000 781f ..............x.
+ 00e0: bf00 781f be00 0000 0008 0e25 ac08 0e2b ..x........%...+
+ 00f0: 7008 0e2e 7c08 0e30 1808 0e32 ac08 0e35 p...|..0...2...5
+ 0100: 0c08 0e35 a408 0e36 7808 0e37 8c08 0e39 ...5...6x..7...9
+ 0110: 1c08 0e3a 9c00 0000 0000 0000 0000 0000 ...:............
+ 0120: 0000 0000 0000 0000 0022 0100 0022 0200 ........."..."..
+ 0130: 00ff ffff ffff ffff ff00 0000 040b ec00 ................
+ 0140: 000b ec00 0005 f600 0005 f600 0002 fb00 ................
+ 0150: 0000 2462 0300 11f9 0300 1ad2 0300 2462 ..$b..........$b
+ 0160: 0200 24f9 0300 0cd2 0100 2462 0100 2172 ..$.......$b..!r
+ 0170: 0100 11f9 0100 2195 0100 1ad2 0100 2c8a ......!.......,.
+ 0180: 0100 26af 0100 3c78 0100 2eaa 0100 24f9 ..&...<x......$.
+ 0190: 0100 24f9 0100 37ae 0100 2edd 0100 36c7 ..$...7.......6.
+ 01a0: 0100 36d2 0100 3677 0000 0009 9900 000b ..6...6w........
+ 01b0: f600 000e f300 0013 b500 0016 b100 001d ................
+ 01c0: e600 0027 3b00 0029 9f00 002f d800 0035 ...';..).../...5
+ 01d0: d200 003b ce00 0041 c800 0047 8600 004d ...;...A...G...M
+ 01e0: be00 0053 7c00 0057 6400 005a c400 0060 ...S|..Wd..Z...`
+ 01f0: 3500 0066 1c00 006b 8e00 0071 7500 007d 5..f...k...qu..}
+ 0200: fe00 0009 da00 000b f600 000e f300 0013 ................
+ 0210: b500 0017 4e00 001d e600 0027 3b00 0029 ....N......';..)
+ 0220: 9f00 002f d800 0035 d200 003b ce00 0041 .../...5...;...A
+ 0230: c800 0047 8600 004d be00 0053 7c00 0059 ...G...M...S|..Y
+ 0240: b400 005f b000 0065 6d00 0066 1c00 006b ..._...em..f...k
+ 0250: 8e00 0071 7500 007d fe00 0009 da00 000b ...qu..}........
+ 0260: f600 000e f300 0013 b500 0017 ec00 001e ................
+ 0270: f900 0028 a300 0029 9f00 002f d800 0035 ...(...).../...5
+ 0280: d200 003b ce00 0041 c800 0047 8600 004d ...;...A...G...M
+ 0290: be00 0053 7c00 0059 b400 005f b000 0065 ...S|..Y..._...e
+ 02a0: 6d00 006b a600 0071 6300 0077 9c00 0084 m..k...qc..w....
+ 02b0: 1000 0009 da00 000b f600 000e f300 0013 ................
+ 02c0: b500 0016 b100 001d e600 0027 3b00 0029 ...........';..)
+ 02d0: 9f00 002f d800 0035 d200 003b ce00 0041 .../...5...;...A
+ 02e0: c800 0047 8600 004d be00 0053 7c00 0059 ...G...M...S|..Y
+ 02f0: b400 005f b000 0062 cf00 0066 1c00 006b ..._...b...f...k
+ 0300: 8e00 0071 7500 007d fe00 000a dc00 000c ...qu..}........
+ 0310: 9400 000e f300 0015 b800 0017 ec00 0022 ..............."
+ 0320: 6400 002b 3a00 002d dd00 0033 b600 0038 d..+:..-...3...8
+ 0330: 9900 003e e400 0045 2d00 004a 1800 004d ...>...E-..J...M
+ 0340: be00 0056 7c00 0059 b400 0063 2000 0069 ...V|..Y...c ..i
+ 0350: 1200 006f 8400 0075 7600 007b e800 008b ...o...uv..{....
+ 0360: 3900 0009 da00 000b f600 000e f300 0013 9...............
+ 0370: b500 0016 b100 001e f900 0029 4100 002b ...........)A..+
+ 0380: 1e00 0031 9000 0037 c100 003b ce00 0041 ...1...7...;...A
+ 0390: c800 0047 8600 004d be00 0053 7c00 0057 ...G...M...S|..W
+ 03a0: 6400 005a c400 0060 3500 0066 1c00 006b d..Z...`5..f...k
+ 03b0: 8e00 0071 7500 007d fe00 0009 da00 000b ...qu..}........
+ 03c0: f600 000e f300 0013 b500 0017 ec00 001e ................
+ 03d0: f900 0029 4100 002b c500 0031 9000 0037 ...)A..+...1...7
+ 03e0: c100 003d f400 0044 2500 0047 8600 004d ...=...D%..G...M
+ 03f0: be00 0053 7c00 0059 b400 005f b000 0065 ...S|..Y..._...e
+Microsoft device response to control message 2, CMD 0x04:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0403 0904 3a03 5300 ............:.S.
+ 0030: 6100 6d00 7300 7500 6e00 6700 2000 4500 a.m.s.u.n.g. .E.
+ 0040: 6c00 6500 6300 7400 7200 6f00 6e00 6900 l.e.c.t.r.o.n.i.
+ 0050: 6300 7300 2000 4300 6f00 2e00 2c00 4c00 c.s. .C.o...,.L.
+ 0060: 7400 6400 2e00 0803 5300 3300 0000 2203 t.d.....S.3...".
+ 0070: 3000 3700 6400 6600 3800 6100 6600 3400 0.7.d.f.8.a.f.4.
+ 0080: 3000 3000 3000 3000 3000 3000 6600 6400 0.0.0.0.0.0.f.d.
+ 0090: 0008 73f7 1b08 73f7 1f08 73f7 5908 73f7 ..s...s...s.Y.s.
+ 00a0: 6100 0000 0000 0000 0200 0000 0022 0100 a............"..
+ 00b0: 0022 0200 0000 0000 0000 0000 8000 0000 ."..............
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0100 0002 0000 781f ..............x.
+ 00e0: bf00 781f be00 0000 0008 0e25 ac08 0e2b ..x........%...+
+ 00f0: 7008 0e2e 7c08 0e30 1808 0e32 ac08 0e35 p...|..0...2...5
+ 0100: 0c08 0e35 a408 0e36 7808 0e37 8c08 0e39 ...5...6x..7...9
+ 0110: 1c08 0e3a 9c00 0000 0000 0000 0000 0000 ...:............
+ 0120: 0000 0000 0000 0000 0022 0100 0022 0200 ........."..."..
+ 0130: 00ff ffff ffff ffff ff00 0000 040b ec00 ................
+ 0140: 000b ec00 0005 f600 0005 f600 0002 fb00 ................
+ 0150: 0000 2462 0300 11f9 0300 1ad2 0300 2462 ..$b..........$b
+ 0160: 0200 24f9 0300 0cd2 0100 2462 0100 2172 ..$.......$b..!r
+ 0170: 0100 11f9 0100 2195 0100 1ad2 0100 2c8a ......!.......,.
+ 0180: 0100 26af 0100 3c78 0100 2eaa 0100 24f9 ..&...<x......$.
+ 0190: 0100 24f9 0100 37ae 0100 2edd 0100 36c7 ..$...7.......6.
+ 01a0: 0100 36d2 0100 3677 0000 0009 9900 000b ..6...6w........
+ 01b0: f600 000e f300 0013 b500 0016 b100 001d ................
+ 01c0: e600 0027 3b00 0029 9f00 002f d800 0035 ...';..).../...5
+ 01d0: d200 003b ce00 0041 c800 0047 8600 004d ...;...A...G...M
+ 01e0: be00 0053 7c00 0057 6400 005a c400 0060 ...S|..Wd..Z...`
+ 01f0: 3500 0066 1c00 006b 8e00 0071 7500 007d 5..f...k...qu..}
+ 0200: fe00 0009 da00 000b f600 000e f300 0013 ................
+ 0210: b500 0017 4e00 001d e600 0027 3b00 0029 ....N......';..)
+ 0220: 9f00 002f d800 0035 d200 003b ce00 0041 .../...5...;...A
+ 0230: c800 0047 8600 004d be00 0053 7c00 0059 ...G...M...S|..Y
+ 0240: b400 005f b000 0065 6d00 0066 1c00 006b ..._...em..f...k
+ 0250: 8e00 0071 7500 007d fe00 0009 da00 000b ...qu..}........
+ 0260: f600 000e f300 0013 b500 0017 ec00 001e ................
+ 0270: f900 0028 a300 0029 9f00 002f d800 0035 ...(...).../...5
+ 0280: d200 003b ce00 0041 c800 0047 8600 004d ...;...A...G...M
+ 0290: be00 0053 7c00 0059 b400 005f b000 0065 ...S|..Y..._...e
+ 02a0: 6d00 006b a600 0071 6300 0077 9c00 0084 m..k...qc..w....
+ 02b0: 1000 0009 da00 000b f600 000e f300 0013 ................
+ 02c0: b500 0016 b100 001d e600 0027 3b00 0029 ...........';..)
+ 02d0: 9f00 002f d800 0035 d200 003b ce00 0041 .../...5...;...A
+ 02e0: c800 0047 8600 004d be00 0053 7c00 0059 ...G...M...S|..Y
+ 02f0: b400 005f b000 0062 cf00 0066 1c00 006b ..._...b...f...k
+ 0300: 8e00 0071 7500 007d fe00 000a dc00 000c ...qu..}........
+ 0310: 9400 000e f300 0015 b800 0017 ec00 0022 ..............."
+ 0320: 6400 002b 3a00 002d dd00 0033 b600 0038 d..+:..-...3...8
+ 0330: 9900 003e e400 0045 2d00 004a 1800 004d ...>...E-..J...M
+ 0340: be00 0056 7c00 0059 b400 0063 2000 0069 ...V|..Y...c ..i
+ 0350: 1200 006f 8400 0075 7600 007b e800 008b ...o...uv..{....
+ 0360: 3900 0009 da00 000b f600 000e f300 0013 9...............
+ 0370: b500 0016 b100 001e f900 0029 4100 002b ...........)A..+
+ 0380: 1e00 0031 9000 0037 c100 003b ce00 0041 ...1...7...;...A
+ 0390: c800 0047 8600 004d be00 0053 7c00 0057 ...G...M...S|..W
+ 03a0: 6400 005a c400 0060 3500 0066 1c00 006b d..Z...`5..f...k
+ 03b0: 8e00 0071 7500 007d fe00 0009 da00 000b ...qu..}........
+ 03c0: f600 000e f300 0013 b500 0017 ec00 001e ................
+ 03d0: f900 0029 4100 002b c500 0031 9000 0037 ...)A..+...1...7
+ 03e0: c100 003d f400 0044 2500 0047 8600 004d ...=...D%..G...M
+ 03f0: be00 0053 7c00 0059 b400 005f b000 0065 ...S|..Y..._...e
+Device info:
+ Manufacturer: Samsung Electronics Co.,Ltd.
+ Model: S3
+ Device version: V1.01
+ Serial number: 07DF8AF4000000FD
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 10.0; microsoft.com/WMDRMPD: 10.1microsoft.com/WMPPD: 11.,;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1011: Self test device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1920, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 3072, STEP 1 GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, 355, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3957993472
+ FreeSpaceInBytes: 3911229440
+ FreeSpaceInObjects: 5967
+ StorageDescription: S3
+ VolumeIdentifier: 07df8af4000000fd
+Special directories:
+ Default music folder: 0x00008007
+ Default playlist folder: 0x00008001
+ Default picture folder: 0x00008008
+ Default video folder: 0x00008009
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00008005
+ Default album folder: 0x0000800a
+ Default text folder: 0x00008006
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner:
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20000201 08:53:21Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">DaMLNXgOJaE7JL6z9qHFYg6nJX4pnIRK/gwlQf1r5RwT142jPgwNIA==</PUBLICKEY><KEYDATA>E64t01R7LRaceo6Clbv21QkKBqQ=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>aXDDaQ3MdAZd/eTMxUCvdv57hoZzWioFgtDlnZL7Rwwrjga3J5YgGw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>3/p7bm126YT7MPCkdUEj29V9utc=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.105</SECURITYVERSION><CERTIFICATE private="1">DaMLNXgOJaE7JL6z9qHFYg6nJX4pnIRK/gwlQf1r5RwT142jPgwNIAIEaWkRWSHSx9NBkP07jg9pYGgBroBlblzkaycTo0CqCCq0nWailL0I4Lga</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>2hOkxOCK1QPe10JHYvfVUjYjLBMzXCftotZMbbB+VhO0gpWYnFSNJA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>zVgOV3F4q2xlvMfFBZtW/YaNhE/9IBGpQpxDJG4cljg81O1sxP/KhA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1229</AUTH_ID><PUBLICKEY>8l60FgPW1vHhfaAFYkoYXMMHTFZCfCf98BXPcKJLbBjofB1fy8Bcbw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LpLd030TMk4F6v2kAjf3LecPk0UOgCjPmQrGsKUfmyRBTRujDP3/LQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YoS6xu8BvaENyvqIISjhFbO5wmakFMYg2/C8ALN0uuXvYRVe3JJZYw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-samsung-yp-t10.txt b/logs/mtp-detect-samsung-yp-t10.txt
new file mode 100644
index 0000000..9aef327
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-t10.txt
@@ -0,0 +1,414 @@
+libmtp version: 0.2.3
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 508a
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: SAMSUNG
+ Model: T10
+ Device version: 1.19
+ Serial number: 89C70D3D0014885566FBCFE4F0028F16
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMPPD: 11.0;microsoft.com/WMDRMPD: 10.1;microsoft.com/WMPPD: 10.0;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 640, STEP 1 GET/SET
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ b903: AAC
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 268435456, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 320, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 240, STEP 1 GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 0, 20000, 25000, 29970, 30000, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 859189832, 958804552, 1195724877, 827739479, 844516695, 861293911, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 100, MAX 300, STEP 1 GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 1000000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3967680512
+ FreeSpaceInBytes: 3799252992
+ FreeSpaceInObjects: 11936
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 89C70D3D0014885566FBCFE4F0028F16
+Special directories:
+ Default music folder: 0x20000004
+ Default playlist folder: 0x20000003
+ Default picture folder: 0x20000006
+ Default video folder: 0x20000005
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: T10
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ JPEG file
+ Microsoft Windows Media Video
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070129
+13:42:57Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">iccNPQAUiFVm+8/k8AKPFgAAAAA=</UNIQUEID><PUBLICKEY
+private="1">Bs+Dz0+of5Uda27sTtZ8b1Ie7G8v0lMcZI4D7JLkQH9Va3WLjSLnWQ==</PUBLICKEY><KEYDATA>2fxVLUrOy3RUmecmMl84PdAytEs=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>zRC2in8a58t0lpu9kZptTVwE9Ce1UWT2lB4QZu+fwFJLxYUMPJCWFw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>nh8OOdOJpDE5sh6uWvUM2tF/hSA=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.81</SECURITYVERSION><CERTIFICATE
+private="1">Bs+Dz0+of5Uda27sTtZ8b1Ie7G8v0lMcZI4D7JLkQH9Va3WLjSLnWQIEbFE+t8pvUU+VKgnnS7KQEDHqyntIPPPoxjsV3whmZFAG8klBkjaLyK9t</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>YP-T10</NAME><MANUFACTURER>Samsung</MANUFACTURER><MAKE>Samsung</MAKE><DISTRIBUTOR>WorldWideImporters</DISTRIBUTOR><MODEL>YP-T10</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>vRW/PPkzAfSzYbHv8LiL7SlduCMIW81dE7wFRuHHwZRIpgo8I6RGWg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>+leZFfHTUpPiJuxKrZY2NGc/E1NDZTaCFl84wvYcHSHdyMBbTL0AJw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1973</AUTH_ID><PUBLICKEY>LA99x43GKtSfbrir3YWgsHH/Ih/txGBoe5E8LV4KVNb9uQABohtMDw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>rId2DudMrmY+yzso2pVn0lNzYIHUpiH/CJBb+TvgT7FOGD7omELtGw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>SmPt0XQ5U8r9y+GecoWQ/zMpF2YxJ/6kRzS3tQKbVjUY2kJGVpqoJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+inep: usb_get_endpoint_status(): Connection timed out
+outep: usb_get_endpoint_status(): Connection timed out
+usb_clear_halt() on IN endpoint: Connection timed out
+usb_clear_halt() on OUT endpoint: Connection timed out
+usb_clear_halt() on INTERRUPT endpoint: Connection timed out
+OK.
diff --git a/logs/mtp-detect-samsung-yp-u3.txt b/logs/mtp-detect-samsung-yp-u3.txt
new file mode 100644
index 0000000..a2f1304
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-u3.txt
@@ -0,0 +1,402 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 507d
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0400 ..
+Microsoft device response to control message 1, CMD 0x04:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0001 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 00aa aaaa aaaa ................
+ 0040: aaaa aaee eeee eeee eeee eefe ffff ffff ................
+ 0050: ffff ffff ffff ff7f bfdf eff7 fbfd fc7e ...............~
+ 0060: bfdf eff7 fbfd 7e00 0a06 0002 0000 0040 ......~........@
+ 0070: 0100 0008 7106 0008 7118 0018 331e 001a ....q...q...3...
+ 0080: c268 001a a66e 001a a66c c004 0000 0400 .h...n...l......
+ 0090: 0004 0000 0000 0004 0040 0008 71a2 0000 .........@..q...
+ 00a0: 0008 0000 0000 0008 7118 0000 00c0 0000 ........q.......
+ 00b0: 0340 0000 8001 0200 0000 0000 0000 0000 .@..............
+ 00c0: 0000 0000 0024 0200 0000 000c 0000 0000 .....$..........
+ 00d0: 0000 0001 0200 0024 0000 0000 0020 0000 .......$..... ..
+ 00e0: 01e0 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 8000 0040 0000 0000 0000 0000 0000 0000 ...@............
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0040 0000 0000 0000 0000 0000 0000 0000 .@..............
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0008 ................
+ 0130: 707d 0008 70a1 0008 70e8 0501 0400 0008 p}..p...p.......
+ 0140: 70aa 0000 0000 0000 0000 0000 0000 0000 p...............
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0008 70b3 0000 0000 0008 70ba 0000 ....p.......p...
+ 0170: 0000 0008 70c1 0000 0000 0000 0000 0000 ....p...........
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 2, CMD 0x04:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0001 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 00aa aaaa aaaa ................
+ 0040: aaaa aaee eeee eeee eeee eefe ffff ffff ................
+ 0050: ffff ffff ffff ff7f bfdf eff7 fbfd fc7e ...............~
+ 0060: bfdf eff7 fbfd 7e00 0a06 0002 0000 0040 ......~........@
+ 0070: 0100 0008 7106 0008 7118 0018 331e 001a ....q...q...3...
+ 0080: c268 001a a66e 001a a66c c004 0000 0500 .h...n...l......
+ 0090: 0004 0000 0000 0004 0040 0008 71a2 0000 .........@..q...
+ 00a0: 0008 0000 0000 0008 7118 0000 00c0 0000 ........q.......
+ 00b0: 0340 0000 8001 0200 0000 0000 0000 0000 .@..............
+ 00c0: 0000 0000 0024 0200 0000 000c 0000 0000 .....$..........
+ 00d0: 0000 0001 0200 0024 0000 0000 0020 0000 .......$..... ..
+ 00e0: 01e0 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 8000 0040 0000 0000 0000 0000 0000 0000 ...@............
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0040 0000 0000 0000 0000 0000 0000 0000 .@..............
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0008 ................
+ 0130: 707d 0008 70a1 0008 70e8 0501 0400 0008 p}..p...p.......
+ 0140: 70aa 0000 0000 0000 0000 0000 0000 0000 p...............
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0008 70b3 0000 0000 0008 70ba 0000 ....p.......p...
+ 0170: 0000 0008 70c1 0000 0000 0000 0000 0000 ....p...........
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Device info:
+ Manufacturer: Samsung Electronics
+ Model: Samsung YP-U3
+ Device version: VER 1.10 US
+ Serial number: 20FAFB6C9EF00000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1011: Self test device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1024, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 1280, STEP 1 GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5120, MAX 327680, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8192, MAX 49152, STEP 1 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1986576384
+ FreeSpaceInBytes: 568082432
+ FreeSpaceInObjects: 5813
+ StorageDescription: Samsung Flash Media
+ VolumeIdentifier: KPACMGLPAPOJ
+Special directories:
+ Default music folder: 0x00008003
+ Default playlist folder: 0x00008004
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: ?????
+ Synchronization partner: ?????
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Microsoft Windows Media Audio
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19000101 01:00:16Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">CgoKCgoKCgoKCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">19CTj85m2JlyrawQcI4rgRoghxvVmWI7u50AUMo3k80IPMLV/LPLcw==</PUBLICKEY><KEYDATA>UiGqaGgE2/Vci00g5eZBm9tqxos=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>P+RmbriP1flucJygnR2y+dWlQyaLLwIJOlXrwSicEkS6jyywBbmKRA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>mCuT02/rwggW5ytgAirLC+GtN7A=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.167</SECURITYVERSION><CERTIFICATE private="1">19CTj85m2JlyrawQcI4rgRoghxvVmWI7u50AUMo3k80IPMLV/LPLcwIEaqfEUr9CS1XZyNx4fDleDofI1QaxAzW52QezVedopjw1VQ4lmzqMNZxk</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>7H0tGbM5GZlkhjYyaxEnB7BA+EOkuvRz7RkaVUWZGrfsoyV/yO+nBQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>08ggPruzkWHvbPK/RbQUCV1alDZac8XTXQC/TB57WPNBiBYCnFi8cw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1547</AUTH_ID><PUBLICKEY>3rjb7MuXV4F7g7Jc0lx7c8/rAVwfMj87XHbCsdWx3b7DuF6giV9yZA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XtmhTxSy2v9mTzSPT59XrN5z8CITGkTDwSbavRAyYZFj/ryz5AkAdQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>mv7YqhunaXXC+MNMd2/X2yo0FRLIPGKyYhyEnsiFa8IbOkddJtXcdw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>ï¿¿ï¿¿ï¿¿ï¿¿
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-samsung-yp-u4.txt b/logs/mtp-detect-samsung-yp-u4.txt
new file mode 100644
index 0000000..c36e19f
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-u4.txt
@@ -0,0 +1,350 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5093
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Samsung
+ Model: U4
+ Device version: 1.20
+ Serial number: 053030049B3A114805303004E14C3148
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;microsoft.com/WMDRMPD: 10.3;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, 48000, 96000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 12800, MAX 384000, STEP 100 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, 48000, 96000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 12800, MAX 384000, STEP 100 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 2000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 1500, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, 48000, 96000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 12800, MAX 384000, STEP 100 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 0, 1, 17, 18, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 32000, 44100, 48000, 96000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 0, 8, 10, 12, 16, 24, 32, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 12800, MAX 384000, STEP 100 GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 10000000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 0 GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4000251904
+ FreeSpaceInBytes: 3991650304
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 053030049B3A114805303004E14C3148
+Special directories:
+ Default music folder: 0x00000010
+ Default playlist folder: 0x00000012
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000011
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: U4
+ Synchronization partner: Samsung
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ Ogg container format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19800413 08:12:16Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MDUzMDMwMDQ5QjNBMTE0ODA1MzA=</UNIQUEID><PUBLICKEY private="1">tJZROh1eN96iqucjjI/bcJWDYUwyMkPy/CBJwBahmizPcS/eK0v4Vg==</PUBLICKEY><KEYDATA>YGuTIvHoaxY5jKNqCcFR33u+Yic=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>MWZHN88fFEHSHYJglopqE4Vfm1qy0kWBzDafKJ10Q0xGm9luGDD4hQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>SselZaUyg8pYTEvaLulVFgHcNUk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.15</SECURITYVERSION><CERTIFICATE private="1">tJZROh1eN96iqucjjI/bcJWDYUwyMkPy/CBJwBahmizPcS/eK0v4VgIEaQ9nfGTDui8FF2H8A0Y2CD6GEKEuHglOKgWU91HiK1r9ufyZNE9VQRx9</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>E8w0ujcvj9/PvgR5wH7qnmJ+ayw5Va97nGWq6tlZK/H6wASCvK5qgQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>C5tRRT2sUN5tvjkCPGUkyNkVpgQks5svZn1M6mi4Q09iIceEOkVMMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1139</AUTH_ID><PUBLICKEY>+etanHDKVWpDHUNpwbhHNc6v7F+uUIjNL2eXRuV+rNX6M0Wag++uQg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/kEvwFp8ZZYs1XWmEbsEuVIT2Qn+/685LI1g33fBlL1rK8Mt1pbIIA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Det7NJ7u813uPm1Anr3inWDYwyr2gFwDcEJjzrlGs98GqMgHzdkUfA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-samsung-yp-u5.txt b/logs/mtp-detect-samsung-yp-u5.txt
new file mode 100644
index 0000000..f716569
--- /dev/null
+++ b/logs/mtp-detect-samsung-yp-u5.txt
@@ -0,0 +1,530 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ Samsung: YP-U5 (04e8:5121) @ bus 0, dev 10
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 04e8
+ idProduct: 5121
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 10
+ Device entry info:
+ Vendor: Samsung
+ Vendor id: 0x04e8
+ Product: YP-U5
+ Vendor id: 0x5121
+ Device flags: 0x00000003
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Samsung
+ Model: U5
+ Device version: 1.12
+ Serial number: 08F9000020FDD2840002D9B1D682D284
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+ 97f3: Unknown (97f3)
+ 97f4: Unknown (97f4)
+ 97f5: Unknown (97f5)
+ 1010: Reset device
+ 1012: Set object protection
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd405: Device Icon
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 4300000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 80, 85, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 2304000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 17, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b906: FLAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 41222, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ b909: Unknown(b909)
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 3968860160
+ FreeSpaceInBytes: 3957850112
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 08F9000020FDD2840002D9B1D682D284
+Special directories:
+ Default music folder: 0x00000066
+ Default playlist folder: 0x00000074
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000067
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: U5
+ Synchronization partner: U5
+ Battery level 98 of 100 (98%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Ogg container format
+ Free Lossless Audio Codec (FLAC)
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ GIF bitmap file
+ BMP bitmap file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20090516 22:04:34Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MDhGOTAwMDAyMEZERDI4NAoKCgo=</UNIQUEID><PUBLICKEY private="1">SpemWBZzbJwl+qjAJeevtD1yTnq4fueH8tHGy72FtkJ+GTl41v8rGg==</PUBLICKEY><KEYDATA>Qvwgsm0IR9cYQuyyEIS15Ps+Omw=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>wtdtR1ZYD2SlZXgyrmtN/9hpwx+5gwS570FcYj9xs0eCmIKJ0HexVw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>eQDW/IuB9+LikpkOHFRAibGPZAk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.255</SECURITYVERSION><CERTIFICATE private="1">SpemWBZzbJwl+qjAJeevtD1yTnq4fueH8tHGy72FtkJ+GTl41v8rGgIEZv/6MwI1jVZ2u5MHJhczIXJMUpZJGXlAyfGWlImndMcwwUjFdbeFJT1F</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>luzgKlZvBQSs9WTaZUR/OWk1vx6ktrEVSKt6/qsU55g4m+U26NiJiQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>1XRO2t8Kmh4h01/pzxkiKFg8PmxsO+3cbmju098TNdvU6YKJp7qiRw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>611</AUTH_ID><PUBLICKEY>rE0WoLeFtKZxDp6G8oN+uLVNsQ6LG/MP5G33/N3YRBgU3ZvoMsC/Pg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>irFXzOg9Pu5+oggEs8k60vdL/E3Lqq1z5E5TR1GuTRnuCDC/mwN/Xw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8uwJd6/SKa2QWs+lVxohcEQ0PwXWV4jNKsUWVWhhMyFA/vtqHPD/OQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-sandisk-sansa-c240.txt b/logs/mtp-detect-sandisk-sansa-c240.txt
new file mode 100644
index 0000000..c128ba1
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-c240.txt
@@ -0,0 +1,790 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:0781 and ProductID:7450 responded to
+control message 2 with a response that was too short. Problems may arrise
+but continuing
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7450
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 6400 3000 3100 3800 ........d.0.1.8.
+ 0030: 3000 3400 3700 2d00 3600 6300 3000 3000 0.4.7.-.6.c.0.0.
+ 0040: 3300 6100 6600 3400 2d00 3000 3000 3000 3.a.f.4.-.0.0.0.
+ 0050: 3000 3000 3000 3000 3000 0000 0000 0000 0.0.0.0.0.......
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 6400 3000 3100 3800 ........d.0.1.8.
+ 0030: 3000 3400 3700 2d00 3600 6300 3000 3000 0.4.7.-.6.c.0.0.
+ 0040: 3300 6100 6600 3400 2d00 3000 3000 3000 3.a.f.4.-.0.0.0.
+ 0050: 3000 3000 3000 3000 3000 0000 0000 0000 0.0.0.0.0.......
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Potential MTP Device with VendorID:0781 and ProductID:7450 responded to
+control message 2 with a response that was too short. Problems may arrise
+but continuing
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa c250
+ Device version: Sansa 01.01.06P
+ Serial number: 4453033f-32305453-5d018047-6c003af4-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 100f: Format storage
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 77440, STEP 10 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2020982464
+ FreeSpaceInBytes: 38256320
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Memory
+ VolumeIdentifier: VOL0_Sansa_c250_4453033f-32305453-5d018047-6c003af4-00000000
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa c250
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ Audio Video Interleave
+ JPEG file
+ BMP bitmap file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070815
+03:00:27Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">PwNTRFNUMDJHgAFd9DoAbAAAAAA=</UNIQUEID><PUBLICKEY
+private="1">vPNbgTRkxhEafnVrob5Lhat/CwsPKt54wmrxiNGfm1zaE1U/NtuVhw==</PUBLICKEY><KEYDATA>TtFnh7U7Pg8/oY3RRMgz7f5WDZ0=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>/UKEp4NFuqncbVnodwNEpg7tB4QzxEX5uBEGPUwTrzyiERNERrqEQw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>77sImUOi0amd9wYBbRcZ7JElZgw=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.11</SECURITYVERSION><CERTIFICATE
+private="1">vPNbgTRkxhEafnVrob5Lhat/CwsPKt54wmrxiNGfm1zaE1U/NtuVhwIEagup8abeALgJznwoPSv6U/eE0zueQYwkMKo56CY5WzuWg1ZFk0oIyi0O</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Sansa C200</NAME>
+ <MANUFACTURER>Micro-Star</MANUFACTURER>
+ <MAKE>MSI</MAKE>
+ <DISTRIBUTOR>Micro-Star Int’l Co Ltd</DISTRIBUTOR>
+ <MODEL>SanDisk Sansa Series</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>1</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>dif5mSOYklFEWQW8Rk6I2+ugeFhuLpr7A+dBU3qH5sBoSXXuhYCgaQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yszNKX0icRq05GWdgw2JODKILnIFvegA2rf6oWgBRJeCaLqCa7bNLw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1391</AUTH_ID><PUBLICKEY>4c2hgvX/sgV7OjJu82BQ9by7lxh2r6XZOOG0qx8QLa7h4AiO0JOVhQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hreAI4Q0sKU6t+K+phUFHtjf0hjgSJguTc9R5XmzRu9hflAuTr4xZQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8q56WrXAXSViV/Birc27ZR5APyMzCijSV8+pXdpi0B+66ctdri+Tcw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+Clearing stall on IN endpoint
+Clearing stall on OUT endpoint
+OK.
+
+
+libmtp version: 0.1.5
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7450
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa c240
+ Device version: Sansa 01.01.00F
+ Serial number: 4453033f-31305453-b7108047-6b00887a-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 100f: Format storage
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 77440, STEP 10 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 997986120
+ FreeSpaceInBytes: 9183048
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Memory
+ VolumeIdentifier: VOL0_Sansa_c240_4453033f-31305453-b7108047-6b00887a-00000000
+Special directories:
+ Default music folder: 0x00000001
+ Default playlist folder: 0x00000003
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa c240
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+ Battery level 43 of 100 (43%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ Audio Video Interleave
+ JPEG file
+ BMP bitmap file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070508 22:48:36Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">PwNTRFNUMDFHgBC3eogAawAAAAA=</UNIQUEID><PUBLICKEY private="1">uI9WF1l30WJuj1nCxrs0UaCtW1huJFSMaCNzRt1vrt0R9fP6mLEOBw==</PUBLICKEY><KEYDATA>LsWFcvmzrRqyDsz21nhG87LMqcc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>qJ5Gp94Y0TYos4cxOIs0XHJSo2w0OQv+iRWqLf357ZJfxVQUeNGAaA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>NJ7ml0xXGldHdBl518raEMWbtTM=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.11</SECURITYVERSION><CERTIFICATE private="1">uI9WF1l30WJuj1nCxrs0UaCtW1huJFSMaCNzRt1vrt0R9fP6mLEOBwIEagt5JFtwO/GzWFl9QJHGCmMcwbCWB83G3TZ7dk6icJXHX9+QqLym0ANS</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Sansa C200</NAME>
+ <MANUFACTURER>Micro-Star</MANUFACTURER>
+ <MAKE>MSI</MAKE>
+ <DISTRIBUTOR>Micro-Star Int’l Co Ltd</DISTRIBUTOR>
+ <MODEL>SanDisk Sansa Series</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>1</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>dif5mSOYklFEWQW8Rk6I2+ugeFhuLpr7A+dBU3qH5sBoSXXuhYCgaQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yszNKX0icRq05GWdgw2JODKILnIFvegA2rf6oWgBRJeCaLqCa7bNLw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1391</AUTH_ID><PUBLICKEY>4c2hgvX/sgV7OjJu82BQ9by7lxh2r6XZOOG0qx8QLa7h4AiO0JOVhQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hreAI4Q0sKU6t+K+phUFHtjf0hjgSJguTc9R5XmzRu9hflAuTr4xZQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8q56WrXAXSViV/Birc27ZR5APyMzCijSV8+pXdpi0B+66ctdri+Tcw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-sandisk-sansa-c250.txt b/logs/mtp-detect-sandisk-sansa-c250.txt
new file mode 100644
index 0000000..a11d218
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-c250.txt
@@ -0,0 +1,450 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7450
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000003
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 0705 0102 0002 0007 0582 0200 0200 ................
+ 0020: 0705 8103 0002 6400 6400 3000 3100 3800 ......d.d.0.1.8.
+ 0030: 3000 3400 3700 2d00 3600 6300 3000 3000 0.4.7.-.6.c.0.0.
+ 0040: 6200 6300 3200 6600 2d00 3000 3000 3000 b.c.2.f.-.0.0.0.
+ 0050: 3000 3000 3000 3000 3000 0000 0000 0000 0.0.0.0.0.......
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 6400 3000 3100 3800 ........d.0.1.8.
+ 0030: 3000 3400 3700 2d00 3600 6300 3000 3000 0.4.7.-.6.c.0.0.
+ 0040: 6200 6300 3200 6600 2d00 3000 3000 3000 b.c.2.f.-.0.0.0.
+ 0050: 3000 3000 3000 3000 3000 0000 0000 0000 0.0.0.0.0.......
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa c250
+ Device version: Sansa 01.00.04A
+ Serial number: 4453033f-32305453-5d018047-6c00bc2f-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 100f: Format storage
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300a: MS AVI
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 132, STEP 1 READ ONLY
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 132, STEP 1 READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 80, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 132, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 21120, STEP 10 READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 85, 353, 384, 41222, 304, 1, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, 3, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483000, STEP 1000 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2021015040
+ FreeSpaceInBytes: 1980087808
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: FIXED SD
+ VolumeIdentifier: VOL0_Sansa_c250_4453033f-32305453-5d018047-6c00bc2f-00000000
+Special directories:
+ Default music folder: 0x0000003f
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000043
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa c250
+ Synchronization partner:
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ Audio Video Interleave
+ JPEG file
+ BMP bitmap file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20040828 12:16:16Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">PwNTRFNUMDJHgAFdL7wAbAAAAAA=</UNIQUEID><PUBLICKEY private="1">Prkp5/+j3VL0DtyeI4Xg0SAx1ynL4+KO9DnOwtggyIKQs/2A8zDLAg==</PUBLICKEY><KEYDATA>hIMYl7WPWiXevpg3pcvfpqm0atU=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>raRYYRBstwPaq08IRgmgwlphgYi4PuJooAhV00yb8mv8IbV4Wdi2fg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>EpChaSPdR864/IebbkiKDfiQ5OM=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.11</SECURITYVERSION><CERTIFICATE private="1">Prkp5/+j3VL0DtyeI4Xg0SAx1ynL4+KO9DnOwtggyIKQs/2A8zDLAgIEagv5DXHu/bgise7DfUkS3KQ1yEtXFm/Q2z1eEE8EkSkb6fCAUhfU5GEz</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Sansa C200</NAME>
+ <MANUFACTURER>Micro-Star</MANUFACTURER>
+ <MAKE>MSI</MAKE>
+ <DISTRIBUTOR>Micro-Star Int’l Co Ltd</DISTRIBUTOR>
+ <MODEL>SanDisk Sansa Series</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>1</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>dif5mSOYklFEWQW8Rk6I2+ugeFhuLpr7A+dBU3qH5sBoSXXuhYCgaQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yszNKX0icRq05GWdgw2JODKILnIFvegA2rf6oWgBRJeCaLqCa7bNLw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1391</AUTH_ID><PUBLICKEY>4c2hgvX/sgV7OjJu82BQ9by7lxh2r6XZOOG0qx8QLa7h4AiO0JOVhQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hreAI4Q0sKU6t+K+phUFHtjf0hjgSJguTc9R5XmzRu9hflAuTr4xZQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8q56WrXAXSViV/Birc27ZR5APyMzCijSV8+pXdpi0B+66ctdri+Tcw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sandisk-sansa-clip-v2.txt b/logs/mtp-detect-sandisk-sansa-clip-v2.txt
new file mode 100644
index 0000000..bb1ddfb
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-clip-v2.txt
@@ -0,0 +1,494 @@
+libmtp version: 0.3.4
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0781:7434 @ bus 0, dev 27
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7434
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 27
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0781
+ Product: (null)
+ Vendor id: 0x7434
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa Clip 2GB
+ Device version: v02.01.16A
+ Serial number: 0C0FDF0A7009B6A80000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0; microsoft.com/WMDRMND: 1.0; microsoft.com/AAVT: 1.0; microsoft.com: WMPPD10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1012: Set object protection
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0xd100: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 300c: ASF
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b301: Unknown(b301)
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b901: WMA
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b902: OGG
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b904: Audible.com Codec
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b906: FLAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba11: M3U Playlist
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 2016641024
+ FreeSpaceInBytes: 532971520
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Memory
+ VolumeIdentifier: 0C0FDF0A7009B6A8
+Special directories:
+ Default music folder: 0x00000001
+ Default playlist folder: 0x00000002
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000017
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa Clip 2GB
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+ Battery level 97 of 100 (97%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Audio
+ Ogg container format
+ Audible.com Audio Codec
+ Free Lossless Audio Codec (FLAC)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20090105 21:49:36Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MABDADAARgBEAEYAMABBADcAMAAwADkAQgA2AEEAOAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAA==</UNIQUEID><PUBLICKEY private="1">fhUC+/QijZ/4rUaDrjis1u0VTG5/bJl/46yNsxAyIQQ9rcg0sGkiUA==</PUBLICKEY><KEYDATA>YmaVekpKkEb9bDxe1toOZw2O6Uo=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>iwNk1uAtpMkytF5Cc1Esx5f7xk82LibzXPwO7ZRJT0Ot9eFX3INVEA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>yLTRrx6Ilr/MuhHIxv82IuKBxG4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.35</SECURITYVERSION><CERTIFICATE private="1">fhUC+/QijZ/4rUaDrjis1u0VTG5/bJl/46yNsxAyIQQ9rcg0sGkiUAIEbyP83FohB+KBhkYAwiS/SOCjTHfkW/zfd2w2pnPvOC99wum+X8R1LVQR</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Clip+</NAME>
+ <MANUFACTURER>SanDisk Corporation</MANUFACTURER>
+ <MAKE>Sansa</MAKE>
+ <MODEL>Sansa Clip+</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>2</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>0</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+
+ <SUPPORT_REVOCATION>
+ <GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID>
+ </SUPPORT_REVOCATION>
+
+ </FEATURES>
+
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>VbOg1CGbCRQuQmDdJu7VEbVObj8xxTz3DBkj0I4qX2430HWlCWuleQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>k7W8US0uNGzlL2TKDWcMHhQEMkAKPp0QSU+cu0DuuPxJ3p6HUYaDZA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2695</AUTH_ID><PUBLICKEY>3JwjYFj2GuZrhCAshbYFNjgb9g2pl2j0nR8PR2rqyk4iIARZrN4GOQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>U/0OkXwkzkCBmOyuE9BAnxs3yHuGodfnpw/QyqUfVc2GbN2EP41OCQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>iCWGAEStZdbKH1OYrXLqSnMBZQOBx6P4mVnYKKu94Zq2ohh00BQlGA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{DE25BD8B-0F7E-4DA2-A3DD-52BDE52DF67F}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
+
+
diff --git a/logs/mtp-detect-sandisk-sansa-clip.txt b/logs/mtp-detect-sandisk-sansa-clip.txt
new file mode 100644
index 0000000..8e62429
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-clip.txt
@@ -0,0 +1,322 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7432
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000006
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa Clip 1GB
+ Device version: v01.01.11A
+ Serial number: 5005C70A4142B4890000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0xd100: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b904: Audible.com Codec
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1012383744
+ FreeSpaceInBytes: 596164608
+ FreeSpaceInObjects: 4294967156
+ StorageDescription: Internal Memory
+ VolumeIdentifier: 5005C70A4142B489
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000009
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000013
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa Clip 1GB
+ Synchronization partner: Unknown Partner
+ Battery level 60 of 100 (60%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Audio
+ Audible.com Audio Codec
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error a101: get_device_unicode_property(): failed
+to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
diff --git a/logs/mtp-detect-sandisk-sansa-connect.txt b/logs/mtp-detect-sandisk-sansa-connect.txt
new file mode 100644
index 0000000..c99f30c
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-connect.txt
@@ -0,0 +1,244 @@
+Potential MTP Device with VendorID:0781 and ProductID:7480 responded to
+control message 2 with a response that was too short. Problems may arrise
+but continuing
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7480
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa Connect
+ Device version: 0.002a
+ Serial number: <snip>
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9804: Set object property value
+ 9807: Get interdependent property description
+ 4001: Unknown(4001)
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9806: Set object property list
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b901: WMA
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc49: URLReference STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 15918, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 192000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc8f: SubscriptionContentID STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 88, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 88, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3000: Undefined Type
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3001: Association/Directory
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3009: MP3
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3801: JPEG
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc87: Width UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type ANY 32BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3629608960
+ FreeSpaceInBytes: 2528118784
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Memory
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x01000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa Connect
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+ JPEG file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070625
+21:23:41Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">MDAzNTBjZGEwY2Q5NDc3NmY1ZTdkYjNiMDMwMDZjMjA=</UNIQUEID><PUBLICKEY
+private="1">N1UNmgK1Q91d+o6jTz1XYeslBBM/4vxftlmeqYP283U853zBDAsXfQ==</PUBLICKEY><KEYDATA>Hh2dgQ6Lf/GmgDqYq/PG170vQyU=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>v/q8lIrrzkrGnEzqrhVU/jRyyS3jDBZa/6cMPRMOlHwy4A54ZdXVLQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>L4RaI0MqkghSlXOmxdj2vM8pLeU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.183</SECURITYVERSION><CERTIFICATE
+private="1">N1UNmgK1Q91d+o6jTz1XYeslBBM/4vxftlmeqYP283U853zBDAsXfQIEarfnTGArHCv/vfxqC5o1UXrJi39tCh0QhCsFK7SUxyPYqJHv5WmflQh6</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Sansa</NAME>
+ <MANUFACTURER>SanDisk</MANUFACTURER>
+ <MODEL>Connect Series</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>0</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>9</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>0</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>9</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>YMqDiUgOnJSZmC9X4W3Eqq+inhOIlQ7pk7ll0Ar5XY3hdDFFgma/Kw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>uoDlFYjjCQf5DlrrwEurDh6HEVYWLG3M8z+WPlnSmWI7wnbIESf9Nw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1563</AUTH_ID><PUBLICKEY>87ckEfUSAqzNZAoq2ByX+r4+31AbrSbpViMLb5Wpzbg+DMjG3gZATw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>5zo0gyvJqB8Kf1Lyc5Lym7dBUXzOSc3r7XKCNsHV3NdZuN+dJawlXw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>F/KiuSv+WSgoRpJjpL7Pe4Hw8IBHtod15X0uvXASBgnechDgNTDpgg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sandisk-sansa-e260.txt b/logs/mtp-detect-sandisk-sansa-e260.txt
new file mode 100644
index 0000000..ed78b48
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-e260.txt
@@ -0,0 +1,253 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ bMaxPacketSize0: 64
+ idVendor: 0781
+ idProduct: 7420
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa e260
+ Device version: PP5022AF-05.51-S301-00.12-S301.00.12A-D, (Build 169.20)
+ Serial number: 00000000-00000000-0319b387-edfbf414-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD:10.1; portalplayer.com: 1.0;
+Supported operations:
+ 0x1014
+ 0x1015
+ 0x1016
+ 0x1017
+ 0x1001
+ 0x1002
+ 0x1003
+ 0x1004
+ 0x1005
+ 0x1006
+ 0x1007
+ 0x1008
+ 0x1009
+ 0x101b
+ 0x100c
+ 0x100d
+ 0x100b
+ 0x1012
+ 0x100f
+ 0x9801
+ 0x9802
+ 0x9803
+ 0x9804
+ 0x9805
+ 0x9806
+ 0x9810
+ 0x9811
+ 0x9201
+ 0x9101
+ 0x9102
+ 0x9103
+ 0x9104
+ 0x9105
+ 0x9106
+ 0x9107
+ 0x9108
+ 0x9109
+ 0x910a
+ 0x910b
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc03: ProtectionStatus
+ dc09: DateModified
+ 3009: MP3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ 3008: MS Wave
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc03: ProtectionStatus
+ dc09: DateModified
+ ba03: Abstract Audio Album
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc81: RepresentativeSampleFormat
+ dc86: RepresentativeSampleData
+ dc83: RepresentativeSampleHeight
+ dc84: RepresentativeSampleWidth
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ dc91: UseCount
+ d901: unknown(d901)
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Owner name: Sansa e260
+ Total bytes on device: 3988194052 (3803 MB)
+ Free bytes on device: 2961216260 (2824 MB)
+ Storage description: "PPI NAND"
+ Volume label: "VOL0_Sansa_e260_00000000-00000000-0319b387-edfbf414-00000000"
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20060627
+15:57:48Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE
+type="DEVICE"><DATA><UNIQUEID
+private="1">AAAAAAAAAACHsxkDFPT77QAAAAA=</UNIQUEID><PUBLICKEY
+private="1">AR66YamKIBXU+DTH1c3Hp6N+QAMww7WW3RY1CROIPppe4olxuaFEPw==</PUBLIC
+KEY><KEYDATA>+b8713YcGKFtxiQfdPJiC56hgYY=</KEYDATA></DATA><MSDRM_SIGNATURE_V
+ALUE>2SmZjpj7YN1KbN3vVJ3P3e0Z0knd6Cwl8e4ckVIS2DbMdlnPd21OJg==</MSDRM_SIGNATU
+RE_VALUE><SYMSIGNATURE>myYX8w0j3LJ3ps9rtSFOSDb4gY4=</SYMSIGNATURE></CERTIFIC
+ATE><FALLBACK><SECURITYVERSION>2.4.104.93</SECURITYVERSION><CERTIFICATE
+private="1">AR66YamKIBXU+DTH1c3Hp6N+QAMww7WW3RY1CROIPppe4olxuaFEPwIEaF3ImuAp
+oRMryFIUqED6nkYnGenqOCshcvAMIe7siWZZFHpJZAlHGYJ3</CERTIFICATE></FALLBACK><CE
+RTIFICATE
+type="GROUP"><DATA><NAME>Sansa e200 Series</NAME>
+ <MANUFACTURER>SanDisk Corporation</MANUFACTURER>
+ <MAKE>MicroStar Internatioal</MAKE>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>n4ahYQBHQ72FRfkzvy7BruWYDSilgfObLpzG0M8SNcfDGWvJhvbrhA==
+</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lB5HvVHvcXLb0QiYfskM3Wu0eXtx9Tw0QI
+iCoKLhBIer0k3ablA4Zg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>961</
+AUTH_ID><PUBLICKEY>vjU5IwzlqSww/T8ihHxTDmbw1hVeXXG8oNVvgBBYFinhSvQ1e0gNEQ==<
+/PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3DU5omHe8sFqztXjYZ9vNr2/DkLabfYH5VI
+fWrf+XXA+RNASNDpnTg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOg
+ktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATU
+RE_VALUE>sw5Aa1lOYIBJ6TcDvUa1Dxd2HicA66aj6r/YW2pFvx9L8Oiy/zawbQ==</MSDRM_SIG
+NATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP
+DeviceID="{127324EE-2106-4B27-BA8B-F3208325037E}"
+RelationshipID="{0282FE0B-E1AE-48ED-B630-7F801A3B147B}"/>
+</DeviceInfo>
diff --git a/logs/mtp-detect-sandisk-sansa-e270.txt b/logs/mtp-detect-sandisk-sansa-e270.txt
new file mode 100644
index 0000000..a260ed8
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-e270.txt
@@ -0,0 +1,246 @@
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7420
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa e270
+ Device version: PP5022AF-05.51-S301-02.18-S301.02.18E-D, (Build 32.10)
+ Serial number: 00000000-00000000-3224b387-d925f515-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; portalplayer.com: 1.0;
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 100f: Format storage
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 1500000, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 96000, STEP 50 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 5991725124
+ FreeSpaceInBytes: 345147460
+ FreeSpaceInObjects: 4090
+ StorageDescription: PPI NAND
+ VolumeIdentifier: VOL0_Sansa_e270_00000000-00000000-3224b387-d925f515-00000000
+Special directories:
+ Default music folder: 0x00020000
+ Default playlist folder: 0x00060000
+ Default picture folder: 0x00070000
+ Default video folder: 0x00040000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa e270
+ Synchronization partner:
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070607 19:34:14Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAAAAAAAAACHsyQyFfUl2QAAAAA=</UNIQUEID><PUBLICKEY private="1">FCkWyEPukCI5BS31jSFZIjyxyGPKFZoslaf6ufe1wlu/a4V3RHHyJw==</PUBLICKEY><KEYDATA>mUERJ1Tli0xgqIHLOYg2PSiAAvI=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>hce/atRvbjgVknKf9H0OVMfg222M5fcG3JirdiF9S78jW10xPQf5Aw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>8TaelROuKRPMuILqWmCbtRIe3Ow=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.93</SECURITYVERSION><CERTIFICATE private="1">FCkWyEPukCI5BS31jSFZIjyxyGPKFZoslaf6ufe1wlu/a4V3RHHyJwIEaF1/wXbrw+RKpSIfecQ1RV8hWwQSQz1fp6sF4VhcXwDA1X2jQ9287YB8</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Sansa e200 Series</NAME>
+ <MANUFACTURER>SanDisk Corporation</MANUFACTURER>
+ <MAKE>MicroStar Internatioal</MAKE>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>n4ahYQBHQ72FRfkzvy7BruWYDSilgfObLpzG0M8SNcfDGWvJhvbrhA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lB5HvVHvcXLb0QiYfskM3Wu0eXtx9Tw0QIiCoKLhBIer0k3ablA4Zg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>961</AUTH_ID><PUBLICKEY>vjU5IwzlqSww/T8ihHxTDmbw1hVeXXG8oNVvgBBYFinhSvQ1e0gNEQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3DU5omHe8sFqztXjYZ9vNr2/DkLabfYH5VIfWrf+XXA+RNASNDpnTg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>sw5Aa1lOYIBJ6TcDvUa1Dxd2HicA66aj6r/YW2pFvx9L8Oiy/zawbQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{7C48990D-8196-4700-B113-9135FB82E08A}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK.
+
+
diff --git a/logs/mtp-detect-sandisk-sansa-e280.txt b/logs/mtp-detect-sandisk-sansa-e280.txt
new file mode 100644
index 0000000..cb96064
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-e280.txt
@@ -0,0 +1,251 @@
+This is not a Microsoft MTP descriptor...
+Device response to read device property 0xee:
+ fffffff0: 00ff ff00 001f 1e1d 1c1b 1a19 1817 1615 ................
+ 0000: 1413 1211 100f 0e0d 0c0b 0a09 0807 0605 ................
+ 0010: 0403 0201 9ece ffff ffff ffff ffff ffff ................
+ 0020: ffff ffff ffff ffff ffff ffff ffff ffff ................
+ 0030: ffff ffff ffff ffff ffff ffff ffff ffff ................
+ 0040: ffff ffff ffff ffff ffff ffff ffff ffff ................
+ 0050: ff90 0201 010b 0322 0601 0f0f 0005 0f00 ......."........
+ 0060: b40e 0310 0f00 081f 0001 1f00 370f 0022 ............7.."
+ 0070: 0f0c 0c0f 0236 0fde ee00 04b0 0002 0001 .....6..........
+ 0080: 5502 d000 04b0 0258 c348 0000 0000 0000 U......X.H......
+ 0090: 00 .
+Autodetected device "SanDisk Sansa e200" (VID=0781,PID=7420) is known.
+Connected to MTP device.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7420
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa e280
+ Device version: PP5022AF-05.51-S301-02.18-S301.02.18A-D, (Build 32.10)
+ Serial number: 00000000-00000000-3978b387-d9fdf912-00000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; portalplayer.com: 1.0;
+Supported operations:
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100c: Send object info
+ 100d: Send object
+ 100b: Delete object
+ 1012: Set object protection
+ 100f: Format storage
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc03: ProtectionStatus
+ dc09: DateModified
+ 3009: MP3
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: BuyFlag
+ 3008: MS Wave
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ dc8a: Rating
+ dc91: UseCount
+ d901: BuyFlag
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ dc03: ProtectionStatus
+ dc09: DateModified
+ ba03: Abstract Audio Album
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc81: RepresentativeSampleFormat
+ dc86: RepresentativeSampleData
+ dc83: RepresentativeSampleHeight
+ dc84: RepresentativeSampleWidth
+ b901: WMA
+ dc01: StorageID
+ dc0b: ParentObject
+ dc07: ObjectFileName
+ dc04: ObjectSize
+ dc02: ObjectFormat
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc03: ProtectionStatus
+ dc09: DateModified
+ dc8b: Track
+ dc99: OriginalReleaseDate
+ dc0a: Keywords
+ dc44: Name
+ dc46: Artist
+ dc8c: Genre
+ dc9a: AlbumName
+ dc89: Duration
+ de9a: AudioBitRate
+ de93: SampleRate
+ de94: NumberOfChannels
+ de99: AudioWAVECodec
+ dc8a: Rating
+ dc91: UseCount
+ d901: BuyFlag
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7998969924
+ FreeSpaceInBytes: 7332210756
+ FreeSpaceInObjects: 4852
+ StorageDescription: PPI NAND
+ VolumeIdentifier: VOL0_Sansa_e280_00000000-00000000-3978b387-d9fdf912-00000000
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: sansa e280
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070612 20:33:57Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAAAAAAAAACHs3g5Evn92QAAAAA=</UNIQUEID><PUBLICKEY private="1">XBfYUExu4RJLuwN77zcT2xTkvh7T7N0magJQRAYkpknJSDnq1Or2UQ==</PUBLICKEY><KEYDATA>OgqWjYuBrpsm8wc2n4glUWNh/JA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>7rvLVlnF84HOsB5zCfI8AhtflCjrHZ+4BEw6kPCVnFMKuXdAbLI1Qg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>mQM969YcrKLwCguMNsbDagLb66k=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.93</SECURITYVERSION><CERTIFICATE private="1">XBfYUExu4RJLuwN77zcT2xTkvh7T7N0magJQRAYkpknJSDnq1Or2UQIEaF15le90TVR36HoyIGeh6ETPgoy7DLyBMQ6KzvSi40OekNHTfq2eH/kJ</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Sansa e200 Series</NAME>
+ <MANUFACTURER>SanDisk Corporation</MANUFACTURER>
+ <MAKE>MicroStar Internatioal</MAKE>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>n4ahYQBHQ72FRfkzvy7BruWYDSilgfObLpzG0M8SNcfDGWvJhvbrhA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lB5HvVHvcXLb0QiYfskM3Wu0eXtx9Tw0QIiCoKLhBIer0k3ablA4Zg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>961</AUTH_ID><PUBLICKEY>vjU5IwzlqSww/T8ihHxTDmbw1hVeXXG8oNVvgBBYFinhSvQ1e0gNEQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3DU5omHe8sFqztXjYZ9vNr2/DkLabfYH5VIfWrf+XXA+RNASNDpnTg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>sw5Aa1lOYIBJ6TcDvUa1Dxd2HicA66aj6r/YW2pFvx9L8Oiy/zawbQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-sandisk-sansa-e280v2.txt b/logs/mtp-detect-sandisk-sansa-e280v2.txt
new file mode 100644
index 0000000..0d1b3f2
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-e280v2.txt
@@ -0,0 +1,593 @@
+nx@enigma:~$ mtp-detect
+libmtp version: 0.3.1
+
+Listing raw device(s)
+ Found 1 device(s):
+ SanDisk: Sansa e280 v2 (0781:7422) @ bus 0, dev 6
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7422
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 6
+ Device entry info:
+ Vendor: SanDisk
+ Vendor id: 0x0781
+ Product: Sansa e280 v2
+ Vendor id: 0x7422
+ Device flags: 0x00000846
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa e260
+ Device version: v03.01.16F
+ Serial number: 340BD1173804B5940000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0; microsoft.com/WMDRMND: 1.0; microsoft.com/AAVT: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4005
+ 0x4004
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0xd100: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 300a: MS AVI
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 220, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type enumeration: 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 8, 16, 32, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 64000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 672000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 20000, 30000, GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ b901: WMA
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b904: Audible.com Codec
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14343, 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4072701952
+ FreeSpaceInBytes: 3426516992
+ FreeSpaceInObjects: 4294967277
+ StorageDescription: Internal Memory
+ VolumeIdentifier: 340BD1173804B594
+Special directories:
+ Default music folder: 0x00000001
+ Default playlist folder: 0x00000004
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000003
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa e260
+ Synchronization partner: Unknown Partner
+ Battery level 0 of 100 (0%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ GIF bitmap file
+ Microsoft Windows Media Audio
+ Audible.com Audio Codec
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080228 14:09:47Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MwA0ADAAQgBEADEAMQA3ADMAOAAwADQAQgA1ADkANAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAA==</UNIQUEID><PUBLICKEY private="1">0dc5PXkha7YnGxsUsFDhevW3M2rveZxsAz5ywUZNapQ74zNrNN6AHQ==</PUBLICKEY><KEYDATA>zRmTbWGCMg9tQd3taXfg4+3zoCA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>It+x8XO0q+EysuoUjAQGwcEkZRmoFxgCKvDtiXJTx7bj9OEaZwI+Ig==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>UoKlcwHrBkXXHD1CbF8qhP4wW8w=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.205</SECURITYVERSION><CERTIFICATE private="1">0dc5PXkha7YnGxsUsFDhevW3M2rveZxsAz5ywUZNapQ74zNrNN6AHQIEbM3NAJ3rImyQ7+R/U/UrPMbTV7miePz1G65DNP9tqpYq59uYQoyj1N4U</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>E200</NAME>
+ <MANUFACTURER>SanDisk Corporation</MANUFACTURER>
+ <MAKE>Sansa</MAKE>
+ <MODEL>E200P</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>3</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>3</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+
+ <SUPPORT_REVOCATION>
+ <GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID>
+ </SUPPORT_REVOCATION>
+
+ </FEATURES>
+
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>XQaSYnO0q4fhEBoJBRc4i7pemByelAP8UEvmua6zdyyNXBBQ8aQFfg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>tVslC8Xk3ePOw+hq//E+3q+STnXOlKN5tZW/cfIrUmhqmcko7gbPKw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2097</AUTH_ID><PUBLICKEY>3JwjYFj2GuZrhCAshbYFNjgb9g2pl2j0nR8PR2rqyk4iIARZrN4GOQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>xaYnshNPReVkJeA0gyuUemPw72V1mM9j+Hu9o3FqpKRiILEV1+rbLw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>wRwKiYFzS1F9A2myQgSq2PJXUGSIrwzszT+d0MIcZTBuPUm4eYH6QQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
+nx@enigma:~$ mtp-files
+libmtp version: 0.3.1
+
+PTP: Opening session
+mtp-files: Successfully connected
+Listing File Information on Device with name: Sansa e260
+File ID: 17
+ Filename: DevIcon.fil
+ File size 194480 (0x000000000002F7B0) bytes
+ Parent ID: 0
+ Storage ID: 0x00010001
+ Filetype: Undefined filetype
+File ID: 16
+ Filename: FM101_5-022508-010609.WAV
+ File size 7702572 (0x000000000075882C) bytes
+ Parent ID: 7
+ Storage ID: 0x00010001
+ Filetype: RIFF WAVE file
+File ID: 12
+ Filename: capabilities.xml
+ File size 926 (0x000000000000039E) bytes
+ Parent ID: 9
+ Storage ID: 0x00010001
+ Filetype: Undefined filetype
+File ID: 13
+ Filename: radiopc.txt
+ File size 0 (0x0000000000000000) bytes
+ Parent ID: 9
+ Storage ID: 0x00010001
+ Filetype: Undefined filetype
+File ID: 14
+ Filename: ratings.dat
+ File size 0 (0x0000000000000000) bytes
+ Parent ID: 9
+ Storage ID: 0x00010001
+ Filetype: Undefined filetype
+File ID: 15
+ Filename: addtolibrary.dat
+ File size 0 (0x0000000000000000) bytes
+ Parent ID: 9
+ Storage ID: 0x00010001
+ Filetype: Undefined filetype
+PTP: Closing session
+OK.
+nx@enigma:~$ mtp-folders
+Attempting to connect device(s)
+PTP: Opening session
+mtp-folders: Successfully connected
+Friendly name: Sansa e260
+1 Music
+2 Photo
+3 Video
+4 Playlists
+5 Record
+7 FM
+8 Voice
+6 Service
+9 Rhapsody
+10 Artist
+11 Playlists
+PTP: Closing session
+OK.
+nx@enigma:~$ mtp-tracks
+Attempting to connect device(s)
+PTP: Opening session
+mtp-tracks: Successfully connected
+Friendly name: Sansa e260
+Track ID: 16
+ Title: FM101_5-022508-010609
+ Origfilename: FM101_5-022508-010609.WAV
+ Track number: 0
+ Duration: 0 milliseconds
+ File size 7702572 bytes
+ Filetype: RIFF WAVE file
+PTP: Closing session
+OK.
+nx@enigma:~$ mtp-sendfile test.txt
+libmtp version: 0.3.1
+
+PTP: Opening session
+usage: sendfile <local filename> <remote filename>
+PTP: Closing session
+nx@enigma:~$ mtp-sendfile test.txt 1.txt
+libmtp version: 0.3.1
+
+PTP: Opening session
+Sending test.txt to 1.txt
+type:txt,41
+Sending file...
+Progress: 16 of 16 (100%)
+New file ID: 18
+PTP: Closing session
+nx@enigma:~$ mtp-sendtr Desktop/1.mp3
+libmtp version: 0.3.1
+
+PTP: Opening session
+You need to pass a filename and destination.
+usage: sendtr [ -D debuglvl ] [ -q ]
+-t <title> -a <artist> -A <Album artist> -w <writer or composer>
+ -l <album> -c <codec> -g <genre> -n <track number> -y <year>
+ -d <duration in seconds> <local path> <remote path>
+(-q means the program will not ask for missing information.)
+Desktop/1.mp3,(null),(null),(null),(null),(null),(null),(null),00,0
+Sending track Desktop/1.mp3 to (null)
+type:mp3,1
+Title> mytitle
+Album> myalbum
+Album artist> myaa
+Artist> myartist
+Writer or Composer> mycomp
+Genre> mygenre
+Track number> myno
+Year> 1970
+Length> 3:00
+Sending track:
+Codec: ISO MPEG-1 Audio Layer 3
+Title: mytitle
+Album: myalbum
+Album artist: myaa
+Artist: myartist
+Writer or Composer: mycomp
+Genre: mygenre
+Year: 1970
+Length: 3
+Sending track...
+Progress: 4239142 of 4239142 (100%)
+New track ID: 19
+Album doesn't exist: creating...
+Error creating or updating album.
+Error 2: PTP Layer error a801: set_object_string(): could not set object string.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 1: create_new_abstract_list(): could not set entity artist.
+PTP: Closing session
+ERROR: Could not close session!
+
diff --git a/logs/mtp-detect-sandisk-sansa-express.txt b/logs/mtp-detect-sandisk-sansa-express.txt
new file mode 100644
index 0000000..913e631
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-express.txt
@@ -0,0 +1,397 @@
+Potential MTP Device with VendorID:0781 and ProductID:7460 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+PTP: Opening session
+libmtp version: 0.1.5
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7460
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000007
+Device info:
+ Manufacturer: Sandisk
+ Model: Sansa Express
+ Device version: 01.00.15A2
+ Serial number: 0002FA9380574D150002FA9380510D97
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0; audible.com: 1.0
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get type of playlists that are allowed to be transfered
+ 97f1: Unknown(97f1)
+ 97f2: Unknown(97f2)
+ 97f3: Unknown(97f3)
+ 97f4: Unknown(97f4)
+ 1010: Reset device
+Events supported:
+ 0x4004: Store added
+ 0x4005: Store removed
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Device Friendly Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd405: Device Icon
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 4300000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 80, 85, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 2304000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 17, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353, READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 220, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 220, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX 24050, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 5000, MAX 385000, STEP 1 READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, READ ONLY
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form GET/SET
+ da01: unknown(da01) STRING data type READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, GET/SET
+ da04: unknown(da04) UINT128 data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1023002624
+ FreeSpaceInBytes: 132071424
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Memory
+ VolumeIdentifier: 0002FA9380574D150002FA9380510D97
+Special directories:
+ Default music folder: 0x00000066
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa Express
+ Synchronization partner: Sansa Express
+ Battery level 129 of 129 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ JPEG file
+ GIF bitmap file
+ BMP bitmap file
+ Audible.com Audio Codec
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-sandisk-sansa-fuze.txt b/logs/mtp-detect-sandisk-sansa-fuze.txt
new file mode 100644
index 0000000..afcf846
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-fuze.txt
@@ -0,0 +1,451 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+Found 1 device(s):
+ SanDisk: Sansa Fuze (0781:74c0) @ bus 0, dev 21
+Attempting to connect device(s)
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 74c0
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000041
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa Fuze 8GB
+ Device version: v01.01.11A
+ Serial number: 500DD6017699B4910000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0; microsoft.com/WMPPD:10.0microsoft.com/WMDRMND: 1.0; microsoft.com/AAVT: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4005
+ 0x4004
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0xd100: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 300a: MS AVI
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1048576, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 44100, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 2, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 96000, MAX 128000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 900000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 20000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 10, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ b901: WMA
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b904: Audible.com Codec
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14343, 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 8181055488
+ FreeSpaceInBytes: 2332852224
+ FreeSpaceInObjects: 4294965758
+ StorageDescription: Internal Memory
+ VolumeIdentifier: 500DD6017699B491
+Special directories:
+ Default music folder: 0x00000003
+ Default playlist folder: 0x00000606
+ Default picture folder: 0x00000000
+ Default video folder: 0x000005fc
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000007
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa Fuze 8GB
+ Synchronization partner: Unknown Partner
+ Battery level 65 of 100 (65%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ GIF bitmap file
+ Microsoft Windows Media Audio
+ Audible.com Audio Codec
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080527 17:06:17Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">NQAwADAARABEADYAMAAxADcANgA5ADkAQgA0ADkAMQAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAA==</UNIQUEID><PUBLICKEY private="1">bwrh9kn9aelh5BuOzmRAExqP5nMfSqF3cHnVosRv75A3xbmsEsiORQ==</PUBLICKEY><KEYDATA>HqQLCCGWCgy/FIG9MmRKWyn+fq4=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>TA4jdk5QuFrtvGFbONopF1It/SGVnIZFQrPWyThr20cN2Y+ySxLkMA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>kn7EYdE2qdAFoxe1ph0yH7QTC+U=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.109.253</SECURITYVERSION><CERTIFICATE private="1">bwrh9kn9aelh5BuOzmRAExqP5nMfSqF3cHnVosRv75A3xbmsEsiORQIEbf2+BGZUFdnuvrqv+yOJ/9MAQDA0PkJ4vI4INfIUt7pHbCK4WaXFADZR</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Coda</NAME>
+ <MANUFACTURER>SanDisk Corporation</MANUFACTURER>
+ <MAKE>Sansa</MAKE>
+ <MODEL>Sansa Coda</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+
+ <SUPPORT_REVOCATION>
+ <GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID>
+ </SUPPORT_REVOCATION>
+
+ </FEATURES>
+
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>9Uf63yDlWzHH782A1WZ4LjqK+gZZUQjq6/7+Vn0HqhNQXHY+Qko2gA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>19pYJjzpra/BhIdWV3711o4VrmCd+m2ZReTc1PBRk7VAAmNkSY8ABg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2401</AUTH_ID><PUBLICKEY>3JwjYFj2GuZrhCAshbYFNjgb9g2pl2j0nR8PR2rqyk4iIARZrN4GOQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>e4OK/kbZXtpF1NB2f8/5OOuZmi4azIcBqar41AFC0pOaM+ZD091gZg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>zVXs6kIIvrG7d8DrLkFZVAkv5Bs/TaEyMBh27qQ9XlYCMGtiiAurUw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
diff --git a/logs/mtp-detect-sandisk-sansa-fuzev2.txt b/logs/mtp-detect-sandisk-sansa-fuzev2.txt
new file mode 100644
index 0000000..57df52b
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-fuzev2.txt
@@ -0,0 +1,516 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0781:74c2 @ bus 0, dev 3
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 74c2
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0781
+ Product: (null)
+ Vendor id: 0x74c2
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: SanDisk
+ Model: Sansa Fuze 8GB
+ Device version: v02.01.17A
+ Serial number: 5513F4054724B6A80000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1; audible.com: 1.0; microsoft.com/WMDRMND: 1.0; microsoft.com/AAVT: 1.0; microsoft.com: WMPPD10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1012: Set object protection
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+ 9201: Report Added/Deleted Items
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4005
+ 0x4004
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0x5002: Functional Mode
+ 0xd100: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 17, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 300a: MS AVI
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 224, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 176, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 1048576, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 44100, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 2, GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 0, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 96000, MAX 128000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 0, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 900000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type enumeration: 20000, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 10, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ 300c: ASF
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ 3801: JPEG
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ b301: Unknown(b301)
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b901: WMA
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b902: OGG
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b904: Audible.com Codec
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, GET/SET
+ da01: unknown(da01) STRING data type GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ b906: FLAC
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 134217727, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de92: BitRateType UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 25 GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 0, 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ ba11: M3U Playlist
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7908491264
+ FreeSpaceInBytes: 752779264
+ FreeSpaceInObjects: 14635
+ StorageDescription: Internal Memory
+ VolumeIdentifier: 5513F4054724B6A8
+Special directories:
+ Default music folder: 0x00000001
+ Default playlist folder: 0x00000004
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000003
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000019
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa Fuze 8GB
+ Synchronization partner: {A8D50450-5DEA-4884-BA73-CF076D2D84F4}
+ Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Audible.com Audio Codec
+ Free Lossless Audio Codec (FLAC)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071117 10:15:56Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+
+
diff --git a/logs/mtp-detect-sandisk-sansa-m240.txt b/logs/mtp-detect-sandisk-sansa-m240.txt
new file mode 100644
index 0000000..ca2a01f
--- /dev/null
+++ b/logs/mtp-detect-sandisk-sansa-m240.txt
@@ -0,0 +1,284 @@
+$ examples/detect
+libmtp version: 0.2.2
+
+Attempting to connect device(s)
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0781
+ idProduct: 7400
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000043
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: SanDisk Corporation
+ Model: Sansa m2xx
+ Device version: Version 1.3.0A
+ Serial number: 0781025AA0030078
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;audible.com: 1.0;
+ Detected object size: 32 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd100: Unknown property
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b904: Audible.com Codec
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ da01: unknown(da01) STRING data type GET/SET
+ da04: unknown(da04) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1040941056
+ FreeSpaceInBytes: 173917307
+ FreeSpaceInObjects: 3525
+ StorageDescription: TCNAND0
+ VolumeIdentifier: 0781025AA0030078
+Special directories:
+ Default music folder: 0x20000008
+ Default playlist folder: 0x2000000b
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Sansa m240
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071102
+03:48:38Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">q6ytrq+goaKjpKWmp6ipqgoKCgo=</UNIQUEID><PUBLICKEY
+private="1">lYA9qYhXaaH+urr5qkoCvAnA4je8WnN1Tyg/gU8HNFXccCGNQv5CNA==</PUBLICKEY><KEYDATA>q28RvEUhvZ0Kp7ojJnSQCe2uGOs=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>yIl7+mzTRJmmd8K4C9uK//w9hXvUFyi1c9nyx92T/A7uXy7cVwEzIA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>JFYhahWHqdIvtzaly2gkWUtRj/M=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.109</SECURITYVERSION><CERTIFICATE
+private="1">lYA9qYhXaaH+urr5qkoCvAnA4je8WnN1Tyg/gU8HNFXccCGNQv5CNAIEZm3rQkh5OGOLVt1xu3CqhOZ+9tUuW8Va/geD3eoTNjTOctPm0xysr1UY</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>SANDISK</NAME><MANUFACTURER>DnC
+Tech</MANUFACTURER><MAKE>DnC
+Tech</MAKE><DISTRIBUTOR>WideWorldImporters</DISTRIBUTOR><MODEL>Sansa
+m200</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>0</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>lQk10G9w1mPBGE0Z9edXxUUqaXISl3W619pekqQEwh8rgLhZTHHRPQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>RVBIEdZTtBlur/c6QZ/UY3U7thitRY1SPdhvf7EhGpJWUPZQXZR8Cg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>465</AUTH_ID><PUBLICKEY>mJCkdIQQQIfEK7cGBY8RUf24ewwE4FAtxXZ3kWAMiqPatkZnb9TYMw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>X2lDpZFZorlvqeq+L2Wb6Qwq/hza5Qu/qIDfRxDGpT8mvPm8eacQUg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dC+gyydiIowBnJ8vNO56gz5VsxLQARvjwFpjhZOwSuD5w1OD/4VwQg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{F260602D-ACED-4ECC-9458-ACD2E0B2884D}"
+RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sirius-stiletto2.txt b/logs/mtp-detect-sirius-stiletto2.txt
new file mode 100644
index 0000000..0efdfd9
--- /dev/null
+++ b/logs/mtp-detect-sirius-stiletto2.txt
@@ -0,0 +1,254 @@
+libmtp version: 0.3.0
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 18f6
+ idProduct: 0110
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000001
+Configuration 0, interface 0, altsetting 0:
+ Interface description contains the string "MTP"
+ Device recognized as MTP, no further probing.
+Device info:
+ Manufacturer: Sirius
+ Model: Stiletto 2
+ Device version: 1.0
+ Serial number: 0082000b1054058355580184020072ec
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9805: Get object property list
+ 9804: Set object property value
+ 9807: Get interdependent property description
+ 4001: Unknown (4001)
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9806: Set object property list
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b104: Unknown(b104)
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ b901: WMA
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc48: Description array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc49: URLReference STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 15918, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 384000, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc8f: SubscriptionContentID STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3000: Undefined Type
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3001: Association/Directory
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ 3008: MS Wave
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8c: Genre STRING data type GET/SET
+ dc96: Composer STRING data type READ ONLY
+ 3009: MP3
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 9, 50, 80, 85, 352, 353, 354, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc8a: Rating UINT16 data type range: MIN 1, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc96: Composer STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ 3801: JPEG
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, 32770, 32771, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc87: Width UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc88: Height UINT32 data type ANY 32BIT VALUE form GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 786490736
+ FreeSpaceInBytes: 1942896
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Memory
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x01000000
+ Default playlist folder: 0x01000003
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Stiletto 2
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ JPEG file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080412
+01:41:54Z#</VALUE><FLAG>DRM_CLK_NEEDS_REFRESH</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">MDA4MjAwMGIxMDU0MDU4MzU1NTgwMTg0MDIwMDcyZWM=</UNIQUEID><PUBLICKEY
+private="1">Ef9gt/+M0PMXJhpYgK6HoJ/20DyJ/HHAG3d64+pxiMmNCwf9Oj2EOA==</PUBLICKEY><KEYDATA>WuK3oQPAqaefrnCMi/6xIfsrcuo=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>c8IXWmqRilDx0XHV8xKXHFaUdW6BNbmppKK7xL+dftzGBt6g8WgFfQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>jnjYEjB5UV2Ry6EI+HoPIE0uBAo=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.89</SECURITYVERSION><CERTIFICATE
+private="1">Ef9gt/+M0PMXJhpYgK6HoJ/20DyJ/HHAG3d64+pxiMmNCwf9Oj2EOAIEbFl5weGVKFKBvp4iKwg8QrkeOjg9RojVO5aRxVDDAKMONn+VDb/svCcF</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Stiletto 2</NAME>
+ <MANUFACTURER>Zing Systems, Inc.</MANUFACTURER>
+ <MAKE>Sirius</MAKE>
+ <DISTRIBUTOR>Sirius Satellite Radio, Inc.</DISTRIBUTOR>
+ <MODEL>SL2</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>2</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>lC3XoSJVphgaNIcvbTOf56btAIm1RNkvSUutdWiXXvx1FStZEj/MKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>CfZATKRGLAZ4NTqQWYwCmiYMmBKrdwldaOcLfl0Zg+Vq8esSdYQkFQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1981</AUTH_ID><PUBLICKEY>btGasWaE7LqohJ2zfck00MzmG0/uy+56ploHWJnDmuFrZzn9oOswbw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>pNebugeKuigfNG74TRE5Zcs+bz9NvDCn5O8LxS3S24xaC4U4E86nBA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>TkTu6iE2JI69l3qD8z3BDroLrgd70NZzCVxnSrq5FHGkny0kKxK0Jg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-slacker-pmp.txt b/logs/mtp-detect-slacker-pmp.txt
new file mode 100644
index 0000000..c91639f
--- /dev/null
+++ b/logs/mtp-detect-slacker-pmp.txt
@@ -0,0 +1,163 @@
+libmtp version: 0.3.6
+
+Listing raw device(s)
+Device 0 (VID=1bdc and PID=fabf) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development
+team
+ Found 1 device(s):
+ 1bdc:fabf @ bus 0, dev 14
+Attempting to connect device(s)
+Error 7: Unable to read Maximum Battery Level for this device even though
+the device supposedly supports this functionality
+Error 1: Get Storage information failed.
+Error 2: PTP Layer error 02fe: get_all_metadata_fast(): could not get
+proplist of all objects.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: get_handles_recursively(): could not get
+object handles.
+Error 2: (Look this up in ptp.h for an explanation.)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1bdc
+ idProduct: fabf
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 14
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x1bdc
+ Product: (null)
+ Vendor id: 0xfabf
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0d00 ..
+Microsoft device response to control message 1, CMD 0x0d:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x0d:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Slacker Inc.
+ Model: Slacker Portable Media Player
+ Device version: V1.0
+ Serial number: 00000000000000000601f00e2067d2d6
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;
+microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0; slacker.com/PRD:
+1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100c: Send object info
+ 100d: Send object
+ 1012: Set object protection
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9808: Send object property list
+ 100b: Delete object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9802: Get object property description
+ 9810: Get object references
+ 9811: Set object references
+ 9801: Get object properties supported
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9701: Unknown (9701)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd103: Revocation Info
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ 3001: Association/Directory
+ 3004: Text
+ 3008: MS Wave
+ 3009: MP3
+ 300a: MS AVI
+ 300c: ASF
+ 3801: JPEG
+ 3804: BMP
+ 3808: JFIF
+ b901: WMA
+ b802: Firmware
+ b903: AAC
+ b981: WMV
+ b982: MP4
+ b983: MP2
+ 300b: MPEG
+ ba03: Abstract Audio Album
+ ba05: Abstract Audio Video Playlist
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ Text file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ JFIF file
+ Microsoft Windows Media Audio
+ Firmware file
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ ISO MPEG-1 Audio Layer 2
+ MPEG video stream
+Unable to acquire device certificate, perhaps this device does not support
+this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to
+get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+ERROR: Could not close session!
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-a728b.txt b/logs/mtp-detect-sony-walkman-nwz-a728b.txt
new file mode 100644
index 0000000..6e8e1f7
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-a728b.txt
@@ -0,0 +1,384 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 035c
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-A728B
+ Device version: 1.00
+ Serial number: 00000000000000000000000005000668
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ de91: TotalBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 2, MAX 320, STEP 2 GET/SET
+ dc88: Height UINT32 data type range: MIN 2, MAX 240, STEP 2 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844313677, 875967048, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7841251328
+ FreeSpaceInBytes: 6869123072
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005000668
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x0000002e
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Walkman Niek
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080325
+16:36:14Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">AAABBwgAAQADAAUAAAAGBgg=</UNIQUEID><PUBLICKEY
+private="1">+kx6WYb8C+VOrwEwk6W4GUaD4TSgjo7Sh+zRfoQt7+hxEThyasOzaA==</PUBLICKEY><KEYDATA>/9MoW9AZRZG2qZ3rcJ4DcOBQLuE=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>BAZ0L22X0FXQt+JK3fbrY8baukojL/hanxdY6F4ahFVqVFzpLCO6EQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>szUXXaYecJPSoHodC+AIp5RqAvs=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.109.147</SECURITYVERSION><CERTIFICATE
+private="1">+kx6WYb8C+VOrwEwk6W4GUaD4TSgjo7Sh+zRfoQt7+hxEThyasOzaAIEbZPzA6I+L5b59Zxbjph9d5o0nF2RR0mJd2YSZyNYxspNPZIvxyyNrhNm</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>iHqdWxP5k6/sD3qEDzyJTnLytjRwoY8CRbqotYCTfco+83NpiPbHEw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Pqk4gIiQMxJe00NV8x17I0ch1zNZowLamAXF/MwHVjbOuLqRw+Xubg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2295</AUTH_ID><PUBLICKEY>ZFX5WVjT8PkdII/6rjcqbZCBECOUW52umeXUAM//Z7MwKDQgA7WWTg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>95vvO7HP2bmkiBmekqEq1qG4pTNiBrHcsO4yqJSWfHzNUkeB5tZBWQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>dsXO0Vh44n9FGIcOrGxAJz2Om3iU8ejBN448ZS55BQ383gaP9DLmYw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{69B31091-4197-4631-A029-E4113DDDC112}"
+RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-a816.txt b/logs/mtp-detect-sony-walkman-nwz-a816.txt
new file mode 100644
index 0000000..7f2e030
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-a816.txt
@@ -0,0 +1,315 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 0325
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-A816
+ Device version: 1.00
+ Serial number: 00000000000000000000000005106125
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3840933888
+ FreeSpaceInBytes: 3796303872
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005106125
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070228
+03:58:37Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">AAABBAkHCQUFAwUBAAYBAgU=</UNIQUEID><PUBLICKEY
+private="1">UzQ0VQykaeoQPrOgTYfXYXV1hmODVfwgyv713vldhWE4iX9GMeWneA==</PUBLICKEY><KEYDATA>BRDYsH9AiuTaa9BulaySDjA5bM4=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>5KJTDg8P5BMPjeLQ2cC9w3MufyWLSUAhubTlYDCWV4nsOHmomahHMA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>BwkgCELkJlZjJ1nLoiPPp9yFeqM=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.187</SECURITYVERSION><CERTIFICATE
+private="1">UzQ0VQykaeoQPrOgTYfXYXV1hmODVfwgyv713vldhWE4iX9GMeWneAIEa7vFjBmH0DBgueM+PS22CbvV/BxgQOFHdnNy8KMWhSXz6ydhQwVkSGg+</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>RDfmmYew6SH8Gd6QaIIqXJCVqgLPn1sPxTc71zYTDvAqbUzRuoZ4TA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>raN1NS4SI+p9Zg32AalcPDAsIHvsntZiofod4RZRW5iXeWZ+qthFUw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1823</AUTH_ID><PUBLICKEY>Ha/toGqNBmuSLvLgRNoGmHsuxS4n2PZY/WcbPkI1aY2Pq+cZ8RVSeA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lkcNZ5AC4rykVJcjFp1oRO7F4WxtVFmeMKrzPkb1zxhH9f8qhZQjHg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>vB+7tAF0Ee5jbWMEsKWuUqidmBpmW/nzr1TaaYdLTfwD/dN0IbE4gw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-a818.txt b/logs/mtp-detect-sony-walkman-nwz-a818.txt
new file mode 100644
index 0000000..af2f881
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-a818.txt
@@ -0,0 +1,299 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 0325
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-A818
+ Device version: 1.00
+ Serial number: 00000000000000000000000007611039
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7841251328
+ FreeSpaceInBytes: 4200923136
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000007611039
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000022
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000012
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN YVES
+ Synchronization partner: {106FE770-DC0F-4BF5-91B1-3463D920955F}
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080203 14:45:37Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBAkHCQYFBQcGAQEAAwk=</UNIQUEID><PUBLICKEY private="1">w3wCKNpn5fvnIdXk7rHi4vigIC+je5AT61n1DcnNPR0LcouuIMj7bw==</PUBLICKEY><KEYDATA>wg2M13EXf9MtmP4GAMKo2edH0Mc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>rD10JykcqYWcKiEg4E5upINUZ1ei0olicbP3Rqe1plKoWiPo3RnSiA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>sxi7FivGMxv4BM21AIuxyBVkf+o=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.187</SECURITYVERSION><CERTIFICATE private="1">w3wCKNpn5fvnIdXk7rHi4vigIC+je5AT61n1DcnNPR0LcouuIMj7bwIEa7tTS7so1sFaT76aCPyWVKManCmbHsCkvzMfhcdK8LhyxnpgKPY6+e0R</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>RDfmmYew6SH8Gd6QaIIqXJCVqgLPn1sPxTc71zYTDvAqbUzRuoZ4TA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>raN1NS4SI+p9Zg32AalcPDAsIHvsntZiofod4RZRW5iXeWZ+qthFUw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1823</AUTH_ID><PUBLICKEY>Ha/toGqNBmuSLvLgRNoGmHsuxS4n2PZY/WcbPkI1aY2Pq+cZ8RVSeA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lkcNZ5AC4rykVJcjFp1oRO7F4WxtVFmeMKrzPkb1zxhH9f8qhZQjHg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>vB+7tAF0Ee5jbWMEsKWuUqidmBpmW/nzr1TaaYdLTfwD/dN0IbE4gw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{702F7CF6-E57A-4C79-99D2-08F487E80472}" RelationshipID="{106FE770-DC0F-4BF5-91B1-3463D920955F}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-a828.txt b/logs/mtp-detect-sony-walkman-nwz-a828.txt
new file mode 100644
index 0000000..0821739
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-a828.txt
@@ -0,0 +1,375 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Device 1 (VID=054c and PID=035b) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 035b
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-A828
+ Device version: 1.01
+ Serial number: 00000000000000000000000005006237
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ de91: TotalBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 2, MAX 320, STEP 2 GET/SET
+ dc88: Height UINT32 data type range: MIN 2, MAX 240, STEP 2 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844313677, 875967048, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7841251328
+ FreeSpaceInBytes: 5191303168
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005006237
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WM
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080220 16:35:18Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwgAAAQGAAUAAAYCAwc=</UNIQUEID><PUBLICKEY private="1">WsmGmOkopx9PDWY4YPRx4JSfUGtA3hu+ezuhjEgMcSo3bwLBnk+2Dg==</PUBLICKEY><KEYDATA>NrfvUhOT0BXUSR8JkXBeB2gHQrI=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>hpojgVOlLvLFhg2VCi9UPG/JHT15kwGM7S3EmykVegoXcD1WRkYYYQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>SySHiynYeyRhuogHSKuj7n2IlfE=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.227</SECURITYVERSION><CERTIFICATE private="1">WsmGmOkopx9PDWY4YPRx4JSfUGtA3hu+ezuhjEgMcSo3bwLBnk+2DgIEbON0BXnca8hUoMLKv39D1u409pnhefwoWzf5rrmPemW42QVXTYAJsyVb</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>htgYujaMGhtMzfKI3yR5BxCIPkHUb6G7eNK4ZHxrFOCNp613AFIYVg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YIeYcjegEgGVhz5Iv1mkBubWqB5eZuzvdJ3JxguMnEd8XwJa5c5CIw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2119</AUTH_ID><PUBLICKEY>5QaFNU7sWDXdDgaVc0XQZ8BlzhQ7hmmlkoPy75/cTh4iRwNo/9HyNg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kp+pasj2iQ9cd61aC0rU94DIzYXEl9R1OtbXW9b9+O6CsLaJ/XR+Lw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hnZ59DT2amE3Rh2jYT0okQs7y1bz1qsbEXGijccmFB9Ey6o82HvuLA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-a829.txt b/logs/mtp-detect-sony-walkman-nwz-a829.txt
new file mode 100644
index 0000000..3911275
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-a829.txt
@@ -0,0 +1,375 @@
+$ sudo mtp-detect
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 035b
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-A829
+ Device version: 1.01
+ Serial number: 00000000000000000000000005003970
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ de91: TotalBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 2, MAX 320, STEP 2 GET/SET
+ dc88: Height UINT32 data type range: MIN 2, MAX 240, STEP 2 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844313677, 875967048, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 15842115584
+ FreeSpaceInBytes: 7230652416
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005003970
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080228 10:39:57Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwgAAAkDAAUAAAMJBwA=</UNIQUEID><PUBLICKEY private="1">8F6niZgPW+SQOS13sEcvZNYHRx7P5TO2HUZaUnF6Ba1kxf4QHtr9hA==</PUBLICKEY><KEYDATA>AVH2jPcQdTot/c5QfY3W3DdkKAc=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>LfSFK91Gp/56spZ+I9uMqgx2wE1QcJpHuOjTexkaVAkmuof0+GxkBw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>65OBDiORMgYQ5jlRH+n4WqymXMU=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.227</SECURITYVERSION><CERTIFICATE private="1">8F6niZgPW+SQOS13sEcvZNYHRx7P5TO2HUZaUnF6Ba1kxf4QHtr9hAIEbOMSKBnJKA0joeaHOdwxeMDTA1gSY3BfGMhe/ZfP8d2CJ2QNN0ypcHtv</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>htgYujaMGhtMzfKI3yR5BxCIPkHUb6G7eNK4ZHxrFOCNp613AFIYVg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YIeYcjegEgGVhz5Iv1mkBubWqB5eZuzvdJ3JxguMnEd8XwJa5c5CIw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2119</AUTH_ID><PUBLICKEY>5QaFNU7sWDXdDgaVc0XQZ8BlzhQ7hmmlkoPy75/cTh4iRwNo/9HyNg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kp+pasj2iQ9cd61aC0rU94DIzYXEl9R1OtbXW9b9+O6CsLaJ/XR+Lw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hnZ59DT2amE3Rh2jYT0okQs7y1bz1qsbEXGijccmFB9Ey6o82HvuLA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
+
diff --git a/logs/mtp-detect-sony-walkman-nwz-e436f.txt b/logs/mtp-detect-sony-walkman-nwz-e436f.txt
new file mode 100644
index 0000000..a593d16
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-e436f.txt
@@ -0,0 +1,483 @@
+libmtp version: 1.0.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ Sony: Walkman NWZ-E436F (054c:0385) @ bus 0, dev 15
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 0385
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 15
+ Device entry info:
+ Vendor: Sony
+ Vendor id: 0x054c
+ Product: Walkman NWZ-E436F
+ Vendor id: 0x0385
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-E436F
+ Device version: 1.02
+ Serial number: 00000000000000000000000005453003
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; microsoft.com/WMPPD: 11.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9203: Get transferable playlist types
+ 97f1: Unknown (97f1)
+ 97f2: Unknown (97f2)
+ 97f3: Unknown (97f3)
+ 97f4: Unknown (97f4)
+ 97f5: Unknown (97f5)
+ 1010: Reset device
+ 1012: Set object protection
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd405: Device Icon
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 1, MAX 4300000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 80, 85, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 2304000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 1, 2, 17, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ b901: WMA
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ b903: AAC
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 41222, GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ 300c: ASF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 0, MAX 30050, STEP 1 GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 861293911, GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 5000, MAX 768010, STEP 1 READ ONLY
+ de97: Scan Depth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ 3001: Association/Directory
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc05: Association Type UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ 3801: JPEG
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc97: Effective Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ ba03: Abstract Audio Album
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ b981: WMV
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 1198010, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 352, 353, GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 0, MAX 30050, STEP 1 GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, 861293911, GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 5000, MAX 768010, STEP 1 READ ONLY
+ de97: Scan Depth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ b982: MP4
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: Album Artist STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: Audio WAVE Codec UINT32 data type enumeration: 0, 80, 85, 41222, GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc09: Date Modified STRING data type DATETIME FORM GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ d901: Buy flag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc92: Skip Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ de9e: Key Frame Distance UINT32 data type range: MIN 0, MAX 15000, STEP 1 GET/SET
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 0, MAX 30050, STEP 1 GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 0, GET/SET
+ de9c: Video Bit Rate UINT32 data type range: MIN 5000, MAX 768010, STEP 1 READ ONLY
+ de97: Scan Depth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, GET/SET
+ dea1: Encoding Profile STRING data type GET/SET
+ dc84: Representative Sample Width UINT32 data type
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, 14340, 14343, GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ b907: Unknown(b907)
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: Date Created STRING data type DATETIME FORM GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc42: Sync ID STRING data type GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 3930587136
+ FreeSpaceInBytes: 2832629760
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005453003
+Special directories:
+ Default music folder: 0x0001006e
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000086
+ Default video folder: 0x00000067
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Maryanne
+ Synchronization partner: WALKMAN NWZ-E436F
+ Battery level 96 of 100 (96%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ Abstract Playlist file
+ JPEG file
+ Abstract Album file
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Emphasis)
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+
+
+^X^C
diff --git a/logs/mtp-detect-sony-walkman-nwz-s516.txt b/logs/mtp-detect-sony-walkman-nwz-s516.txt
new file mode 100644
index 0000000..1d7171a
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-s516.txt
@@ -0,0 +1,370 @@
+Device 1 (VID=054c and PID=0326) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 0326
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-S516
+ Device version: 1.00
+ Serial number: 00000000000000000000000005011742
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown(9401)
+ 9402: Unknown(9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc46: Artist STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000,
+16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400,
+192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200,
+1536000, READ ONLY
+3009: MP3
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc46: Artist STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000,
+32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000,
+STEP 1 READ ONLY
+300c: ASF
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+3801: JPEG
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ
+ONLY
+dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ
+ONLY
+b802: Firmware
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+b901: WMA
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc46: Artist STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc99: OriginalReleaseDate STRING data type GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000,
+22050, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 352, 353,
+GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP
+1 READ ONLY
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+b982: MP4
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+b984: 3GP
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ba03: Abstract Audio Album
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337,
+READ ONLY
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX
+65536, STEP 1 READ ONLY
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX
+200, STEP 1 READ ONLY
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX
+200, STEP 1 READ ONLY
+dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT
+VALUE form GET/SET
+Unknown OPFF type 6
+dc8c: Genre STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ba05: Abstract Audio Video Playlist
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type GET/SET
+dc09: DateModified STRING data type GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc44: Name STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3840933888
+ FreeSpaceInBytes: 319455232
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005011742
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000216
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071227
+01:10:46Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">AAABBwUFCAcIAQUAAQEHBAI=</UNIQUEID><PUBLICKEY
+private="1">3R0DMB5nzV7+YMmX2Y7eOGqY0h1kidagAPLfQg/AqquZADAOi2PWBQ==</PUBLI
+CKEY><KEYDATA>RJdtc1nEIhk/c4Jgrav3NOoaeww=</KEYDATA></DATA><MSDRM_SIGNATURE
+_VALUE>uGaDnWCx055tpKvQUqpVHMvyXHegJCFMW0gycB1LGeBbsUEXrAAmXQ==</MSDRM_SIGN
+ATURE_VALUE><SYMSIGNATURE>wZoo5yradZ+VhIjxNu6L8vGJF9o=</SYMSIGNATURE></CERT
+IFICATE><FALLBACK><SECURITYVERSION>2.4.107.191</SECURITYVERSION><CERTIFICAT
+E
+private="1">3R0DMB5nzV7+YMmX2Y7eOGqY0h1kidagAPLfQg/AqquZADAOi2PWBQIEa79u8yq
+KKhjuWgaXGL/uP0zM9rQKBrX9WQNiHPtuvE+Y7fEiKey+T5tK</CERTIFICATE></FALLBACK><
+CERTIFICATE
+type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MA
+KE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURIT
+YLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http
+://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUme
+txkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1
+</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRY
+PTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAX
+CHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADE
+RSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>lzgPooFAeWA0jYRRYBVshxGEMitl7
+x+hlYwLVSsTpWsTCQgioVyTNQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XOSDdp
+7x3HEfDYW6zjYP3Ug5Ph7jSFVXjeWtI/Zu2v6UAHE1KNvGhQ==</MSDRM_SIGNATURE_VALUE><
+/CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1827
+</AUTH_ID><PUBLICKEY>o8hyGYZ3BBvIr2RWfWyTVMdztYf9DLXnVf+FZyRFbOljxXZkwUnKSQ
+==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ElNjWDAcZiAe+os4GAiPVBMjmHcsbr1
+Nv9VFv12f7PGZK+Qj5fByeQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbO
+gktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNA
+TURE_VALUE>ROCYNKzPx/zmhsI1LKec6DbMPA5hB4//QVRowfjtaL5Ru7Wv9wAuJg==</MSDRM_
+SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+<WMP DeviceID="{1812399A-A14D-4B1A-83AE-229A21FC17C5}"
+RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-s616f.txt b/logs/mtp-detect-sony-walkman-nwz-s616f.txt
new file mode 100644
index 0000000..8fcf837
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-s616f.txt
@@ -0,0 +1,309 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+PTP: Opening session
+PTP_ERROR_IO: Trying again after re-initializing USB interface
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 0327
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-S616F
+ Device version: 1.00
+ Serial number: 00000000000000000000000005355400
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3840933888
+ FreeSpaceInBytes: 970162176
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005355400
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x0000042c
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080715 22:58:29Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwUFCAQJBgUDBQUEAAA=</UNIQUEID><PUBLICKEY private="1">A2nn4Wgv1k9coujyTAcKEkoKQmrQGR4ZYsOXgeR6YdkxuTlaXH2sOA==</PUBLICKEY><KEYDATA>Xdil2n+7R4etgkE3Z5I2DYJjTnE=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>eNWqcuVYaLt/xefb7fqJ04YnJxxxekFE3fW1fD3uAU5k8g4Jhyd7Lg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>zcOgwA5ITvR2OdqTPwn3z1WS9ic=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.193</SECURITYVERSION><CERTIFICATE private="1">A2nn4Wgv1k9coujyTAcKEkoKQmrQGR4ZYsOXgeR6YdkxuTlaXH2sOAIEa8G5BvVCKIUybuomZqYUhpZbUbZUTwmGyXh5ji2Murave8EcCuYLZY5u</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>o9wK49TNM0/ID0TR0GZOTQJaoVlbHA0GsdBr3t0NB4lBQirZKrfhKQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hluUVnnLOKGYijl7z2MaVuhfrTFcuF0l7qY9vjfGSrZ/AwsQXmLEMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1829</AUTH_ID><PUBLICKEY>RosQbBMLgdRdTNONotMCSbMK2HKQXF7ITeJSwcsIWROvlhUjCt5wfw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>KmXouuSpKrB9JeONnc1EBUB7yg4RG/vhDEGbttDhpdktPwtuhzUNcg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/BmiGou3NGiy668IPaFgMS0sU2B7a1kIVzM4E8bYaqMk02j1Jyo6Kg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-s618f.txt b/logs/mtp-detect-sony-walkman-nwz-s618f.txt
new file mode 100644
index 0000000..d1145d8
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-s618f.txt
@@ -0,0 +1,306 @@
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 0327
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-S618F
+ Device version: 1.00
+ Serial number: 00000000000000000000000005015057
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown(9401)
+ 9402: Unknown(9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, READ ONLY
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 READ ONLY
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 7841251328
+ FreeSpaceInBytes: 7054065664
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005015057
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070210 12:45:47Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version=" 1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwUFCAUHBwUAAQUABQc=</UNIQUEID><PUBLICKEY private="1">MI9IXZXnW23Z3iRdK5Cf+o36d3xDQnDTRLDYxc2E1Ltn8MdNuzt4Lw==</PUBLICKEY><KEYDATA>jZq83O8bnIvnVszjNMkMhNnSwzQ=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>l0EFdqodOXb6xFgMqoSD2Gf47XB2NzKbHn77RjEgaPpLEAi3JpuMPw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>pCWkdzT+slV9vgGQ5ZPyZoW0uHo=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION> 2.4.107.193</SECURITYVERSION><CERTIFICATE private="1">MI9IXZXnW23Z3iRdK5Cf+o36d3xDQnDTRLDYxc2E1Ltn8MdNuzt4LwIEa8FldZXgyXptjwcHzslRIDn0MwWJY0+HHqXIuckFJ9ZzZcMXBEo8YRRa</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL> http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>o9wK49TNM0/ID0TR0GZOTQJaoVlbHA0GsdBr3t0NB4lBQirZKrfhKQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>hluUVnnLOKGYijl7z2MaVuhfrTFcuF0l7qY9vjfGSrZ/AwsQXmLEMQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1829</AUTH_ID><PUBLICKEY>RosQbBMLgdRdTNONotMCSbMK2HKQXF7ITeJSwcsIWROvlhUjCt5wfw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>KmXouuSpKrB9JeONnc1EBUB7yg4RG/vhDEGbttDhpdktPwtuhzUNcg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>/BmiGou3NGiy668IPaFgMS0sU2B7a1kIVzM4E8bYaqMk02j1Jyo6Kg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-s638f.txt b/logs/mtp-detect-sony-walkman-nwz-s638f.txt
new file mode 100644
index 0000000..9b46879
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-s638f.txt
@@ -0,0 +1,425 @@
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ Sony: Walkman NWZ-S638F (054c:038e) @ bus 0, dev 19
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 038e
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 19
+ Device entry info:
+ Vendor: Sony
+ Vendor id: 0x054c
+ Product: Walkman NWZ-S638F
+ Vendor id: 0x038e
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-S638F
+ Device version: 1.11
+ Serial number: 00000000000000000000000005220932
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ de91: TotalBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 5512000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 826496599, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 5000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 15, MAX 15, STEP 1 GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 2, MAX 320, STEP 2 GET/SET
+ dc88: Height UINT32 data type range: MIN 2, MAX 240, STEP 2 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 3076000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844313677, 875967048, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 5512000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 826496599, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 5000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 15, MAX 15, STEP 1 GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 7725907968
+ FreeSpaceInBytes: 4648534016
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005220932
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Video
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080101 07:15:37Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwgAAgMFAAUCAgAJAwI=</UNIQUEID><PUBLICKEY private="1">s2IyQBma1YpTxIqRcY4ATbs4FkVrwK72f84UwD71o7arX+tEHbhZWw==</PUBLICKEY><KEYDATA>02juSFDaODd1ivlEoYZ597O8aOs=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>zGvAXzMTpl8wOVJDxQ6h8oWG82HkBCU877mVweih+tSRDpYkdFjJbw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>RXgTUtkmRGxbGL9eM6zaoaYotrQ=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.110.155</SECURITYVERSION><CERTIFICATE private="1">s2IyQBma1YpTxIqRcY4ATbs4FkVrwK72f84UwD71o7arX+tEHbhZWwIEbptKM64E6c9REX5OOEfJwZEDl17wEeT8lixYmOVcWqi/3oHLQJiuyGqF</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>utBUiQqaFTEgJfMGY6kD+4JnP3ReHSJvn8ac2ri0UI4OgwdiooxYAA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yGfwEA7b2M0eiDGFN9g3FjsP6V7GmUizMaJYhDfHDzLDpDYffAOkIA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2559</AUTH_ID><PUBLICKEY>FnOiTwWl8Uaox9xrWEGayriEbEzSybrxDwe6vUJ9SZ2FT1dnfaeGUA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Y0u507ui0hJXZ8vT8u3dh1LhCS/lVzQeTg4XtYTCufBN0TDBSSfzPw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>lZXUWkGvEkk/4SSV9UtfcZeLwHFOV8dEbsbchgaPTHXDw8YFf9Xhfw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-s716f.txt b/logs/mtp-detect-sony-walkman-nwz-s716f.txt
new file mode 100644
index 0000000..908559a
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-s716f.txt
@@ -0,0 +1,368 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 035a
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-S716F
+ Device version: 1.00
+ Serial number: 00000000000000000000000005001485
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ de91: TotalBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 2, MAX 320, STEP 2 GET/SET
+ dc88: Height UINT32 data type range: MIN 2, MAX 240, STEP 2 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844313677, 875967048, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 288000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 2788000, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3840933888
+ FreeSpaceInBytes: 1749778432
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005001485
+Special directories:
+ Default music folder: 0x00000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000007
+ Default video folder: 0x00000008
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: (NULL)
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070409 18:27:40Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwgAAAEDAAUAAAEECAU=</UNIQUEID><PUBLICKEY private="1">nP/UwzBcpWVNnZJ0K4DnKm1gn21U4z6+9krNm5qMerHiFLDLfJomKA==</PUBLICKEY><KEYDATA>P+LA94sl7ILU7n5gH2Lord8b4iY=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>VnmEsPmfr+s5J9/X/rHDGrHVZHmAolfLGkt8x+7pYkacdVxociqbLg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>cAac9obRJOCH/z4yAk7Zmfhip7Y=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.109.145</SECURITYVERSION><CERTIFICATE private="1">nP/UwzBcpWVNnZJ0K4DnKm1gn21U4z6+9krNm5qMerHiFLDLfJomKAIEbZG8ozJVQt2hS5rYTSdZHTW1SLGCgi6JdQUfR+NsGgy5mB0f4kCzYQVY</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>PtqVGopMTC4s4dp1/sEc/WA0QU8Iw/4bv7wGe4ImSF5H1C7vVFVTeg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>HA7nwY1gP9u05zc59wFRV6J+4EAJPdOsmWNmEdIfkhUFbtVLOHVxag==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2293</AUTH_ID><PUBLICKEY>hqSIxsHrYfG4KDXUlEw3Zgk8PhsKmYe8m8dpWS63Yh2JxxW6RSlvGg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>aWFoQSQHzL6nBL59/brM9nHgq1/bW4hYkCUAYhDjtYNO7ib4IAlVRA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>8ln3zvELCDZteREC+Yxb7boDLQkppbIANrQx+Ng7ROdPGqID4s3VSw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-sony-walkman-nwz-s739f.txt b/logs/mtp-detect-sony-walkman-nwz-s739f.txt
new file mode 100644
index 0000000..fc04b9f
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-s739f.txt
@@ -0,0 +1,433 @@
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ Sony: Walkman NWZ-S739F (054c:038c) @ bus 0, dev 10
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 054c
+ idProduct: 038c
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 10
+ Device entry info:
+ Vendor: Sony
+ Vendor id: 0x054c
+ Product: Walkman NWZ-S739F
+ Vendor id: 0x038c
+ Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 3000 0.
+Microsoft device response to control message 1, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x30:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Corporation
+ Model: WALKMAN NWZ-S739F
+ Device version: 1.10
+ Serial number: 00000000000000000000000005010810
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; sony.net/WMFU: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9201: Report Added/Deleted Items
+ 9807: Get interdependent property description
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9401: Unknown (9401)
+ 9402: Unknown (9402)
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, GET/SET
+ de9a: AudioBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ de91: TotalBitRate UINT32 data type enumeration: 128000, 176400, 192000, 256000, 352800, 384000, 512000, 705600, 768000, 1024000, 1411200, 1536000, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 5512000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 826496599, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 5000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 15, MAX 15, STEP 1 GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 4000, STEP 1 GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 5000, MAX 512000, STEP 1 GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc87: Width UINT32 data type range: MIN 2, MAX 320, STEP 2 GET/SET
+ dc88: Height UINT32 data type range: MIN 2, MAX 240, STEP 2 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 0, MAX 3076000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 844313677, 875967048, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 0, MAX 2500000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 41222, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 16000, MAX 576000, STEP 1 GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX 65536, STEP 1 GET/SET
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 200, STEP 1 GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM GET/SET
+ dc09: DateModified STRING data type DATETIME FORM GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 1, MAX 480, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 1, MAX 270, STEP 1 GET/SET
+ dc89: Duration UINT32 data type range: MIN 1, MAX 2147483647, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000, 22050, 32000, 44100, 48000, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 5512000, STEP 1 GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 826496599, 861293911, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 5000000, STEP 1 GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 1000, MAX 30000, STEP 1 GET/SET
+ dea1: EncodingProfile STRING data type GET/SET
+ de97: ScanDepth UINT16 data type enumeration: 1, GET/SET
+ de9e: KeyFrameDistance UINT32 data type range: MIN 15, MAX 15, STEP 1 GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 15726804992
+ FreeSpaceInBytes: 13306298368
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: 00000000000000000000000005010810
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: WALKMAN
+ Synchronization partner: {1CD7742B-BAC7-4062-9683-277C3D806341}
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+ Microsoft Windows Media Video
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20090302 10:23:22Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AAABBwgAAgYFAAUAAQAIAQA=</UNIQUEID><PUBLICKEY private="1">8J/CdoZMp9dM50ymn88UgIAPLjF2q4Kht4BJ2CdSxNZYnL+dZ9V0OQ==</PUBLICKEY><KEYDATA>mJv+0ezNonhrqPAARR06Ke02N9U=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>AMTLKycuBLivijcxwmbTTjYvy36n6uLXAcyBmcpnMdPXxc1g3f4agQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>G7lztkrIcE4KYzf9+Uo3faAfNj4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.110.151</SECURITYVERSION><CERTIFICATE private="1">8J/CdoZMp9dM50ymn88UgIAPLjF2q4Kht4BJ2CdSxNZYnL+dZ9V0OQIEbpeHA1NitwmAfBlA5jGk75XAB67aQQ4PfLJC3Gf2pI/TA1dbGAiu15Vr</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Walkman</NAME><MANUFACTURER>Sony</MANUFACTURER><MAKE>Sony</MAKE><DISTRIBUTOR>Sony</DISTRIBUTOR><MODEL>Walkman</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>N3Rrh2sAzQC+Nh34uce9v7V9bw1QThg1IDqhPaZvTXR05kEgzKcwgA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>7+H8FUkpdSM01TUv5KTYY/jGyjiW2R2bhXxZS7o5Ga9De6DRaZwBag==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2555</AUTH_ID><PUBLICKEY>prkyH2b9oX6SdAq0WZDAR61PfSfNfrzggM4s8PIPjRWw0S6gZaPrHw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YbxpVpeuK/iZEO8xxXOkcl0X3COlF/+yNWQS7oqbkrrtlEsN9Un6fw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ZmNGJU5PqJhvHrL3CVwQ5LQggkm5m93HUKNsxf8kZh/GytDt+8+kJA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+WMPInfo.xml file contents:
+<DeviceInfo>
+ <WMP DeviceID="{5072F98E-DCDA-49CC-B3F0-0BEB4449EDB8}" RelationshipID="{1CD7742B-BAC7-4062-9683-277C3D806341}"/>
+</DeviceInfo>
+
+OK.
+
+
diff --git a/logs/mtp-detect-sony-walkman-nwz-w202.txt b/logs/mtp-detect-sony-walkman-nwz-w202.txt
new file mode 100644
index 0000000..dd06e27
--- /dev/null
+++ b/logs/mtp-detect-sony-walkman-nwz-w202.txt
@@ -0,0 +1,555 @@
+mtp-detect now gives:
+libmtp version: 0.3.7
+
+Listing raw device(s)
+Found 1 device(s):
+Sony: Walkman NWZ-W202 (054c:0388) @ bus 0, dev 4
+Attempting to connect device(s)
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 0
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 054c
+idProduct: 0388
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Raw device info:
+Bus location: 0
+Device number: 4
+Device entry info:
+Vendor: Sony
+Vendor id: 0x054c
+Product: Walkman NWZ-W202
+Vendor id: 0x0388
+Device flags: 0x00000002
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+0020: 0000 0000 0000 0000 ........
+Device info:
+Manufacturer: Sony Corporation
+Model: WALKMAN NWZ-W202
+Device version: Ver1.00
+Serial number: 10FA97F5020088
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+microsoft.com/WMPPD: 11.0
+Detected object size: 64 bits
+Supported operations:
+1001: get device info
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+101b: Get partial object
+100b: Delete object
+100c: Send object info
+100d: Send object
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+9802: Get object property description
+9801: Get object properties supported
+9803: Get object property value
+9804: Set object property value
+9805: Get object property list
+9806: Set object property list
+9808: Send object property list
+9101: Get secure time challenge
+9102: Get secure time response
+9103: Set license response
+9104: Get sync list
+9105: Send meter challenge query
+9106: Get meter challenge
+9107: Get meter response
+9108: Clean data store
+9109: Get license state
+910a: Send WMDRM-PD Command
+910b: Send WMDRM-PD Request
+100f: Format storage
+9810: Get object references
+9811: Set object references
+9201: Report Added/Deleted Items
+9202: Report Acquired Items
+9203: Get transferable playlist types
+97f1: Unknown (97f1)
+97f2: Unknown (97f2)
+97f3: Unknown (97f3)
+97f4: Unknown (97f4)
+97f5: Unknown (97f5)
+1010: Reset device
+1012: Set object protection
+Events supported:
+0x4004
+0x4005
+Device Properties Supported:
+0xd101: Secure Time
+0xd102: Device Certificate
+0xd402: Friendly Device Name
+0xd401: Synchronization Partner
+0x5001: Battery Level
+0xd405: Device Icon
+Playable File (Object) Types and Object Properties Supported:
+3009: MP3
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000,
+22050, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 4300000, STEP
+1 READ ONLY
+dc44: Name STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 80, 85,
+GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+3008: MS Wave
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000,
+22050, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 2304000,
+STEP 1 READ ONLY
+dc44: Name STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 17,
+GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+b901: WMA
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000,
+22050, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000,
+STEP 1 READ ONLY
+dc44: Name STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353,
+GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+b903: AAC
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000,
+22050, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000,
+STEP 1 READ ONLY
+dc44: Name STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 41222,
+GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+300c: ASF
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc9a: AlbumName STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+de93: SampleRate UINT32 data type enumeration: 8000, 11025, 16000,
+22050, 32000, 44100, 48000, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000,
+STEP 1 READ ONLY
+dc44: Name STRING data type GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353,
+GET/SET
+dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc8c: Genre STRING data type GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de9e: KeyFrameDistance UINT32 data type range: MIN 0, MAX 15000,
+STEP 1 GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 0, MAX
+30050, STEP 1 GET/SET
+de9b: VideoFourCCCodec UINT32 data type enumeration: 0, 861293911,
+GET/SET
+de9c: VideoBitRate UINT32 data type range: MIN 5000, MAX 768010,
+STEP 1 READ ONLY
+de97: ScanDepth UINT16 data type enumeration: 0, 1, 2, 3, 4, 5, 6,
+7, GET/SET
+dea1: EncodingProfile STRING data type GET/SET
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX
+-1, STEP 1 READ ONLY
+dc81: RepresentativeSampleFormat UINT16 data type enumeration:
+14337, 14340, 14343, GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+3001: Association/Directory
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc44: Name STRING data type GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+ba05: Abstract Audio Video Playlist
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc44: Name STRING data type GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+3801: JPEG
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc44: Name STRING data type GET/SET
+dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1
+GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX
+-1, STEP 1 READ ONLY
+dc81: RepresentativeSampleFormat UINT16 data type enumeration:
+14337, 14340, 14343, GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+3807: GIF
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc44: Name STRING data type GET/SET
+dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1
+GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX
+-1, STEP 1 READ ONLY
+dc81: RepresentativeSampleFormat UINT16 data type enumeration:
+14337, 14340, 14343, GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+3804: BMP
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc44: Name STRING data type GET/SET
+dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1
+GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc92: SkipCount UINT32 data type ANY 32BIT VALUE form GET/SET
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX
+-1, STEP 1 READ ONLY
+dc81: RepresentativeSampleFormat UINT16 data type enumeration:
+14337, 14340, 14343, GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+ba03: Abstract Audio Album
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc44: Name STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+d901: BuyFlag UINT8 data type range: MIN 0, MAX 1, STEP 1 GET/SET
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX
+10000, STEP 1 GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX
+-1, STEP 1 READ ONLY
+dc81: RepresentativeSampleFormat UINT16 data type enumeration:
+14337, 14340, 14343, GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array:
+GET/SET
+3000: Undefined Type
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ
+ONLY
+dc04: ObjectSize UINT64 data type READ ONLY
+dc07: ObjectFileName STRING data type REGULAR EXPRESSION FORM
+GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc42: SyncID STRING data type GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc44: Name STRING data type GET/SET
+Storage Devices:
+StorageID: 0x00010001
+StorageType: 0x0003 fixed RAM storage
+FilesystemType: 0x0002 generic hierarchical
+AccessCapability: 0x0000 read/write
+MaxCapacity: 1928855552
+FreeSpaceInBytes: 1652260864
+FreeSpaceInObjects: 4294967295
+StorageDescription: Storage Media
+VolumeIdentifier: 33FA0001324A8D2E0002D9B161C24D2E
+Special directories:
+Default music folder: 0x00000070
+Default playlist folder: 0x00000000
+Default picture folder: 0x00000000
+Default video folder: 0x00000000
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x00000000
+Default text folder: 0x00000000
+MTP-specific device properties:
+Friendly name: WALKMAN NWZ-W202
+Synchronization partner: WALKMAN NWZ-W202
+Battery level 99 of 100 (99%)
+libmtp supported (playable) filetypes:
+ISO MPEG-1 Audio Layer 3
+RIFF WAVE file
+Microsoft Windows Media Audio
+Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+Microsoft Advanced Systems Format
+JPEG file
+GIF bitmap file
+BMP bitmap file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19700222
+12:10:57Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">MzNGQTAwMDEzMjRBOEQyRQoKCgo=</UNIQUEID><PUBLICKEY
+private="1">gUDNl6K4A8rKKoOlGxMsTpCTyCM4mDO8bJI2e/PGqHFM8jgyH4TUew==</PUBLICKEY><KEYDATA>RkRHwfFBtwocQxb1vXhq+Wu1U+Q=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>brVpnBTRtkYj21B23R4GOAmhLhnUukZmUKE3+XT+tJyP7XF1ASyYHw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>oIQcKO3zlqHbw6ZCFDyAqT7LUUg=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.112.171</SECURITYVERSION><CERTIFICATE
+private="1">gUDNl6K4A8rKKoOlGxMsTpCTyCM4mDO8bJI2e/PGqHFM8jgyH4TUewIEcKsLkirTsbAN6P51wkXvpgoddvnnVQI6HWxUT9tKwcTpYaD8rul7+GRL</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Walkman</NAME>
+<MANUFACTURER>Sony</MANUFACTURER>
+<MAKE>Flextronics</MAKE>
+<DISTRIBUTOR>Sony</DISTRIBUTOR>
+<MODEL>ICX-1122</MODEL>
+<SECURITYLEVEL>2000</SECURITYLEVEL>
+<HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+<HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+<FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+<FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+<FEATURES>
+<CLOCK>2</CLOCK>
+<SECURECLOCK>
+<URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+</SECURECLOCK>
+<METERING>1</METERING>
+<LICENSE_ACQ>1</LICENSE_ACQ>
+<LICENSE_SYNC>1</LICENSE_SYNC>
+<ENCRYPTION>1</ENCRYPTION>
+<SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+</FEATURES>
+<LIMITS>
+<MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+<MAXLICENSESIZE>10240</MAXLICENSESIZE>
+<MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>5NNetVrlRMwT7x823193ecnr7iGMyC6zQc2tGIQ1ZvYpVrCLAQCPhw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>wSOxVy32A7Zsbgq9h3DrnzQGGQH1exmIQ7n2oq1VLAGMzo9qC8n1Ww==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>3087</AUTH_ID><PUBLICKEY>ELWuIRmtGOqXTRhe/yHSsVtVZoVb1LSZh2sTzypUydaZAUiWRIFnSg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Ul2JXnitAFwH1tyNnDjOBgAQyXNDeBnYemNm5HIcC/Bj2jtaoU3yCQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>yzpXMjZimc+n6ZWk1hoKDSfsBiEYSWHdRXnugRsrWI+J1c2Pa58PIQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
diff --git a/logs/mtp-detect-sonyericsson-c702.txt b/logs/mtp-detect-sonyericsson-c702.txt
new file mode 100644
index 0000000..39beb86
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-c702.txt
@@ -0,0 +1,490 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+Potential MTP Device with VendorID:0fce and ProductID:00d9 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0fce and PID=00d9) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 0fce:00d9 @ bus 0, dev 5
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00d9
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 5
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0fce
+ Product: (null)
+ Vendor id: 0x00d9
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0fce and ProductID:00d9 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: C702
+ Device version: 1.20
+ Serial number: 00000000000000000354387020652767
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 188506112
+ FreeSpaceInBytes: 146776064
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4094623744
+ FreeSpaceInBytes: 2827223040
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000025
+ Default playlist folder: 0x000001bb
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000002c
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: C702
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUEAwgHAAI=</UNIQUEID><PUBLICKEY private="1">Cypdz67O5K+vC7x85yagksR9bwj6sVwkdu5nNDR5Gbj21HQcSSr0Lg==</PUBLICKEY><KEYDATA>weDYU/t/zhBTcJzyUeeoGg4jfVQ=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>u1107vl0d6h542IVEp/E6SizwVDSXNnyNoApqV3ph7V0x+N5eHadRQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>lyDvpjmqR8nh04CcKDBZoPaTiF4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">Cypdz67O5K+vC7x85yagksR9bwj6sVwkdu5nNDR5Gbj21HQcSSr0LgIEbE3jdywfOXekMjM/SDCPgHsyzQ96STJRnJeofvv92LMpw9ALSg/Q3gce</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>C702</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>xxXf/Z2smcJLDks3n1pf4sl74mi6PeSohx9OMas+9Ov4n7RneKkodg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>6tn+T7nvYMBTssmK19J4eclRwiAbwVqbzLnhkvPJlg/pxUwmvG0sNg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{DCE920C0-A2E9-4418-8083-AC919DD68EFD}" RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sonyericsson-c902.txt b/logs/mtp-detect-sonyericsson-c902.txt
new file mode 100644
index 0000000..b2cc066
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-c902.txt
@@ -0,0 +1,626 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00d4
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: C902
+ Device version: 1.20
+ Serial number: 00000000000000000357149026749790
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 188506112
+ FreeSpaceInBytes: 141340672
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2045313024
+ FreeSpaceInBytes: 1370095616
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000055
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000060
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: C902
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUHAQQJAAI=</UNIQUEID><PUBLICKEY private="1">xgjcxP4EuZ2SDr48o062vwymzTmlTntoKrx0OGy493JC+cYPPHGbbw==</PUBLICKEY><KEYDATA>KQ8YbjV5G+a91tiw3QNL9PKJzhg=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>s2uWQXZCkLkCYzw2PPt/UMf0jk5NPHEajlJr4trzaPV+hwAtjvJLFg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>AL1jqCmLqI4gRRtSYzM0HVSWhME=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">xgjcxP4EuZ2SDr48o062vwymzTmlTntoKrx0OGy493JC+cYPPHGbbwIEbE14/0olfVfOrFXHpdm+ARRNU6IiMVPWsfMMMqAg0RVQ6I5BKVw35Tp8</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>C902</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>SyQnWvwMUyClroHIWBCwWLXLLIK8Qbe2hqNNYoSwbpWnSkLpl+l1bw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ud9uIuFrA40M40XHidsHHidkiAVB4e+bKKNOG4bDaFVqvbSFddn7Pg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+default-capabiliy.xml:
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<devices>
+ <version>0.4</version>
+ <device>
+ <identification>
+ <model>C902</model>
+ <vendor>Sony Ericsson</vendor>
+ <brand>Cybershot</brand>
+ </identification>
+ <storage>
+ <type>PHONE</type>
+ <max-full>90</max-full>
+ </storage>
+ <display index="0">
+ <height unit="pixels">320</height>
+ <width unit="pixels">240</width>
+ <colors>262144</colors>
+ </display>
+ <image>
+ <format id="JPEG" preferred="true">
+ <maxheight>1200</maxheight>
+ <maxwidth>1600</maxwidth>
+ <extension>jpg</extension>
+ <mime-type>image/jpeg</mime-type>
+ </format>
+ <format id="BMP" preferred="false">
+ <extension>bmp</extension>
+ <mime-type>image/bmp</mime-type>
+ </format>
+ <format id="GIF" preferred="false">
+ <extension>gif</extension>
+ <mime-type>image/gif</mime-type>
+ </format>
+ <format id="PNG" preferred="false">
+ <extension>png</extension>
+ <mime-type>image/png</mime-type>
+ </format>
+ <format id="SVG" preferred="false"> <extension>svg</extension> <mime-type>image/svg</mime-type> </format> <format id="Flash" preferred="false"> <extension>swf</extension> <mime-type>application/x-shockwave-flash</mime-type> </format>
+ </image>
+ <audio>
+ <format id="3GA" preferred="false">
+ <extension>3ga</extension>
+ <mime-type>audio/3gpp</mime-type>
+ </format>
+ <format id="AAC" preferred="false">
+ <extension>aac</extension>
+ <mime-type>audio/aac</mime-type>
+ </format>
+ <format id="AMR" preferred="false">
+ <extension>amr</extension>
+ <mime-type>audio/amr</mime-type>
+ </format>
+ <format id="AMR-WB" preferred="false">
+ <extension>awb</extension>
+ <mime-type>audio/amr-wb</mime-type>
+ </format>
+ <format id="Audio Book" preferred="false">
+ <extension>m4b</extension>
+ <mime-type>audio/m4b</mime-type>
+ </format>
+ <format id="WAV" preferred="false">
+ <extension>wav</extension>
+ <mime-type>audio/wav</mime-type>
+ </format>
+ <format id="MP3" preferred="false">
+ <extension>mp3</extension>
+ <mime-type>audio/mp3</mime-type>
+ </format>
+ <format id="MP4" preferred="true">
+ <extension>mp4</extension>
+ <mime-type>audio/mp4</mime-type>
+ </format>
+ <format id="MIDI" preferred="false">
+ <extension>mid</extension>
+ <mime-type>audio/midi</mime-type>
+ </format>
+ <format id="iMelody" preferred="false">
+ <extension>imy</extension>
+ <mime-type>audio/iMelody</mime-type>
+ </format>
+ <format id="3GPP" preferred="false">
+ <extension>3gp</extension>
+ <mime-type>audio/3gpp</mime-type>
+ </format>
+ <format id="SMAF" preferred="false">
+ <extension>mmf</extension>
+ <mime-type>audio/vnd.smaf</mime-type>
+ </format>
+ <format id="XMF" preferred="false">
+ <extension>xmf</extension>
+ <mime-type>audio/xmf</mime-type>
+ </format>
+ <format id="Real8 audio" preferred="false">
+ <extension>ra</extension>
+ <mime-type>audio/vnd.m-realaudio</mime-type>
+ </format>
+ <format id="Real media" preferred="false">
+ <extension>rm</extension>
+ <mime-type>audio/vnd.rn-realaudio</mime-type>
+ </format>
+ <format id="m4a" preferred="false">
+ <extension>m4a</extension>
+ <mime-type>audio/m4a</mime-type>
+ </format>
+ <format id="Windows media" preferred="false">
+ <extension>wma</extension>
+ <mime-type>audio/wma</mime-type>
+ </format>
+ </audio>
+ <video>
+ <format preferred="true">
+ <extension>mp4</extension>
+ <mime-type>video/mp4</mime-type>
+ <encoding>mpeg-4</encoding>
+ <part>2</part>
+ <profile>Visual simple 0b</profile>
+ <sound>AAC</sound>
+ <kbits>96</kbits>
+ </format>
+ <format preferred="false">
+ <extension>mp4</extension>
+ <mime-type>video/mp4</mime-type>
+ <encoding>mpeg-4</encoding>
+ <part>10</part>
+ <profile>0</profile>
+ <sound>AAC</sound>
+ <kbits>96</kbits>
+ </format>
+ </video>
+ <filesystem>
+ <filename maxlength="254" />
+ <folder maxlength="254" />
+ <path>
+ <camera>\DCIM\</camera>
+ <image>\Picture\</image>
+ <video>\video\</video>
+ <sound>\Music\</sound>
+ <feedsound>\music\podcast\</feedsound>
+ <feedvideo>\video\podcast\</feedvideo>
+ <feedimage>\picture\podcast\</feedimage>
+ <feeds>\other\</feeds>
+ </path>
+ </filesystem>
+ <drm>
+ <oma-v1>true</oma-v1>
+ <oma-v2>true</oma-v2>
+ <wmdrm>true</wmdrm>
+ </drm>
+ <store name="Media Store" url="www.sonyericsson.com/mediastore">
+ <launchstoreexternally>true</launchstoreexternally>
+ </store>
+ </device>
+</devices>
+
diff --git a/logs/mtp-detect-sonyericsson-c905.txt b/logs/mtp-detect-sonyericsson-c905.txt
new file mode 100644
index 0000000..2487be0
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-c905.txt
@@ -0,0 +1,496 @@
+libmtp version: 0.3.7
+
+Listing raw device(s)
+ Found 1 device(s):
+ SonyEricsson: C905 (0fce:00ef) @ bus 0, dev 6
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00ef
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 6
+ Device entry info:
+ Vendor: SonyEricsson
+ Vendor id: 0x0fce
+ Product: C905
+ Vendor id: 0x00ef
+ Device flags: 0x00000004
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: C905
+ Device version: 1.50
+ Serial number: 00000000000000000357602022177119
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14344, READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Special directories:
+ Default music folder: 0x00000036
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000003c
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: C905
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUHBgACAAI=</UNIQUEID><PUBLICKEY private="1">B+NfHA9Hg7ThHwaHnT7ua0pmPCNnO9bPKmlUqEdf9VJtBzvt8KkXcg==</PUBLICKEY><KEYDATA>HPktoJyc/M9OMgHnze2NSj8kYXA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>nzbOemo3C48apJBoo6PLjfZR3EWs6bOTxnRAPbrWmyTt3F2TlretCQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>sJWt2VxdKNKh6ZnnEi1f3yguuKw=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.37</SECURITYVERSION><CERTIFICATE private="1">B+NfHA9Hg7ThHwaHnT7ua0pmPCNnO9bPKmlUqEdf9VJtBzvt8KkXcgIEbyW5SZ9XBBDlqVkAMohya9tPfDcMOh13O+lXiwwOcdu0AdpZODsEWN4K</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>C905</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>HfUCKOsCuiScN5Jvs4rZ16IzZzkrRyiYSH3cjzeM/SuBJ3cbkoe4EQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>gt6T+mSCLE/ibVP2xEf2NhHcJVVAyuCMtaTMYxp2YlMyhdKsWUm3KA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2697</AUTH_ID><PUBLICKEY>RZE6Zfywi4yoBaFXcQ3uQ8289C/ksvYRsx3/iBKHu7jVUqB0jDxpNQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>7PM5FJUmTH/HC3DDFF598UwRk19dR69fwxjdWVHHDlB/LTRtdg7MVQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XN8qEXAip1XRJJR4rXoueXDRLj2bH5c2ea78JGfXFvCpRu2d54BVRw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-sonyericsson-k850i.txt b/logs/mtp-detect-sonyericsson-k850i.txt
new file mode 100644
index 0000000..46b68ad
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-k850i.txt
@@ -0,0 +1,530 @@
+Potential MTP Device with VendorID:0fce and ProductID:0075 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=0fce and PID=0075) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Potential MTP Device with VendorID:0fce and ProductID:0075 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+libmtp version: 0.2.2
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 0075
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: Sony Ericsson Phone
+ Device version: 1.00
+ Serial number: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (edit: removed serial number from output)
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type REAUnknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+D ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE forUnknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+m READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStUnknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+atus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380f: JP2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3810: JPX
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07:Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Unknown OPFF type 3
+Unknown OPFF type 3
+Unknown OPFF type 6
+Error 2: PTP Layer error 02fe: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+PTP: Closing session
+ ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 70434816
+ FreeSpaceInBytes: 36007936
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 491265024
+ FreeSpaceInBytes: 142311424
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000006
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000000d
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: K850i
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ JP2 file
+ JPX file
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-sonyericsson-t700.txt b/logs/mtp-detect-sonyericsson-t700.txt
new file mode 100644
index 0000000..b49c73b
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-t700.txt
@@ -0,0 +1,480 @@
+Potential MTP Device with VendorID:0fce and ProductID:00fb responded to control message 2 with a response that was too short. Problems may arrise but continuing
+libmtp version: 1.0.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ SonyEricsson: T700 (0fce:00fb) @ bus 0, dev 3
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00fb
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: SonyEricsson
+ Vendor id: 0x0fce
+ Product: T700
+ Vendor id: 0x00fb
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: T700
+ Device version: 1.20
+ Serial number: 00000000000000000357746025008407
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc05: Association Type UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: Association Desc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ de99: Audio WAVE Codec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: Video Four CC Codec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: Date Authored STRING data type DATETIME FORM GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc07: Object File Name STRING data type GET/SET
+ dc08: Date Created STRING data type DATETIME FORM READ ONLY
+ dc09: Date Modified STRING data type DATETIME FORM READ ONLY
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRM Status UINT16 data type enumeration: 0, 1, GET/SET
+ db01: Unknown property UINT8 data type enumeration: 0, 1, GET/SET
+ db02: Unknown property array of UINT8 data type byte array: GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 61386752
+ FreeSpaceInBytes: 21921792
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 490930176
+ FreeSpaceInBytes: 89030656
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000060
+ Default playlist folder: 0x000003f4
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000068
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: T700
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Emphasis)
+ Abstract Playlist file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUHBwQGAAI=</UNIQUEID><PUBLICKEY private="1">/XM8Kealm6jA5jJiJATR64dT5Ar7TVit2AI72C0cMunu2ECbYJpPeA==</PUBLICKEY><KEYDATA>OUv9CZ9819jZmkYlMuViWUviUj8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>GO4V1sWlnHMYQDgxx9ZgC4wtXXfBXZjQZ1NHXdh91IcNrl63zb3Wfg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>C6aalCuqpWjxXhAGUOmFpDudsmk=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">/XM8Kealm6jA5jJiJATR64dT5Ar7TVit2AI72C0cMunu2ECbYJpPeAIEbE2OU29yqaEkH/v/q6yw1QHt01bYZmP9ATiPRbkKCTwlCFmjFEmiV/UL</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>T700</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>gZKe350jUu+jyUCL9xcD7oyAp3Sh18qts74eoVBFsZs1CKflTQJ9XQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>FA+9GvNRJPs1N+3CEs9LYDPhbVfPIQG6PtQPc14A2/SqUlU6IgrahQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
diff --git a/logs/mtp-detect-sonyericsson-w595.txt b/logs/mtp-detect-sonyericsson-w595.txt
new file mode 100644
index 0000000..7df791d
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w595.txt
@@ -0,0 +1,485 @@
+$ examples/detect
+libmtp version: 0.3.6
+
+Listing raw device(s)
+Potential MTP Device with VendorID:0fce and ProductID:00f3 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0fce and PID=00f3) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 0fce:00f3 @ bus 0, dev 5
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00f3
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 5
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0fce
+ Product: (null)
+ Vendor id: 0x00f3
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0fce and ProductID:00f3 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W595
+ Device version: 1.20
+ Serial number: 00000000000000000357500021561640
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 61386752
+ FreeSpaceInBytes: 25980928
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 2045313024
+ FreeSpaceInBytes: 1812594688
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000025
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000002d
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: W595
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUHBQAAAAI=</UNIQUEID><PUBLICKEY private="1">EfZ7gFQlNHS4iZD7s5t4yBoeZ38uB4vYAJOObkGtaNERoCyrsMKtLw==</PUBLICKEY><KEYDATA>5kzLzAY6tbRo4hRaeatf83M7jes=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>PlhFUwhT3EhOaWexsAGUWlpgvGIbyTqvWRfbDd4Huw5gFXOHB6wAFQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>UCCsQV00lE2QUb3g2IKPmNOVLns=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">EfZ7gFQlNHS4iZD7s5t4yBoeZ38uB4vYAJOObkGtaNERoCyrsMKtLwIEbE2ceVwWG47Eu1X5kyJ55AWZ4VbmKVzuO9E5iIqq1MZPCxV99GCm0GY0</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>W595</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>9ym9jX7acCdOt4CmUXLR5XNUrltJdiMJaoZwJ7cBDmD+ULE9ou64bQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>q90+WnjmH85nHh/sd85vbtxL3AVWNUZPnAAYYl+oOKDRDRW2HZZzHw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-sonyericsson-w705.txt b/logs/mtp-detect-sonyericsson-w705.txt
new file mode 100644
index 0000000..4261ead
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w705.txt
@@ -0,0 +1,521 @@
+Potential MTP Device with VendorID:0fce and ProductID:0105 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0fce and PID=0105) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Potential MTP Device with VendorID:0fce and ProductID:0105 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0fce:0105 @ bus 0, dev 8
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 0105
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 8
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0fce
+ Product: (null)
+ Vendor id: 0x0105
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W705
+ Device version: 1.50
+ Serial number: 00000000000000000351806036003254
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14344, READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 184209408
+ FreeSpaceInBytes: 95518720
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 3991863296
+ FreeSpaceInBytes: 3376381952
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000059
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000005f
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Umonkey
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUBCAAGAAM=</UNIQUEID><PUBLICKEY private="1">0taGAp7FhrLsJeqvzxOzfqnMjxASGPidXx0asDwSh9Mpz+dpZI6uHg==</PUBLICKEY><KEYDATA>CMwcFvnKDEl7leXoNYrjOaNNJ5g=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>Z0GCTh3//lkvXgoNDosKUsDFkAku8TZGlUrYPmm0MQC+QZ7VVT6xBA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>ZUoplkIB32dJFFq+bprVqVhqTQs=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.111.37</SECURITYVERSION><CERTIFICATE private="1">0taGAp7FhrLsJeqvzxOzfqnMjxASGPidXx0asDwSh9Mpz+dpZI6uHgIEbyWPUvkrAHQPLQCJAkCYwp+5OrxmRl/sQwa/6DwBDVErZ/gVKvv9CYJb</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>W705</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>FUZ/X8o1D4tnwVdiZkDkYY6zu0MXAY79ST/ENVHz6EevpjrbDU2DBA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>KRJWuUjHeRCGFJ1Y5bXz8AQw31keHgxc/+S6oEAKvJjvI7PTP: Closing session
+ZOaaJfAQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2697</AUTH_ID><PUBLICKEY>RZE6Zfywi4yoBaFXcQ3uQ8289C/ksvYRsx3/iBKHu7jVUqB0jDxpNQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>7PM5FJUmTH/HC3DDFF598UwRk19dR69fwxjdWVHHDlB/LTRtdg7MVQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>XN8qEXAip1XRJJR4rXoueXDRLj2bH5c2ea78JGfXFvCpRu2d54BVRw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-sonyericsson-w715.txt b/logs/mtp-detect-sonyericsson-w715.txt
new file mode 100644
index 0000000..71e1abd
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w715.txt
@@ -0,0 +1,519 @@
+Potential MTP Device with VendorID:0fce and ProductID:0105 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0fce and PID=0105) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+Potential MTP Device with VendorID:0fce and ProductID:0105 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+libmtp version: 0.3.6
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0fce:0105 @ bus 0, dev 3
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 0105
+ IN endpoint maxpacket: 64 bytes
+ OUT endpoint maxpacket: 64 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 3
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0fce
+ Product: (null)
+ Vendor id: 0x0105
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W715
+ Device version: 1.50
+ Serial number: 00000000000000000351809030140106
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, 14344, READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 184209408
+ FreeSpaceInBytes: 84393984
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004 removable RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 4025384960
+ FreeSpaceInBytes: 3195142144
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000069
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000006f
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Shadophone
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUBCAAJAAM=</UNIQUEID><PUBLICKEY private="1">1zlvvoHy8cDSzRawFdmcTTIn7miSYD56R80GVPALmN/eDO4nEcKvIw==</PUBLICKEY><KEYDATA>lMRwp3XNW8jHH7YctvWLbqwICwY=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>KBbRrhh3c1Wara5qn+dOO9jEtG5IB5S2GQeDDBU668YVw5x5xmZtLg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>xtoWr9RLAAfG8n/X3vR7UXnIJ3U=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.112.241</SECURITYVERSION><CERTIFICATE private="1">1zlvvoHy8cDSzRawFdmcTTIn7miSYD56R80GVPALmN/eDO4nEcKvIwIEcPH7WZwy62EjF3XCsBy9UwtyevOzP07TZDx8GFy5A1ZCeYJ2gXOfW6mA</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>W715</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>17BxbinWp+etWrn2iDRXggucvWJexbC5+AW9fnCwXyz6SIrLAj9CHQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>5dLraR9a+Q6sjUz73kqegMHxOW4cdn2Cy+Y0qwpU1WM4c4Q4Bnd3Zw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>3157</AUTH_ID><PUBLICKEY>jUez79BavRDZ5ep6xXBCdggI8D48Cl2f1+VNd6E5sd/Qw4FMCFAVeQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>Stqt9vjW5AUck79tVSjm7qfcM4gQ9wTXMGs/N2da6hOspWBV7cRrFA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>FfbFzAWYT6ijjd2/KAfn+IAn0T20tOwcBAzH2kQ0rOdomszWb0hiFQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+OK.
+
+
diff --git a/logs/mtp-detect-sonyericsson-w760i.txt b/logs/mtp-detect-sonyericsson-w760i.txt
new file mode 100644
index 0000000..26f530e
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w760i.txt
@@ -0,0 +1,477 @@
+Potential MTP Device with VendorID:0fce and ProductID:00c6 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=0fce and PID=00c6) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Potential MTP Device with VendorID:0fce and ProductID:00c6 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00c6
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W760i
+ Device version: 1.20
+ Serial number: 00000000000000000354799022337504
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 61386752
+ FreeSpaceInBytes: 10829824
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1005748224
+ FreeSpaceInBytes: 559054848
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000090
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000099
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ FriPTP: Closing session
+endly name: luxuria
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUEBwkJAAI=</UNIQUEID><PUBLICKEY private="1">GteRi0Z6YaQzMGDioc9KmjDodHYiM6ESXhnm5jjcaRyiLZLNAiCtgw==</PUBLICKEY><KEYDATA>auCjSPTlfWSHuanZ6OKGaQqpue8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>SscncOBqa6w3WnhJlpHUOikIrgU9jHFR91mhexzga13TkSKdcnZxDw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>pyofzU8aI5f/oHNUA7utNhvLvqM=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">GteRi0Z6YaQzMGDioc9KmjDodHYiM6ESXhnm5jjcaRyiLZLNAiCtgwIEbE3ig9A0mV8/193cQ1BlPHjOlkULg8v7wSBN5j6kt8GdcsOLzlfD8YQK</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>W760i</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>S2sE36RZOKznIOJeKGdWZZ2qMTdKwX058Sl+Ivyd/9pGIGqr69FufQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>EaTXHgnnhvbD6KzGgMPLis07GhQJm8vqk0dY3oBsRgwwUTYER/FKcQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-sonyericsson-w890i.txt b/logs/mtp-detect-sonyericsson-w890i.txt
new file mode 100644
index 0000000..9d0f51d
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w890i.txt
@@ -0,0 +1,160 @@
+# mtp-detect
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:0fce and ProductID:00b3 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=0fce and PID=00b3) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+Error 7: Found a bad handle, trying to ignore it.
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00b3
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0fce and ProductID:00b3 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W890i
+ Device version: 1.20
+ Serial number: 00000000000000000352382025808094
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ 3000: Undefined Type
+ 3001: Association/Directory
+ 3004: Text
+ 3005: HTML
+ 3008: MS Wave
+ 3009: MP3
+ 300c: ASF
+ 3801: JPEG
+ 3804: BMP
+ 3807: GIF
+ 380b: PNG
+ b901: WMA
+ b903: AAC
+ b981: WMV
+ b982: MP4
+ ba05: Abstract Audio Video Playlist
+ ba11: M3U Playlist
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 25137152
+ FreeSpaceInBytes: 19210240
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2045247488
+ FreeSpaceInBytes: 1928822784
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000006
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000004e
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+ERROR: Could not close session!
+OK.
diff --git a/logs/mtp-detect-sonyericsson-w902.txt b/logs/mtp-detect-sonyericsson-w902.txt
new file mode 100644
index 0000000..4e5c28a
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w902.txt
@@ -0,0 +1,485 @@
+libmtp version: 0.3.0
+
+Listing raw device(s)
+Potential MTP Device with VendorID:0fce and ProductID:00f5 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 0 (VID=0fce and PID=00f5) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+ Found 1 device(s):
+ 0fce:00f5 @ bus 0, dev 7
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00f5
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 7
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0fce
+ Product: (null)
+ Vendor id: 0x00f5
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0fce and ProductID:00f5 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W902
+ Device version: 1.20
+ Serial number: 00000000000000000357053020107742
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 61386752
+ FreeSpaceInBytes: 16044032
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 8065449984
+ FreeSpaceInBytes: 39452672
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000071
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000079
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: W902
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUHAAUDAAI=</UNIQUEID><PUBLICKEY private="1">c+NVjW710DGKs1JtDdTZWjQOvxlLh8Xdpdjeg5XAMkjRlvQV8dYKaQ==</PUBLICKEY><KEYDATA>NJLtPPCbUoH/pcB0oey1UMxqHt8=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>C+b4KK0qEz8AFnI37OYhQ9OImQcX2DgIYS8kFO61gedXobmUzS/5bQ==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>PeFizcWOCKySmVG8BynI3xHCQL0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">c+NVjW710DGKs1JtDdTZWjQOvxlLh8Xdpdjeg5XAMkjRlvQV8dYKaQIEbE0+Xn5pQnGfKoWaMsZkqFlmnLpcUtHRlPFhnh73gOWpb5Sj4MdZMTcn</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>W902</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>72H5MXjIS7AdAicYJwTk9GOG81mpY7wbflR8N2vjyHwUF0aJvtI2aw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>xrhIT5DqBCK9D+UTIPTK1AEV3SosblP6v2Vifa/GASf3YwcB5ypBGg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-sonyericsson-w910.txt b/logs/mtp-detect-sonyericsson-w910.txt
new file mode 100644
index 0000000..f88b082
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w910.txt
@@ -0,0 +1,650 @@
+hal# mtp-detect
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:0fce and ProductID:0076 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=0fce and PID=0076) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 0076
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 0000 0000 0000 0000 0000 0000 0000 ................
+ 0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0350: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0360: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0370: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0390: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 03f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0150: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0160: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0170: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0180: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0190: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 01f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0200: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0210: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0220: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0240: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0250: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0260: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0270: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0280: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0290: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 02f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0300: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0320: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0330: 0000 0000 0000 0000 0000 0000 0000 0000 ................
+ 0340: 0f0f 0f0f 0f0f 0010 1010 1010 1010 1010 ................
+ 0350: 1010 1010 1010 1000 6d63 6f75 6e74 3a20 ........mcount:
+ 0360: 5072 6f66 696c 696e 6720 6f66 2073 6574 Profiling of set
+ 0370: 7b75 2c67 7d69 6420 6269 6e61 7269 6573 {u,g}id binaries
+ 0380: 2069 7320 6e6f 7420 616c 6c6f 7765 6400 is not allowed.
+ 0390: 5f6d 636c 6561 6e75 703a 2069 6e74 6572 _mcleanup: inter
+ 03a0: 6e61 6c20 6275 6666 6572 206f 7665 7266 nal buffer overf
+ 03b0: 6c6f 772c 2050 524f 4644 4952 2074 6f6f low, PROFDIR too
+ 03c0: 206c 6f6e 6700 5f6d 636c 6561 6e75 703a long._mcleanup:
+ 03d0: 2074 6f73 206f 7665 7266 6c6f 770a 0050 tos overflow..P
+ 03e0: 524f 4644 4952 0067 6d2f 7573 722f 706b ROFDIR.gm/usr/pk
+ 03f0: 6773 7263 2f77 6970 2f6c 6962 6d74 7000 gsrc/wip/libmtp.
+Potential MTP Device with VendorID:0fce and ProductID:0076 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: Sony Ericsson Phone
+ Device version: 1.00
+ Serial number: 00000000000000000358875011380618
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Unknown OPFF type 3
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Unknown OPFF type 3
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Unknown OPFF type 3
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380f: JP2
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3810: JPX
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Unknown OPFF type 3
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+Unknown OPFF type 3
+ dc99: OriginalReleaseDate STRING data type GET/SET
+Unknown OPFF type 3
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+Unknown OPFF type 3
+ dc09: DateModified STRING data type READ ONLY
+Unknown OPFF type 3
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type ANY 16BIT VALUE form GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+Unknown OPFF type 6
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 66351104
+ FreeSpaceInBytes: 24440832
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+ StorageID: 0x00020001
+ StorageType: 0x0004
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 957020160
+ FreeSpaceInBytes: 683114496
+ FreeSpaceInObjects: 0
+ StorageDescription: Memory Stick (TM)
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000056
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000002e
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: W910i
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ JP2 file
+ JPX file
+ Microsoft Windows Media Audio
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02fe: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+^C
diff --git a/logs/mtp-detect-sonyericsson-w980.txt b/logs/mtp-detect-sonyericsson-w980.txt
new file mode 100644
index 0000000..f7f3da0
--- /dev/null
+++ b/logs/mtp-detect-sonyericsson-w980.txt
@@ -0,0 +1,469 @@
+libmtp version: 0.3.3
+
+Listing raw device(s)
+ Found 1 device(s):
+ 0fce:00da @ bus -100663296, dev 1
+Attempting to connect device(s)
+USB low-level info:
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0fce
+ idProduct: 00da
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: -100663296
+ Device number: 1
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x0fce
+ Product: (null)
+ Vendor id: 0x00da
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0800 ..
+Microsoft device response to control message 1, CMD 0x08:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: Sony Ericsson
+ Model: W980
+ Device version: 1.20
+ Serial number: <my IMEI>
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.0; microsoft.com/WMPPD: 10.0; vodafone.com/omadrmv2: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9810: Get object references
+ 9811: Set object references
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9202: Report Acquired Items
+Events supported:
+ 0x4004
+ 0x4005
+ 0x400a
+Device Properties Supported:
+ 0x5002: Functional Mode
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd404: Unknown property
+ 0xd405: Device Icon
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ b984: 3GP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3004: Text
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3005: HTML
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 3807: GIF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ 380b: PNG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b981: WMV
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, READ ONLY
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ b982: MP4
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 1000000, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+ dc99: OriginalReleaseDate STRING data type DATETIME FORM GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type DATETIME FORM READ ONLY
+ dc09: DateModified STRING data type DATETIME FORM READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ db01: unknown(db01) UINT8 data type enumeration: 0, 1, GET/SET
+ db02: unknown(db02) array of UINT8 data type byte array: GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 7942332416
+ FreeSpaceInBytes: 6469328896
+ FreeSpaceInObjects: 0
+ StorageDescription: Phone Memory
+ VolumeIdentifier:
+Special directories:
+ Default music folder: 0x00000047
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x0000004f
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: W980
+ Synchronization partner: Computer
+libmtp supported (playable) filetypes:
+ Text file
+ HTML file
+ RIFF WAVE file
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ GIF bitmap file
+ Portable Network Graphics
+ Microsoft Windows Media Audio
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">AwUFAwUDAAI=</UNIQUEID><PUBLICKEY private="1">wxZReTsFnkme5YCye3OwxyMV61tXnLGc0Nc9HZA7SjsEH+FgvAg1gQ==</PUBLICKEY><KEYDATA>Cnud0fTYP9B0BQL7m0JRA3ah2NU=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>g8BDBSbyPbiyl+IquCIdFtT0iQHhgXDDer1B4FL931Hbda2zzlI/OA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>npiO50V8R5Y9jzzc8ZgDjw9RKKM=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.108.77</SECURITYVERSION><CERTIFICATE private="1">wxZReTsFnkme5YCye3OwxyMV61tXnLGc0Nc9HZA7SjsEH+FgvAg1gQIEbE39pXiWZmEgPFjjguJ36YI1peNbEKjMEi+UFf88Ho0k31vcmUw/q7Fv</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><MANUFACTURER>Sony Ericsson</MANUFACTURER><MODEL>W980</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><FEATURES><CLOCK>1</CLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><PUBLICKEY>pS+SNteaXee0N8AOh1W/8Jw7Jk7jr7VQqrqgp8zFcU8cTCHK44CvTA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>LL6jsDoHVd6/9weGc1yfsRw323d2c/l0Xj3jQi0hij+jPnKQ6bDWbQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1969</AUTH_ID><PUBLICKEY>dEpKqNm3Lff2JsYrGEVhBucSUjCkbMUxY/SSk7TEXUJnDhxxY0PzLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>kXlpcNBBIcH5n6uNORD3WU2ddhEYu6NtstpGKeIb32vRW23rJ7N7dg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>eBBGny94VfWc9jc6dyta04wiLnSW9iDcMM841FwyqveWJGTtv3t9fA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-thomson-em2804.txt b/logs/mtp-detect-thomson-em2804.txt
new file mode 100644
index 0000000..0d9cde2
--- /dev/null
+++ b/logs/mtp-detect-thomson-em2804.txt
@@ -0,0 +1,391 @@
+~# mtp-detect
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Potential MTP Device with VendorID:069b and ProductID:0774 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device 1 (VID=069b and PID=0774) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 069b
+ idProduct: 0774
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Thomson
+ Model: EM28 Series
+ Device version: SDK4.210
+ Serial number: 0002FA821859E1A70002FA82185D4C93
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; audible.com: 1.0
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 101b: Get partial object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 9810: Get object references
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 97f1: Unknown(97f1)
+ 97f2: Unknown(97f2)
+ 97f3: Unknown(97f3)
+ 1010: Reset device
+Events supported:
+ 0x4004
+ 0x4005
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd402: Device Friendly Name
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 80, 85, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 17, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 352, 353, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b902: OGG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3007: AIFF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b903: AAC
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 41222, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 10000, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 0, STEP 64 GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ ba11: M3U Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ b904: Audible.com Codec
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 16777215, STEP 1 GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, READ ONLY
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form GET/SET
+ da01: unknown(da01) STRING data type READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, GET/SET
+ da04: unknown(da04) UINT128 data type READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2015887360
+ FreeSpaceInBytes: 1232961536
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: 0002FA821859E1A70002FA82185D4C93
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000083
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000099
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: EM28 Series
+ Synchronization partner: {00000000-0000-0000-0000-000000000000}
+ Battery level 125 of 131 (95%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ Audible.com Audio Codec
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
diff --git a/logs/mtp-detect-thomson-m51.txt b/logs/mtp-detect-thomson-m51.txt
new file mode 100644
index 0000000..2d3f117
--- /dev/null
+++ b/logs/mtp-detect-thomson-m51.txt
@@ -0,0 +1,150 @@
+mtp-detect
+libmtp version: 0.3.6
+
+Listing raw device(s)
+Found 1 device(s):
+Thomson: Lyra MC5104B (M51 Series) (069b:077c) @ bus 0, dev 6
+Attempting to connect device(s)
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 0
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 069b
+idProduct: 077c
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Raw device info:
+Bus location: 0
+Device number: 6
+Device entry info:
+Vendor: Thomson
+Vendor id: 0x069b
+Product: Lyra MC5104B (M51 Series)
+Vendor id: 0x077c
+Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: 0100 ..
+Device info:
+Manufacturer: Thomson
+Model: M51 Series
+Device version: SDK4.210
+Serial number: 0002FA937F63C19B0002FA937F610D8C
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0; audible.com: 1.0
+Detected object size: 64 bits
+Supported operations:
+1001: get device info
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+101b: Get partial object
+100b: Delete object
+100c: Send object info
+100d: Send object
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+9802: Get object property description
+9801: Get object properties supported
+9803: Get object property value
+9804: Set object property value
+9805: Get object property list
+9806: Set object property list
+9808: Send object property list
+9101: Get secure time challenge
+9102: Get secure time response
+9103: Set license response
+9104: Get sync list
+9105: Send meter challenge query
+9106: Get meter challenge
+9107: Get meter response
+9108: Clean data store
+9109: Get license state
+910a: Send WMDRM-PD Command
+910b: Send WMDRM-PD Request
+100f: Format storage
+9810: Get object references
+9811: Set object references
+9201: Report Added/Deleted Items
+97f1: Unknown (97f1)
+97f2: Unknown (97f2)
+97f3: Unknown (97f3)
+1010: Reset device
+Events supported:
+0x4004
+0x4005
+Device Properties Supported:
+0xd101: Secure Time
+0xd102: Device Certificate
+0xd402: Friendly Device Name
+0xd401: Synchronization Partner
+0x5001: Battery Level
+0xd100: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+3009: MP3
+3008: MS Wave
+b901: WMA
+b902: OGG
+3007: AIFF
+b903: AAC
+300c: ASF
+3001: Association/Directory
+ba05: Abstract Audio Video Playlist
+3801: JPEG
+ba11: M3U Playlist
+ba03: Abstract Audio Album
+3000: Undefined Type
+b904: Audible.com Codec
+Storage Devices:
+StorageID: 0x00010001
+StorageType: 0x0003 fixed RAM storage
+FilesystemType: 0x0002 generic hierarchical
+AccessCapability: 0x0000 read/write
+MaxCapacity: 4073979904
+FreeSpaceInBytes: 2900426752
+FreeSpaceInObjects: 4294967295
+StorageDescription: Internal Storage
+VolumeIdentifier: 0002FA937F63C19B0002FA937F610D8C
+Special directories:
+Default music folder: 0x00000000
+Default playlist folder: 0x00000000
+Default picture folder: 0x00000000
+Default video folder: 0x00000000
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x00000000
+Default text folder: 0x00000000
+MTP-specific device properties:
+Friendly name: (NULL)
+Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ISO MPEG-1 Audio Layer 3
+RIFF WAVE file
+Microsoft Windows Media Audio
+Ogg container format
+Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+Microsoft Advanced Systems Format
+JPEG file
+Audible.com Audio Codec
+Unable to acquire device certificate, perhaps this device does not support
+this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to
+get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+ERROR: Could not close session!
+inep: usb_get_endpoint_status(): No such device
+outep: usb_get_endpoint_status(): No such device
+usb_clear_halt() on IN endpoint: No such device
+usb_clear_halt() on OUT endpoint: No such device
+usb_clear_halt() on INTERRUPT endpoint: No such device
+OK.
+************************
diff --git a/logs/mtp-detect-thomson-rcah106.txt b/logs/mtp-detect-thomson-rcah106.txt
new file mode 100644
index 0000000..41baf19
--- /dev/null
+++ b/logs/mtp-detect-thomson-rcah106.txt
@@ -0,0 +1,303 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 069b
+ idProduct: 301a
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x0000000a
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Device info:
+ Manufacturer: THOMSON
+ Model: RCA H106
+ Device version: V1.71
+ Serial number: 30B80000000000000000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com/WMDRMPD: 10.1;microsoft.com/AAVT: 1.0;microsoft.com/WMDRMND: 1.0;audible.com: 1.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 101b: Get partial object
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9170: Open Media Session
+ 9171: Close Media Session
+ 9172: Get Next Data Block
+ 9173: Set Current Time Position
+ 9180: Send Registration Request
+ 9181: Get Registration Response
+ 9182: Get Proximity Challenge
+ 9183: Send Proximity Response
+ 9184: Send WMDRM-ND License Request
+ 9185: Get WMDRM-ND License Response
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd100: Unknown property
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b901: WMA
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ 3008: MS Wave
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 0, 1, 2, 3, 8, 9, 11, 49, 50, 80, 85, 352, 353, 354, 355, 356, 41222, GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ b904: Audible.com Codec
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ da00: unknown(da00) UINT32 data type enumeration: 0, 1, 2, 3, 4, 5, 6, 7, 8, GET/SET
+ da02: unknown(da02) UINT32 data type ANY 32BIT VALUE form READ ONLY
+ da03: unknown(da03) UINT16 data type enumeration: 0, 1, READ ONLY
+ da01: unknown(da01) STRING data type GET/SET
+ da04: unknown(da04) array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ 3001: Association/Directory
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b802: Firmware
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 6129004544
+ FreeSpaceInBytes: 2242122630
+ FreeSpaceInObjects: 6192
+ StorageDescription: TCNAND0
+ VolumeIdentifier: 30B80000000000000000000000000000
+Special directories:
+ Default music folder: 0x20000224
+ Default playlist folder: 0x20000009
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: RCA H106
+ Synchronization partner: Longhorn Sync Engine
+ Battery level 100 of 100 (100%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Audible.com Audio Codec
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19770910 02:12:11Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MLgAAAAAAAAAAAAAAAAAAAAAAAA=</UNIQUEID><PUBLICKEY private="1">/xk1FRLtUFQtLumioB3hnjjmCCStWRtCZ+OUINvN4wRjglPz1DTagw==</PUBLICKEY><KEYDATA>KkFgl/xxIQnFTSasJdjDCCv/P24=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>LD33X8FUDo00JUcw8aIxaslZOU1gwe23tnsDKRZCKxdEiLkZ6MqtRA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>lcs/XXhRSo4LmZvRM9Ng82/uNEA=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.103.93</SECURITYVERSION><CERTIFICATE private="1">/xk1FRLtUFQtLumioB3hnjjmCCStWRtCZ+OUINvN4wRjglPz1DTagwIEZ12zLMYIU+hJu3l1M4RYq3Wm7dvKElLPBtkNiU7D3DEFkb5rubXCF6sQ</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>H106</NAME>
+ <MANUFACTURER>Thomson</MANUFACTURER>
+ <MAKE>Portable Media Player</MAKE>
+ <DISTRIBUTOR>Thomson</DISTRIBUTOR>
+ <MODEL>H106</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>A</HARDWARE_VER_MAJOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>eWGqaKD/rEgPNu6GrH4E4KOVmDLU3uH7S0yZJ6AhJCUwYZKiVI3JdQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>bNMpmF0aj44IYQDYnnbcURRgzU1rIlAlL9jNNOzJ0FtEHXngXg2fDw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>705</AUTH_ID><PUBLICKEY>0xGAyvWRMSN9LFmWL0S9WztdgXzTo5nwPQENDz2q6lJ4SPILToOvGQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>YjzR0s45M5rz4YiE8fZjo/rhVHGlVtsW5re00vPgGJS3dc1e3bpHcA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>RCnBbt41GoYgQEzB4T9r432WenXcYM6rdlEo0hCbDwb7H1LhcmNFJg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-toshiba-gigabeat-met401.txt b/logs/mtp-detect-toshiba-gigabeat-met401.txt
new file mode 100644
index 0000000..7825437
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-met401.txt
@@ -0,0 +1,524 @@
+Listing raw device(s)
+Found 1 device(s):
+Toshiba: Gigabeat MET401 (0930:001d) @ bus 0, dev 3
+Attempting to connect device(s)
+PTP: Opening session
+USB low-level info:
+Using kernel interface "usbfs"
+bcdUSB: 512
+bDeviceClass: 255
+bDeviceSubClass: 0
+bDeviceProtocol: 0
+idVendor: 0930
+idProduct: 001d
+IN endpoint maxpacket: 512 bytes
+OUT endpoint maxpacket: 512 bytes
+Raw device info:
+Bus location: 0
+Device number: 3
+Device entry info:
+Vendor: Toshiba
+Vendor id: 0x0930
+Product: Gigabeat MET401
+Vendor id: 0x001d
+Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0930 and ProductID:001d responded to
+control message 2 with a response that was too short. Problems may arrise
+but continuing
+Device info:
+Manufacturer: TOSHIBA
+Model: gigabeat_T Series
+Device version: PMC: 2.21 (3:0); Platform: 2.1 (3.4)
+Serial number: 32b0db90 - aced0f4e - 80bd1ff8 - 8ee00652
+Vendor extension ID: 0x00000006
+Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD:
+10.1; microsoft.com/WMPPD: 11.1; microsoft.com/WMPMCPREMCONT: 1.0;
+Detected object size: 64 bits
+Supported operations:
+1001: get device info
+1002: Open session
+1003: Close session
+1004: Get storage IDs
+1005: Get storage info
+1006: Get number of objects
+1007: Get object handles
+1008: Get object info
+1009: Get object
+100b: Delete object
+100c: Send object info
+100d: Send object
+100f: Format storage
+1010: Reset device
+1014: Get device property description
+1015: Get device property value
+1016: Set device property value
+1019: Move object
+101b: Get partial object
+9810: Get object references
+9811: Set object references
+9802: Get object property description
+9807: Get interdependent property description
+9801: Get object properties supported
+9803: Get object property value
+9804: Set object property value
+9805: Get object property list
+9806: Set object property list
+9808: Send object property list
+9101: Get secure time challenge
+9102: Get secure time response
+9103: Set license response
+9104: Get sync list
+9105: Send meter challenge query
+9106: Get meter challenge
+9107: Get meter response
+9108: Clean data store
+9109: Get license state
+910a: Send WMDRM-PD Command
+910b: Send WMDRM-PD Request
+9201: Report Added/Deleted Items
+9202: Report Acquired Items
+9204: Unknown (9204)
+Events supported:
+None.
+Device Properties Supported:
+0xd101: Secure Time
+0xd401: Synchronization Partner
+0x5001: Battery Level
+0xd102: Device Certificate
+0xd402: Friendly Device Name
+0xd131: PlaysForSure ID
+Playable File (Object) Types and Object Properties Supported:
+3009: MP3
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 550000, STEP 1 READ
+ONLY
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc8c: Genre STRING data type GET/SET
+dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33,
+34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+b901: WMA
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1572864, STEP 1 READ
+ONLY
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc8c: Genre STRING data type GET/SET
+dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33,
+34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 353, 354, 355, 10, READ
+ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+3008: MS Wave
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1572864, STEP 1 READ
+ONLY
+dc9a: AlbumName STRING data type GET/SET
+dc9b: AlbumArtist STRING data type GET/SET
+dc46: Artist STRING data type GET/SET
+dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1
+GET/SET
+dc8c: Genre STRING data type GET/SET
+dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33,
+34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de93: SampleRate UINT32 data type range: MIN 4000, MAX 48000, STEP 50
+GET/SET
+de99: AudioWAVECodec UINT32 data type enumeration: 353, 85, 1, 2, 6, 17,
+49, READ ONLY
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+300c: ASF
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX
+30000, STEP 1 GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form
+GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dea1: EncodingProfile STRING data type GET/SET
+d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+de9e: KeyFrameDistance UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+
+dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+
+dc4c: Source STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33,
+34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+dc94: ParentalRating STRING data type GET/SET
+dc98: Subtitle STRING data type GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 363520, STEP 1 READ
+ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+de9f: BufferSize UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+dea0: EncodingQuality UINT32 data type range: MIN 50, MAX 50, STEP 1
+GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50
+GET/SET
+de97: ScanDepth UINT16 data type range: MIN 1, MAX 1, STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 827739479,
+844516695, 1347833175, 844125783, GET/SET
+de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 736000, STEP 1 READ
+ONLY
+b981: WMV
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX
+30000, STEP 1 GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form
+GET/SET
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dea1: EncodingProfile STRING data type GET/SET
+d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+de9e: KeyFrameDistance UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+
+dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+
+dc4c: Source STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33,
+34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ
+ONLY
+dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+dc94: ParentalRating STRING data type GET/SET
+dc98: Subtitle STRING data type GET/SET
+de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ
+ONLY
+de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+de9f: BufferSize UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+dea0: EncodingQuality UINT32 data type range: MIN 50, MAX 50, STEP 1
+GET/SET
+de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50
+GET/SET
+de97: ScanDepth UINT16 data type range: MIN 1, MAX 1, STEP 1 READ ONLY
+de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 827739479,
+844516695, 1347833175, 844125783, GET/SET
+de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 736000, STEP 1 READ
+ONLY
+3801: JPEG
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 640, STEP 1 GET/SET
+dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+3804: BMP
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc87: Width UINT32 data type range: MIN 0, MAX 640, STEP 1 GET/SET
+dc47: DateAuthored STRING data type DATETIME FORM GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+3001: Association/Directory
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ba03: Abstract Audio Album
+dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320,
+STEP 1 GET/SET
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP
+1 GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337,
+GET/SET
+d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240,
+STEP 1 GET/SET
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+dc9b: AlbumArtist STRING data type GET/SET
+dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+
+dc46: Artist STRING data type GET/SET
+dc8c: Genre STRING data type GET/SET
+ba05: Abstract Audio Video Playlist
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+3000: Undefined Type
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+b802: Firmware
+dc44: Name STRING data type GET/SET
+dc04: ObjectSize UINT64 data type READ ONLY
+dc08: DateCreated STRING data type DATETIME FORM GET/SET
+dc09: DateModified STRING data type DATETIME FORM GET/SET
+dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+dc0a: Keywords STRING data type GET/SET
+dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+dc07: ObjectFileName STRING data type GET/SET
+dc42: SyncID STRING data type GET/SET
+dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+Storage Devices:
+StorageID: 0x00010001
+StorageType: 0x0003
+FilesystemType: 0x0002
+AccessCapability: 0x0000
+MaxCapacity: 3980918784
+FreeSpaceInBytes: 2949480448
+FreeSpaceInObjects: 4294967295
+StorageDescription: Storage
+VolumeIdentifier: 32b0db90 - aced0f4e - 80bd1ff8 - 8ee00652
+Special directories:
+Default music folder: 0x08000001
+Default playlist folder: 0x00000000
+Default picture folder: 0x08000006
+Default video folder: 0x08000008
+Default organizer folder: 0x00000000
+Default zencast folder: 0x00000000
+Default album folder: 0x0800000b
+Default text folder: 0x00000000
+MTP-specific device properties:
+Friendly name: (NULL)
+Synchronization partner: {6D522C79-BD5D-4BA2-B791-7CBFE5EDB75D}
+Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ISO MPEG-1 Audio Layer 3
+Microsoft Windows Media Audio
+RIFF WAVE file
+Microsoft Advanced Systems Format
+Microsoft Windows Media Video
+JPEG file
+BMP bitmap file
+Firmware file
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">zCPCZLYFLvuKt0TnOISNxcmV/gM=</UNIQUEID><PUBLICKEY
+private="1">aY+9QpVRs1h7fWqDuetEsTqHrX5mQa3Tp8C9V6k8oylA2vqTdMXTAg==</PUBLI
+CKEY><KEYDATA>+6lyJzOWuTQvDLprp/0z8qOR7Ok=</KEYDATA></DATA><MSDRM_SIGNATURE
+_VALUE>rzyoDNdhKdSFJXYxwBy8dezNTULUVf8wXXOU9O6LV8m1bHrrCBevRA==</MSDRM_SIGN
+ATURE_VALUE><SYMSIGNATURE>ujbe6CEe0ruAawznaq1P0JTqGoY=</SYMSIGNATURE></CERT
+IFICATE><FALLBACK><SECURITYVERSION>2.4.109.191</SECURITYVERSION><CERTIFICAT
+E
+private="1">aY+9QpVRs1h7fWqDuetEsTqHrX5mQa3Tp8C9V6k8oylA2vqTdMXTAgIEbb8x/9R
+a9jMtNk1PMJdUSDZwY6uWdMqCnTUh7qXPgkhpR2koNPHV4k1O</CERTIFICATE></FALLBACK><
+CERTIFICATE type="GROUP"><DATA><NAME>Gigabeat</NAME>
+<MANUFACTURER>Toshiba Corporation</MANUFACTURER>
+<MODEL>T Series</MODEL>
+<HARDWARE_VER_MAJOR>1.0</HARDWARE_VER_MAJOR>
+<FIRMWARE_VER_MAJOR>2.2</FIRMWARE_VER_MAJOR>
+<SECURITYLEVEL>2000</SECURITYLEVEL>
+<FEATURES>
+<CLOCK>1</CLOCK>
+<METERING>1</METERING>
+<LICENSE_ACQ>1</LICENSE_ACQ>
+<LICENSE_SYNC>1</LICENSE_SYNC>
+<ENCRYPTION>1</ENCRYPTION>
+</FEATURES>
+<LIMITS>
+<MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+<MAXLICENSESIZE>10240</MAXLICENSESIZE>
+<MAXHEADERSIZE>5120</MAXHEADERSIZE>
+</LIMITS><PUBLICKEY>kCbzqA4FQ9ydIlf1wFVQqfzGCkzzy4kIowhqKZnDzrz1CJjK/sKNEA=
+=</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>McIRp9c8wex4xqODCC0lxMDViFUwuvBH
+x8jnWqX19omsDZCNw0XXYg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>2339
+</AUTH_ID><PUBLICKEY>3C+L7y4RbEeI220k9VkNLWdPZ2NRxfPuiO1n2CfEqgG8lJpCOKWfiQ
+==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>MqlbyFzMugkUK9KyavQTXdHswD+xojP
+6KT2UIARVlpkeR3u1+m1wbg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbO
+gktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNA
+TURE_VALUE>+wMFbh+eWDfLNaYMV/W2XpxlP3HZLNhULUFZiHT3hZ7IuNCcPjZeIA==</MSDRM_
+SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+<WMP DeviceID="{954DDB85-5F58-403B-B5D3-F563D1FE742C}"
+RelationshipID="{6D522C79-BD5D-4BA2-B791-7CBFE5EDB75D}"/>
+</DeviceInfo>
diff --git a/logs/mtp-detect-toshiba-gigabeat-meu202.txt b/logs/mtp-detect-toshiba-gigabeat-meu202.txt
new file mode 100644
index 0000000..4f0c82e
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-meu202.txt
@@ -0,0 +1,317 @@
+libmtp version: 0.2.5
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 0018
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000059
+Device info:
+ Manufacturer: TOSHIBA
+ Model: TOSHIBA gigabeat U
+ Device version: 1.00US
+ Serial number: 1A5B23374455AA55
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 22050, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 22050, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 705600, MAX 1536000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type enumeration: 32000, 48000, 64000, 96000, 128000, 160000, 192000, 256000, READ ONLY
+ 300c: ASF
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type enumeration: 32000, 48000, 64000, 96000, 128000, 160000, 192000, 256000, READ ONLY
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1987833856
+ FreeSpaceInBytes: 166289408
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x30010005
+ Default playlist folder: 0x30010002
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: TOSHIBA gigabeat U
+ Synchronization partner: 84C4F957-962A-4BA7-860E-2BBBBD173ACD
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20080128
+00:49:58Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">MUE1QjIzMzc0NDU1QUE1NQAAAAA=</UNIQUEID><PUBLICKEY
+private="1">vlDwTQs9V09uBXIS1s2CC+zPPzQNdjdZHHqmAg5S0PKN/ijWLU49KA==</PUBLICKEY><KEYDATA>4lUBBtk+QkQM8aVdomZHDpjqSNQ=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>keivPI9BmZkdL0F8tPt+sk48qBmVFuiQoAk0QY0yVHKfEE3CUdWqGA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>hopjarK0z1UYXjtbdLR833jQOv0=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.241</SECURITYVERSION><CERTIFICATE
+private="1">vlDwTQs9V09uBXIS1s2CC+zPPzQNdjdZHHqmAg5S0PKN/ijWLU49KAIEavHda6648B4acUdFjdlCtxOI/npxdS7UaBvWc5/qvMprJ0bBvEo6qeIv</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>TOSHIBA gigabeat</NAME>
+ <MANUFACTURER>TOSHIBA</MANUFACTURER>
+ <MAKE>TOSHIBA</MAKE>
+ <DISTRIBUTOR>TOSHIBA</DISTRIBUTOR>
+ <MODEL>MEUXXX</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>1</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>2</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>jEnTBNEUdeNO9vCxAeCzL6CdI3pkE4IR1wl6p70Ixx/5m+qG+96pPg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>WlcEK0NKu2YXWhBWnWJCQAROs4PshdCTEevBxyaG1qwj5WheXVWfDg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1621</AUTH_ID><PUBLICKEY>3EzYMThGosXetNLAQgw9jxk2tl1h2e869W48bnEW+T13t5udtnZdeg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>0ZMunnXroTdVa0ioUHlqlgCBWYDk8w9g+iV9MKrSDlBKbTqe+WaVPg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>1zim2b/my9FrK2roZlRmiyqYvh+1pbtIM01HGLR+KWovel+XSgbAMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+Segmentation fault (core dumped)
diff --git a/logs/mtp-detect-toshiba-gigabeat-p10.txt b/logs/mtp-detect-toshiba-gigabeat-p10.txt
new file mode 100644
index 0000000..e3b6f3e
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-p10.txt
@@ -0,0 +1,159 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 0011
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: TOSHIBA
+ Model: gigabeat
+ Device version: %OUT_PAD:128%
+ Serial number: 4002F9D1641284A0
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 0x1001
+ 0x1002
+ 0x1003
+ 0x1004
+ 0x1005
+ 0x1006
+ 0x1007
+ 0x1008
+ 0x1009
+ 0x100b
+ 0x100c
+ 0x100d
+ 0x1014
+ 0x1015
+ 0x1016
+ 0x9802
+ 0x9801
+ 0x9803
+ 0x9804
+ 0x9805
+ 0x9806
+ 0x9808
+ 0x9101
+ 0x9102
+ 0x9103
+ 0x9104
+ 0x9105
+ 0x9106
+ 0x9107
+ 0x9108
+ 0x9109
+ 0x910a
+ 0x910b
+ 0x100f
+ 0x97f1
+ 0x97f2
+Events supported:
+ 0x4002
+ 0x4003
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc9a: AlbumName
+ dc46: Artist
+ de93: SampleRate
+ de94: NumberOfChannels
+ de9a: AudioBitRate
+ dc44: Name
+ dc89: Duration
+ 3008: MS Wave
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc9a: AlbumName
+ dc46: Artist
+ de93: SampleRate
+ de94: NumberOfChannels
+ de9a: AudioBitRate
+ dc44: Name
+ dc89: Duration
+ b901: WMA
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc9a: AlbumName
+ dc46: Artist
+ de93: SampleRate
+ de94: NumberOfChannels
+ de9a: AudioBitRate
+ dc44: Name
+ dc89: Duration
+ de99: AudioWAVECodec
+ 3001: Association/Directory
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc05: AssociationType
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+ dc44: Name
+ 3000: Undefined Type
+ dc01: StorageID
+ dc02: ObjectFormat
+ dc03: ProtectionStatus
+ dc04: ObjectSize
+ dc07: ObjectFileName
+ dc08: DateCreated
+ dc0b: ParentObject
+ dc41: PersistantUniqueObjectIdentifier
+ dc4f: NonConsumable
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Total bytes on device: 1022623744 (975 MB)
+ Free bytes on device: 1007583232 (960 MB)
+ Storage description: "Internal Storage"
+ Error getting battery info...
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19700101
+05:23:25Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
diff --git a/logs/mtp-detect-toshiba-gigabeat-p20.txt b/logs/mtp-detect-toshiba-gigabeat-p20.txt
new file mode 100644
index 0000000..ce4ff5f
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-p20.txt
@@ -0,0 +1,250 @@
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 000f
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: TOSHIBA
+ Model: gigabeat
+ Device version: 3.021JP %OUT_PAD:128%
+ Serial number: 4002FDCCDF9B4AA3
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 100f: Format storage
+ 97f1: Unknown(97f1)
+ 97f2: Unknown(97f2)
+Events supported:
+ 0x4002
+ 0x4003
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ 3008: MS Wave
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 8000, 16000, 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 5000, MAX 430000, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, 304, READ ONLY
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc44: Name STRING data type GET/SET
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2017460224
+ FreeSpaceInBytes: 1945272320
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Internal Storage
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x00000001
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+WMPInfo.xml Does not exist on this device
+<errors>
+
+
+low-level info:
+   Using kernel interface "usbfs"
+   bcdUSB: 512
+   bDeviceClass: 0
+   bDeviceSubClass: 0
+   bDeviceProtocol: 0
+   idVendor: 0930
+   idProduct: 000f
+   IN endpoint maxpacket: 512 bytes
+   OUT endpoint maxpacket: 512 bytes
+   Device flags: 0x00000000
+Device info:
+   Manufacturer: TOSHIBA
+   Model: gigabeat        
+   Device version: 3.021JP %OUT_PAD:128%
+   Serial number: 4002FDCCDF9B4AA3:128%
+   Vendor extension ID: 0x00000006
+   Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1
+Supported operations:
+   1001: get device info
+   1002: Open session
+   1003: Close session
+   1004: Get storage IDs
+   1005: Get storage info
+   1006: Get number of objects
+   1007: Get object handles
+   1008: Get object info
+   1009: Get object
+   100b: Delete object
+   100c: Send object info
+   100d: Send object
+   1014: Get device property description
+   1015: Get device property value
+   1016: Set device property value
+   9802: Get object property description
+   9801: Get object properties supported
+   9803: Get object property value
+   9804: Set object property value
+   9805: Get object property list
+   9806: Set object property list
+   9808: Send object property list
+   9101: Get secure time challenge
+   9102: Get secure time response
+   9103: Set license response
+   9104: Get sync list
+   9105: Send meter challenge query
+   9106: Get meter challenge
+   9107: Get meter response
+   9108: Clean data store
+   9109: Get license state
+   910a: Send WMDRM-PD Command
+   910b: Send WMDRM-PD Request
+   100f: Format storage
+   97f1: Unknown(97f1)
+   97f2: Unknown(97f2)
+Events supported:
+   0x4002
+   0x4003
+Device Properties Supported:
+   0xd101: Secure Time
+   0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+   3009: MP3
+   3008: MS Wave
+   b901: WMA
+   3001: Association/Directory
+   3000: Undefined Type
+Special directories:
+   Default music folder: 0x00000000
+   Default playlist folder: 0x00000000
+   Default picture folder: 0x00000000
+   Default video folder: 0x00000000
+   Default organizer folder: 0x00000000
+   Default zencast folder: 0x00000000
+   Default album folder: 0x00000000
+   Default text folder: 0x00000000
+MTP-specific device properties:
+   Friendly name: (NULL)
+   Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+   ISO MPEG-1 Audio Layer 3
+   RIFF WAVE file
+   Microsoft Windows Media Audio
+OK.
diff --git a/logs/mtp-detect-toshiba-gigabeat-s.txt b/logs/mtp-detect-toshiba-gigabeat-s.txt
new file mode 100644
index 0000000..e91b5e7
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-s.txt
@@ -0,0 +1,458 @@
+$ mtp-detect
+libmtp version: 0.2.1
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 0010
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000001
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: TOSHIBA
+ Model: gigabeat S
+ Device version: PMC: 2.11 (632:1400); Platform: 1.1 (632.4)
+ Serial number: 3c98dbd8 - d0a2274e - 80bd1ff8 - 8ee00652
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.1; microsoft.com/WMPMCPREMCONT: 1.0
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9807: Get interdependent property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9204: Unknown (9204)
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd181: Unknown property
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd131: PlaysForSure ID
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 550000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1572864, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, 355, 10, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1572864, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 4000, MAX 48000, STEP 50 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, 85, 1, 2, 6, 17, 49, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ 300c: ASF
+ da84: unknown(da84) STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ da82: unknown(da82) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dea1: EncodingProfile STRING data type READ ONLY
+ da81: unknown(da81) STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ da83: unknown(da83) UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9e: KeyFrameDistance UINT32 data type enumeration: 3, READ ONLY
+ dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4c: Source STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc94: ParentalRating STRING data type GET/SET
+ da86: unknown(da86) STRING data type GET/SET
+ da85: unknown(da85) UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc98: Subtitle STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 363520, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 1, 2, READ ONLY
+ de9f: BufferSize UINT32 data type enumeration: 3, READ ONLY
+ dea0: EncodingQuality UINT32 data type enumeration: 50, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 827739479, 844516695, 1347833175, 844125783, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 736000, STEP 1 READ ONLY
+ b981: WMV
+ da84: unknown(da84) STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ da82: unknown(da82) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dea1: EncodingProfile STRING data type READ ONLY
+ da81: unknown(da81) STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ da83: unknown(da83) UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ de9e: KeyFrameDistance UINT32 data type enumeration: 3, READ ONLY
+ dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4c: Source STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type ANY 16BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, READ ONLY
+ dc94: ParentalRating STRING data type GET/SET
+ da86: unknown(da86) STRING data type GET/SET
+ da85: unknown(da85) UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc98: Subtitle STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 1, 2, READ ONLY
+ de9f: BufferSize UINT32 data type enumeration: 3, READ ONLY
+ dea0: EncodingQuality UINT32 data type enumeration: 50, READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 READ ONLY
+ de97: ScanDepth UINT16 data type enumeration: 1, READ ONLY
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 827739479, 844516695, 1347833175, 844125783, READ ONLY
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 736000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 640, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3804: BMP
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 640, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ ba03: Abstract Audio Album
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 29804494848
+ FreeSpaceInBytes: 29264216064
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage
+ VolumeIdentifier: 3c98dbd8 - d0a2274e - 80bd1ff8 - 8ee00652
+Special directories:
+ Default music folder: 0x08000002
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x08000012
+ Default video folder: 0x08000001
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x08000005
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+ Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ BMP bitmap file
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20070908
+22:35:43Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">I7JMxYhMy06EuG4+cjB3rFuyrCY=</UNIQUEID><PUBLICKEY
+private="1">pkprBihWuZMZXU1ppUvFwcljFBDVoPH44NMSAo+G5XLfY/qXwHJAEQ==</PUBLICKEY><KEYDATA>n5eAkeU/mRs1Vzq9NY/xgIkmlws=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>q+pVw9b5+yPsZb29BciPRGCBLBPNcwCDb7KCU/5wWvcBQqgVYsMpBw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>NZ9XLlac1576Wl4Isz1msc6AbkQ=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.104.7</SECURITYVERSION><CERTIFICATE
+private="1">pkprBihWuZMZXU1ppUvFwcljFBDVoPH44NMSAo+G5XLfY/qXwHJAEQIEaAcsAQEodskQHYzfp6Y4rQfI68tCWtwZ2EeK3mUfLutNILfgUfvjs+Eh</CERTIFICATE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Gigabeat SX</NAME>
+ <MANUFACTURER>Toshiba</MANUFACTURER>
+ <MODEL>MESX</MODEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+
+<PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+
+</LIMITS><PUBLICKEY>mq9FuW1IisvTC7I+VFY5V07b739t9ZBFciSg/Ntg3Ezwk6lB1Zt2hA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>M1PUu1j1eqHSezQOzt2/JTOy8XrB/pP4h6qWZXGxonNm270x/H2OgQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>875</AUTH_ID><PUBLICKEY>HLFlAm8b55EZcqjzoT5TXEAOVDoG+I2xwgbAWaV0WdOJ7aWD/+HwLQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>qsT0KdwKbh7V9DQs6A+ODoohSWp/KXaJgKtVph2ywIDDKjVNaUjIfg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ksv+Gms8aGkBXflfmLTMuJ3C3lsrKElMFGcidxk3d756HCidX36vKQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{D46CDC32-280A-4898-878C-D0B06CB9720D}"
+RelationshipID="{00000000-0000-0000-0000-000000000000}"/>
+</DeviceInfo>
+
+OK. \ No newline at end of file
diff --git a/logs/mtp-detect-toshiba-gigabeat-t.txt b/logs/mtp-detect-toshiba-gigabeat-t.txt
new file mode 100644
index 0000000..4829dd3
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-t.txt
@@ -0,0 +1,461 @@
+libmtp version: 0.2.4
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 0019
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: TOSHIBA
+ Model: gigabeat T Series
+ Device version: PMC: 2.21 (2:0); Platform: 1.0 (2.4)
+ Serial number: 2882db60 - acee2c4e - 80bd1ff8 - 8ee00652
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.1; microsoft.com/WMPMCPREMCONT: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9807: Get interdependent property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9204: Unknown (9204)
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd131: PlaysForSure ID
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 550000, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ b901: WMA
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1572864, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, 355, 10, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ 3008: MS Wave
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 1572864, STEP 1 READ ONLY
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de93: SampleRate UINT32 data type range: MIN 4000, MAX 48000, STEP 50 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, 85, 1, 2, 6, 17, 49, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ 300c: ASF
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de9e: KeyFrameDistance UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+ dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4c: Source STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc98: Subtitle STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 363520, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ de9f: BufferSize UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+ dea0: EncodingQuality UINT32 data type range: MIN 50, MAX 50, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 GET/SET
+ de97: ScanDepth UINT16 data type range: MIN 1, MAX 1, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 827739479, 844516695, 1347833175, 844125783, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ b981: WMV
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc09: DateModified STRING data type GET/SET
+ de9d: FramesPerThousandSeconds UINT32 data type range: MIN 15000, MAX 30000, STEP 1 GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc4b: CopyrightInformation array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dea1: EncodingProfile STRING data type GET/SET
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ de9e: KeyFrameDistance UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+ dc9e: SubDescription array of UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc4c: Source STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc95: MetaGenre UINT16 data type enumeration: 1, 17, 18, 19, 20, 21, 33, 34, 35, 36, 37, 38, 39, 40, 48, GET/SET
+ de91: TotalBitRate UINT32 data type range: MIN 1, MAX 800000, STEP 1 READ ONLY
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc94: ParentalRating STRING data type GET/SET
+ dc98: Subtitle STRING data type GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 1, MAX 320000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ de9f: BufferSize UINT32 data type range: MIN 3, MAX 3, STEP 1 GET/SET
+ dea0: EncodingQuality UINT32 data type range: MIN 50, MAX 50, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type range: MIN 8000, MAX 48000, STEP 50 GET/SET
+ de97: ScanDepth UINT16 data type range: MIN 1, MAX 1, STEP 1 READ ONLY
+ de9b: VideoFourCCCodec UINT32 data type enumeration: 861293911, 827739479, 844516695, 1347833175, 844125783, GET/SET
+ de9c: VideoBitRate UINT32 data type range: MIN 1, MAX 850000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 640, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3804: BMP
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 480, STEP 1 GET/SET
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 640, STEP 1 GET/SET
+ dc47: DateAuthored STRING data type GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3001: Association/Directory
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ ba03: Abstract Audio Album
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 GET/SET
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, GET/SET
+ d901: BuyFlag UINT8 data type enumeration: 0, 1, GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 GET/SET
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type byte array: GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ 3000: Undefined Type
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ b802: Firmware
+ dc44: Name STRING data type GET/SET
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc08: DateCreated STRING data type GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc0d: Hidden UINT16 data type enumeration: 0, 1, GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc42: SyncID STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 4006084608
+ FreeSpaceInBytes: 2009071616
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage
+ VolumeIdentifier: 2882db60 - acee2c4e - 80bd1ff8 - 8ee00652
+Special directories:
+ Default music folder: 0x08000004
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x08000001
+ Default video folder: 0x08000003
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x08000007
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: {26D8149D-9189-4DE9-94AE-95594F674433}
+ Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ BMP bitmap file
+ Firmware file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20071209 13:16:57Z#</VALUE><FLAG>DRM_CLK_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">J/HelP1bwxt+od0lIBQ89K6osQM=</UNIQUEID><PUBLICKEY private="1">63A22JMMlPDkDz52xvYhZ8IlgiuGLAO1BwtWwr3UCgd4bNS7TAJ6Yg==</PUBLICKEY><KEYDATA>6WMSq6+xb26kp2b1Y6UiCxznxfw=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>1AjAYxDONoqxs3nhD48tu6GZZzwXKGlMbxuYltvfZhnsH0KH4Cbfhg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>vet93M4zoQIS9dpUzV7B8tCQohs=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.107.223</SECURITYVERSION><CERTIFICATE private="1">63A22JMMlPDkDz52xvYhZ8IlgiuGLAO1BwtWwr3UCgd4bNS7TAJ6YgIEa99bh75g6t2c47iqa1ZszTIMmAEHJWXQwtmoOP0AehMAahmDacjdTNVC</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>gigabeat T401</NAME>
+ <MANUFACTURER>Toshiba Corporation</MANUFACTURER>
+ <MODEL>MEVT401</MODEL>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>1</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>x/vBRN5rpKG1OW0jXNKgqDIpTkp/I1cZ6KA/8rd8c3mSTHIAiFqGZQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>GdiWGnhYbYcHrGsVaqUG7iInUQDHy4P2VPb2pdlpseRYRlL4y5Cvbg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1859</AUTH_ID><PUBLICKEY>Mtp/WMYcetnBdGLVytzm+XJQEDQ6/+UG9C8pLCA74iN2l8HDoXU0DA==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ocJTXNKCQIFdk5LDV8FNYkmL3jmyzys32TZTmvvfMdKr8CD8zOyAbA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>ELr3ZFG2DcsvpebAGBcr21qjnoNh9i4OJ1tSMkvAI9MSN0pMRdrgMw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+
+Device description WMPInfo.xml file:
+<DeviceInfo>
+ <WMP DeviceID="{4EFD62FB-F112-43C9-BF67-F54A41578BBB}" RelationshipID="{26D8149D-9189-4DE9-94AE-95594F674433}"/>
+</DeviceInfo>
+
+OK.
diff --git a/logs/mtp-detect-toshiba-gigabeat-u.txt b/logs/mtp-detect-toshiba-gigabeat-u.txt
new file mode 100644
index 0000000..a32ccdd
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-u.txt
@@ -0,0 +1,307 @@
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 0016
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: TOSHIBA
+ Model: TOSHIBA gigabeat U
+ Device version: 1.00JP
+ Serial number: 2AC1E2766155AA55
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 10.0;
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1017: Reset device property value
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9810: Get object references
+ 9811: Set object references
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 9201: Report Added/Deleted Items
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc05: AssociationType UINT16 data type enumeration: 0, 1, GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ 3009: MP3
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 22050, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 32000, MAX 320000, STEP 1 READ ONLY
+ 3008: MS Wave
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type range: MIN 22050, MAX 48000, STEP 50 READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 2, READ ONLY
+ de9a: AudioBitRate UINT32 data type range: MIN 705600, MAX 1536000, STEP 1 READ ONLY
+ 3801: JPEG
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ b802: Firmware
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ b901: WMA
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type enumeration: 32000, 48000, 64000, 96000, 128000, 160000, 192000, 256000, READ ONLY
+ 300c: ASF
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ de93: SampleRate UINT32 data type enumeration: 22050, 32000, 44100, 48000, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: AudioBitRate UINT32 data type enumeration: 32000, 48000, 64000, 96000, 128000, 160000, 192000, 256000, READ ONLY
+ ba03: Abstract Audio Album
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 0, MAX -1, STEP 1 READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 0, MAX 240, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 0, MAX 320, STEP 1 READ ONLY
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc88: Height UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc07: ObjectFileName STRING data type READ ONLY
+ dc09: DateModified STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1987833856
+ FreeSpaceInBytes: 1981644800
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x30010002
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: TOSHIBA gigabeat U
+ Synchronization partner: 84C4F957-962A-4BA7-860E-2BBBBD173ACD
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ JPEG file
+ Firmware file
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19700330 02:33:55Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MkFDMUUyNzY2MTU1QUE1NQAAAAA=</UNIQUEID><PUBLICKEY private="1">OvTV6pukNR1ihmLOUYfTwD9FzB0lLxb1EomZWEtWDp/F0iQTn6yOCA==</PUBLICKEY><KEYDATA>IEjO6O8xSK1cX96h/NZiRiAq+Is=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>yK0BfLy2B5yBxcxwuLoDLW3r5SB8QPe1VftNlyI1SIX4UIcVPt/LeA==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>cWwkf0IgOZFtz7JYqGD3vkpcFk8=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.106.241</SECURITYVERSION><CERTIFICATE private="1">OvTV6pukNR1ihmLOUYfTwD9FzB0lLxb1EomZWEtWDp/F0iQTn6yOCAIEavFLOUnXOVwqsP3kWiCaeKkN7sRRTS07FSjrDVXA4fZnESAeZ3zx4EYl</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>TOSHIBA gigabeat</NAME>
+ <MANUFACTURER>TOSHIBA</MANUFACTURER>
+ <MAKE>TOSHIBA</MAKE>
+ <DISTRIBUTOR>TOSHIBA</DISTRIBUTOR>
+ <MODEL>MEUXXX</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>1</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>2</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>1</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>jEnTBNEUdeNO9vCxAeCzL6CdI3pkE4IR1wl6p70Ixx/5m+qG+96pPg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>WlcEK0NKu2YXWhBWnWJCQAROs4PshdCTEevBxyaG1qwj5WheXVWfDg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1621</AUTH_ID><PUBLICKEY>3EzYMThGosXetNLAQgw9jxk2tl1h2e869W48bnEW+T13t5udtnZdeg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>0ZMunnXroTdVa0ioUHlqlgCBWYDk8w9g+iV9MKrSDlBKbTqe+WaVPg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>1zim2b/my9FrK2roZlRmiyqYvh+1pbtIM01HGLR+KWovel+XSgbAMg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
+
+
diff --git a/logs/mtp-detect-toshiba-gigabeat-v30.txt b/logs/mtp-detect-toshiba-gigabeat-v30.txt
new file mode 100644
index 0000000..7f77ee3
--- /dev/null
+++ b/logs/mtp-detect-toshiba-gigabeat-v30.txt
@@ -0,0 +1,141 @@
+libmtp version: 0.2.2
+
+Attempting to connect device(s)
+PTP: Opening session
+Detect: Successfully connected 1 devices
+Error 2: PTP Layer error 02ff: get_all_metadata_fast(): could not get proplist of all objects.
+Error 2: (Look this up in ptp.h for an explanation.)
+Error 2: PTP Layer error 02ff: get_handles_recursively(): could not get object handles.
+Error 2: (Look this up in ptp.h for an explanation.)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0930
+ idProduct: 0014
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: fe00 ..
+Microsoft device response to control message 1, CMD 0xfe:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Potential MTP Device with VendorID:0930 and ProductID:0014 responded to control message 2 with a response that was too short. Problems may arrise but continuing
+Device info:
+ Manufacturer: TOSHIBA
+ Model: gigabeat V
+ Device version: PMC: 2.11 (632:1400); Platform: 1.0 (632.4)
+ Serial number: 019fdbe0 - acee5a4e - 80bd1ff8 - 8ee00652
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD: 10.1; microsoft.com/WMPPD: 11.1; microsoft.com/WMPMCPREMCONT: 1.0
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9807: Get interdependent property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+ 9201: Report Added/Deleted Items
+ 9202: Report Acquired Items
+ 9204: Unknown (9204)
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd181: Unknown property
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Friendly Device Name
+ 0xd131: PlaysForSure ID
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ b901: WMA
+ 3008: MS Wave
+ 300c: ASF
+ b981: WMV
+ 3801: JPEG
+ 3804: BMP
+ 3001: Association/Directory
+ ba03: Abstract Audio Album
+ ba05: Abstract Audio Video Playlist
+ 3000: Undefined Type
+ b802: Firmware
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 29804494848
+ FreeSpaceInBytes: 19031097344
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage
+ VolumeIdentifier: 019fdbe0 - acee5a4e - 80bd1ff8 - 8ee00652
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ RIFF WAVE file
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+ BMP bitmap file
+ Firmware file
+Unable to acquire device certificate, perhaps this device does not support this
+Error 2: PTP Layer error 02ff: get_device_unicode_property(): failed to get unicode property.
+Error 2: (Look this up in ptp.h for an explanation.)
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+ERROR: Could not close session!
+OK.
diff --git a/logs/mtp-detect-trekstor-ibeat-sweez-fm.txt b/logs/mtp-detect-trekstor-ibeat-sweez-fm.txt
new file mode 100644
index 0000000..c50efd6
--- /dev/null
+++ b/logs/mtp-detect-trekstor-ibeat-sweez-fm.txt
@@ -0,0 +1,210 @@
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 0402
+ idProduct: 0611
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: Trekstor
+ Model: i.Beat sweez FM
+ Device version: V2.04.06
+ Serial number: 00000000000000403060000000002453
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com:1.0; microsoft.com/WMDRMPD: 10.1
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Device Friendly Name
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+Playable File (Object) Types and Object Properties Supported:
+ 3000: Undefined Type
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ 3001: Association/Directory
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 65535000, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 360000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ b901: WMA
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 65535000, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 360000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 353, READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 3009: MP3
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc09: DateModified STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 65535000, STEP 1 GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ de93: SampleRate UINT32 data type enumeration: 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, READ ONLY
+ de94: NumberOfChannels UINT16 data type enumeration: 2, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 8000, MAX 360000, STEP 1 READ ONLY
+ de99: AudioWAVECodec UINT32 data type enumeration: 85, READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+ 300c: ASF
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ ba05: Abstract Audio Video Playlist
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ ba03: Abstract Audio Album
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc9b: AlbumArtist STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 2060180992
+ FreeSpaceInBytes: 109903872
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: i.Beat sweez FM
+ VolumeIdentifier: 10000000000000403060000000002453
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: i.Beat sweez FM
+ Synchronization partner: Windows Media Player 10
+ Battery level 0 of 24 (0%)
+libmtp supported (playable) filetypes:
+ Microsoft Windows Media Audio
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Advanced Systems Format
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20040113 20:36:55Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">MDA0MDMwNjAwMDAwMDAwMDI0NTM=</UNIQUEID><PUBLICKEY private="1">H6xGkVu18CH1v3lGLZhg3CweLg5J9xcylHtvIfl93gvb598H3/nlZw==</PUBLICKEY><KEYDATA>VA+dyX2u0b9IRnjqQ/runjdCdSM=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>hZlIjGetjQoATRec1FGjMR7UGAmIpvLu8KHU76uwdY76ACnEn377Zg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>FPliQA8qBOXr2yodiMFZrkKUiH4=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.207</SECURITYVERSION><CERTIFICATE private="1">H6xGkVu18CH1v3lGLZhg3CweLg5J9xcylHtvIfl93gvb598H3/nlZwIEZs9t5iPaik/F07xZZei5SMOZfwC5bJA4oO40hI87xErcvjaiaFsQMvhj</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>MTP Player</NAME><MANUFACTURER>Corp.</MANUFACTURER><MAKE>Corp.</MAKE><DESTRIBUTOR>Corp.</DESTRIBUTOR><MODEL>M</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURES><TEMPLATE>0</TEMPLATE><CLOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLICKEY></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SYNC>1</LICENSE_SYNC><ENCRYPTION>1</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT></FEATURES><LIMITS><MAXCHAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERSIZE>5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>yUtoiSoR3tOOYBKTaBj5l85u5YWA6Rn5AhKcdpxBtx4upnq4IIwfKw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>qD4E29L/HI5ATLe7WEY9fBRmu09Wd1kK30ycYGdOt6rSrTE/nwHIYg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>563</AUTH_ID><PUBLICKEY>9JYeS4F89sMRFfIRMl0pjW2R91N6uMQaAU8+y+vgpk/jwYfefh8bJg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>mamgYHOs28hXiXYisA90WGHDGxaWfdBOg2dQw9nQee/DXbrohTRgJw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>0ELrUZz3fYJRSe90/GsV/BxIp0Yvjnu09L9b4FKoiaP72GKS1i4uTA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-trekstor-vibez.txt b/logs/mtp-detect-trekstor-vibez.txt
new file mode 100644
index 0000000..a163af3
--- /dev/null
+++ b/logs/mtp-detect-trekstor-vibez.txt
@@ -0,0 +1,775 @@
+libmtp version: 0.1.5
+
+Attempting to connect device(s)
+Detect: Successfully connected 1 devices
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 0
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 066f
+ idProduct: 842a
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000002
+Device info:
+ Manufacturer: TrekStor
+ Model: vibez
+ Device version: 1.04
+ Serial number: DED38326C6D6B14D
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMPPD: 10.0; microsoft.com/WMDRMPD: 10.1; cambridge.sigmatel.com: 1.0;
+Supported operations:
+ 1003: Close session
+ 100b: Delete object
+ 100f: Format storage
+ 1001: get device info
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1009: Get object
+ 1007: Get object handles
+ 1008: Get object info
+ 9802: Get object property description
+ 9805: Get object property list
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9810: Get object references
+ 101b: Get partial object
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 100a: Get thumbnail
+ 1002: Open session
+ 1017: Reset device property value
+ 100d: Send object
+ 100c: Send object info
+ 9808: Send object property list
+ 1016: Set device property value
+ 9804: Set object property value
+ 1012: Set object protection
+ 9811: Set object references
+ 9201: Report Added/Deleted Items
+ 9820: Skip to next position in playlist
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Get meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Send WMDRM-PD Command
+ 910b: Send WMDRM-PD Request
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd006: Unknown property
+ 0xd101: Secure Time
+ 0xd102: Device Certificate
+ 0xd403: Volume Level
+ 0xd410: Playback Rate
+ 0xd411: Playback Object
+ 0xd412: Playback Container Index
+ 0xd413: Playback Position
+ 0x501e: Artist
+ 0xd003: Unknown property
+ 0x5011: Date Time
+ 0xd402: Device Friendly Name
+ 0xd001: Unknown property
+ 0xd005: Unknown property
+ 0xd009: Unknown property
+ 0xd401: Synchronization Partner
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 448000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 80, 85, READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ b906: FLAC
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 13, READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ b902: OGG
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 12, READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ b901: WMA
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 640000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ 300c: ASF
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 640000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 352, 353, READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ 3008: MS Wave
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type enumeration: 1, 2, 17, READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ 3001: Association/Directory
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 1, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ b802: Firmware
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ 3801: JPEG
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ ba03: Abstract Audio Album
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ 3000: Undefined Type
+ dc9b: AlbumArtist STRING data type GET/SET
+ dc9a: AlbumName STRING data type GET/SET
+ dc46: Artist STRING data type GET/SET
+ dc06: AssociationDesc UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc05: AssociationType UINT16 data type enumeration: 0, GET/SET
+ de95: AudioBitDepth UINT32 data type enumeration: 16, GET/SET
+ de9a: AudioBitRate UINT32 data type range: MIN 0, MAX 40000000, STEP 1 GET/SET
+ de99: AudioWAVECodec UINT32 data type ANY 32BIT VALUE form READ ONLY
+ d805: unknown(d805) UINT8 data type ANY 8BIT VALUE form GET/SET
+ de92: BitRateType UINT16 data type enumeration: 1, 2, GET/SET
+ d806: unknown(d806) UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc96: Composer STRING data type GET/SET
+ d80b: unknown(d80b) STRING data type GET/SET
+ dc08: DateCreated STRING data type READ ONLY
+ dc09: DateModified STRING data type READ ONLY
+ dc9d: DRMStatus UINT16 data type enumeration: 0, 1, GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX 2147483646, STEP 1 GET/SET
+ d80c: unknown(d80c) STRING data type GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc0a: Keywords STRING data type GET/SET
+ dc93: LastAccessed STRING data type GET/SET
+ d80a: unknown(d80a) STRING data type GET/SET
+ dc9c: Mood STRING data type GET/SET
+ dc44: Name STRING data type GET/SET
+ dc4f: NonConsumable UINT8 data type enumeration: 0, 1, GET/SET
+ de94: NumberOfChannels UINT16 data type enumeration: 1, 2, GET/SET
+ dc07: ObjectFileName STRING data type GET/SET
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ d80e: unknown(d80e) STRING data type GET/SET
+ dc99: OriginalReleaseDate STRING data type GET/SET
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc03: ProtectionStatus UINT16 data type enumeration: 0, 1, READ ONLY
+ d901: BuyFlag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc97: EffectiveRating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d80d: unknown(d80d) STRING data type GET/SET
+ dc86: RepresentativeSampleData array of UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc81: RepresentativeSampleFormat UINT16 data type enumeration: 14337, READ ONLY
+ dc83: RepresentativeSampleHeight UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ dc82: RepresentativeSampleSize UINT32 data type range: MIN 1, MAX 1000000, STEP 1 READ ONLY
+ dc85: RepresentativeSampleDuration UINT32 data type range: MIN 0, MAX 3600000, STEP 1 READ ONLY
+ dc84: RepresentativeSampleWidth UINT32 data type range: MIN 1, MAX 1000, STEP 1 READ ONLY
+ de93: SampleRate UINT32 data type range: MIN 1, MAX 96000, STEP 1 READ ONLY
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc42: SyncID STRING data type GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc91: UseCount UINT32 data type ANY 32BIT VALUE form GET/SET
+ d802: unknown(d802) UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc87: Width UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 65535, STEP 1 READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 11984314368
+ FreeSpaceInBytes: 7448162336
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Intern
+ VolumeIdentifier: APDFBQ6B7D40
+Special directories:
+ Default music folder: 0x00000000
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: vibez
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Free Lossless Audio Codec (FLAC)
+ Ogg container format
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ RIFF WAVE file
+ Firmware file
+ JPEG file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#19700101 00:00:00Z#</VALUE><FLAG>DRM_CLK_NOT_SET</FLAG></DRMCLOCK>AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID private="1">TbHWxiaD094KCgoKCgoKCgoKCgo=</UNIQUEID><PUBLICKEY private="1">lb+TWhA19FA+sD+8fEw8PAaJamIZIWURWRZ4x8z5tZ1cKDzwwQiVNg==</PUBLICKEY><KEYDATA>OvNcPBARCffbv5tHOzWPbPzl+3Q=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>3ZpQV/dynAhxFjt2SFd1WBnuNTo71D20h8uhLiEVlz5+zz8nW6SjRg==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>MD15HzfuqGHBUpvRtFdbPxqEQPc=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.102.207</SECURITYVERSION><CERTIFICATE private="1">lb+TWhA19FA+sD+8fEw8PAaJamIZIWURWRZ4x8z5tZ1cKDzwwQiVNgIEZs/AdAIRpqxdInYSUyr7KfBg4sZaQhtCiU3qzktHEbN8m+wvQg138pV8</CERTIFICATE></FALLBACK><CERTIFICATE type="GROUP"><DATA><NAME>Vibez</NAME>
+ <MANUFACTURER>Trekstor</MANUFACTURER>
+ <MAKE>Vibez</MAKE>
+ <DISTRIBUTOR>Trekstor</DISTRIBUTOR>
+ <MODEL>Vibez</MODEL>
+ <SECURITYLEVEL>2000</SECURITYLEVEL>
+ <HARDWARE_VER_MAJOR>1</HARDWARE_VER_MAJOR>
+ <HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR>
+ <FIRMWARE_VER_MAJOR>1</FIRMWARE_VER_MAJOR>
+ <FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR>
+ <FEATURES>
+ <CLOCK>2</CLOCK>
+ <SECURECLOCK>
+ <URL>http://go.microsoft.com/fwlink/?LinkId=25817</URL>
+ <PUBLICKEY>
+!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==
+</PUBLICKEY>
+ </SECURECLOCK>
+ <METERING>1</METERING>
+ <LICENSE_ACQ>0</LICENSE_ACQ>
+ <LICENSE_SYNC>1</LICENSE_SYNC>
+ <ENCRYPTION>0</ENCRYPTION>
+ <SYMMETRIC_OPT>1</SYMMETRIC_OPT>
+ </FEATURES>
+ <LIMITS>
+ <MAXCHAINDEPTH>2</MAXCHAINDEPTH>
+ <MAXLICENSESIZE>10240</MAXLICENSESIZE>
+ <MAXHEADERSIZE>5120</MAXHEADERSIZE>
+ </LIMITS><PUBLICKEY>MtVWt83PgkhjT9lRpVhYPUTHODxsikSl/xFMNY+ZYKI8get5OBhxYQ==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>3CxqbuOoYXbh+4IEJU614yE0OIZl4DI/chWOUeXucVePKZm7wMsPZA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>563</AUTH_ID><PUBLICKEY>9JYeS4F89sMRFfIRMl0pjW2R91N6uMQaAU8+y+vgpk/jwYfefh8bJg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>mamgYHOs28hXiXYisA90WGHDGxaWfdBOg2dQw9nQee/DXbrohTRgJw==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE type="AUTHORIZATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCse!gz6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>0ELrUZz3fYJRSe90/GsV/BxIp0Yvjnu09L9b4FKoiaP72GKS1i4uTA==</MSDRM_SIGNATURE_VALUE></CERTIFICATE></DEVCERT>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+WMPInfo.xml Does not exist on this device
+OK.
diff --git a/logs/mtp-detect-ziilabs-egg.txt b/logs/mtp-detect-ziilabs-egg.txt
new file mode 100644
index 0000000..73388da
--- /dev/null
+++ b/logs/mtp-detect-ziilabs-egg.txt
@@ -0,0 +1,418 @@
+libmtp version: 1.0.0
+
+Listing raw device(s)
+ Found 1 device(s):
+ 041e:6000 @ bus 0, dev 12
+Attempting to connect device(s)
+USB low-level info:
+ Using kernel interface "usbfs"
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 041e
+ idProduct: 6000
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Raw device info:
+ Bus location: 0
+ Device number: 12
+ Device entry info:
+ Vendor: (null)
+ Vendor id: 0x041e
+ Product: (null)
+ Vendor id: 0x6000
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x01:
+ 0000: 0c00 0000 0001 0500 0000 0000 ............
+Device info:
+ Manufacturer: ZiiLABS
+ Model: Zii EGG
+ Device version: 0.90.07
+ Serial number: 100000008C6C0A180000740800005000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;microsoft.com/WMPPD: 10.0;
+ Detected object size: 64 bits
+Supported operations:
+ 1001: get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1014: Get device property description
+ 1015: Get device property value
+ 1006: Get number of objects
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 1010: Reset device
+ 1012: Set object protection
+ 1016: Set device property value
+ 1017: Reset device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9801: Get object properties supported
+ 9802: Get object property description
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9807: Get interdependent property description
+ 9810: Get object references
+ 9811: Set object references
+Events supported:
+ 0x4006
+Device Properties Supported:
+ 0x5001: Battery Level
+ 0xd401: Synchronization Partner
+ 0xd402: Friendly Device Name
+ 0xd001: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ de99: Audio WAVE Codec UINT32 data type enumeration: 85, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 8000, MAX 320000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b901: WMA
+ de99: Audio WAVE Codec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b906: FLAC
+ de99: Audio WAVE Codec UINT32 data type enumeration: 61868, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 64000, MAX 1536000, STEP 1 READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3008: MS Wave
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ ba03: Abstract Audio Album
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 180, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX 24576, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 180, STEP 1 READ ONLY
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ ba05: Abstract Audio Video Playlist
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ ba01: Abstract Multimedia Album
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3801: JPEG
+ dc88: Height UINT32 data type range: MIN 0, MAX 3744, STEP 1 GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 10240, STEP 1 GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 300a: MS AVI
+ de99: Audio WAVE Codec UINT32 data type enumeration: 85, 17, 1, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ de91: Total Bit Rate UINT32 data type range: MIN 0, MAX 9000000, STEP 1 READ ONLY
+ de9b: Video Four CC Codec UINT32 data type enumeration: 844515635, 828601953, 878070084, 1482049860, 808802372, 875967048, 1196444237, 1395937357, 859189843, 861293911, 875967064, 1145656920, READ ONLY
+ de9c: Video Bit Rate UINT32 data type range: MIN 0, MAX 8000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 1280, STEP 1 GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 300c: ASF
+ de99: Audio WAVE Codec UINT32 data type enumeration: 85, 352, 353, 17, 1, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 1536000, STEP 1 READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ de91: Total Bit Rate UINT32 data type range: MIN 0, MAX 9000000, STEP 1 READ ONLY
+ de9b: Video Four CC Codec UINT32 data type enumeration: 844515635, 828601953, 878070084, 1482049860, 808802372, 875967048, 1395937357, 859189843, 861293911, 875967064, 1145656920, READ ONLY
+ de9c: Video Bit Rate UINT32 data type range: MIN 0, MAX 8000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 1280, STEP 1 GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b981: WMV
+ de99: Audio WAVE Codec UINT32 data type enumeration: 352, 353, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 5000, MAX 505000, STEP 1 READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ de91: Total Bit Rate UINT32 data type range: MIN 0, MAX 9000000, STEP 1 READ ONLY
+ de9b: Video Four CC Codec UINT32 data type enumeration: 861293911, READ ONLY
+ de9c: Video Bit Rate UINT32 data type range: MIN 0, MAX 3500000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 1280, STEP 1 GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b982: MP4
+ de99: Audio WAVE Codec UINT32 data type enumeration: 41222, 85, 17, 1, READ ONLY
+ de9a: Audio Bit Rate UINT32 data type range: MIN 8000, MAX 1536000, STEP 1 READ ONLY
+ de9d: Frames Per Thousand Seconds UINT32 data type range: MIN 20, MAX 30000, STEP 1 READ ONLY
+ dc88: Height UINT32 data type range: MIN 0, MAX 720, STEP 1 GET/SET
+ de91: Total Bit Rate UINT32 data type range: MIN 0, MAX 9000000, STEP 1 READ ONLY
+ de9b: Video Four CC Codec UINT32 data type enumeration: 844515635, 828601953, 878070084, 1482049860, 808802372, 875967048, 1196444237, 1395937357, 859189843, 875967064, 1145656920, READ ONLY
+ de9c: Video Bit Rate UINT32 data type range: MIN 0, MAX 8000000, STEP 1 READ ONLY
+ dc87: Width UINT32 data type range: MIN 0, MAX 1280, STEP 1 GET/SET
+ dc86: Representative Sample Data array of UINT8 data type byte array: GET/SET
+ dc81: Representative Sample Format UINT16 data type enumeration: 14337, READ ONLY
+ dc83: Representative Sample Height UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc82: Representative Sample Sise UINT32 data type range: MIN 0, MAX 8192, STEP 1 READ ONLY
+ dc84: Representative Sample Width UINT32 data type range: MIN 0, MAX 96, STEP 1 READ ONLY
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc46: Artist STRING data type GET/SET
+ dc89: Duration UINT32 data type range: MIN 0, MAX -1, STEP 1 GET/SET
+ dc8b: Track UINT16 data type ANY 16BIT VALUE form GET/SET
+ dc8c: Genre STRING data type GET/SET
+ dc99: Original Release Date STRING data type DATETIME FORM GET/SET
+ dc9a: Album Name STRING data type GET/SET
+ de93: Sample Rate UINT32 data type enumeration: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, READ ONLY
+ de94: Number Of Channels UINT16 data type enumeration: 1, 2, READ ONLY
+ de95: Audio Bit Depth UINT32 data type enumeration: 8, 16, READ ONLY
+ dc91: Use Count UINT32 data type ANY 32BIT VALUE form GET/SET
+ dc8a: Rating UINT16 data type range: MIN 0, MAX 100, STEP 1 GET/SET
+ d901: Buy flag UINT8 data type ANY 8BIT VALUE form GET/SET
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ b802: Firmware
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3000: Undefined Type
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+ 3001: Association/Directory
+ dc01: Storage ID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: Object Format UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: Object Size UINT64 data type READ ONLY
+ dc41: Persistant Unique Object Identifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc0b: Parent Object UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: Object File Name STRING data type REGULAR EXPRESSION FORM GET/SET
+ dc4f: Non Consumable UINT8 data type enumeration: 0, 1, GET/SET
+ dc03: Protection Status UINT16 data type enumeration: 0, 1, 32771, READ ONLY
+Storage Devices:
+ StorageID: 0x00010001
+ StorageType: 0x0003 fixed RAM storage
+ FilesystemType: 0x0002 generic hierarchical
+ AccessCapability: 0x0000 read/write
+ MaxCapacity: 32193048576
+ FreeSpaceInBytes: 31560761344
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Storage Media
+ VolumeIdentifier: (null)
+Special directories:
+ Default music folder: 0x0000000d
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x0000000e
+ Default video folder: 0x0000000f
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: Zii EGG
+ Synchronization partner: Zii EGG
+ Battery level 127 of 255 (49%)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ Microsoft Windows Media Audio
+ Free Lossless Audio Codec (FLAC)
+ RIFF WAVE file
+ Abstract Album file
+ Abstract Playlist file
+ JPEG file
+ Audio Video Interleave
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ MPEG-4 Part 14 Container Format (Audio+Video Emphasis)
+ Firmware file
+Unable to acquire device certificate, perhaps this device does not support this
+OK.
+
+
diff --git a/logs/mtp-detect-zoltartv.txt b/logs/mtp-detect-zoltartv.txt
new file mode 100644
index 0000000..23caf8a
--- /dev/null
+++ b/logs/mtp-detect-zoltartv.txt
@@ -0,0 +1,290 @@
+libmtp version: 0.2.6.1
+
+Attempting to connect device(s)
+Device 1 (VID=1e53 and PID=0006) is UNKNOWN.
+Please report this VID/PID and the device model to the libmtp
+development team
+PTP: Opening session
+Detect: Successfully connected 1 devices
+Error 2: PTP Layer error 02fe: get_all_metadata_fast(): could not get
+proplist of all objects.
+Error 2: (Look this up in ptp.h for an explanation.)
+USB low-level info:
+ Using kernel interface &quot;usbfs&quot;
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 1e53
+ idProduct: 0006
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Microsoft device descriptor 0xee:
+ 0000: 1203 4d00 5300 4600 5400 3100 3000 3000 ..M.S.F.T.1.0.0.
+ 0010: 0100 ..
+Microsoft device response to control message 1, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Microsoft device response to control message 2, CMD 0x01:
+ 0000: 2800 0000 0001 0400 0100 0000 0000 0000 (...............
+ 0010: 0001 4d54 5000 0000 0000 0000 0000 0000 ..MTP...........
+ 0020: 0000 0000 0000 0000 ........
+Device info:
+ Manufacturer: 02 media
+ Model: ZoltarTV
+ Device version: 1.0
+ Serial number: 0000000000000000
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0;
+microsoft.com/WMPPD: 10.0
+ Detected object size: 64 bits
+Supported operations:
+ 1002: Open session
+ 1003: Close session
+ 1001: get device info
+ 1014: Get device property description
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100c: Send object info
+ 100d: Send object
+ 1015: Get device property value
+ 100b: Delete object
+ 9802: Get object property description
+ 9803: Get object property value
+ 9801: Get object properties supported
+ 9805: Get object property list
+ 9804: Set object property value
+Events supported:
+ 0x4001
+ 0x4002
+ 0x4003
+ 0x4006
+ 0x4007
+Device Properties Supported:
+ 0xd405: Device Icon
+ 0xd407: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3001: Association/Directory
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3009: MP3
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3008: MS Wave
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b901: WMA
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b902: OGG
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3007: AIFF
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b903: AAC
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 300c: ASF
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3801: JPEG
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3804: BMP
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 300a: MS AVI
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3000: Undefined Type
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3800: Defined Type
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b900: Undefined Audio
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b980: Undefined Video
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 300b: MPEG
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 380b: PNG
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 3807: GIF
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ 380d: TIFF
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ ba11: M3U Playlist
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b984: 3GP
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+ b982: MP4
+ dc41: PersistantUniqueObjectIdentifier UINT128 data type READ ONLY
+ dc44: Name STRING data type GET/SET
+ dc01: StorageID UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc02: ObjectFormat UINT16 data type ANY 16BIT VALUE form READ ONLY
+ dc04: ObjectSize UINT64 data type READ ONLY
+ dc0b: ParentObject UINT32 data type ANY 32BIT VALUE form READ ONLY
+ dc07: ObjectFileName STRING data type GET/SET
+Storage Devices:
+ StorageID: 0x10000001
+ StorageType: 0x0003
+ FilesystemType: 0x0002
+ AccessCapability: 0x0000
+ MaxCapacity: 1498410237952
+ FreeSpaceInBytes: 1489321717760
+ FreeSpaceInObjects: 4294967295
+ StorageDescription: Local HDD
+ VolumeIdentifier: 0123456789
+Special directories:
+ Default music folder: 0x00000002
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x00000000
+ Default video folder: 0x00000000
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+ Default album folder: 0x00000000
+ Default text folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: (NULL)
+ Synchronization partner: (NULL)
+libmtp supported (playable) filetypes:
+ ISO MPEG-1 Audio Layer 3
+ RIFF WAVE file
+ Microsoft Windows Media Audio
+ Ogg container format
+ Advanced Audio Coding (AAC)/MPEG-2 Part 7/MPEG-4 Part 3
+ Microsoft Advanced Systems Format
+ JPEG file
+ BMP bitmap file
+ Audio Video Interleave
+ Undefined audio file
+ Undefined video file
+ MPEG video stream
+ Portable Network Graphics
+ GIF bitmap file
+ TIFF bitmap file
+ MPEG-4 Part 14 Container Format (Audio+Video Empahsis)
+Unable to acquire device certificate, perhaps this device does not support this
+WMPInfo.xml Does not exist on this device
+PTP: Closing session
+OK.
diff --git a/logs/mtp-detect-zune.txt b/logs/mtp-detect-zune.txt
new file mode 100644
index 0000000..d3ba6d5
--- /dev/null
+++ b/logs/mtp-detect-zune.txt
@@ -0,0 +1,601 @@
+found 4 busses
+Autodetected device "Zune" (VID=045e,PID=0710) is known.
+PTP: Opening session
+Connected to MTP device.
+USB low-level info:
+ bcdUSB: 512
+ bDeviceClass: 255
+ bDeviceSubClass: 0
+ bDeviceProtocol: 0
+ idVendor: 045e
+ idProduct: 0710
+ IN endpoint maxpacket: 512 bytes
+ OUT endpoint maxpacket: 512 bytes
+ Device flags: 0x00000000
+Device info:
+ Manufacturer: Microsoft
+ Model: Zune
+ Device version: 01.01.00322.00-00309
+ Serial number: 009bdb53 - 0aedbc4e - 80bd1ff8 - 8ee00652
+ Vendor extension ID: 0x00000006
+ Vendor extension description: microsoft.com: 1.0; microsoft.com/WMDRMPD:10.1; microsoft.com/WMPPD: 11.1; microsoft.com/WMPMCPREMCONT: 1.0;microsoft.com/AAVT: 1.0; microsoft.com/WMDRMND: 1.0; microsoft.com/MTPZ: 1.0;
+Supported operations:
+ 1001: Get device info
+ 1002: Open session
+ 1003: Close session
+ 1004: Get storage IDs
+ 1005: Get storage info
+ 1006: Get number of objects
+ 1007: Get object handles
+ 1008: Get object info
+ 1009: Get object
+ 100b: Delete object
+ 100c: Send object info
+ 100d: Send object
+ 100f: Format storage
+ 1010: Reset device
+ 1014: Get device property description
+ 1015: Get device property value
+ 1016: Set device property value
+ 1019: Move object
+ 101b: Get partial object
+ 9810: Get object references
+ 9811: Set object references
+ 9802: Get object property description
+ 9807: Get interdependent property description
+ 9801: Get object properties supported
+ 9803: Get object property value
+ 9804: Set object property value
+ 9805: Get object property list
+ 9806: Set object property list
+ 9808: Send object property list
+ 9101: Get secure time challenge
+ 9102: Get secure time response
+ 9103: Set license response
+ 9104: Get sync list
+ 9105: Send meter challenge query
+ 9106: Get meter challenge
+ 9107: Set meter response
+ 9108: Clean data store
+ 9109: Get license state
+ 910a: Unknown(910a)
+ 910b: Unknown(910b)
+ 9201: Unknown(9201)
+ 9202: Unknown(9202)
+ 9204: Unknown(9204)
+ 9212: Unknown(9212)
+ 9213: Unknown(9213)
+ 9214: Unknown(9214)
+ 9215: Unknown(9215)
+ 9216: Unknown(9216)
+ 9170: Unknown(9170)
+ 9171: Unknown(9171)
+ 9172: Unknown(9172)
+ 9173: Unknown(9173)
+ 9180: Unknown(9180)
+ 9181: Unknown(9181)
+ 9182: Unknown(9182)
+ 9183: Unknown(9183)
+ 9184: Unknown(9184)
+ 9185: Unknown(9185)
+Events supported:
+ None.
+Device Properties Supported:
+ 0xd181: Unknown property
+ 0xd101: Secure Time
+ 0xd401: Synchronization Partner
+ 0x5001: Battery Level
+ 0xd102: Device Certificate
+ 0xd402: Device Friendly Name
+ 0x5002: Functional Mode
+ 0xd405: Device Icon
+ 0xd103: Unknown property
+ 0xd211: Unknown property
+ 0xd131: Unknown property
+ 0xd132: Unknown property
+ 0xd215: Unknown property
+ 0xd216: Unknown property
+Playable File (Object) Types and Object Properties Supported:
+ 3009: MP3
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc89: Duration
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc8a: Rating
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ da82: unknown(da82)
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc8b: Track
+ dc0b: ParentObject
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ daa0: unknown(daa0)
+ de9a: AudioBitRate
+ dc9a: AlbumName
+ dc46: Artist
+ dc97: EffectiveRating
+ dc8c: Genre
+ dc95: MetaGenre
+ dc91: UseCount
+ de93: SampleRate
+ de99: AudioWAVECodec
+ de94: NumberOfChannels
+ b901: WMA
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc89: Duration
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc8a: Rating
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ da82: unknown(da82)
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc8b: Track
+ dc0b: ParentObject
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ daa0: unknown(daa0)
+ de9a: AudioBitRate
+ dc9a: AlbumName
+ dc46: Artist
+ dc97: EffectiveRating
+ dc8c: Genre
+ dc95: MetaGenre
+ dc91: UseCount
+ de93: SampleRate
+ de99: AudioWAVECodec
+ de94: NumberOfChannels
+ 300c: ASF
+ da84: unknown(da84)
+ dc44: Name
+ dc04: ObjectSize
+ dc88: Height
+ dc08: DateCreated
+ dc89: Duration
+ dc09: DateModified
+ de9d: FramesPerThousandSeconds
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc87: Width
+ dc47: DateAuthored
+ dc07: ObjectFileName
+ da82: unknown(da82)
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc4b: CopyrightInformation
+ dc0b: ParentObject
+ dea1: unknown(dea1)
+ da81: unknown(da81)
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ da83: unknown(da83)
+ dc03: ProtectionStatus
+ dea0: EncodingQuality
+ daa0: unknown(daa0)
+ de9e: KeyFrameDistance
+ dc9e: SubDescription
+ dc4c: Source
+ dc8c: Genre
+ dc95: MetaGenre
+ de94: NumberOfChannels
+ dc94: ParentalRating
+ da86: unknown(da86)
+ da85: unknown(da85)
+ dc98: Subtitle
+ de9a: AudioBitRate
+ de99: AudioWAVECodec
+ de92: BitRateType
+ de9f: BufferSize
+ de93: SampleRate
+ de97: ScanDepth
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ b215: Unknown(b215)
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc89: Duration
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc8a: Rating
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ da82: unknown(da82)
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc8b: Track
+ dc0b: ParentObject
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ daa0: unknown(daa0)
+ de9a: AudioBitRate
+ dc9a: AlbumName
+ dc46: Artist
+ dc97: EffectiveRating
+ dc8c: Genre
+ dc95: MetaGenre
+ dc91: UseCount
+ de93: SampleRate
+ de99: AudioWAVECodec
+ de94: NumberOfChannels
+ b903: Unknown(b903)
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc89: Duration
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc8a: Rating
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ da82: unknown(da82)
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc8b: Track
+ dc0b: ParentObject
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ daa0: unknown(daa0)
+ de9a: AudioBitRate
+ dc9a: AlbumName
+ dc46: Artist
+ dc97: EffectiveRating
+ dc8c: Genre
+ dc95: MetaGenre
+ dc91: UseCount
+ de93: SampleRate
+ de99: AudioWAVECodec
+ de94: NumberOfChannels
+ b981: WMV
+ da84: unknown(da84)
+ dc44: Name
+ dc04: ObjectSize
+ dc88: Height
+ dc08: DateCreated
+ dc89: Duration
+ dc09: DateModified
+ de9d: FramesPerThousandSeconds
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc87: Width
+ dc47: DateAuthored
+ dc07: ObjectFileName
+ da82: unknown(da82)
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc4b: CopyrightInformation
+ dc0b: ParentObject
+ dea1: unknown(dea1)
+ da81: unknown(da81)
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ da83: unknown(da83)
+ dc03: ProtectionStatus
+ dea0: EncodingQuality
+ daa0: unknown(daa0)
+ de9e: KeyFrameDistance
+ dc9e: SubDescription
+ dc4c: Source
+ dc8c: Genre
+ dc95: MetaGenre
+ de94: NumberOfChannels
+ dc94: ParentalRating
+ da86: unknown(da86)
+ da85: unknown(da85)
+ dc98: Subtitle
+ de9a: AudioBitRate
+ de99: AudioWAVECodec
+ de92: BitRateType
+ de9f: BufferSize
+ de93: SampleRate
+ de97: ScanDepth
+ de91: TotalBitRate
+ de9b: VideoFourCCCodec
+ de9c: VideoBitRate
+ 3801: JPEG
+ dc44: Name
+ dc04: ObjectSize
+ dc88: Height
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc8f: SubscriptionContentID
+ dc4f: NonConsumable
+ dc87: Width
+ dc47: DateAuthored
+ dc07: ObjectFileName
+ daa2: unknown(daa2)
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ daa1: unknown(daa1)
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ daa0: unknown(daa0)
+ 3001: Association/Directory
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ ba03: Abstract Audio Album
+ dc84: RepresentativeSampleWidth
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc81: RepresentativeSampleFormat
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc83: RepresentativeSampleHeight
+ dc03: ProtectionStatus
+ dc86: RepresentativeSampleData
+ dc46: Artist
+ dc8c: Genre
+ ba02: Abstract Image Album
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc47: DateAuthored
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ ba05: Abstract Audio Video Playlist
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ b211: Unknown(b211)
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ da91: unknown(da91)
+ b212: Unknown(b212)
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ b213: Unknown(b213)
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ da94: unknown(da94)
+ da92: unknown(da92)
+ da95: unknown(da95)
+ da96: unknown(da96)
+ da93: unknown(da93)
+ b214: Unknown(b214)
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ 3000: Undefined Type
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+ b802: Firmware
+ dc44: Name
+ dc04: ObjectSize
+ dc08: DateCreated
+ dc09: DateModified
+ dc9d: DRMStatus
+ dc0d: unknown(dc0d)
+ dc0a: Keywords
+ dc4f: NonConsumable
+ dc07: ObjectFileName
+ dc02: ObjectFormat
+ dc0b: ParentObject
+ dc01: StorageID
+ dc41: PersistantUniqueObjectIdentifier
+ dc03: ProtectionStatus
+Special directories:
+ Default music folder: 0x05000001
+ Default playlist folder: 0x00000000
+ Default picture folder: 0x0500001a
+ Default video folder: 0x0500001e
+ Default organizer folder: 0x00000000
+ Default zencast folder: 0x00000000
+MTP-specific device properties:
+ Friendly name: israr
+ Synchronization partner: {4A93BE2A-DE7D-41E6-BA37-8E9E77D43860}
+ Total bytes on device: 29806592000 (28425 MB)
+ Free bytes on device: 29201039360 (27848 MB)
+ Storage description: "Storage"
+ Volume label: "009bdb53 - 0aedbc4e - 80bd1ff8 - 8ee00652"
+ Battery level 93 of 100 (93%)
+libmtp supported (playable) filetypes:
+ ISO MPEG Audio Layer 3
+ Microsoft Windows Media Audio
+ Microsoft Advanced Systems Format
+ Microsoft Windows Media Video
+ JPEG file
+
+Secure Time:
+<DRMCLOCK type="status"><VALUE>#20061130
+55:58:20Z#</VALUE><FLAG>DRM_CLK_SET</FL
+AG></DRMCLOCK>
+
+Device Certificate:
+<DEVCERT version="1.0"><CERTIFICATE type="DEVICE"><DATA><UNIQUEID
+private="1">tm
+q3e34l4CtX25kjz3J8nsmfKqw=</UNIQUEID><PUBLICKEY
+private="1">D04XYszO/wvt2uvOYlaC
+PPl+BFqZqfJgKYFjft0/QHHwai8cnNs1Dw==</PUBLICKEY><KEYDATA>UhIa619WPksS1o2/jWQ
+0ppw
+gAhA=</KEYDATA></DATA><MSDRM_SIGNATURE_VALUE>SnnlhYtieeqE2ZEoBVD6IQy02Vmtu5Q
+3mpf
+0yTgWmsJb8mU5AeRmGw==</MSDRM_SIGNATURE_VALUE><SYMSIGNATURE>WyIbw1IYah2TFKQp9
+XQhJ
+vnK/5Q=</SYMSIGNATURE></CERTIFICATE><FALLBACK><SECURITYVERSION>2.4.105.187</
+SECU
+RITYVERSION><CERTIFICATE
+private="1">D04XYszO/wvt2uvOYlaCPPl+BFqZqfJgKYFjft0/QHH
+wai8cnNs1DwIEabtlwAm9JhutpvU05UpZa3Hh/EBgFQwcFQecoUCHdusPkQrgPIFqHW0/</CERTI
+FICA
+TE></FALLBACK><CERTIFICATE
+type="GROUP"><DATA><NAME>Zune</NAME><MANUFACTURER>Mic
+rosoft</MANUFACTURER><MAKE>Zune Player
+1000</MAKE><DISTRIBUTOR>Microsoft</DISTRI
+BUTOR><MODEL>1090</MODEL><SECURITYLEVEL>2000</SECURITYLEVEL><HARDWARE_VER_MA
+JOR>
+1</HARDWARE_VER_MAJOR><HARDWARE_VER_MINOR>0</HARDWARE_VER_MINOR><FIRMWARE_VE
+R_MA
+JOR>1</FIRMWARE_VER_MAJOR><FIRMWARE_VER_MINOR>0</FIRMWARE_VER_MINOR><FEATURE
+S><C
+LOCK>2</CLOCK><SECURECLOCK><URL>http://go.microsoft.com/fwlink/?LinkId=25817
+</UR
+L><PUBLICKEY>!CNhvvz1WaNV1AFUmetxkvm9iD4UrE9cnGUi!qcqdxMiXmD1*ikYGA==</PUBLI
+CKEY
+></SECURECLOCK><METERING>1</METERING><LICENSE_ACQ>1</LICENSE_ACQ><LICENSE_SY
+NC>1
+</LICENSE_SYNC><ENCRYPTION>0</ENCRYPTION><SYMMETRIC_OPT>1</SYMMETRIC_OPT><SU
+PPOR
+T_REVOCATION><GUID>{CD75E604-543D-4A9C-9F09-FE6D24E8BF90}</GUID><GUID>{3129E
+375-
+CEB0-47D5-9CCA-9DB74CFD4332}</GUID></SUPPORT_REVOCATION></FEATURES><LIMITS><
+MAXC
+HAINDEPTH>2</MAXCHAINDEPTH><MAXLICENSESIZE>10240</MAXLICENSESIZE><MAXHEADERS
+IZE>
+5120</MAXHEADERSIZE></LIMITS><PUBLICKEY>zXee2YI/Sm37UJC4uo+Y007Ae2cWp9rkpWh3
+MZUM
+5YLR/2EfN/0eJg==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>7PBZocSID0BEc3vXxC
+C5hK
+H812eSH/Vd8oH5ZAlem9Qw7YTxKd12Bg==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CER
+TIFI
+CATE
+type="AUTHORIZATION"><DATA><SECURITYLEVEL>2000</SECURITYLEVEL><AUTH_ID>1311
+</AUTH_ID><PUBLICKEY>4787Lq08I+Jx5129GMlYE4pkBQrPT8+TV5fiuThMguE054UrOmpMHg=
+=</P
+UBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>OUJXV1Ek088aF0pSz12wHVgNYk9IAgGMezwzN
+p7vp
+rMv7K1ZJDdMiQ==</MSDRM_SIGNATURE_VALUE></CERTIFICATE><CERTIFICATE
+type="AUTHORIZ
+ATION_ROOT"><DATA><AUTH_ID>1</AUTH_ID><PUBLICKEY>a1t3hxrg!qbOgktnbYaEEi4teCs
+e!gz
+6RvTPuC!zizKJlpU7xoduSw==</PUBLICKEY></DATA><MSDRM_SIGNATURE_VALUE>j/UOGELgk
+J99g
+MvrGKyp3Y7FQ190FKtYE8t/vMvB3d73LBOFK76iXQ==</MSDRM_SIGNATURE_VALUE></CERTIFI
+CATE
+></DEVCERT>
diff --git a/ltmain.sh b/ltmain.sh
deleted file mode 100755
index 6939dcc..0000000
--- a/ltmain.sh
+++ /dev/null
@@ -1,8406 +0,0 @@
-# Generated from ltmain.m4sh.
-
-# ltmain.sh (GNU libtool) 2.2.6
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions. There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-# --config show all configuration variables
-# --debug enable verbose shell tracing
-# -n, --dry-run display commands without modifying any files
-# --features display basic configuration information and exit
-# --mode=MODE use operation mode MODE
-# --preserve-dup-deps don't remove duplicate dependency libraries
-# --quiet, --silent don't print informational messages
-# --tag=TAG use configuration variables from tag TAG
-# -v, --verbose print informational messages (default)
-# --version print version information
-# -h, --help print short or long help message
-#
-# MODE must be one of the following:
-#
-# clean remove files from the build directory
-# compile compile a source file into a libtool object
-# execute automatically set library path, then run a program
-# finish complete the installation of libtool libraries
-# install install libraries or executables
-# link create a library or an executable
-# uninstall remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-# host-triplet: $host
-# shell: $SHELL
-# compiler: $LTCC
-# compiler flags: $LTCFLAGS
-# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.2.6
-# automake: $automake_version
-# autoconf: $autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION=2.2.6
-TIMESTAMP=""
-package_revision=1.3012
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
- eval "if test \"\${$lt_var+set}\" = set; then
- save_$lt_var=\$$lt_var
- $lt_var=C
- export $lt_var
- lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
- lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
- fi"
-done
-
-$lt_unset CDPATH
-
-
-
-
-
-: ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SED="/bin/sed"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" $lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-# dirname: Compute the dirname of FILE. If nonempty,
-# add APPEND to the result, otherwise set result
-# to NONDIR_REPLACEMENT.
-# value returned in "$func_dirname_result"
-# basename: Compute filename of FILE.
-# value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
- # Extract subdirectory from the argument.
- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-# Generated shell functions inserted here.
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-# The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-case $progname in
- -*) progname=./$progname ;;
-esac
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
- [\\/]*|[A-Za-z]:\\*) ;;
- *[\\/]*)
- progdir=$func_dirname_result
- progdir=`cd "$progdir" && pwd`
- progpath="$progdir/$progname"
- ;;
- *)
- save_IFS="$IFS"
- IFS=:
- for progdir in $PATH; do
- IFS="$save_IFS"
- test -x "$progdir/$progname" && break
- done
- IFS="$save_IFS"
- test -n "$progdir" || progdir=`pwd`
- progpath="$progdir/$progname"
- ;;
-esac
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
- s/$bs4/&\\
-/g
- s/^$bs2$dollar/$bs&/
- s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
- s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
- $ECHO "$progname${mode+: }$mode: $*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
- $opt_verbose && func_echo ${1+"$@"}
-
- # A bug in bash halts the script if the last line of a function
- # fails when set -e is in force, so we need another command to
- # work around that:
- :
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
- $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
- $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
-
- # bash bug again:
- :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
- func_error ${1+"$@"}
- exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
- func_error ${1+"$@"}
- func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information." ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
- $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
- my_directory_path="$1"
- my_dir_list=
-
- if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
- # Protect directory names starting with `-'
- case $my_directory_path in
- -*) my_directory_path="./$my_directory_path" ;;
- esac
-
- # While some portion of DIR does not yet exist...
- while test ! -d "$my_directory_path"; do
- # ...make a list in topmost first order. Use a colon delimited
- # list incase some portion of path contains whitespace.
- my_dir_list="$my_directory_path:$my_dir_list"
-
- # If the last portion added has no slash in it, the list is done
- case $my_directory_path in */*) ;; *) break ;; esac
-
- # ...otherwise throw away the child directory and loop
- my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
- done
- my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
-
- save_mkdir_p_IFS="$IFS"; IFS=':'
- for my_dir in $my_dir_list; do
- IFS="$save_mkdir_p_IFS"
- # mkdir can fail with a `File exist' error if two processes
- # try to create one of the directories concurrently. Don't
- # stop in that case!
- $MKDIR "$my_dir" 2>/dev/null || :
- done
- IFS="$save_mkdir_p_IFS"
-
- # Bail out if we (or some other process) failed to create a directory.
- test -d "$my_directory_path" || \
- func_fatal_error "Failed to create \`$1'"
- fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible. If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
- my_template="${TMPDIR-/tmp}/${1-$progname}"
-
- if test "$opt_dry_run" = ":"; then
- # Return a directory name, but don't create it in dry-run mode
- my_tmpdir="${my_template}-$$"
- else
-
- # If mktemp works, use that first and foremost
- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
- if test ! -d "$my_tmpdir"; then
- # Failing that, at least try and use $RANDOM to avoid a race
- my_tmpdir="${my_template}-${RANDOM-0}$$"
-
- save_mktempdir_umask=`umask`
- umask 0077
- $MKDIR "$my_tmpdir"
- umask $save_mktempdir_umask
- fi
-
- # If we're not in dry-run mode, bomb out on failure
- test -d "$my_tmpdir" || \
- func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
- fi
-
- $ECHO "X$my_tmpdir" | $Xsed
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
- case $1 in
- *[\\\`\"\$]*)
- func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
- *)
- func_quote_for_eval_unquoted_result="$1" ;;
- esac
-
- case $func_quote_for_eval_unquoted_result in
- # Double-quote args containing shell metacharacters to delay
- # word splitting, command substitution and and variable
- # expansion for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
- ;;
- *)
- func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
- esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
- case $1 in
- *[\\\`\"]*)
- my_arg=`$ECHO "X$1" | $Xsed \
- -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
- *)
- my_arg="$1" ;;
- esac
-
- case $my_arg in
- # Double-quote args containing shell metacharacters to delay
- # word splitting and command substitution for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- my_arg="\"$my_arg\""
- ;;
- esac
-
- func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
-# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
- my_cmd="$1"
- my_fail_exp="${2-:}"
-
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
-
- if ${opt_dry_run-false}; then :; else
- eval "$my_cmd"
- my_status=$?
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
- fi
- fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
-# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it. Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
- my_cmd="$1"
- my_fail_exp="${2-:}"
-
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
-
- if ${opt_dry_run-false}; then :; else
- eval "$lt_user_locale
- $my_cmd"
- my_status=$?
- eval "$lt_safe_locale"
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
- fi
- fi
-}
-
-
-
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
- $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
- s/^# //
- s/^# *$//
- s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
- p
- }' < "$progpath"
- exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
- $SED -n '/^# Usage:/,/# -h/ {
- s/^# //
- s/^# *$//
- s/\$progname/'$progname'/
- p
- }' < "$progpath"
- $ECHO
- $ECHO "run \`$progname --help | more' for full usage"
- exit $?
-}
-
-# func_help
-# Echo long help message to standard output and exit.
-func_help ()
-{
- $SED -n '/^# Usage:/,/# Report bugs to/ {
- s/^# //
- s/^# *$//
- s*\$progname*'$progname'*
- s*\$host*'"$host"'*
- s*\$SHELL*'"$SHELL"'*
- s*\$LTCC*'"$LTCC"'*
- s*\$LTCFLAGS*'"$LTCFLAGS"'*
- s*\$LD*'"$LD"'*
- s/\$with_gnu_ld/'"$with_gnu_ld"'/
- s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
- p
- }' < "$progpath"
- exit $?
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
- func_error "missing argument for $1"
- exit_cmd=exit
-}
-
-exit_cmd=:
-
-
-
-
-
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X$1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
- # Yippee, $ECHO works!
- :
-else
- # Restart under the correct shell, and then maybe $ECHO will work.
- exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<EOF
-$*
-EOF
- exit $EXIT_SUCCESS
-fi
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-# $mode is unset
-nonopt=
-execute_dlfiles=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end. This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
- func_error ${1+"$@"}
- func_error "See the $PACKAGE documentation for more information."
- func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
- re_begincf='^# ### BEGIN LIBTOOL'
- re_endcf='^# ### END LIBTOOL'
-
- # Default configuration.
- $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
- # Now print the configurations for the tags.
- for tagname in $taglist; do
- $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
- done
-
- exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
- $ECHO "host: $host"
- if test "$build_libtool_libs" = yes; then
- $ECHO "enable shared libraries"
- else
- $ECHO "disable shared libraries"
- fi
- if test "$build_old_libs" = yes; then
- $ECHO "enable static libraries"
- else
- $ECHO "disable static libraries"
- fi
-
- exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
- # Global variable:
- tagname="$1"
-
- re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
- re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
- sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
- # Validate tagname.
- case $tagname in
- *[!-_A-Za-z0-9,/]*)
- func_fatal_error "invalid tag name: $tagname"
- ;;
- esac
-
- # Don't test for the "default" C tag, as we know it's
- # there but not specially marked.
- case $tagname in
- CC) ;;
- *)
- if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
- taglist="$taglist $tagname"
-
- # Evaluate the configuration. Be careful to quote the path
- # and the sed script, to avoid splitting on whitespace, but
- # also don't use non-portable quotes within backquotes within
- # quotes we have to do it in 2 steps:
- extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
- eval "$extractedcf"
- else
- func_error "ignoring unknown tag $tagname"
- fi
- ;;
- esac
-}
-
-# Parse options once, thoroughly. This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
-{
-
- # Shorthand for --mode=foo, only valid as the first argument
- case $1 in
- clean|clea|cle|cl)
- shift; set dummy --mode clean ${1+"$@"}; shift
- ;;
- compile|compil|compi|comp|com|co|c)
- shift; set dummy --mode compile ${1+"$@"}; shift
- ;;
- execute|execut|execu|exec|exe|ex|e)
- shift; set dummy --mode execute ${1+"$@"}; shift
- ;;
- finish|finis|fini|fin|fi|f)
- shift; set dummy --mode finish ${1+"$@"}; shift
- ;;
- install|instal|insta|inst|ins|in|i)
- shift; set dummy --mode install ${1+"$@"}; shift
- ;;
- link|lin|li|l)
- shift; set dummy --mode link ${1+"$@"}; shift
- ;;
- uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
- shift; set dummy --mode uninstall ${1+"$@"}; shift
- ;;
- esac
-
- # Parse non-mode specific arguments:
- while test "$#" -gt 0; do
- opt="$1"
- shift
-
- case $opt in
- --config) func_config ;;
-
- --debug) preserve_args="$preserve_args $opt"
- func_echo "enabling shell trace mode"
- opt_debug='set -x'
- $opt_debug
- ;;
-
- -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
- execute_dlfiles="$execute_dlfiles $1"
- shift
- ;;
-
- --dry-run | -n) opt_dry_run=: ;;
- --features) func_features ;;
- --finish) mode="finish" ;;
-
- --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
- case $1 in
- # Valid mode arguments:
- clean) ;;
- compile) ;;
- execute) ;;
- finish) ;;
- install) ;;
- link) ;;
- relink) ;;
- uninstall) ;;
-
- # Catch anything else as an error
- *) func_error "invalid argument for $opt"
- exit_cmd=exit
- break
- ;;
- esac
-
- mode="$1"
- shift
- ;;
-
- --preserve-dup-deps)
- opt_duplicate_deps=: ;;
-
- --quiet|--silent) preserve_args="$preserve_args $opt"
- opt_silent=:
- ;;
-
- --verbose| -v) preserve_args="$preserve_args $opt"
- opt_silent=false
- ;;
-
- --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
- preserve_args="$preserve_args $opt $1"
- func_enable_tag "$1" # tagname is set here
- shift
- ;;
-
- # Separate optargs to long options:
- -dlopen=*|--mode=*|--tag=*)
- func_opt_split "$opt"
- set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
- shift
- ;;
-
- -\?|-h) func_usage ;;
- --help) opt_help=: ;;
- --version) func_version ;;
-
- -*) func_fatal_help "unrecognized option \`$opt'" ;;
-
- *) nonopt="$opt"
- break
- ;;
- esac
- done
-
-
- case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc*)
- # don't eliminate duplications in $postdeps and $predeps
- opt_duplicate_compiler_generated_deps=:
- ;;
- *)
- opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
- ;;
- esac
-
- # Having warned about all mis-specified options, bail out if
- # anything was wrong.
- $exit_cmd $EXIT_FAILURE
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
- if test "$package_revision" != "$macro_revision"; then
- if test "$VERSION" != "$macro_version"; then
- if test -z "$macro_version"; then
- cat >&2 <<_LT_EOF
-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
- else
- cat >&2 <<_LT_EOF
-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
- fi
- else
- cat >&2 <<_LT_EOF
-$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
- fi
-
- exit $EXIT_MISMATCH
- fi
-}
-
-
-## ----------- ##
-## Main. ##
-## ----------- ##
-
-$opt_help || {
- # Sanity checks first:
- func_check_version_match
-
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- func_fatal_configuration "not configured to build any kind of library"
- fi
-
- test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
- # Darwin sucks
- eval std_shrext=\"$shrext_cmds\"
-
-
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$execute_dlfiles" && test "$mode" != execute; then
- func_error "unrecognized option \`-dlopen'"
- $ECHO "$help" 1>&2
- exit $EXIT_FAILURE
- fi
-
- # Change the help message to a mode-specific one.
- generic_help="$help"
- help="Try \`$progname --help --mode=$mode' for more information."
-}
-
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
- test -f "$1" &&
- $SED -e 4q "$1" 2>/dev/null \
- | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs. To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway. Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
- lalib_p=no
- if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
- for lalib_p_l in 1 2 3 4
- do
- read lalib_p_line
- case "$lalib_p_line" in
- \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
- esac
- done
- exec 0<&5 5<&-
- fi
- test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
- func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
- func_ltwrapper_exec_suffix=
- case $1 in
- *.exe) ;;
- *) func_ltwrapper_exec_suffix=.exe ;;
- esac
- $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
- func_ltwrapper_scriptname_result=""
- if func_ltwrapper_executable_p "$1"; then
- func_dirname_and_basename "$1" "" "."
- func_stripname '' '.exe' "$func_basename_result"
- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
- fi
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
- func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
- $opt_debug
- save_ifs=$IFS; IFS='~'
- for cmd in $1; do
- IFS=$save_ifs
- eval cmd=\"$cmd\"
- func_show_eval "$cmd" "${2-:}"
- done
- IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)! Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
- $opt_debug
- case $1 in
- */* | *\\*) . "$1" ;;
- *) . "./$1" ;;
- esac
-}
-
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
- $opt_debug
- if test -n "$available_tags" && test -z "$tagname"; then
- CC_quoted=
- for arg in $CC; do
- func_quote_for_eval "$arg"
- CC_quoted="$CC_quoted $func_quote_for_eval_result"
- done
- case $@ in
- # Blanks in the command may have been stripped by the calling shell,
- # but not from the CC environment variable when configure was run.
- " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
- # Blanks at the start of $base_compile will cause this to fail
- # if we don't check for them as well.
- *)
- for z in $available_tags; do
- if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
- # Evaluate the configuration.
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
- CC_quoted=
- for arg in $CC; do
- # Double-quote args containing other shell metacharacters.
- func_quote_for_eval "$arg"
- CC_quoted="$CC_quoted $func_quote_for_eval_result"
- done
- case "$@ " in
- " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
- # The compiler in the base compile command matches
- # the one in the tagged configuration.
- # Assume this is the tagged configuration we want.
- tagname=$z
- break
- ;;
- esac
- fi
- done
- # If $tagname still isn't set, then no tagged configuration
- # was found and let the user know that the "--tag" command
- # line option must be used.
- if test -z "$tagname"; then
- func_echo "unable to infer tagged configuration"
- func_fatal_error "specify a tag with \`--tag'"
-# else
-# func_verbose "using $tagname tagged configuration"
- fi
- ;;
- esac
- fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
- write_libobj=${1}
- if test "$build_libtool_libs" = yes; then
- write_lobj=\'${2}\'
- else
- write_lobj=none
- fi
-
- if test "$build_old_libs" = yes; then
- write_oldobj=\'${3}\'
- else
- write_oldobj=none
- fi
-
- $opt_dry_run || {
- cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
- $MV "${write_libobj}T" "${write_libobj}"
- }
-}
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
- $opt_debug
- # Get the compilation command and the source file.
- base_compile=
- srcfile="$nonopt" # always keep a non-empty value in "srcfile"
- suppress_opt=yes
- suppress_output=
- arg_mode=normal
- libobj=
- later=
- pie_flag=
-
- for arg
- do
- case $arg_mode in
- arg )
- # do not "continue". Instead, add this to base_compile
- lastarg="$arg"
- arg_mode=normal
- ;;
-
- target )
- libobj="$arg"
- arg_mode=normal
- continue
- ;;
-
- normal )
- # Accept any command-line options.
- case $arg in
- -o)
- test -n "$libobj" && \
- func_fatal_error "you cannot specify \`-o' more than once"
- arg_mode=target
- continue
- ;;
-
- -pie | -fpie | -fPIE)
- pie_flag="$pie_flag $arg"
- continue
- ;;
-
- -shared | -static | -prefer-pic | -prefer-non-pic)
- later="$later $arg"
- continue
- ;;
-
- -no-suppress)
- suppress_opt=no
- continue
- ;;
-
- -Xcompiler)
- arg_mode=arg # the next one goes into the "base_compile" arg list
- continue # The current "srcfile" will either be retained or
- ;; # replaced later. I would guess that would be a bug.
-
- -Wc,*)
- func_stripname '-Wc,' '' "$arg"
- args=$func_stripname_result
- lastarg=
- save_ifs="$IFS"; IFS=','
- for arg in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$arg"
- lastarg="$lastarg $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$lastarg"
- lastarg=$func_stripname_result
-
- # Add the arguments to base_compile.
- base_compile="$base_compile $lastarg"
- continue
- ;;
-
- *)
- # Accept the current argument as the source file.
- # The previous "srcfile" becomes the current argument.
- #
- lastarg="$srcfile"
- srcfile="$arg"
- ;;
- esac # case $arg
- ;;
- esac # case $arg_mode
-
- # Aesthetically quote the previous argument.
- func_quote_for_eval "$lastarg"
- base_compile="$base_compile $func_quote_for_eval_result"
- done # for arg
-
- case $arg_mode in
- arg)
- func_fatal_error "you must specify an argument for -Xcompile"
- ;;
- target)
- func_fatal_error "you must specify a target with \`-o'"
- ;;
- *)
- # Get the name of the library object.
- test -z "$libobj" && {
- func_basename "$srcfile"
- libobj="$func_basename_result"
- }
- ;;
- esac
-
- # Recognize several different file suffixes.
- # If the user specifies -o file.o, it is replaced with file.lo
- case $libobj in
- *.[cCFSifmso] | \
- *.ada | *.adb | *.ads | *.asm | \
- *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
- *.[fF][09]? | *.for | *.java | *.obj | *.sx)
- func_xform "$libobj"
- libobj=$func_xform_result
- ;;
- esac
-
- case $libobj in
- *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
- *)
- func_fatal_error "cannot determine name of library object from \`$libobj'"
- ;;
- esac
-
- func_infer_tag $base_compile
-
- for arg in $later; do
- case $arg in
- -shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
- build_old_libs=no
- continue
- ;;
-
- -static)
- build_libtool_libs=no
- build_old_libs=yes
- continue
- ;;
-
- -prefer-pic)
- pic_mode=yes
- continue
- ;;
-
- -prefer-non-pic)
- pic_mode=no
- continue
- ;;
- esac
- done
-
- func_quote_for_eval "$libobj"
- test "X$libobj" != "X$func_quote_for_eval_result" \
- && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
- && func_warning "libobj name \`$libobj' may not contain shell special characters."
- func_dirname_and_basename "$obj" "/" ""
- objname="$func_basename_result"
- xdir="$func_dirname_result"
- lobj=${xdir}$objdir/$objname
-
- test -z "$base_compile" && \
- func_fatal_help "you must specify a compilation command"
-
- # Delete any leftover library objects.
- if test "$build_old_libs" = yes; then
- removelist="$obj $lobj $libobj ${libobj}T"
- else
- removelist="$lobj $libobj ${libobj}T"
- fi
-
- # On Cygwin there's no "real" PIC flag so we must build both object types
- case $host_os in
- cygwin* | mingw* | pw32* | os2* | cegcc*)
- pic_mode=default
- ;;
- esac
- if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
- # non-PIC code in shared libraries is not supported
- pic_mode=default
- fi
-
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
- else
- output_obj=
- need_locks=no
- lockfile=
- fi
-
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
- until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
- func_echo "Waiting for $lockfile to be removed"
- sleep 2
- done
- elif test "$need_locks" = warn; then
- if test -f "$lockfile"; then
- $ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
- removelist="$removelist $output_obj"
- $ECHO "$srcfile" > "$lockfile"
- fi
-
- $opt_dry_run || $RM $removelist
- removelist="$removelist $lockfile"
- trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
- if test -n "$fix_srcfile_path"; then
- eval srcfile=\"$fix_srcfile_path\"
- fi
- func_quote_for_eval "$srcfile"
- qsrcfile=$func_quote_for_eval_result
-
- # Only build a PIC object if we are building libtool libraries.
- if test "$build_libtool_libs" = yes; then
- # Without this assignment, base_compile gets emptied.
- fbsd_hideous_sh_bug=$base_compile
-
- if test "$pic_mode" != no; then
- command="$base_compile $qsrcfile $pic_flag"
- else
- # Don't build PIC code
- command="$base_compile $qsrcfile"
- fi
-
- func_mkdir_p "$xdir$objdir"
-
- if test -z "$output_obj"; then
- # Place PIC objects in $objdir
- command="$command -o $lobj"
- fi
-
- func_show_eval_locale "$command" \
- 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
- if test "$need_locks" = warn &&
- test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
- $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
-
- # Just move the object if needed, then go on to compile the next one
- if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
- func_show_eval '$MV "$output_obj" "$lobj"' \
- 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
- fi
-
- # Allow error messages only from the first compilation.
- if test "$suppress_opt" = yes; then
- suppress_output=' >/dev/null 2>&1'
- fi
- fi
-
- # Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
- if test "$pic_mode" != yes; then
- # Don't build PIC code
- command="$base_compile $qsrcfile$pie_flag"
- else
- command="$base_compile $qsrcfile $pic_flag"
- fi
- if test "$compiler_c_o" = yes; then
- command="$command -o $obj"
- fi
-
- # Suppress compiler output if we already did a PIC compilation.
- command="$command$suppress_output"
- func_show_eval_locale "$command" \
- '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
- if test "$need_locks" = warn &&
- test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
- $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
-
- # Just move the object if needed
- if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
- func_show_eval '$MV "$output_obj" "$obj"' \
- 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
- fi
- fi
-
- $opt_dry_run || {
- func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
- # Unlock the critical section if it was locked
- if test "$need_locks" != no; then
- removelist=$lockfile
- $RM "$lockfile"
- fi
- }
-
- exit $EXIT_SUCCESS
-}
-
-$opt_help || {
-test "$mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
- # We need to display help for each of the modes.
- case $mode in
- "")
- # Generic help is extracted from the usage comments
- # at the start of this file.
- func_help
- ;;
-
- clean)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
- ;;
-
- compile)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
- -no-suppress do not suppress compiler output for multiple passes
- -prefer-pic try to building PIC objects only
- -prefer-non-pic try to building non-PIC objects only
- -shared do not build a \`.o' file suitable for static linking
- -static only build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
- ;;
-
- execute)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
- -dlopen FILE add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
- ;;
-
- finish)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges. Use
-the \`--dry-run' option if you just want to see what would be executed."
- ;;
-
- install)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command. The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
- -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
- ;;
-
- link)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
- -all-static do not do any dynamic linking at all
- -avoid-version do not add a version suffix if possible
- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
- -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
- -export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
- -export-symbols-regex REGEX
- try to export only the symbols matching REGEX
- -LLIBDIR search LIBDIR for required installed libraries
- -lNAME OUTPUT-FILE requires the installed library libNAME
- -module build a library that can dlopened
- -no-fast-install disable the fast-install mode
- -no-install link a not-installable executable
- -no-undefined declare that a library does not refer to external symbols
- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
- -objectlist FILE Use a list of object files found in FILE to specify objects
- -precious-files-regex REGEX
- don't remove output files matching REGEX
- -release RELEASE specify package release information
- -rpath LIBDIR the created library will eventually be installed in LIBDIR
- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
- -shared only do dynamic linking of libtool libraries
- -shrext SUFFIX override the standard shared library file extension
- -static do not do any dynamic linking of uninstalled libtool libraries
- -static-libtool-libs
- do not do any dynamic linking of libtool libraries
- -version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
- -weak LIBNAME declare that the target provides the LIBNAME interface
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename. Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
- ;;
-
- uninstall)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
- ;;
-
- *)
- func_fatal_help "invalid operation mode \`$mode'"
- ;;
- esac
-
- $ECHO
- $ECHO "Try \`$progname --help' for more information about other modes."
-
- exit $?
-}
-
- # Now that we've collected a possible --mode arg, show help if necessary
- $opt_help && func_mode_help
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
- $opt_debug
- # The first argument is the command name.
- cmd="$nonopt"
- test -z "$cmd" && \
- func_fatal_help "you must specify a COMMAND"
-
- # Handle -dlopen flags immediately.
- for file in $execute_dlfiles; do
- test -f "$file" \
- || func_fatal_help "\`$file' is not a file"
-
- dir=
- case $file in
- *.la)
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$lib' is not a valid libtool archive"
-
- # Read the libtool library.
- dlname=
- library_names=
- func_source "$file"
-
- # Skip this library if it cannot be dlopened.
- if test -z "$dlname"; then
- # Warn if it was a shared library.
- test -n "$library_names" && \
- func_warning "\`$file' was not linked with \`-export-dynamic'"
- continue
- fi
-
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
-
- if test -f "$dir/$objdir/$dlname"; then
- dir="$dir/$objdir"
- else
- if test ! -f "$dir/$dlname"; then
- func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
- fi
- fi
- ;;
-
- *.lo)
- # Just add the directory containing the .lo file.
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
- ;;
-
- *)
- func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
- continue
- ;;
- esac
-
- # Get the absolute pathname.
- absdir=`cd "$dir" && pwd`
- test -n "$absdir" && dir="$absdir"
-
- # Now add the directory to shlibpath_var.
- if eval "test -z \"\$$shlibpath_var\""; then
- eval "$shlibpath_var=\"\$dir\""
- else
- eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
- fi
- done
-
- # This variable tells wrapper scripts just to set shlibpath_var
- # rather than running their programs.
- libtool_execute_magic="$magic"
-
- # Check if any of the arguments is a wrapper script.
- args=
- for file
- do
- case $file in
- -*) ;;
- *)
- # Do a test to see if this is really a libtool program.
- if func_ltwrapper_script_p "$file"; then
- func_source "$file"
- # Transform arg to wrapped name.
- file="$progdir/$program"
- elif func_ltwrapper_executable_p "$file"; then
- func_ltwrapper_scriptname "$file"
- func_source "$func_ltwrapper_scriptname_result"
- # Transform arg to wrapped name.
- file="$progdir/$program"
- fi
- ;;
- esac
- # Quote arguments (to preserve shell metacharacters).
- func_quote_for_eval "$file"
- args="$args $func_quote_for_eval_result"
- done
-
- if test "X$opt_dry_run" = Xfalse; then
- if test -n "$shlibpath_var"; then
- # Export the shlibpath_var.
- eval "export $shlibpath_var"
- fi
-
- # Restore saved environment variables
- for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
- do
- eval "if test \"\${save_$lt_var+set}\" = set; then
- $lt_var=\$save_$lt_var; export $lt_var
- else
- $lt_unset $lt_var
- fi"
- done
-
- # Now prepare to actually exec the command.
- exec_cmd="\$cmd$args"
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
- eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
- $ECHO "export $shlibpath_var"
- fi
- $ECHO "$cmd$args"
- exit $EXIT_SUCCESS
- fi
-}
-
-test "$mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
- $opt_debug
- libdirs="$nonopt"
- admincmds=
-
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- for dir
- do
- libdirs="$libdirs $dir"
- done
-
- for libdir in $libdirs; do
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
- func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
- fi
- if test -n "$finish_eval"; then
- # Do the single finish_eval.
- eval cmds=\"$finish_eval\"
- $opt_dry_run || eval "$cmds" || admincmds="$admincmds
- $cmds"
- fi
- done
- fi
-
- # Exit here if they wanted silent mode.
- $opt_silent && exit $EXIT_SUCCESS
-
- $ECHO "X----------------------------------------------------------------------" | $Xsed
- $ECHO "Libraries have been installed in:"
- for libdir in $libdirs; do
- $ECHO " $libdir"
- done
- $ECHO
- $ECHO "If you ever happen to want to link against installed libraries"
- $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
- $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
- $ECHO "flag during linking and do at least one of the following:"
- if test -n "$shlibpath_var"; then
- $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
- $ECHO " during execution"
- fi
- if test -n "$runpath_var"; then
- $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
- $ECHO " during linking"
- fi
- if test -n "$hardcode_libdir_flag_spec"; then
- libdir=LIBDIR
- eval flag=\"$hardcode_libdir_flag_spec\"
-
- $ECHO " - use the \`$flag' linker flag"
- fi
- if test -n "$admincmds"; then
- $ECHO " - have your system administrator run these commands:$admincmds"
- fi
- if test -f /etc/ld.so.conf; then
- $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
- fi
- $ECHO
-
- $ECHO "See any operating system documentation about shared libraries for"
- case $host in
- solaris2.[6789]|solaris2.1[0-9])
- $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
- $ECHO "pages."
- ;;
- *)
- $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
- ;;
- esac
- $ECHO "X----------------------------------------------------------------------" | $Xsed
- exit $EXIT_SUCCESS
-}
-
-test "$mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
- $opt_debug
- # There may be an optional sh(1) argument at the beginning of
- # install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
- # Allow the use of GNU shtool's install command.
- $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
- # Aesthetically quote it.
- func_quote_for_eval "$nonopt"
- install_prog="$func_quote_for_eval_result "
- arg=$1
- shift
- else
- install_prog=
- arg=$nonopt
- fi
-
- # The real first argument should be the name of the installation program.
- # Aesthetically quote it.
- func_quote_for_eval "$arg"
- install_prog="$install_prog$func_quote_for_eval_result"
-
- # We need to accept at least all the BSD install flags.
- dest=
- files=
- opts=
- prev=
- install_type=
- isdir=no
- stripme=
- for arg
- do
- if test -n "$dest"; then
- files="$files $dest"
- dest=$arg
- continue
- fi
-
- case $arg in
- -d) isdir=yes ;;
- -f)
- case " $install_prog " in
- *[\\\ /]cp\ *) ;;
- *) prev=$arg ;;
- esac
- ;;
- -g | -m | -o)
- prev=$arg
- ;;
- -s)
- stripme=" -s"
- continue
- ;;
- -*)
- ;;
- *)
- # If the previous option needed an argument, then skip it.
- if test -n "$prev"; then
- prev=
- else
- dest=$arg
- continue
- fi
- ;;
- esac
-
- # Aesthetically quote the argument.
- func_quote_for_eval "$arg"
- install_prog="$install_prog $func_quote_for_eval_result"
- done
-
- test -z "$install_prog" && \
- func_fatal_help "you must specify an install program"
-
- test -n "$prev" && \
- func_fatal_help "the \`$prev' option requires an argument"
-
- if test -z "$files"; then
- if test -z "$dest"; then
- func_fatal_help "no file or destination specified"
- else
- func_fatal_help "you must specify a destination"
- fi
- fi
-
- # Strip any trailing slash from the destination.
- func_stripname '' '/' "$dest"
- dest=$func_stripname_result
-
- # Check to see that the destination is a directory.
- test -d "$dest" && isdir=yes
- if test "$isdir" = yes; then
- destdir="$dest"
- destname=
- else
- func_dirname_and_basename "$dest" "" "."
- destdir="$func_dirname_result"
- destname="$func_basename_result"
-
- # Not a directory, so check to see that there is only one file specified.
- set dummy $files; shift
- test "$#" -gt 1 && \
- func_fatal_help "\`$dest' is not a directory"
- fi
- case $destdir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- for file in $files; do
- case $file in
- *.lo) ;;
- *)
- func_fatal_help "\`$destdir' must be an absolute directory name"
- ;;
- esac
- done
- ;;
- esac
-
- # This variable tells wrapper scripts just to set variables rather
- # than running their programs.
- libtool_install_magic="$magic"
-
- staticlibs=
- future_libdirs=
- current_libdirs=
- for file in $files; do
-
- # Do each installation.
- case $file in
- *.$libext)
- # Do the static libraries later.
- staticlibs="$staticlibs $file"
- ;;
-
- *.la)
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$file' is not a valid libtool archive"
-
- library_names=
- old_library=
- relink_command=
- func_source "$file"
-
- # Add the libdir to current_libdirs if it is the destination.
- if test "X$destdir" = "X$libdir"; then
- case "$current_libdirs " in
- *" $libdir "*) ;;
- *) current_libdirs="$current_libdirs $libdir" ;;
- esac
- else
- # Note the libdir as a future libdir.
- case "$future_libdirs " in
- *" $libdir "*) ;;
- *) future_libdirs="$future_libdirs $libdir" ;;
- esac
- fi
-
- func_dirname "$file" "/" ""
- dir="$func_dirname_result"
- dir="$dir$objdir"
-
- if test -n "$relink_command"; then
- # Determine the prefix the user has applied to our future dir.
- inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
-
- # Don't allow the user to place us outside of our expected
- # location b/c this prevents finding dependent libraries that
- # are installed to the same prefix.
- # At present, this check doesn't affect windows .dll's that
- # are installed into $libdir/../bin (currently, that works fine)
- # but it's something to keep an eye on.
- test "$inst_prefix_dir" = "$destdir" && \
- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
- if test -n "$inst_prefix_dir"; then
- # Stick the inst_prefix_dir data into the link command.
- relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
- else
- relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
- fi
-
- func_warning "relinking \`$file'"
- func_show_eval "$relink_command" \
- 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
- fi
-
- # See the names of the shared library.
- set dummy $library_names; shift
- if test -n "$1"; then
- realname="$1"
- shift
-
- srcname="$realname"
- test -n "$relink_command" && srcname="$realname"T
-
- # Install the shared library and build the symlinks.
- func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
- 'exit $?'
- tstripme="$stripme"
- case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- case $realname in
- *.dll.a)
- tstripme=""
- ;;
- esac
- ;;
- esac
- if test -n "$tstripme" && test -n "$striplib"; then
- func_show_eval "$striplib $destdir/$realname" 'exit $?'
- fi
-
- if test "$#" -gt 0; then
- # Delete the old symlinks, and create new ones.
- # Try `ln -sf' first, because the `ln' binary might depend on
- # the symlink we replace! Solaris /bin/ln does not understand -f,
- # so we also need to try rm && ln -s.
- for linkname
- do
- test "$linkname" != "$realname" \
- && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
- done
- fi
-
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- func_execute_cmds "$postinstall_cmds" 'exit $?'
- fi
-
- # Install the pseudo-library for information purposes.
- func_basename "$file"
- name="$func_basename_result"
- instname="$dir/$name"i
- func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
- # Maybe install the static library, too.
- test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
- ;;
-
- *.lo)
- # Install (i.e. copy) a libtool object.
-
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
- fi
-
- # Deduce the name of the destination old-style object file.
- case $destfile in
- *.lo)
- func_lo2o "$destfile"
- staticdest=$func_lo2o_result
- ;;
- *.$objext)
- staticdest="$destfile"
- destfile=
- ;;
- *)
- func_fatal_help "cannot copy a libtool object to \`$destfile'"
- ;;
- esac
-
- # Install the libtool object if requested.
- test -n "$destfile" && \
- func_show_eval "$install_prog $file $destfile" 'exit $?'
-
- # Install the old object if enabled.
- if test "$build_old_libs" = yes; then
- # Deduce the name of the old-style object file.
- func_lo2o "$file"
- staticobj=$func_lo2o_result
- func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
- fi
- exit $EXIT_SUCCESS
- ;;
-
- *)
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
- fi
-
- # If the file is missing, and there is a .exe on the end, strip it
- # because it is most likely a libtool script we actually want to
- # install
- stripped_ext=""
- case $file in
- *.exe)
- if test ! -f "$file"; then
- func_stripname '' '.exe' "$file"
- file=$func_stripname_result
- stripped_ext=".exe"
- fi
- ;;
- esac
-
- # Do a test to see if this is really a libtool program.
- case $host in
- *cygwin* | *mingw*)
- if func_ltwrapper_executable_p "$file"; then
- func_ltwrapper_scriptname "$file"
- wrapper=$func_ltwrapper_scriptname_result
- else
- func_stripname '' '.exe' "$file"
- wrapper=$func_stripname_result
- fi
- ;;
- *)
- wrapper=$file
- ;;
- esac
- if func_ltwrapper_script_p "$wrapper"; then
- notinst_deplibs=
- relink_command=
-
- func_source "$wrapper"
-
- # Check the variables that should have been set.
- test -z "$generated_by_libtool_version" && \
- func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
- finalize=yes
- for lib in $notinst_deplibs; do
- # Check to see that each library is installed.
- libdir=
- if test -f "$lib"; then
- func_source "$lib"
- fi
- libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
- if test -n "$libdir" && test ! -f "$libfile"; then
- func_warning "\`$lib' has not been installed in \`$libdir'"
- finalize=no
- fi
- done
-
- relink_command=
- func_source "$wrapper"
-
- outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
- $opt_dry_run || {
- if test "$finalize" = yes; then
- tmpdir=`func_mktempdir`
- func_basename "$file$stripped_ext"
- file="$func_basename_result"
- outputname="$tmpdir/$file"
- # Replace the output file specification.
- relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
-
- $opt_silent || {
- func_quote_for_expand "$relink_command"
- eval "func_echo $func_quote_for_expand_result"
- }
- if eval "$relink_command"; then :
- else
- func_error "error: relink \`$file' with the above command before installing it"
- $opt_dry_run || ${RM}r "$tmpdir"
- continue
- fi
- file="$outputname"
- else
- func_warning "cannot relink \`$file'"
- fi
- }
- else
- # Install the binary that we compiled earlier.
- file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
- fi
- fi
-
- # remove .exe since cygwin /usr/bin/install will append another
- # one anyway
- case $install_prog,$host in
- */usr/bin/install*,*cygwin*)
- case $file:$destfile in
- *.exe:*.exe)
- # this is ok
- ;;
- *.exe:*)
- destfile=$destfile.exe
- ;;
- *:*.exe)
- func_stripname '' '.exe' "$destfile"
- destfile=$func_stripname_result
- ;;
- esac
- ;;
- esac
- func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
- $opt_dry_run || if test -n "$outputname"; then
- ${RM}r "$tmpdir"
- fi
- ;;
- esac
- done
-
- for file in $staticlibs; do
- func_basename "$file"
- name="$func_basename_result"
-
- # Set up the ranlib parameters.
- oldlib="$destdir/$name"
-
- func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
- if test -n "$stripme" && test -n "$old_striplib"; then
- func_show_eval "$old_striplib $oldlib" 'exit $?'
- fi
-
- # Do each command in the postinstall commands.
- func_execute_cmds "$old_postinstall_cmds" 'exit $?'
- done
-
- test -n "$future_libdirs" && \
- func_warning "remember to run \`$progname --finish$future_libdirs'"
-
- if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- $opt_dry_run && current_libdirs=" -n$current_libdirs"
- exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
- else
- exit $EXIT_SUCCESS
- fi
-}
-
-test "$mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
- $opt_debug
- my_outputname="$1"
- my_originator="$2"
- my_pic_p="${3-no}"
- my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
- my_dlsyms=
-
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- if test -n "$NM" && test -n "$global_symbol_pipe"; then
- my_dlsyms="${my_outputname}S.c"
- else
- func_error "not configured to extract global symbols from dlpreopened files"
- fi
- fi
-
- if test -n "$my_dlsyms"; then
- case $my_dlsyms in
- "") ;;
- *.c)
- # Discover the nlist of each of the dlfiles.
- nlist="$output_objdir/${my_outputname}.nm"
-
- func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
- # Parse the name list into a source file.
- func_verbose "creating $output_objdir/$my_dlsyms"
-
- $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
- if test "$dlself" = yes; then
- func_verbose "generating symbol list for \`$output'"
-
- $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
- # Add our own program objects to the symbol list.
- progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- for progfile in $progfiles; do
- func_verbose "extracting global C symbols from \`$progfile'"
- $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -n "$exclude_expsyms"; then
- $opt_dry_run || {
- eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- eval '$MV "$nlist"T "$nlist"'
- }
- fi
-
- if test -n "$export_symbols_regex"; then
- $opt_dry_run || {
- eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
- eval '$MV "$nlist"T "$nlist"'
- }
- fi
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$outputname.exp"
- $opt_dry_run || {
- $RM $export_symbols
- eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
- eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
- ;;
- esac
- }
- else
- $opt_dry_run || {
- eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
- eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
- eval '$MV "$nlist"T "$nlist"'
- case $host in
- *cygwin | *mingw* | *cegcc* )
- eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
- eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
- ;;
- esac
- }
- fi
- fi
-
- for dlprefile in $dlprefiles; do
- func_verbose "extracting global C symbols from \`$dlprefile'"
- func_basename "$dlprefile"
- name="$func_basename_result"
- $opt_dry_run || {
- eval '$ECHO ": $name " >> "$nlist"'
- eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
- }
- done
-
- $opt_dry_run || {
- # Make sure we have at least an empty file.
- test -f "$nlist" || : > "$nlist"
-
- if test -n "$exclude_expsyms"; then
- $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
- $MV "$nlist"T "$nlist"
- fi
-
- # Try sorting and uniquifying the output.
- if $GREP -v "^: " < "$nlist" |
- if sort -k 3 </dev/null >/dev/null 2>&1; then
- sort -k 3
- else
- sort +2
- fi |
- uniq > "$nlist"S; then
- :
- else
- $GREP -v "^: " < "$nlist" > "$nlist"S
- fi
-
- if test -f "$nlist"S; then
- eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
- else
- $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
- fi
-
- $ECHO >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols. */
-typedef struct {
- const char *name;
- void *address;
-} lt_dlsymlist;
-"
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
- runtime relocations are performed -- see ld's documentation
- on pseudo-relocs. */"
- lt_dlsym_const= ;;
- *osf5*)
- echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
- lt_dlsym_const= ;;
- *)
- lt_dlsym_const=const ;;
- esac
-
- $ECHO >> "$output_objdir/$my_dlsyms" "\
-extern $lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-$lt_dlsym_const lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
- { \"$my_originator\", (void *) 0 },"
-
- case $need_lib_prefix in
- no)
- eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
- ;;
- *)
- eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
- ;;
- esac
- $ECHO >> "$output_objdir/$my_dlsyms" "\
- {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
- } # !$opt_dry_run
-
- pic_flag_for_symtable=
- case "$compile_command " in
- *" -static "*) ;;
- *)
- case $host in
- # compiling the symbol table file with pic_flag works around
- # a FreeBSD bug that causes programs to crash when -lm is
- # linked before any other PIC object. But we must not use
- # pic_flag when linking with -static. The problem exists in
- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
- pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
- *-*-hpux*)
- pic_flag_for_symtable=" $pic_flag" ;;
- *)
- if test "X$my_pic_p" != Xno; then
- pic_flag_for_symtable=" $pic_flag"
- fi
- ;;
- esac
- ;;
- esac
- symtab_cflags=
- for arg in $LTCFLAGS; do
- case $arg in
- -pie | -fpie | -fPIE) ;;
- *) symtab_cflags="$symtab_cflags $arg" ;;
- esac
- done
-
- # Now compile the dynamic symbol file.
- func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
- # Clean up the generated files.
- func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
- # Transform the symbol file into the correct name.
- symfileobj="$output_objdir/${my_outputname}S.$objext"
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- if test -f "$output_objdir/$my_outputname.def"; then
- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
- else
- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
- fi
- ;;
- *)
- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
- ;;
- esac
- ;;
- *)
- func_fatal_error "unknown suffix for \`$my_dlsyms'"
- ;;
- esac
- else
- # We keep going just in case the user didn't refer to
- # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
- # really was required.
-
- # Nullify the symbol file.
- compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
- finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
- fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-func_win32_libid ()
-{
- $opt_debug
- win32_libid_type="unknown"
- win32_fileres=`file -L $1 2>/dev/null`
- case $win32_fileres in
- *ar\ archive\ import\ library*) # definitely import
- win32_libid_type="x86 archive import"
- ;;
- *ar\ archive*) # could be an import, or static
- if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
- $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
- win32_nmres=`eval $NM -f posix -A $1 |
- $SED -n -e '
- 1,100{
- / I /{
- s,.*,import,
- p
- q
- }
- }'`
- case $win32_nmres in
- import*) win32_libid_type="x86 archive import";;
- *) win32_libid_type="x86 archive static";;
- esac
- fi
- ;;
- *DLL*)
- win32_libid_type="x86 DLL"
- ;;
- *executable*) # but shell scripts are "executable" too...
- case $win32_fileres in
- *MS\ Windows\ PE\ Intel*)
- win32_libid_type="x86 DLL"
- ;;
- esac
- ;;
- esac
- $ECHO "$win32_libid_type"
-}
-
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
- $opt_debug
- f_ex_an_ar_dir="$1"; shift
- f_ex_an_ar_oldlib="$1"
- func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
- :
- else
- func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
- fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
- $opt_debug
- my_gentop="$1"; shift
- my_oldlibs=${1+"$@"}
- my_oldobjs=""
- my_xlib=""
- my_xabs=""
- my_xdir=""
-
- for my_xlib in $my_oldlibs; do
- # Extract the objects.
- case $my_xlib in
- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
- *) my_xabs=`pwd`"/$my_xlib" ;;
- esac
- func_basename "$my_xlib"
- my_xlib="$func_basename_result"
- my_xlib_u=$my_xlib
- while :; do
- case " $extracted_archives " in
- *" $my_xlib_u "*)
- func_arith $extracted_serial + 1
- extracted_serial=$func_arith_result
- my_xlib_u=lt$extracted_serial-$my_xlib ;;
- *) break ;;
- esac
- done
- extracted_archives="$extracted_archives $my_xlib_u"
- my_xdir="$my_gentop/$my_xlib_u"
-
- func_mkdir_p "$my_xdir"
-
- case $host in
- *-darwin*)
- func_verbose "Extracting $my_xabs"
- # Do not bother doing anything if just a dry run
- $opt_dry_run || {
- darwin_orig_dir=`pwd`
- cd $my_xdir || exit $?
- darwin_archive=$my_xabs
- darwin_curdir=`pwd`
- darwin_base_archive=`basename "$darwin_archive"`
- darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
- if test -n "$darwin_arches"; then
- darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
- darwin_arch=
- func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
- for darwin_arch in $darwin_arches ; do
- func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
- cd "$darwin_curdir"
- $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
- done # $darwin_arches
- ## Okay now we've a bunch of thin objects, gotta fatten them up :)
- darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
- darwin_file=
- darwin_files=
- for darwin_file in $darwin_filelist; do
- darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
- $LIPO -create -output "$darwin_file" $darwin_files
- done # $darwin_filelist
- $RM -rf unfat-$$
- cd "$darwin_orig_dir"
- else
- cd $darwin_orig_dir
- func_extract_an_archive "$my_xdir" "$my_xabs"
- fi # $darwin_arches
- } # !$opt_dry_run
- ;;
- *)
- func_extract_an_archive "$my_xdir" "$my_xabs"
- ;;
- esac
- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
- done
-
- func_extract_archives_result="$my_oldobjs"
-}
-
-
-
-# func_emit_wrapper_part1 [arg=no]
-#
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
-{
- func_emit_wrapper_part1_arg1=no
- if test -n "$1" ; then
- func_emit_wrapper_part1_arg1=$1
- fi
-
- $ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
- # install mode needs the following variables:
- generated_by_libtool_version='$macro_version'
- notinst_deplibs='$notinst_deplibs'
-else
- # When we are sourced in execute mode, \$file and \$ECHO are already set.
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- ECHO=\"$qecho\"
- file=\"\$0\"
- # Make sure echo works.
- if test \"X\$1\" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
- elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
- # Yippee, \$ECHO works!
- :
- else
- # Restart under the correct shell, and then maybe \$ECHO will work.
- exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
- fi
- fi\
-"
- $ECHO "\
-
- # Find the directory that this script lives in.
- thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
- test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
- # Follow symbolic links until we get to the real thisdir.
- file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
- while test -n \"\$file\"; do
- destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
- # If there was a directory component, then change thisdir.
- if test \"x\$destdir\" != \"x\$file\"; then
- case \"\$destdir\" in
- [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
- *) thisdir=\"\$thisdir/\$destdir\" ;;
- esac
- fi
-
- file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
- file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
- done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
- func_emit_wrapper_part2_arg1=no
- if test -n "$1" ; then
- func_emit_wrapper_part2_arg1=$1
- fi
-
- $ECHO "\
-
- # Usually 'no', except on cygwin/mingw when embedded into
- # the cwrapper.
- WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
- if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
- # special case for '.'
- if test \"\$thisdir\" = \".\"; then
- thisdir=\`pwd\`
- fi
- # remove .libs from thisdir
- case \"\$thisdir\" in
- *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
- $objdir ) thisdir=. ;;
- esac
- fi
-
- # Try to get the absolute directory name.
- absdir=\`cd \"\$thisdir\" && pwd\`
- test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
- if test "$fast_install" = yes; then
- $ECHO "\
- program=lt-'$outputname'$exeext
- progdir=\"\$thisdir/$objdir\"
-
- if test ! -f \"\$progdir/\$program\" ||
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
- file=\"\$\$-\$program\"
-
- if test ! -d \"\$progdir\"; then
- $MKDIR \"\$progdir\"
- else
- $RM \"\$progdir/\$file\"
- fi"
-
- $ECHO "\
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
- if relink_command_output=\`eval \$relink_command 2>&1\`; then :
- else
- $ECHO \"\$relink_command_output\" >&2
- $RM \"\$progdir/\$file\"
- exit 1
- fi
- fi
-
- $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
- { $RM \"\$progdir/\$program\";
- $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
- $RM \"\$progdir/\$file\"
- fi"
- else
- $ECHO "\
- program='$outputname'
- progdir=\"\$thisdir/$objdir\"
-"
- fi
-
- $ECHO "\
-
- if test -f \"\$progdir/\$program\"; then"
-
- # Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- $ECHO "\
- # Add our own library path to $shlibpath_var
- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
- # Some systems cannot cope with colon-terminated $shlibpath_var
- # The second colon is a workaround for a bug in BeOS R4 sed
- $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
- export $shlibpath_var
-"
- fi
-
- # fixup the dll searchpath if we need to.
- if test -n "$dllsearchpath"; then
- $ECHO "\
- # Add the dll search path components to the executable PATH
- PATH=$dllsearchpath:\$PATH
-"
- fi
-
- $ECHO "\
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- # Run the actual program with our arguments.
-"
- case $host in
- # Backslashes separate directories on plain windows
- *-*-mingw | *-*-os2* | *-cegcc*)
- $ECHO "\
- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
- ;;
-
- *)
- $ECHO "\
- exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
- ;;
- esac
- $ECHO "\
- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
- exit 1
- fi
- else
- # The program doesn't exist.
- \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
- \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
- $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
- exit 1
- fi
-fi\
-"
-}
-# end: func_emit_wrapper_part2
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable. Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take. If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory. This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
- func_emit_wrapper_arg1=no
- if test -n "$1" ; then
- func_emit_wrapper_arg1=$1
- fi
-
- # split this up so that func_emit_cwrapperexe_src
- # can call each part independently.
- func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
- func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-# $build $host
-# mingw (msys) mingw [e.g. native]
-# cygwin mingw
-# *nix + wine mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin. Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
- func_to_host_path_result="$1"
- if test -n "$1" ; then
- case $host in
- *mingw* )
- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
- case $build in
- *mingw* ) # actually, msys
- # awkward: cmd appends spaces to result
- lt_sed_strip_trailing_spaces="s/[ ]*\$//"
- func_to_host_path_tmp1=`( cmd //c echo "$1" |\
- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
- $SED -e "$lt_sed_naive_backslashify"`
- ;;
- *cygwin* )
- func_to_host_path_tmp1=`cygpath -w "$1"`
- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
- $SED -e "$lt_sed_naive_backslashify"`
- ;;
- * )
- # Unfortunately, winepath does not exit with a non-zero
- # error code, so we are forced to check the contents of
- # stdout. On the other hand, if the command is not
- # found, the shell will set an exit code of 127 and print
- # *an error message* to stdout. So we must check for both
- # error code of zero AND non-empty stdout, which explains
- # the odd construction:
- func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
- if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
- func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
- $SED -e "$lt_sed_naive_backslashify"`
- else
- # Allow warning below.
- func_to_host_path_result=""
- fi
- ;;
- esac
- if test -z "$func_to_host_path_result" ; then
- func_error "Could not determine host path corresponding to"
- func_error " '$1'"
- func_error "Continuing, but uninstalled executables may not work."
- # Fallback:
- func_to_host_path_result="$1"
- fi
- ;;
- esac
- fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-# $build $host
-# mingw (msys) mingw [e.g. native]
-# cygwin mingw
-# *nix + wine mingw
-#
-# Path separators are also converted from $build format to
-# $host format. If ARG begins or ends with a path separator
-# character, it is preserved (but converted to $host format)
-# on output.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
- func_to_host_pathlist_result="$1"
- if test -n "$1" ; then
- case $host in
- *mingw* )
- lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
- # Remove leading and trailing path separator characters from
- # ARG. msys behavior is inconsistent here, cygpath turns them
- # into '.;' and ';.', and winepath ignores them completely.
- func_to_host_pathlist_tmp2="$1"
- # Once set for this call, this variable should not be
- # reassigned. It is used in tha fallback case.
- func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
- $SED -e 's|^:*||' -e 's|:*$||'`
- case $build in
- *mingw* ) # Actually, msys.
- # Awkward: cmd appends spaces to result.
- lt_sed_strip_trailing_spaces="s/[ ]*\$//"
- func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
- $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
- $SED -e "$lt_sed_naive_backslashify"`
- ;;
- *cygwin* )
- func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
- $SED -e "$lt_sed_naive_backslashify"`
- ;;
- * )
- # unfortunately, winepath doesn't convert pathlists
- func_to_host_pathlist_result=""
- func_to_host_pathlist_oldIFS=$IFS
- IFS=:
- for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
- IFS=$func_to_host_pathlist_oldIFS
- if test -n "$func_to_host_pathlist_f" ; then
- func_to_host_path "$func_to_host_pathlist_f"
- if test -n "$func_to_host_path_result" ; then
- if test -z "$func_to_host_pathlist_result" ; then
- func_to_host_pathlist_result="$func_to_host_path_result"
- else
- func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
- fi
- fi
- fi
- IFS=:
- done
- IFS=$func_to_host_pathlist_oldIFS
- ;;
- esac
- if test -z "$func_to_host_pathlist_result" ; then
- func_error "Could not determine the host path(s) corresponding to"
- func_error " '$1'"
- func_error "Continuing, but uninstalled executables may not work."
- # Fallback. This may break if $1 contains DOS-style drive
- # specifications. The fix is not to complicate the expression
- # below, but for the user to provide a working wine installation
- # with winepath so that path translation in the cross-to-mingw
- # case works properly.
- lt_replace_pathsep_nix_to_dos="s|:|;|g"
- func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
- $SED -e "$lt_replace_pathsep_nix_to_dos"`
- fi
- # Now, add the leading and trailing path separators back
- case "$1" in
- :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
- ;;
- esac
- case "$1" in
- *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
- ;;
- esac
- ;;
- esac
- fi
-}
-# end: func_to_host_pathlist
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
- cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
- Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
- The $output program cannot be directly executed until all the libtool
- libraries that it depends on are installed.
-
- This wrapper executable should never be moved out of the build directory.
- If it is, it will not operate correctly.
-
- Currently, it simply execs the wrapper *script* "$SHELL $output",
- but could eventually absorb all of the scripts functionality and
- exec $objdir/$outputname directly.
-*/
-EOF
- cat <<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-# define setmode _setmode
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-# include <io.h>
-# define HAVE_SETENV
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-# define intptr_t int
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
- defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-# define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-# define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
- (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
- if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
- va_list args;
- va_start (args, fmt);
- (void) vfprintf (stderr, fmt, args);
- va_end (args);
-}
-#else
-# define LTWRAPPER_DEBUGPRINTF(args)
-#endif
-
-const char *program_name = NULL;
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_fatal (const char *message, ...);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
-EOF
-
- func_emit_wrapper_part1 yes |
- $SED -e 's/\([\\"]\)/\\\1/g' \
- -e 's/^/ "/' -e 's/$/\\n"/'
- echo ";"
- cat <<EOF
-
-static const char *script_text_part2 =
-EOF
- func_emit_wrapper_part2 yes |
- $SED -e 's/\([\\"]\)/\\\1/g' \
- -e 's/^/ "/' -e 's/$/\\n"/'
- echo ";"
-
- cat <<EOF
-const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- func_to_host_pathlist "$temp_rpath"
- cat <<EOF
-const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
-EOF
- else
- cat <<"EOF"
-const char * LIB_PATH_VALUE = "";
-EOF
- fi
-
- if test -n "$dllsearchpath"; then
- func_to_host_pathlist "$dllsearchpath:"
- cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
-EOF
- else
- cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE = "";
-EOF
- fi
-
- if test "$fast_install" = yes; then
- cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
- else
- cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
- fi
-
-
- cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX "--lt-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
-
-static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
-static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set";
- /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend";
- /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append";
- /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-
-int
-main (int argc, char *argv[])
-{
- char **newargz;
- int newargc;
- char *tmp_pathspec;
- char *actual_cwrapper_path;
- char *actual_cwrapper_name;
- char *target_name;
- char *lt_argv_zero;
- intptr_t rval = 127;
-
- int i;
-
- program_name = (char *) xstrdup (base_name (argv[0]));
- LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
- LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
-
- /* very simple arg parsing; don't want to rely on getopt */
- for (i = 1; i < argc; i++)
- {
- if (strcmp (argv[i], dumpscript_opt) == 0)
- {
-EOF
- case "$host" in
- *mingw* | *cygwin* )
- # make stdout use "unix" line endings
- echo " setmode(1,_O_BINARY);"
- ;;
- esac
-
- cat <<"EOF"
- printf ("%s", script_text_part1);
- printf ("%s", script_text_part2);
- return 0;
- }
- }
-
- newargz = XMALLOC (char *, argc + 1);
- tmp_pathspec = find_executable (argv[0]);
- if (tmp_pathspec == NULL)
- lt_fatal ("Couldn't find %s", argv[0]);
- LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
- tmp_pathspec));
-
- actual_cwrapper_path = chase_symlinks (tmp_pathspec);
- LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
- actual_cwrapper_path));
- XFREE (tmp_pathspec);
-
- actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
- strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
- /* wrapper name transforms */
- strendzap (actual_cwrapper_name, ".exe");
- tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
- XFREE (actual_cwrapper_name);
- actual_cwrapper_name = tmp_pathspec;
- tmp_pathspec = 0;
-
- /* target_name transforms -- use actual target program name; might have lt- prefix */
- target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
- strendzap (target_name, ".exe");
- tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
- XFREE (target_name);
- target_name = tmp_pathspec;
- tmp_pathspec = 0;
-
- LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
- target_name));
-EOF
-
- cat <<EOF
- newargz[0] =
- XMALLOC (char, (strlen (actual_cwrapper_path) +
- strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
- strcpy (newargz[0], actual_cwrapper_path);
- strcat (newargz[0], "$objdir");
- strcat (newargz[0], "/");
-EOF
-
- cat <<"EOF"
- /* stop here, and copy so we don't have to do this twice */
- tmp_pathspec = xstrdup (newargz[0]);
-
- /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
- strcat (newargz[0], actual_cwrapper_name);
-
- /* DO want the lt- prefix here if it exists, so use target_name */
- lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
- XFREE (tmp_pathspec);
- tmp_pathspec = NULL;
-EOF
-
- case $host_os in
- mingw*)
- cat <<"EOF"
- {
- char* p;
- while ((p = strchr (newargz[0], '\\')) != NULL)
- {
- *p = '/';
- }
- while ((p = strchr (lt_argv_zero, '\\')) != NULL)
- {
- *p = '/';
- }
- }
-EOF
- ;;
- esac
-
- cat <<"EOF"
- XFREE (target_name);
- XFREE (actual_cwrapper_path);
- XFREE (actual_cwrapper_name);
-
- lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
- lt_setenv ("DUALCASE", "1"); /* for MSK sh */
- lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
- lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-
- newargc=0;
- for (i = 1; i < argc; i++)
- {
- if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
- {
- if (argv[i][env_set_opt_len] == '=')
- {
- const char *p = argv[i] + env_set_opt_len + 1;
- lt_opt_process_env_set (p);
- }
- else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
- {
- lt_opt_process_env_set (argv[++i]); /* don't copy */
- }
- else
- lt_fatal ("%s missing required argument", env_set_opt);
- continue;
- }
- if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
- {
- if (argv[i][env_prepend_opt_len] == '=')
- {
- const char *p = argv[i] + env_prepend_opt_len + 1;
- lt_opt_process_env_prepend (p);
- }
- else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
- {
- lt_opt_process_env_prepend (argv[++i]); /* don't copy */
- }
- else
- lt_fatal ("%s missing required argument", env_prepend_opt);
- continue;
- }
- if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
- {
- if (argv[i][env_append_opt_len] == '=')
- {
- const char *p = argv[i] + env_append_opt_len + 1;
- lt_opt_process_env_append (p);
- }
- else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
- {
- lt_opt_process_env_append (argv[++i]); /* don't copy */
- }
- else
- lt_fatal ("%s missing required argument", env_append_opt);
- continue;
- }
- if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
- {
- /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
- namespace, but it is not one of the ones we know about and
- have already dealt with, above (inluding dump-script), then
- report an error. Otherwise, targets might begin to believe
- they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
- namespace. The first time any user complains about this, we'll
- need to make LTWRAPPER_OPTION_PREFIX a configure-time option
- or a configure.ac-settable value.
- */
- lt_fatal ("Unrecognized option in %s namespace: '%s'",
- ltwrapper_option_prefix, argv[i]);
- }
- /* otherwise ... */
- newargz[++newargc] = xstrdup (argv[i]);
- }
- newargz[++newargc] = NULL;
-
- LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
- for (i = 0; i < newargc; i++)
- {
- LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
- }
-
-EOF
-
- case $host_os in
- mingw*)
- cat <<"EOF"
- /* execv doesn't actually work on mingw as expected on unix */
- rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
- if (rval == -1)
- {
- /* failed to start process */
- LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
- return 127;
- }
- return rval;
-EOF
- ;;
- *)
- cat <<"EOF"
- execv (lt_argv_zero, newargz);
- return rval; /* =127, but avoids unused variable warning */
-EOF
- ;;
- esac
-
- cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
- void *p = (void *) malloc (num);
- if (!p)
- lt_fatal ("Memory exhausted");
-
- return p;
-}
-
-char *
-xstrdup (const char *string)
-{
- return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
- string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
- const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- /* Skip over the disk name in MSDOS pathnames. */
- if (isalpha ((unsigned char) name[0]) && name[1] == ':')
- name += 2;
-#endif
-
- for (base = name; *name; name++)
- if (IS_DIR_SEPARATOR (*name))
- base = name + 1;
- return base;
-}
-
-int
-check_executable (const char *path)
-{
- struct stat st;
-
- LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
- path ? (*path ? path : "EMPTY!") : "NULL!"));
- if ((!path) || (!*path))
- return 0;
-
- if ((stat (path, &st) >= 0)
- && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
- return 1;
- else
- return 0;
-}
-
-int
-make_executable (const char *path)
-{
- int rval = 0;
- struct stat st;
-
- LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
- path ? (*path ? path : "EMPTY!") : "NULL!"));
- if ((!path) || (!*path))
- return 0;
-
- if (stat (path, &st) >= 0)
- {
- rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
- }
- return rval;
-}
-
-/* Searches for the full path of the wrapper. Returns
- newly allocated full path name if found, NULL otherwise
- Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
- int has_slash = 0;
- const char *p;
- const char *p_next;
- /* static buffer for getcwd */
- char tmp[LT_PATHMAX + 1];
- int tmp_len;
- char *concat_name;
-
- LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
- wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-
- if ((wrapper == NULL) || (*wrapper == '\0'))
- return NULL;
-
- /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
- {
- concat_name = xstrdup (wrapper);
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- }
- else
- {
-#endif
- if (IS_DIR_SEPARATOR (wrapper[0]))
- {
- concat_name = xstrdup (wrapper);
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- }
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- }
-#endif
-
- for (p = wrapper; *p; p++)
- if (*p == '/')
- {
- has_slash = 1;
- break;
- }
- if (!has_slash)
- {
- /* no slashes; search PATH */
- const char *path = getenv ("PATH");
- if (path != NULL)
- {
- for (p = path; *p; p = p_next)
- {
- const char *q;
- size_t p_len;
- for (q = p; *q; q++)
- if (IS_PATH_SEPARATOR (*q))
- break;
- p_len = q - p;
- p_next = (*q == '\0' ? q : q + 1);
- if (p_len == 0)
- {
- /* empty path: current directory */
- if (getcwd (tmp, LT_PATHMAX) == NULL)
- lt_fatal ("getcwd failed");
- tmp_len = strlen (tmp);
- concat_name =
- XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, tmp, tmp_len);
- concat_name[tmp_len] = '/';
- strcpy (concat_name + tmp_len + 1, wrapper);
- }
- else
- {
- concat_name =
- XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, p, p_len);
- concat_name[p_len] = '/';
- strcpy (concat_name + p_len + 1, wrapper);
- }
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- }
- }
- /* not found in PATH; assume curdir */
- }
- /* Relative path | not found in path: prepend cwd */
- if (getcwd (tmp, LT_PATHMAX) == NULL)
- lt_fatal ("getcwd failed");
- tmp_len = strlen (tmp);
- concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, tmp, tmp_len);
- concat_name[tmp_len] = '/';
- strcpy (concat_name + tmp_len + 1, wrapper);
-
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
- return xstrdup (pathspec);
-#else
- char buf[LT_PATHMAX];
- struct stat s;
- char *tmp_pathspec = xstrdup (pathspec);
- char *p;
- int has_symlinks = 0;
- while (strlen (tmp_pathspec) && !has_symlinks)
- {
- LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
- tmp_pathspec));
- if (lstat (tmp_pathspec, &s) == 0)
- {
- if (S_ISLNK (s.st_mode) != 0)
- {
- has_symlinks = 1;
- break;
- }
-
- /* search backwards for last DIR_SEPARATOR */
- p = tmp_pathspec + strlen (tmp_pathspec) - 1;
- while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
- p--;
- if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
- {
- /* no more DIR_SEPARATORS left */
- break;
- }
- *p = '\0';
- }
- else
- {
- char *errstr = strerror (errno);
- lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
- }
- }
- XFREE (tmp_pathspec);
-
- if (!has_symlinks)
- {
- return xstrdup (pathspec);
- }
-
- tmp_pathspec = realpath (pathspec, buf);
- if (tmp_pathspec == 0)
- {
- lt_fatal ("Could not follow symlinks for %s", pathspec);
- }
- return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
- size_t len, patlen;
-
- assert (str != NULL);
- assert (pat != NULL);
-
- len = strlen (str);
- patlen = strlen (pat);
-
- if (patlen <= len)
- {
- str += len - patlen;
- if (strcmp (str, pat) == 0)
- *str = '\0';
- }
- return str;
-}
-
-static void
-lt_error_core (int exit_status, const char *mode,
- const char *message, va_list ap)
-{
- fprintf (stderr, "%s: %s: ", program_name, mode);
- vfprintf (stderr, message, ap);
- fprintf (stderr, ".\n");
-
- if (exit_status >= 0)
- exit (exit_status);
-}
-
-void
-lt_fatal (const char *message, ...)
-{
- va_list ap;
- va_start (ap, message);
- lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
- va_end (ap);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
- LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
- (name ? name : "<NULL>"),
- (value ? value : "<NULL>")));
- {
-#ifdef HAVE_SETENV
- /* always make a copy, for consistency with !HAVE_SETENV */
- char *str = xstrdup (value);
- setenv (name, str, 1);
-#else
- int len = strlen (name) + 1 + strlen (value) + 1;
- char *str = XMALLOC (char, len);
- sprintf (str, "%s=%s", name, value);
- if (putenv (str) != EXIT_SUCCESS)
- {
- XFREE (str);
- }
-#endif
- }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
- char *new_value;
- if (orig_value && *orig_value)
- {
- int orig_value_len = strlen (orig_value);
- int add_len = strlen (add);
- new_value = XMALLOC (char, add_len + orig_value_len + 1);
- if (to_end)
- {
- strcpy (new_value, orig_value);
- strcpy (new_value + orig_value_len, add);
- }
- else
- {
- strcpy (new_value, add);
- strcpy (new_value + add_len, orig_value);
- }
- }
- else
- {
- new_value = xstrdup (add);
- }
- return new_value;
-}
-
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
- const char *p;
- int len;
- if (!arg || !*arg)
- return 1;
-
- p = strchr (arg, (int)'=');
-
- if (!p)
- return 1;
-
- *value = xstrdup (++p);
-
- len = strlen (arg) - strlen (*value);
- *name = XMALLOC (char, len);
- strncpy (*name, arg, len-1);
- (*name)[len - 1] = '\0';
-
- return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
- char *name = NULL;
- char *value = NULL;
-
- if (lt_split_name_value (arg, &name, &value) != 0)
- {
- XFREE (name);
- XFREE (value);
- lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
- }
-
- lt_setenv (name, value);
- XFREE (name);
- XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
- char *name = NULL;
- char *value = NULL;
- char *new_value = NULL;
-
- if (lt_split_name_value (arg, &name, &value) != 0)
- {
- XFREE (name);
- XFREE (value);
- lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
- }
-
- new_value = lt_extend_str (getenv (name), value, 0);
- lt_setenv (name, new_value);
- XFREE (new_value);
- XFREE (name);
- XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
- char *name = NULL;
- char *value = NULL;
- char *new_value = NULL;
-
- if (lt_split_name_value (arg, &name, &value) != 0)
- {
- XFREE (name);
- XFREE (value);
- lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
- }
-
- new_value = lt_extend_str (getenv (name), value, 1);
- lt_setenv (name, new_value);
- XFREE (new_value);
- XFREE (name);
- XFREE (value);
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
- LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
- (name ? name : "<NULL>"),
- (value ? value : "<NULL>")));
-
- if (name && *name && value && *value)
- {
- char *new_value = lt_extend_str (getenv (name), value, 0);
- /* some systems can't cope with a ':'-terminated path #' */
- int len = strlen (new_value);
- while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
- {
- new_value[len-1] = '\0';
- }
- lt_setenv (name, new_value);
- XFREE (new_value);
- }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
- LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
- (name ? name : "<NULL>"),
- (value ? value : "<NULL>")));
-
- if (name && *name && value && *value)
- {
- char *new_value = lt_extend_str (getenv (name), value, 0);
- lt_setenv (name, new_value);
- XFREE (new_value);
- }
-}
-
-
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_mode_link arg...
-func_mode_link ()
-{
- $opt_debug
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- # It is impossible to link a dll without this setting, and
- # we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
- # flag for every libtool invocation.
- # allow_undefined=no
-
- # FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
- # even a static library is built. For now, we need to specify
- # -no-undefined on the libtool link line when we can be certain
- # that all symbols are satisfied, otherwise we get a static library.
- allow_undefined=yes
- ;;
- *)
- allow_undefined=yes
- ;;
- esac
- libtool_args=$nonopt
- base_compile="$nonopt $@"
- compile_command=$nonopt
- finalize_command=$nonopt
-
- compile_rpath=
- finalize_rpath=
- compile_shlibpath=
- finalize_shlibpath=
- convenience=
- old_convenience=
- deplibs=
- old_deplibs=
- compiler_flags=
- linker_flags=
- dllsearchpath=
- lib_search_path=`pwd`
- inst_prefix_dir=
- new_inherited_linker_flags=
-
- avoid_version=no
- dlfiles=
- dlprefiles=
- dlself=no
- export_dynamic=no
- export_symbols=
- export_symbols_regex=
- generated=
- libobjs=
- ltlibs=
- module=no
- no_install=no
- objs=
- non_pic_objects=
- precious_files_regex=
- prefer_static_libs=no
- preload=no
- prev=
- prevarg=
- release=
- rpath=
- xrpath=
- perm_rpath=
- temp_rpath=
- thread_safe=no
- vinfo=
- vinfo_number=no
- weak_libs=
- single_module="${wl}-single_module"
- func_infer_tag $base_compile
-
- # We need to know -static, to get the right output filenames.
- for arg
- do
- case $arg in
- -shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
- build_old_libs=no
- break
- ;;
- -all-static | -static | -static-libtool-libs)
- case $arg in
- -all-static)
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
- func_warning "complete static linking is impossible in this configuration"
- fi
- if test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=yes
- ;;
- -static)
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=built
- ;;
- -static-libtool-libs)
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=yes
- ;;
- esac
- build_libtool_libs=no
- build_old_libs=yes
- break
- ;;
- esac
- done
-
- # See if our shared archives depend on static archives.
- test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
- # Go through the arguments, transforming them on the way.
- while test "$#" -gt 0; do
- arg="$1"
- shift
- func_quote_for_eval "$arg"
- qarg=$func_quote_for_eval_unquoted_result
- func_append libtool_args " $func_quote_for_eval_result"
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- case $prev in
- output)
- func_append compile_command " @OUTPUT@"
- func_append finalize_command " @OUTPUT@"
- ;;
- esac
-
- case $prev in
- dlfiles|dlprefiles)
- if test "$preload" = no; then
- # Add the symbol object into the linking commands.
- func_append compile_command " @SYMFILE@"
- func_append finalize_command " @SYMFILE@"
- preload=yes
- fi
- case $arg in
- *.la | *.lo) ;; # We handle these cases below.
- force)
- if test "$dlself" = no; then
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- self)
- if test "$prev" = dlprefiles; then
- dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
- dlself=yes
- else
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- *)
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- else
- dlprefiles="$dlprefiles $arg"
- fi
- prev=
- continue
- ;;
- esac
- ;;
- expsyms)
- export_symbols="$arg"
- test -f "$arg" \
- || func_fatal_error "symbol file \`$arg' does not exist"
- prev=
- continue
- ;;
- expsyms_regex)
- export_symbols_regex="$arg"
- prev=
- continue
- ;;
- framework)
- case $host in
- *-*-darwin*)
- case "$deplibs " in
- *" $qarg.ltframework "*) ;;
- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
- ;;
- esac
- ;;
- esac
- prev=
- continue
- ;;
- inst_prefix)
- inst_prefix_dir="$arg"
- prev=
- continue
- ;;
- objectlist)
- if test -f "$arg"; then
- save_arg=$arg
- moreargs=
- for fil in `cat "$save_arg"`
- do
-# moreargs="$moreargs $fil"
- arg=$fil
- # A libtool-controlled object.
-
- # Check to see that this really is a libtool object.
- if func_lalib_unsafe_p "$arg"; then
- pic_object=
- non_pic_object=
-
- # Read the .lo file
- func_source "$arg"
-
- if test -z "$pic_object" ||
- test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
- fi
-
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- if test "$pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- dlfiles="$dlfiles $pic_object"
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
-
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- dlprefiles="$dlprefiles $pic_object"
- prev=
- fi
-
- # A PIC object.
- func_append libobjs " $pic_object"
- arg="$pic_object"
- fi
-
- # Non-PIC object.
- if test "$non_pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
-
- # A standard non-PIC object
- func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
- fi
- else
- # If the PIC object exists, use it instead.
- # $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
- func_append non_pic_objects " $non_pic_object"
- fi
- else
- # Only an error if not doing a dry-run.
- if $opt_dry_run; then
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- func_lo2o "$arg"
- pic_object=$xdir$objdir/$func_lo2o_result
- non_pic_object=$xdir$func_lo2o_result
- func_append libobjs " $pic_object"
- func_append non_pic_objects " $non_pic_object"
- else
- func_fatal_error "\`$arg' is not a valid libtool object"
- fi
- fi
- done
- else
- func_fatal_error "link input file \`$arg' does not exist"
- fi
- arg=$save_arg
- prev=
- continue
- ;;
- precious_regex)
- precious_files_regex="$arg"
- prev=
- continue
- ;;
- release)
- release="-$arg"
- prev=
- continue
- ;;
- rpath | xrpath)
- # We need an absolute path.
- case $arg in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- if test "$prev" = rpath; then
- case "$rpath " in
- *" $arg "*) ;;
- *) rpath="$rpath $arg" ;;
- esac
- else
- case "$xrpath " in
- *" $arg "*) ;;
- *) xrpath="$xrpath $arg" ;;
- esac
- fi
- prev=
- continue
- ;;
- shrext)
- shrext_cmds="$arg"
- prev=
- continue
- ;;
- weak)
- weak_libs="$weak_libs $arg"
- prev=
- continue
- ;;
- xcclinker)
- linker_flags="$linker_flags $qarg"
- compiler_flags="$compiler_flags $qarg"
- prev=
- func_append compile_command " $qarg"
- func_append finalize_command " $qarg"
- continue
- ;;
- xcompiler)
- compiler_flags="$compiler_flags $qarg"
- prev=
- func_append compile_command " $qarg"
- func_append finalize_command " $qarg"
- continue
- ;;
- xlinker)
- linker_flags="$linker_flags $qarg"
- compiler_flags="$compiler_flags $wl$qarg"
- prev=
- func_append compile_command " $wl$qarg"
- func_append finalize_command " $wl$qarg"
- continue
- ;;
- *)
- eval "$prev=\"\$arg\""
- prev=
- continue
- ;;
- esac
- fi # test -n "$prev"
-
- prevarg="$arg"
-
- case $arg in
- -all-static)
- if test -n "$link_static_flag"; then
- # See comment for -static flag below, for more details.
- func_append compile_command " $link_static_flag"
- func_append finalize_command " $link_static_flag"
- fi
- continue
- ;;
-
- -allow-undefined)
- # FIXME: remove this flag sometime in the future.
- func_fatal_error "\`-allow-undefined' must not be used because it is the default"
- ;;
-
- -avoid-version)
- avoid_version=yes
- continue
- ;;
-
- -dlopen)
- prev=dlfiles
- continue
- ;;
-
- -dlpreopen)
- prev=dlprefiles
- continue
- ;;
-
- -export-dynamic)
- export_dynamic=yes
- continue
- ;;
-
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- func_fatal_error "more than one -exported-symbols argument is not allowed"
- fi
- if test "X$arg" = "X-export-symbols"; then
- prev=expsyms
- else
- prev=expsyms_regex
- fi
- continue
- ;;
-
- -framework)
- prev=framework
- continue
- ;;
-
- -inst-prefix-dir)
- prev=inst_prefix
- continue
- ;;
-
- # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
- # so, if we see these flags be careful not to treat them like -L
- -L[A-Z][A-Z]*:*)
- case $with_gcc/$host in
- no/*-*-irix* | /*-*-irix*)
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- ;;
- esac
- continue
- ;;
-
- -L*)
- func_stripname '-L' '' "$arg"
- dir=$func_stripname_result
- if test -z "$dir"; then
- if test "$#" -gt 0; then
- func_fatal_error "require no space between \`-L' and \`$1'"
- else
- func_fatal_error "need path for \`-L' option"
- fi
- fi
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- absdir=`cd "$dir" && pwd`
- test -z "$absdir" && \
- func_fatal_error "cannot determine absolute directory name of \`$dir'"
- dir="$absdir"
- ;;
- esac
- case "$deplibs " in
- *" -L$dir "*) ;;
- *)
- deplibs="$deplibs -L$dir"
- lib_search_path="$lib_search_path $dir"
- ;;
- esac
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
- case :$dllsearchpath: in
- *":$dir:"*) ;;
- ::) dllsearchpath=$dir;;
- *) dllsearchpath="$dllsearchpath:$dir";;
- esac
- case :$dllsearchpath: in
- *":$testbindir:"*) ;;
- ::) dllsearchpath=$testbindir;;
- *) dllsearchpath="$dllsearchpath:$testbindir";;
- esac
- ;;
- esac
- continue
- ;;
-
- -l*)
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
- # These systems don't actually have a C or math library (as such)
- continue
- ;;
- *-*-os2*)
- # These systems don't actually have a C library (as such)
- test "X$arg" = "X-lc" && continue
- ;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- # Do not include libc due to us having libc/libc_r.
- test "X$arg" = "X-lc" && continue
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C and math libraries are in the System framework
- deplibs="$deplibs System.ltframework"
- continue
- ;;
- *-*-sco3.2v5* | *-*-sco5v6*)
- # Causes problems with __ctype
- test "X$arg" = "X-lc" && continue
- ;;
- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
- # Compiler inserts libc in the correct place for threads to work
- test "X$arg" = "X-lc" && continue
- ;;
- esac
- elif test "X$arg" = "X-lc_r"; then
- case $host in
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- # Do not include libc_r directly, use -pthread flag.
- continue
- ;;
- esac
- fi
- deplibs="$deplibs $arg"
- continue
- ;;
-
- -module)
- module=yes
- continue
- ;;
-
- # Tru64 UNIX uses -model [arg] to determine the layout of C++
- # classes, name mangling, and exception handling.
- # Darwin uses the -arch flag to determine output architecture.
- -model|-arch|-isysroot)
- compiler_flags="$compiler_flags $arg"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- prev=xcompiler
- continue
- ;;
-
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
- compiler_flags="$compiler_flags $arg"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- case "$new_inherited_linker_flags " in
- *" $arg "*) ;;
- * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
- esac
- continue
- ;;
-
- -multi_module)
- single_module="${wl}-multi_module"
- continue
- ;;
-
- -no-fast-install)
- fast_install=no
- continue
- ;;
-
- -no-install)
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
- # The PATH hackery in wrapper scripts is required on Windows
- # and Darwin in order for the loader to find any dlls it needs.
- func_warning "\`-no-install' is ignored for $host"
- func_warning "assuming \`-no-fast-install' instead"
- fast_install=no
- ;;
- *) no_install=yes ;;
- esac
- continue
- ;;
-
- -no-undefined)
- allow_undefined=no
- continue
- ;;
-
- -objectlist)
- prev=objectlist
- continue
- ;;
-
- -o) prev=output ;;
-
- -precious-files-regex)
- prev=precious_regex
- continue
- ;;
-
- -release)
- prev=release
- continue
- ;;
-
- -rpath)
- prev=rpath
- continue
- ;;
-
- -R)
- prev=xrpath
- continue
- ;;
-
- -R*)
- func_stripname '-R' '' "$arg"
- dir=$func_stripname_result
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- case "$xrpath " in
- *" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
- esac
- continue
- ;;
-
- -shared)
- # The effects of -shared are defined in a previous loop.
- continue
- ;;
-
- -shrext)
- prev=shrext
- continue
- ;;
-
- -static | -static-libtool-libs)
- # The effects of -static are defined in a previous loop.
- # We used to do the same as -all-static on platforms that
- # didn't have a PIC flag, but the assumption that the effects
- # would be equivalent was wrong. It would break on at least
- # Digital Unix and AIX.
- continue
- ;;
-
- -thread-safe)
- thread_safe=yes
- continue
- ;;
-
- -version-info)
- prev=vinfo
- continue
- ;;
-
- -version-number)
- prev=vinfo
- vinfo_number=yes
- continue
- ;;
-
- -weak)
- prev=weak
- continue
- ;;
-
- -Wc,*)
- func_stripname '-Wc,' '' "$arg"
- args=$func_stripname_result
- arg=
- save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$flag"
- arg="$arg $wl$func_quote_for_eval_result"
- compiler_flags="$compiler_flags $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$arg"
- arg=$func_stripname_result
- ;;
-
- -Wl,*)
- func_stripname '-Wl,' '' "$arg"
- args=$func_stripname_result
- arg=
- save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$flag"
- arg="$arg $wl$func_quote_for_eval_result"
- compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
- linker_flags="$linker_flags $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$arg"
- arg=$func_stripname_result
- ;;
-
- -Xcompiler)
- prev=xcompiler
- continue
- ;;
-
- -Xlinker)
- prev=xlinker
- continue
- ;;
-
- -XCClinker)
- prev=xcclinker
- continue
- ;;
-
- # -msg_* for osf cc
- -msg_*)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- ;;
-
- # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
- # -r[0-9][0-9]* specifies the processor on the SGI compiler
- # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
- # +DA*, +DD* enable 64-bit mode on the HP compiler
- # -q* pass through compiler args for the IBM compiler
- # -m*, -t[45]*, -txscale* pass through architecture-specific
- # compiler args for GCC
- # -F/path gives path to uninstalled frameworks, gcc on darwin
- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
- # @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- compiler_flags="$compiler_flags $arg"
- continue
- ;;
-
- # Some other compiler flag.
- -* | +*)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- ;;
-
- *.$objext)
- # A standard object.
- objs="$objs $arg"
- ;;
-
- *.lo)
- # A libtool-controlled object.
-
- # Check to see that this really is a libtool object.
- if func_lalib_unsafe_p "$arg"; then
- pic_object=
- non_pic_object=
-
- # Read the .lo file
- func_source "$arg"
-
- if test -z "$pic_object" ||
- test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
- fi
-
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- if test "$pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- dlfiles="$dlfiles $pic_object"
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
-
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- dlprefiles="$dlprefiles $pic_object"
- prev=
- fi
-
- # A PIC object.
- func_append libobjs " $pic_object"
- arg="$pic_object"
- fi
-
- # Non-PIC object.
- if test "$non_pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
-
- # A standard non-PIC object
- func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
- fi
- else
- # If the PIC object exists, use it instead.
- # $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
- func_append non_pic_objects " $non_pic_object"
- fi
- else
- # Only an error if not doing a dry-run.
- if $opt_dry_run; then
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- func_lo2o "$arg"
- pic_object=$xdir$objdir/$func_lo2o_result
- non_pic_object=$xdir$func_lo2o_result
- func_append libobjs " $pic_object"
- func_append non_pic_objects " $non_pic_object"
- else
- func_fatal_error "\`$arg' is not a valid libtool object"
- fi
- fi
- ;;
-
- *.$libext)
- # An archive.
- deplibs="$deplibs $arg"
- old_deplibs="$old_deplibs $arg"
- continue
- ;;
-
- *.la)
- # A libtool-controlled library.
-
- if test "$prev" = dlfiles; then
- # This library was specified with -dlopen.
- dlfiles="$dlfiles $arg"
- prev=
- elif test "$prev" = dlprefiles; then
- # The library was specified with -dlpreopen.
- dlprefiles="$dlprefiles $arg"
- prev=
- else
- deplibs="$deplibs $arg"
- fi
- continue
- ;;
-
- # Some other compiler argument.
- *)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- ;;
- esac # arg
-
- # Now actually substitute the argument into the commands.
- if test -n "$arg"; then
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- fi
- done # argument parsing loop
-
- test -n "$prev" && \
- func_fatal_help "the \`$prevarg' option requires an argument"
-
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
- eval arg=\"$export_dynamic_flag_spec\"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- fi
-
- oldlibs=
- # calculate the name of the file, without its directory
- func_basename "$output"
- outputname="$func_basename_result"
- libobjs_save="$libobjs"
-
- if test -n "$shlibpath_var"; then
- # get the directories listed in $shlibpath_var
- eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
- else
- shlib_search_path=
- fi
- eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
- func_dirname "$output" "/" ""
- output_objdir="$func_dirname_result$objdir"
- # Create the object directory.
- func_mkdir_p "$output_objdir"
-
- # Determine the type of output
- case $output in
- "")
- func_fatal_help "you must specify an output file"
- ;;
- *.$libext) linkmode=oldlib ;;
- *.lo | *.$objext) linkmode=obj ;;
- *.la) linkmode=lib ;;
- *) linkmode=prog ;; # Anything else should be a program.
- esac
-
- specialdeplibs=
-
- libs=
- # Find all interdependent deplibs by searching for libraries
- # that are linked more than once (e.g. -la -lb -la)
- for deplib in $deplibs; do
- if $opt_duplicate_deps ; then
- case "$libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- fi
- libs="$libs $deplib"
- done
-
- if test "$linkmode" = lib; then
- libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
- # Compute libraries that are listed more than once in $predeps
- # $postdeps and mark them as special (i.e., whose duplicates are
- # not to be eliminated).
- pre_post_deps=
- if $opt_duplicate_compiler_generated_deps; then
- for pre_post_dep in $predeps $postdeps; do
- case "$pre_post_deps " in
- *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
- esac
- pre_post_deps="$pre_post_deps $pre_post_dep"
- done
- fi
- pre_post_deps=
- fi
-
- deplibs=
- newdependency_libs=
- newlib_search_path=
- need_relink=no # whether we're linking any uninstalled libtool libraries
- notinst_deplibs= # not-installed libtool libraries
- notinst_path= # paths that contain not-installed libtool libraries
-
- case $linkmode in
- lib)
- passes="conv dlpreopen link"
- for file in $dlfiles $dlprefiles; do
- case $file in
- *.la) ;;
- *)
- func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
- ;;
- esac
- done
- ;;
- prog)
- compile_deplibs=
- finalize_deplibs=
- alldeplibs=no
- newdlfiles=
- newdlprefiles=
- passes="conv scan dlopen dlpreopen link"
- ;;
- *) passes="conv"
- ;;
- esac
-
- for pass in $passes; do
- # The preopen pass in lib mode reverses $deplibs; put it back here
- # so that -L comes before libs that need it for instance...
- if test "$linkmode,$pass" = "lib,link"; then
- ## FIXME: Find the place where the list is rebuilt in the wrong
- ## order, and fix it there properly
- tmp_deplibs=
- for deplib in $deplibs; do
- tmp_deplibs="$deplib $tmp_deplibs"
- done
- deplibs="$tmp_deplibs"
- fi
-
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan"; then
- libs="$deplibs"
- deplibs=
- fi
- if test "$linkmode" = prog; then
- case $pass in
- dlopen) libs="$dlfiles" ;;
- dlpreopen) libs="$dlprefiles" ;;
- link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
- esac
- fi
- if test "$linkmode,$pass" = "lib,dlpreopen"; then
- # Collect and forward deplibs of preopened libtool libs
- for lib in $dlprefiles; do
- # Ignore non-libtool-libs
- dependency_libs=
- case $lib in
- *.la) func_source "$lib" ;;
- esac
-
- # Collect preopened libtool deplibs, except any this library
- # has declared as weak libs
- for deplib in $dependency_libs; do
- deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
- case " $weak_libs " in
- *" $deplib_base "*) ;;
- *) deplibs="$deplibs $deplib" ;;
- esac
- done
- done
- libs="$dlprefiles"
- fi
- if test "$pass" = dlopen; then
- # Collect dlpreopened libraries
- save_deplibs="$deplibs"
- deplibs=
- fi
-
- for deplib in $libs; do
- lib=
- found=no
- case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- compiler_flags="$compiler_flags $deplib"
- if test "$linkmode" = lib ; then
- case "$new_inherited_linker_flags " in
- *" $deplib "*) ;;
- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
- esac
- fi
- fi
- continue
- ;;
- -l*)
- if test "$linkmode" != lib && test "$linkmode" != prog; then
- func_warning "\`-l' is ignored for archives/objects"
- continue
- fi
- func_stripname '-l' '' "$deplib"
- name=$func_stripname_result
- if test "$linkmode" = lib; then
- searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
- else
- searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
- fi
- for searchdir in $searchdirs; do
- for search_ext in .la $std_shrext .so .a; do
- # Search the libtool library
- lib="$searchdir/lib${name}${search_ext}"
- if test -f "$lib"; then
- if test "$search_ext" = ".la"; then
- found=yes
- else
- found=no
- fi
- break 2
- fi
- done
- done
- if test "$found" != yes; then
- # deplib doesn't seem to be a libtool library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- else # deplib is a libtool library
- # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
- # We need to do some special things here, and not later.
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $deplib "*)
- if func_lalib_p "$lib"; then
- library_names=
- old_library=
- func_source "$lib"
- for l in $old_library $library_names; do
- ll="$l"
- done
- if test "X$ll" = "X$old_library" ; then # only static version available
- found=no
- func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
- lib=$ladir/$old_library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- fi
- fi
- ;;
- *) ;;
- esac
- fi
- fi
- ;; # -l
- *.ltframework)
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- if test "$linkmode" = lib ; then
- case "$new_inherited_linker_flags " in
- *" $deplib "*) ;;
- * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
- esac
- fi
- fi
- continue
- ;;
- -L*)
- case $linkmode in
- lib)
- deplibs="$deplib $deplibs"
- test "$pass" = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
- func_stripname '-L' '' "$deplib"
- newlib_search_path="$newlib_search_path $func_stripname_result"
- ;;
- prog)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- if test "$pass" = scan; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- func_stripname '-L' '' "$deplib"
- newlib_search_path="$newlib_search_path $func_stripname_result"
- ;;
- *)
- func_warning "\`-L' is ignored for archives/objects"
- ;;
- esac # linkmode
- continue
- ;; # -L
- -R*)
- if test "$pass" = link; then
- func_stripname '-R' '' "$deplib"
- dir=$func_stripname_result
- # Make sure the xrpath contains only unique directories.
- case "$xrpath " in
- *" $dir "*) ;;
- *) xrpath="$xrpath $dir" ;;
- esac
- fi
- deplibs="$deplib $deplibs"
- continue
- ;;
- *.la) lib="$deplib" ;;
- *.$libext)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- case $linkmode in
- lib)
- # Linking convenience modules into shared libraries is allowed,
- # but linking other static libraries is non-portable.
- case " $dlpreconveniencelibs " in
- *" $deplib "*) ;;
- *)
- valid_a_lib=no
- case $deplibs_check_method in
- match_pattern*)
- set dummy $deplibs_check_method; shift
- match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
- | $EGREP "$match_pattern_regex" > /dev/null; then
- valid_a_lib=yes
- fi
- ;;
- pass_all)
- valid_a_lib=yes
- ;;
- esac
- if test "$valid_a_lib" != yes; then
- $ECHO
- $ECHO "*** Warning: Trying to link with static lib archive $deplib."
- $ECHO "*** I have the capability to make that library automatically link in when"
- $ECHO "*** you link to this library. But I can only do this if you have a"
- $ECHO "*** shared version of the library, which you do not appear to have"
- $ECHO "*** because the file extensions .$libext of this argument makes me believe"
- $ECHO "*** that it is just a static archive that I should not use here."
- else
- $ECHO
- $ECHO "*** Warning: Linking the shared library $output against the"
- $ECHO "*** static library $deplib is not portable!"
- deplibs="$deplib $deplibs"
- fi
- ;;
- esac
- continue
- ;;
- prog)
- if test "$pass" != link; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- continue
- ;;
- esac # linkmode
- ;; # *.$libext
- *.lo | *.$objext)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- elif test "$linkmode" = prog; then
- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlopen support or we're linking statically,
- # we need to preload.
- newdlprefiles="$newdlprefiles $deplib"
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- newdlfiles="$newdlfiles $deplib"
- fi
- fi
- continue
- ;;
- %DEPLIBS%)
- alldeplibs=yes
- continue
- ;;
- esac # case $deplib
-
- if test "$found" = yes || test -f "$lib"; then :
- else
- func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
- fi
-
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$lib" \
- || func_fatal_error "\`$lib' is not a valid libtool archive"
-
- func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
-
- dlname=
- dlopen=
- dlpreopen=
- libdir=
- library_names=
- old_library=
- inherited_linker_flags=
- # If the library was installed with an old release of libtool,
- # it will not redefine variables installed, or shouldnotlink
- installed=yes
- shouldnotlink=no
- avoidtemprpath=
-
-
- # Read the .la file
- func_source "$lib"
-
- # Convert "-framework foo" to "foo.ltframework"
- if test -n "$inherited_linker_flags"; then
- tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
- for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
- case " $new_inherited_linker_flags " in
- *" $tmp_inherited_linker_flag "*) ;;
- *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
- esac
- done
- fi
- dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
- { test "$linkmode" != prog && test "$linkmode" != lib; }; then
- test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
- test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
- fi
-
- if test "$pass" = conv; then
- # Only check for convenience libraries
- deplibs="$lib $deplibs"
- if test -z "$libdir"; then
- if test -z "$old_library"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
- fi
- # It is a libtool convenience library, so add in its objects.
- convenience="$convenience $ladir/$objdir/$old_library"
- old_convenience="$old_convenience $ladir/$objdir/$old_library"
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
- fi
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
- if $opt_duplicate_deps ; then
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- fi
- tmp_libs="$tmp_libs $deplib"
- done
- continue
- fi # $pass = conv
-
-
- # Get the name of the library we link against.
- linklib=
- for l in $old_library $library_names; do
- linklib="$l"
- done
- if test -z "$linklib"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
- fi
-
- # This library was specified with -dlopen.
- if test "$pass" = dlopen; then
- if test -z "$libdir"; then
- func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
- fi
- if test -z "$dlname" ||
- test "$dlopen_support" != yes ||
- test "$build_libtool_libs" = no; then
- # If there is no dlname, no dlopen support or we're linking
- # statically, we need to preload. We also need to preload any
- # dependent libraries so libltdl's deplib preloader doesn't
- # bomb out in the load deplibs phase.
- dlprefiles="$dlprefiles $lib $dependency_libs"
- else
- newdlfiles="$newdlfiles $lib"
- fi
- continue
- fi # $pass = dlopen
-
- # We need an absolute path.
- case $ladir in
- [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
- *)
- abs_ladir=`cd "$ladir" && pwd`
- if test -z "$abs_ladir"; then
- func_warning "cannot determine absolute directory name of \`$ladir'"
- func_warning "passing it literally to the linker, although it might fail"
- abs_ladir="$ladir"
- fi
- ;;
- esac
- func_basename "$lib"
- laname="$func_basename_result"
-
- # Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
- if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- func_warning "library \`$lib' was moved."
- dir="$ladir"
- absdir="$abs_ladir"
- libdir="$abs_ladir"
- else
- dir="$libdir"
- absdir="$libdir"
- fi
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- else
- if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- dir="$ladir"
- absdir="$abs_ladir"
- # Remove this search path later
- notinst_path="$notinst_path $abs_ladir"
- else
- dir="$ladir/$objdir"
- absdir="$abs_ladir/$objdir"
- # Remove this search path later
- notinst_path="$notinst_path $abs_ladir"
- fi
- fi # $installed = yes
- func_stripname 'lib' '.la' "$laname"
- name=$func_stripname_result
-
- # This library was specified with -dlpreopen.
- if test "$pass" = dlpreopen; then
- if test -z "$libdir" && test "$linkmode" = prog; then
- func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
- fi
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- newdlprefiles="$newdlprefiles $dir/$old_library"
- # Keep a list of preopened convenience libraries to check
- # that they are being used correctly in the link pass.
- test -z "$libdir" && \
- dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
- # Otherwise, use the dlname, so that lt_dlopen finds it.
- elif test -n "$dlname"; then
- newdlprefiles="$newdlprefiles $dir/$dlname"
- else
- newdlprefiles="$newdlprefiles $dir/$linklib"
- fi
- fi # $pass = dlpreopen
-
- if test -z "$libdir"; then
- # Link the convenience library
- if test "$linkmode" = lib; then
- deplibs="$dir/$old_library $deplibs"
- elif test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$dir/$old_library $compile_deplibs"
- finalize_deplibs="$dir/$old_library $finalize_deplibs"
- else
- deplibs="$lib $deplibs" # used for prog,scan pass
- fi
- continue
- fi
-
-
- if test "$linkmode" = prog && test "$pass" != link; then
- newlib_search_path="$newlib_search_path $ladir"
- deplibs="$lib $deplibs"
-
- linkalldeplibs=no
- if test "$link_all_deplibs" != no || test -z "$library_names" ||
- test "$build_libtool_libs" = no; then
- linkalldeplibs=yes
- fi
-
- tmp_libs=
- for deplib in $dependency_libs; do
- case $deplib in
- -L*) func_stripname '-L' '' "$deplib"
- newlib_search_path="$newlib_search_path $func_stripname_result"
- ;;
- esac
- # Need to link against all dependency_libs?
- if test "$linkalldeplibs" = yes; then
- deplibs="$deplib $deplibs"
- else
- # Need to hardcode shared library paths
- # or/and link against static libraries
- newdependency_libs="$deplib $newdependency_libs"
- fi
- if $opt_duplicate_deps ; then
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- fi
- tmp_libs="$tmp_libs $deplib"
- done # for deplib
- continue
- fi # $linkmode = prog...
-
- if test "$linkmode,$pass" = "prog,link"; then
- if test -n "$library_names" &&
- { { test "$prefer_static_libs" = no ||
- test "$prefer_static_libs,$installed" = "built,yes"; } ||
- test -z "$old_library"; }; then
- # We need to hardcode the library path
- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath:" in
- *"$absdir:"*) ;;
- *) temp_rpath="$temp_rpath$absdir:" ;;
- esac
- fi
-
- # Hardcode the library path.
- # Skip directories that are in the system default run-time
- # search path.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
- esac
- ;;
- esac
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
- esac
- ;;
- esac
- fi # $linkmode,$pass = prog,link...
-
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
- test -n "$library_names"; }; }; then
- # We only need to search for static libraries
- continue
- fi
- fi
-
- link_static=no # Whether the deplib will be linked statically
- use_static_libs=$prefer_static_libs
- if test "$use_static_libs" = built && test "$installed" = yes; then
- use_static_libs=no
- fi
- if test -n "$library_names" &&
- { test "$use_static_libs" = no || test -z "$old_library"; }; then
- case $host in
- *cygwin* | *mingw* | *cegcc*)
- # No point in relinking DLLs because paths are not encoded
- notinst_deplibs="$notinst_deplibs $lib"
- need_relink=no
- ;;
- *)
- if test "$installed" = no; then
- notinst_deplibs="$notinst_deplibs $lib"
- need_relink=yes
- fi
- ;;
- esac
- # This is a shared library
-
- # Warn about portability, can't link against -module's on some
- # systems (darwin). Don't bleat about dlopened modules though!
- dlopenmodule=""
- for dlpremoduletest in $dlprefiles; do
- if test "X$dlpremoduletest" = "X$lib"; then
- dlopenmodule="$dlpremoduletest"
- break
- fi
- done
- if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
- $ECHO
- if test "$linkmode" = prog; then
- $ECHO "*** Warning: Linking the executable $output against the loadable module"
- else
- $ECHO "*** Warning: Linking the shared library $output against the loadable module"
- fi
- $ECHO "*** $linklib is not portable!"
- fi
- if test "$linkmode" = lib &&
- test "$hardcode_into_libs" = yes; then
- # Hardcode the library path.
- # Skip directories that are in the system default run-time
- # search path.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
- esac
- ;;
- esac
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
- esac
- ;;
- esac
- fi
-
- if test -n "$old_archive_from_expsyms_cmds"; then
- # figure out the soname
- set dummy $library_names
- shift
- realname="$1"
- shift
- libname=`eval "\\$ECHO \"$libname_spec\""`
- # use dlname if we got it. it's perfectly good, no?
- if test -n "$dlname"; then
- soname="$dlname"
- elif test -n "$soname_spec"; then
- # bleh windows
- case $host in
- *cygwin* | mingw* | *cegcc*)
- func_arith $current - $age
- major=$func_arith_result
- versuffix="-$major"
- ;;
- esac
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
-
- # Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
- func_basename "$soroot"
- soname="$func_basename_result"
- func_stripname 'lib' '.dll' "$soname"
- newlib=libimp-$func_stripname_result.a
-
- # If the library has no export list, then create one now
- if test -f "$output_objdir/$soname-def"; then :
- else
- func_verbose "extracting exported symbol list from \`$soname'"
- func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
- fi
-
- # Create $newlib
- if test -f "$output_objdir/$newlib"; then :; else
- func_verbose "generating import library for \`$soname'"
- func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
- fi
- # make sure the library variables are pointing to the new library
- dir=$output_objdir
- linklib=$newlib
- fi # test -n "$old_archive_from_expsyms_cmds"
-
- if test "$linkmode" = prog || test "$mode" != relink; then
- add_shlibpath=
- add_dir=
- add=
- lib_linked=yes
- case $hardcode_action in
- immediate | unsupported)
- if test "$hardcode_direct" = no; then
- add="$dir/$linklib"
- case $host in
- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
- *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
- *-*-unixware7*) add_dir="-L$dir" ;;
- *-*-darwin* )
- # if the lib is a (non-dlopened) module then we can not
- # link against it, someone is ignoring the earlier warnings
- if /usr/bin/file -L $add 2> /dev/null |
- $GREP ": [^:]* bundle" >/dev/null ; then
- if test "X$dlopenmodule" != "X$lib"; then
- $ECHO "*** Warning: lib $linklib is a module, not a shared library"
- if test -z "$old_library" ; then
- $ECHO
- $ECHO "*** And there doesn't seem to be a static archive available"
- $ECHO "*** The link will probably fail, sorry"
- else
- add="$dir/$old_library"
- fi
- elif test -n "$old_library"; then
- add="$dir/$old_library"
- fi
- fi
- esac
- elif test "$hardcode_minus_L" = no; then
- case $host in
- *-*-sunos*) add_shlibpath="$dir" ;;
- esac
- add_dir="-L$dir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- add_shlibpath="$dir"
- add="-l$name"
- else
- lib_linked=no
- fi
- ;;
- relink)
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$dir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
- [\\/]*)
- add_dir="$add_dir -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
- add="-l$name"
- else
- lib_linked=no
- fi
- ;;
- *) lib_linked=no ;;
- esac
-
- if test "$lib_linked" != yes; then
- func_fatal_configuration "unsupported hardcode properties"
- fi
-
- if test -n "$add_shlibpath"; then
- case :$compile_shlibpath: in
- *":$add_shlibpath:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
- esac
- fi
- if test "$linkmode" = prog; then
- test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
- test -n "$add" && compile_deplibs="$add $compile_deplibs"
- else
- test -n "$add_dir" && deplibs="$add_dir $deplibs"
- test -n "$add" && deplibs="$add $deplibs"
- if test "$hardcode_direct" != yes &&
- test "$hardcode_minus_L" != yes &&
- test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
- esac
- fi
- fi
- fi
-
- if test "$linkmode" = prog || test "$mode" = relink; then
- add_shlibpath=
- add_dir=
- add=
- # Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$libdir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
- esac
- add="-l$name"
- elif test "$hardcode_automatic" = yes; then
- if test -n "$inst_prefix_dir" &&
- test -f "$inst_prefix_dir$libdir/$linklib" ; then
- add="$inst_prefix_dir$libdir/$linklib"
- else
- add="$libdir/$linklib"
- fi
- else
- # We cannot seem to hardcode it, guess we'll fake it.
- add_dir="-L$libdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
- [\\/]*)
- add_dir="$add_dir -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
- add="-l$name"
- fi
-
- if test "$linkmode" = prog; then
- test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
- test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
- else
- test -n "$add_dir" && deplibs="$add_dir $deplibs"
- test -n "$add" && deplibs="$add $deplibs"
- fi
- fi
- elif test "$linkmode" = prog; then
- # Here we assume that one of hardcode_direct or hardcode_minus_L
- # is not unsupported. This is valid on all known static and
- # shared platforms.
- if test "$hardcode_direct" != unsupported; then
- test -n "$old_library" && linklib="$old_library"
- compile_deplibs="$dir/$linklib $compile_deplibs"
- finalize_deplibs="$dir/$linklib $finalize_deplibs"
- else
- compile_deplibs="-l$name -L$dir $compile_deplibs"
- finalize_deplibs="-l$name -L$dir $finalize_deplibs"
- fi
- elif test "$build_libtool_libs" = yes; then
- # Not a shared library
- if test "$deplibs_check_method" != pass_all; then
- # We're trying link a shared library against a static one
- # but the system doesn't support it.
-
- # Just print a warning and add the library to dependency_libs so
- # that the program can be linked against the static library.
- $ECHO
- $ECHO "*** Warning: This system can not link to static lib archive $lib."
- $ECHO "*** I have the capability to make that library automatically link in when"
- $ECHO "*** you link to this library. But I can only do this if you have a"
- $ECHO "*** shared version of the library, which you do not appear to have."
- if test "$module" = yes; then
- $ECHO "*** But as you try to build a module library, libtool will still create "
- $ECHO "*** a static module, that should work as long as the dlopening application"
- $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
- if test -z "$global_symbol_pipe"; then
- $ECHO
- $ECHO "*** However, this would only work if libtool was able to extract symbol"
- $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
- $ECHO "*** not find such a program. So, this module is probably useless."
- $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- fi
- else
- deplibs="$dir/$old_library $deplibs"
- link_static=yes
- fi
- fi # link shared/static library?
-
- if test "$linkmode" = lib; then
- if test -n "$dependency_libs" &&
- { test "$hardcode_into_libs" != yes ||
- test "$build_old_libs" = yes ||
- test "$link_static" = yes; }; then
- # Extract -R from dependency_libs
- temp_deplibs=
- for libdir in $dependency_libs; do
- case $libdir in
- -R*) func_stripname '-R' '' "$libdir"
- temp_xrpath=$func_stripname_result
- case " $xrpath " in
- *" $temp_xrpath "*) ;;
- *) xrpath="$xrpath $temp_xrpath";;
- esac;;
- *) temp_deplibs="$temp_deplibs $libdir";;
- esac
- done
- dependency_libs="$temp_deplibs"
- fi
-
- newlib_search_path="$newlib_search_path $absdir"
- # Link against this library
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
- # ... and its dependency_libs
- tmp_libs=
- for deplib in $dependency_libs; do
- newdependency_libs="$deplib $newdependency_libs"
- if $opt_duplicate_deps ; then
- case "$tmp_libs " in
- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
- esac
- fi
- tmp_libs="$tmp_libs $deplib"
- done
-
- if test "$link_all_deplibs" != no; then
- # Add the search paths of all dependency libraries
- for deplib in $dependency_libs; do
- case $deplib in
- -L*) path="$deplib" ;;
- *.la)
- func_dirname "$deplib" "" "."
- dir="$func_dirname_result"
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- func_warning "cannot determine absolute directory name of \`$dir'"
- absdir="$dir"
- fi
- ;;
- esac
- if $GREP "^installed=no" $deplib > /dev/null; then
- case $host in
- *-*-darwin*)
- depdepl=
- eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
- if test -n "$deplibrary_names" ; then
- for tmp in $deplibrary_names ; do
- depdepl=$tmp
- done
- if test -f "$absdir/$objdir/$depdepl" ; then
- depdepl="$absdir/$objdir/$depdepl"
- darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
- if test -z "$darwin_install_name"; then
- darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
- fi
- compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
- linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
- path=
- fi
- fi
- ;;
- *)
- path="-L$absdir/$objdir"
- ;;
- esac
- else
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
- test "$absdir" != "$libdir" && \
- func_warning "\`$deplib' seems to be moved"
-
- path="-L$absdir"
- fi
- ;;
- esac
- case " $deplibs " in
- *" $path "*) ;;
- *) deplibs="$path $deplibs" ;;
- esac
- done
- fi # link_all_deplibs != no
- fi # linkmode = lib
- done # for deplib in $libs
- if test "$pass" = link; then
- if test "$linkmode" = "prog"; then
- compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
- finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
- else
- compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- fi
- fi
- dependency_libs="$newdependency_libs"
- if test "$pass" = dlpreopen; then
- # Link the dlpreopened libraries before other libraries
- for deplib in $save_deplibs; do
- deplibs="$deplib $deplibs"
- done
- fi
- if test "$pass" != dlopen; then
- if test "$pass" != conv; then
- # Make sure lib_search_path contains only unique directories.
- lib_search_path=
- for dir in $newlib_search_path; do
- case "$lib_search_path " in
- *" $dir "*) ;;
- *) lib_search_path="$lib_search_path $dir" ;;
- esac
- done
- newlib_search_path=
- fi
-
- if test "$linkmode,$pass" != "prog,link"; then
- vars="deplibs"
- else
- vars="compile_deplibs finalize_deplibs"
- fi
- for var in $vars dependency_libs; do
- # Add libraries to $var in reverse order
- eval tmp_libs=\"\$$var\"
- new_libs=
- for deplib in $tmp_libs; do
- # FIXME: Pedantically, this is the right thing to do, so
- # that some nasty dependency loop isn't accidentally
- # broken:
- #new_libs="$deplib $new_libs"
- # Pragmatically, this seems to cause very few problems in
- # practice:
- case $deplib in
- -L*) new_libs="$deplib $new_libs" ;;
- -R*) ;;
- *)
- # And here is the reason: when a library appears more
- # than once as an explicit dependence of a library, or
- # is implicitly linked in more than once by the
- # compiler, it is considered special, and multiple
- # occurrences thereof are not removed. Compare this
- # with having the same library being listed as a
- # dependency of multiple other libraries: in this case,
- # we know (pedantically, we assume) the library does not
- # need to be listed more than once, so we keep only the
- # last copy. This is not always right, but it is rare
- # enough that we require users that really mean to play
- # such unportable linking tricks to link the library
- # using -Wl,-lname, so that libtool does not consider it
- # for duplicate removal.
- case " $specialdeplibs " in
- *" $deplib "*) new_libs="$deplib $new_libs" ;;
- *)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) new_libs="$deplib $new_libs" ;;
- esac
- ;;
- esac
- ;;
- esac
- done
- tmp_libs=
- for deplib in $new_libs; do
- case $deplib in
- -L*)
- case " $tmp_libs " in
- *" $deplib "*) ;;
- *) tmp_libs="$tmp_libs $deplib" ;;
- esac
- ;;
- *) tmp_libs="$tmp_libs $deplib" ;;
- esac
- done
- eval $var=\"$tmp_libs\"
- done # for var
- fi
- # Last step: remove runtime libs from dependency_libs
- # (they stay in deplibs)
- tmp_libs=
- for i in $dependency_libs ; do
- case " $predeps $postdeps $compiler_lib_search_path " in
- *" $i "*)
- i=""
- ;;
- esac
- if test -n "$i" ; then
- tmp_libs="$tmp_libs $i"
- fi
- done
- dependency_libs=$tmp_libs
- done # for pass
- if test "$linkmode" = prog; then
- dlfiles="$newdlfiles"
- fi
- if test "$linkmode" = prog || test "$linkmode" = lib; then
- dlprefiles="$newdlprefiles"
- fi
-
- case $linkmode in
- oldlib)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for archives"
- fi
-
- case " $deplibs" in
- *\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for archives" ;;
- esac
-
- test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for archives"
-
- test -n "$xrpath" && \
- func_warning "\`-R' is ignored for archives"
-
- test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for archives"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for archives"
-
- test -n "$export_symbols$export_symbols_regex" && \
- func_warning "\`-export-symbols' is ignored for archives"
-
- # Now set the variables for building old libraries.
- build_libtool_libs=no
- oldlibs="$output"
- objs="$objs$old_deplibs"
- ;;
-
- lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
- case $outputname in
- lib*)
- func_stripname 'lib' '.la' "$outputname"
- name=$func_stripname_result
- eval shared_ext=\"$shrext_cmds\"
- eval libname=\"$libname_spec\"
- ;;
- *)
- test "$module" = no && \
- func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
- if test "$need_lib_prefix" != no; then
- # Add the "lib" prefix for modules if required
- func_stripname '' '.la' "$outputname"
- name=$func_stripname_result
- eval shared_ext=\"$shrext_cmds\"
- eval libname=\"$libname_spec\"
- else
- func_stripname '' '.la' "$outputname"
- libname=$func_stripname_result
- fi
- ;;
- esac
-
- if test -n "$objs"; then
- if test "$deplibs_check_method" != pass_all; then
- func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
- else
- $ECHO
- $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
- $ECHO "*** objects $objs is not portable!"
- libobjs="$libobjs $objs"
- fi
- fi
-
- test "$dlself" != no && \
- func_warning "\`-dlopen self' is ignored for libtool libraries"
-
- set dummy $rpath
- shift
- test "$#" -gt 1 && \
- func_warning "ignoring multiple \`-rpath's for a libtool library"
-
- install_libdir="$1"
-
- oldlibs=
- if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
- # Building a libtool convenience library.
- # Some compilers have problems with a `.al' extension so
- # convenience libraries should have the same extension an
- # archive normally would.
- oldlibs="$output_objdir/$libname.$libext $oldlibs"
- build_libtool_libs=convenience
- build_old_libs=yes
- fi
-
- test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for convenience libraries"
- else
-
- # Parse the version information argument.
- save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
- shift
- IFS="$save_ifs"
-
- test -n "$7" && \
- func_fatal_help "too many parameters to \`-version-info'"
-
- # convert absolute version numbers to libtool ages
- # this retains compatibility with .la files and attempts
- # to make the code below a bit more comprehensible
-
- case $vinfo_number in
- yes)
- number_major="$1"
- number_minor="$2"
- number_revision="$3"
- #
- # There are really only two kinds -- those that
- # use the current revision as the major version
- # and those that subtract age and use age as
- # a minor version. But, then there is irix
- # which has an extra 1 added just for fun
- #
- case $version_type in
- darwin|linux|osf|windows|none)
- func_arith $number_major + $number_minor
- current=$func_arith_result
- age="$number_minor"
- revision="$number_revision"
- ;;
- freebsd-aout|freebsd-elf|sunos)
- current="$number_major"
- revision="$number_minor"
- age="0"
- ;;
- irix|nonstopux)
- func_arith $number_major + $number_minor
- current=$func_arith_result
- age="$number_minor"
- revision="$number_minor"
- lt_irix_increment=no
- ;;
- esac
- ;;
- no)
- current="$1"
- revision="$2"
- age="$3"
- ;;
- esac
-
- # Check that each of the things are valid numbers.
- case $current in
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
- *)
- func_error "CURRENT \`$current' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
- ;;
- esac
-
- case $revision in
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
- *)
- func_error "REVISION \`$revision' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
- ;;
- esac
-
- case $age in
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
- *)
- func_error "AGE \`$age' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
- ;;
- esac
-
- if test "$age" -gt "$current"; then
- func_error "AGE \`$age' is greater than the current interface number \`$current'"
- func_fatal_error "\`$vinfo' is not valid version information"
- fi
-
- # Calculate the version variables.
- major=
- versuffix=
- verstring=
- case $version_type in
- none) ;;
-
- darwin)
- # Like Linux, but with the current version available in
- # verstring for coding it into the library header
- func_arith $current - $age
- major=.$func_arith_result
- versuffix="$major.$age.$revision"
- # Darwin ld doesn't like 0 for these options...
- func_arith $current + 1
- minor_current=$func_arith_result
- xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
- ;;
-
- freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
- ;;
-
- freebsd-elf)
- major=".$current"
- versuffix=".$current"
- ;;
-
- irix | nonstopux)
- if test "X$lt_irix_increment" = "Xno"; then
- func_arith $current - $age
- else
- func_arith $current - $age + 1
- fi
- major=$func_arith_result
-
- case $version_type in
- nonstopux) verstring_prefix=nonstopux ;;
- *) verstring_prefix=sgi ;;
- esac
- verstring="$verstring_prefix$major.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test "$loop" -ne 0; do
- func_arith $revision - $loop
- iface=$func_arith_result
- func_arith $loop - 1
- loop=$func_arith_result
- verstring="$verstring_prefix$major.$iface:$verstring"
- done
-
- # Before this point, $major must not contain `.'.
- major=.$major
- versuffix="$major.$revision"
- ;;
-
- linux)
- func_arith $current - $age
- major=.$func_arith_result
- versuffix="$major.$age.$revision"
- ;;
-
- osf)
- func_arith $current - $age
- major=.$func_arith_result
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$age
- while test "$loop" -ne 0; do
- func_arith $current - $loop
- iface=$func_arith_result
- func_arith $loop - 1
- loop=$func_arith_result
- verstring="$verstring:${iface}.0"
- done
-
- # Make executables depend on our current version.
- verstring="$verstring:${current}.0"
- ;;
-
- qnx)
- major=".$current"
- versuffix=".$current"
- ;;
-
- sunos)
- major=".$current"
- versuffix=".$current.$revision"
- ;;
-
- windows)
- # Use '-' rather than '.', since we only want one
- # extension on DOS 8.3 filesystems.
- func_arith $current - $age
- major=$func_arith_result
- versuffix="-$major"
- ;;
-
- *)
- func_fatal_configuration "unknown library version type \`$version_type'"
- ;;
- esac
-
- # Clear the version info if we defaulted, and they specified a release.
- if test -z "$vinfo" && test -n "$release"; then
- major=
- case $version_type in
- darwin)
- # we can't check for "0.0" in archive_cmds due to quoting
- # problems, so we reset it completely
- verstring=
- ;;
- *)
- verstring="0.0"
- ;;
- esac
- if test "$need_version" = no; then
- versuffix=
- else
- versuffix=".0.0"
- fi
- fi
-
- # Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
- major=
- versuffix=
- verstring=""
- fi
-
- # Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
- func_warning "undefined symbols not allowed in $host shared libraries"
- build_libtool_libs=no
- build_old_libs=yes
- fi
- else
- # Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
- fi
-
- fi
-
- func_generate_dlsyms "$libname" "$libname" "yes"
- libobjs="$libobjs $symfileobj"
- test "X$libobjs" = "X " && libobjs=
-
- if test "$mode" != relink; then
- # Remove our outputs, but don't remove object files since they
- # may have been created when compiling PIC objects.
- removelist=
- tempremovelist=`$ECHO "$output_objdir/*"`
- for p in $tempremovelist; do
- case $p in
- *.$objext | *.gcno)
- ;;
- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
- if test "X$precious_files_regex" != "X"; then
- if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
- then
- continue
- fi
- fi
- removelist="$removelist $p"
- ;;
- *) ;;
- esac
- done
- test -n "$removelist" && \
- func_show_eval "${RM}r \$removelist"
- fi
-
- # Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
- oldlibs="$oldlibs $output_objdir/$libname.$libext"
-
- # Transform .lo files to .o files.
- oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
- fi
-
- # Eliminate all temporary directories.
- #for path in $notinst_path; do
- # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
- # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
- # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
- #done
-
- if test -n "$xrpath"; then
- # If the user specified any rpath flags, then add them.
- temp_xrpath=
- for libdir in $xrpath; do
- temp_xrpath="$temp_xrpath -R$libdir"
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
- esac
- done
- if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
- dependency_libs="$temp_xrpath $dependency_libs"
- fi
- fi
-
- # Make sure dlfiles contains only unique files that won't be dlpreopened
- old_dlfiles="$dlfiles"
- dlfiles=
- for lib in $old_dlfiles; do
- case " $dlprefiles $dlfiles " in
- *" $lib "*) ;;
- *) dlfiles="$dlfiles $lib" ;;
- esac
- done
-
- # Make sure dlprefiles contains only unique files
- old_dlprefiles="$dlprefiles"
- dlprefiles=
- for lib in $old_dlprefiles; do
- case "$dlprefiles " in
- *" $lib "*) ;;
- *) dlprefiles="$dlprefiles $lib" ;;
- esac
- done
-
- if test "$build_libtool_libs" = yes; then
- if test -n "$rpath"; then
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
- # these systems don't actually have a c library (as such)!
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C library is in the System framework
- deplibs="$deplibs System.ltframework"
- ;;
- *-*-netbsd*)
- # Don't link with libc until the a.out ld.so is fixed.
- ;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- # Do not include libc due to us having libc/libc_r.
- ;;
- *-*-sco3.2v5* | *-*-sco5v6*)
- # Causes problems with __ctype
- ;;
- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
- # Compiler inserts libc in the correct place for threads to work
- ;;
- *)
- # Add libc to deplibs on all other systems if necessary.
- if test "$build_libtool_need_lc" = "yes"; then
- deplibs="$deplibs -lc"
- fi
- ;;
- esac
- fi
-
- # Transform deplibs into only deplibs that can be linked in shared.
- name_save=$name
- libname_save=$libname
- release_save=$release
- versuffix_save=$versuffix
- major_save=$major
- # I'm not sure if I'm treating the release correctly. I think
- # release should show up in the -l (ie -lgmp5) so we don't want to
- # add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
- newdeplibs=
- droppeddeps=no
- case $deplibs_check_method in
- pass_all)
- # Don't check for shared/static. Everything works.
- # This might be a little naive. We might want to check
- # whether the library exists or not. But this is on
- # osf3 & osf4 and I'm not really sure... Just
- # implementing what was already the behavior.
- newdeplibs=$deplibs
- ;;
- test_compile)
- # This code stresses the "libraries are programs" paradigm to its
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
- $opt_dry_run || $RM conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
-EOF
- $opt_dry_run || $RM conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
- case $i in
- -l*)
- func_stripname -l '' "$i"
- name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $i "*)
- newdeplibs="$newdeplibs $i"
- i=""
- ;;
- esac
- fi
- if test -n "$i" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- $ECHO
- $ECHO "*** Warning: dynamic linker does not accept needed library $i."
- $ECHO "*** I have the capability to make that library automatically link in when"
- $ECHO "*** you link to this library. But I can only do this if you have a"
- $ECHO "*** shared version of the library, which I believe you do not have"
- $ECHO "*** because a test_compile did reveal that the linker did not use it for"
- $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
- fi
- fi
- ;;
- *)
- newdeplibs="$newdeplibs $i"
- ;;
- esac
- done
- else
- # Error occurred in the first compile. Let's try to salvage
- # the situation: Compile a separate program for each library.
- for i in $deplibs; do
- case $i in
- -l*)
- func_stripname -l '' "$i"
- name=$func_stripname_result
- $opt_dry_run || $RM conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
- ldd_output=`ldd conftest`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $i "*)
- newdeplibs="$newdeplibs $i"
- i=""
- ;;
- esac
- fi
- if test -n "$i" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- newdeplibs="$newdeplibs $i"
- else
- droppeddeps=yes
- $ECHO
- $ECHO "*** Warning: dynamic linker does not accept needed library $i."
- $ECHO "*** I have the capability to make that library automatically link in when"
- $ECHO "*** you link to this library. But I can only do this if you have a"
- $ECHO "*** shared version of the library, which you do not appear to have"
- $ECHO "*** because a test_compile did reveal that the linker did not use this one"
- $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
- fi
- fi
- else
- droppeddeps=yes
- $ECHO
- $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
- $ECHO "*** make it link in! You will probably need to install it or some"
- $ECHO "*** library that it depends on before this library will be fully"
- $ECHO "*** functional. Installing it before continuing would be even better."
- fi
- ;;
- *)
- newdeplibs="$newdeplibs $i"
- ;;
- esac
- done
- fi
- ;;
- file_magic*)
- set dummy $deplibs_check_method; shift
- file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- for a_deplib in $deplibs; do
- case $a_deplib in
- -l*)
- func_stripname -l '' "$a_deplib"
- name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $a_deplib "*)
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- ;;
- esac
- fi
- if test -n "$a_deplib" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- # Follow soft links.
- if ls -lLd "$potent_lib" 2>/dev/null |
- $GREP " -> " >/dev/null; then
- continue
- fi
- # The statement above tries to avoid entering an
- # endless loop below, in case of cyclic links.
- # We might still enter an endless loop, since a link
- # loop can be closed while we follow links,
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
- case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
- $SED -e 10q |
- $EGREP "$file_magic_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- fi
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- $ECHO
- $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
- $ECHO "*** I have the capability to make that library automatically link in when"
- $ECHO "*** you link to this library. But I can only do this if you have a"
- $ECHO "*** shared version of the library, which you do not appear to have"
- $ECHO "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
- $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
- else
- $ECHO "*** with $libname and none of the candidates passed a file format test"
- $ECHO "*** using a file magic. Last file checked: $potlib"
- fi
- fi
- ;;
- *)
- # Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
- ;;
- esac
- done # Gone through all deplibs.
- ;;
- match_pattern*)
- set dummy $deplibs_check_method; shift
- match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- for a_deplib in $deplibs; do
- case $a_deplib in
- -l*)
- func_stripname -l '' "$a_deplib"
- name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $a_deplib "*)
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- ;;
- esac
- fi
- if test -n "$a_deplib" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- potlib="$potent_lib" # see symlink-check above in file_magic test
- if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
- $EGREP "$match_pattern_regex" > /dev/null; then
- newdeplibs="$newdeplibs $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- fi
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- $ECHO
- $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
- $ECHO "*** I have the capability to make that library automatically link in when"
- $ECHO "*** you link to this library. But I can only do this if you have a"
- $ECHO "*** shared version of the library, which you do not appear to have"
- $ECHO "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
- $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
- else
- $ECHO "*** with $libname and none of the candidates passed a file format test"
- $ECHO "*** using a regex pattern. Last file checked: $potlib"
- fi
- fi
- ;;
- *)
- # Add a -L argument.
- newdeplibs="$newdeplibs $a_deplib"
- ;;
- esac
- done # Gone through all deplibs.
- ;;
- none | unknown | *)
- newdeplibs=""
- tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
- -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- for i in $predeps $postdeps ; do
- # can't use Xsed below, because $i might contain '/'
- tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
- done
- fi
- if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
- $GREP . >/dev/null; then
- $ECHO
- if test "X$deplibs_check_method" = "Xnone"; then
- $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
- else
- $ECHO "*** Warning: inter-library dependencies are not known to be supported."
- fi
- $ECHO "*** All declared inter-library dependencies are being dropped."
- droppeddeps=yes
- fi
- ;;
- esac
- versuffix=$versuffix_save
- major=$major_save
- release=$release_save
- libname=$libname_save
- name=$name_save
-
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
- # On Rhapsody replace the C library with the System framework
- newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
- ;;
- esac
-
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
- $ECHO
- $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
- $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
- $ECHO "*** a static module, that should work as long as the dlopening"
- $ECHO "*** application is linked with the -dlopen flag."
- if test -z "$global_symbol_pipe"; then
- $ECHO
- $ECHO "*** However, this would only work if libtool was able to extract symbol"
- $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
- $ECHO "*** not find such a program. So, this module is probably useless."
- $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- else
- $ECHO "*** The inter-library dependencies that have been dropped here will be"
- $ECHO "*** automatically added whenever a program is linked with this library"
- $ECHO "*** or is declared to -dlopen it."
-
- if test "$allow_undefined" = no; then
- $ECHO
- $ECHO "*** Since this library must not contain undefined symbols,"
- $ECHO "*** because either the platform does not support them or"
- $ECHO "*** it was explicitly requested with -no-undefined,"
- $ECHO "*** libtool will only create a static version of it."
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- fi
- fi
- fi
- # Done checking deplibs!
- deplibs=$newdeplibs
- fi
- # Time to change all our "foo.ltframework" stuff back to "-framework foo"
- case $host in
- *-*-darwin*)
- newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- ;;
- esac
-
- # move library search paths that coincide with paths to not yet
- # installed libraries to the beginning of the library search list
- new_libs=
- for path in $notinst_path; do
- case " $new_libs " in
- *" -L$path/$objdir "*) ;;
- *)
- case " $deplibs " in
- *" -L$path/$objdir "*)
- new_libs="$new_libs -L$path/$objdir" ;;
- esac
- ;;
- esac
- done
- for deplib in $deplibs; do
- case $deplib in
- -L*)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) new_libs="$new_libs $deplib" ;;
- esac
- ;;
- *) new_libs="$new_libs $deplib" ;;
- esac
- done
- deplibs="$new_libs"
-
- # All the library-specific variables (install_libdir is set above).
- library_names=
- old_library=
- dlname=
-
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
- if test "$hardcode_into_libs" = yes; then
- # Hardcode the library paths
- hardcode_libdirs=
- dep_rpath=
- rpath="$finalize_rpath"
- test "$mode" != relink && rpath="$compile_rpath$rpath"
- for libdir in $rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- dep_rpath="$dep_rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- if test -n "$hardcode_libdir_flag_spec_ld"; then
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
- else
- eval dep_rpath=\"$hardcode_libdir_flag_spec\"
- fi
- fi
- if test -n "$runpath_var" && test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- rpath="$rpath$dir:"
- done
- eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
- fi
- test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
- fi
-
- shlibpath="$finalize_shlibpath"
- test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
- if test -n "$shlibpath"; then
- eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
- fi
-
- # Get the real and link names of the library.
- eval shared_ext=\"$shrext_cmds\"
- eval library_names=\"$library_names_spec\"
- set dummy $library_names
- shift
- realname="$1"
- shift
-
- if test -n "$soname_spec"; then
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
- if test -z "$dlname"; then
- dlname=$soname
- fi
-
- lib="$output_objdir/$realname"
- linknames=
- for link
- do
- linknames="$linknames $link"
- done
-
- # Use standard objects if they are pic
- test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- test "X$libobjs" = "X " && libobjs=
-
- delfiles=
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
- export_symbols="$output_objdir/$libname.uexp"
- delfiles="$delfiles $export_symbols"
- fi
-
- orig_export_symbols=
- case $host_os in
- cygwin* | mingw* | cegcc*)
- if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
- # exporting using user supplied symfile
- if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
- # and it's NOT already a .def file. Must figure out
- # which of the given symbols are data symbols and tag
- # them as such. So, trigger use of export_symbols_cmds.
- # export_symbols gets reassigned inside the "prepare
- # the list of exported symbols" if statement, so the
- # include_expsyms logic still works.
- orig_export_symbols="$export_symbols"
- export_symbols=
- always_export_symbols=yes
- fi
- fi
- ;;
- esac
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
- $opt_dry_run || $RM $export_symbols
- cmds=$export_symbols_cmds
- save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- func_len " $cmd"
- len=$func_len_result
- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- func_show_eval "$cmd" 'exit $?'
- skipped_export=false
- else
- # The command line is too long to execute in one step.
- func_verbose "using reloadable object file for export list..."
- skipped_export=:
- # Break out early, otherwise skipped_export may be
- # set to false by a later but shorter cmd.
- break
- fi
- done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
- func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
- fi
- fi
- fi
-
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
- $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
- fi
-
- if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
- # The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
- # FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
- # though. Also, the filter scales superlinearly with the number of
- # global variables. join(1) would be nice here, but unfortunately
- # isn't a blessed tool.
- $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
- export_symbols=$output_objdir/$libname.def
- $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- fi
-
- tmp_deplibs=
- for test_deplib in $deplibs; do
- case " $convenience " in
- *" $test_deplib "*) ;;
- *)
- tmp_deplibs="$tmp_deplibs $test_deplib"
- ;;
- esac
- done
- deplibs="$tmp_deplibs"
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec" &&
- test "$compiler_needs_object" = yes &&
- test -z "$libobjs"; then
- # extract the archives, so we have objects to list.
- # TODO: could optimize this to just extract one archive.
- whole_archive_flag_spec=
- fi
- if test -n "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- test "X$libobjs" = "X " && libobjs=
- else
- gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
-
- func_extract_archives $gentop $convenience
- libobjs="$libobjs $func_extract_archives_result"
- test "X$libobjs" = "X " && libobjs=
- fi
- fi
-
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
- linker_flags="$linker_flags $flag"
- fi
-
- # Make a backup of the uninstalled library when relinking
- if test "$mode" = relink; then
- $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
- fi
-
- # Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
- eval test_cmds=\"$module_expsym_cmds\"
- cmds=$module_expsym_cmds
- else
- eval test_cmds=\"$module_cmds\"
- cmds=$module_cmds
- fi
- else
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval test_cmds=\"$archive_expsym_cmds\"
- cmds=$archive_expsym_cmds
- else
- eval test_cmds=\"$archive_cmds\"
- cmds=$archive_cmds
- fi
- fi
-
- if test "X$skipped_export" != "X:" &&
- func_len " $test_cmds" &&
- len=$func_len_result &&
- test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- :
- else
- # The command line is too long to link in one step, link piecewise
- # or, if using GNU ld and skipped_export is not :, use a linker
- # script.
-
- # Save the value of $output and $libobjs because we want to
- # use them later. If we have whole_archive_flag_spec, we
- # want to use save_libobjs as it was before
- # whole_archive_flag_spec was expanded, because we can't
- # assume the linker understands whole_archive_flag_spec.
- # This may have to be revisited, in case too many
- # convenience libraries get linked in and end up exceeding
- # the spec.
- if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- fi
- save_output=$output
- output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-
- # Clear the reloadable object creation command queue and
- # initialize k to one.
- test_cmds=
- concat_cmds=
- objlist=
- last_robj=
- k=1
-
- if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
- output=${output_objdir}/${output_la}.lnkscript
- func_verbose "creating GNU ld script: $output"
- $ECHO 'INPUT (' > $output
- for obj in $save_libobjs
- do
- $ECHO "$obj" >> $output
- done
- $ECHO ')' >> $output
- delfiles="$delfiles $output"
- elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
- output=${output_objdir}/${output_la}.lnk
- func_verbose "creating linker input file list: $output"
- : > $output
- set x $save_libobjs
- shift
- firstobj=
- if test "$compiler_needs_object" = yes; then
- firstobj="$1 "
- shift
- fi
- for obj
- do
- $ECHO "$obj" >> $output
- done
- delfiles="$delfiles $output"
- output=$firstobj\"$file_list_spec$output\"
- else
- if test -n "$save_libobjs"; then
- func_verbose "creating reloadable object files..."
- output=$output_objdir/$output_la-${k}.$objext
- eval test_cmds=\"$reload_cmds\"
- func_len " $test_cmds"
- len0=$func_len_result
- len=$len0
-
- # Loop over the list of objects to be linked.
- for obj in $save_libobjs
- do
- func_len " $obj"
- func_arith $len + $func_len_result
- len=$func_arith_result
- if test "X$objlist" = X ||
- test "$len" -lt "$max_cmd_len"; then
- func_append objlist " $obj"
- else
- # The command $test_cmds is almost too long, add a
- # command to the queue.
- if test "$k" -eq 1 ; then
- # The first file doesn't have a previous command to add.
- eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
- else
- # All subsequent reloadable object files will link in
- # the last one created.
- eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
- fi
- last_robj=$output_objdir/$output_la-${k}.$objext
- func_arith $k + 1
- k=$func_arith_result
- output=$output_objdir/$output_la-${k}.$objext
- objlist=$obj
- func_len " $last_robj"
- func_arith $len0 + $func_len_result
- len=$func_arith_result
- fi
- done
- # Handle the remaining objects by creating one last
- # reloadable object file. All subsequent reloadable object
- # files will link in the last one created.
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
- if test -n "$last_robj"; then
- eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
- fi
- delfiles="$delfiles $output"
-
- else
- output=
- fi
-
- if ${skipped_export-false}; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
- $opt_dry_run || $RM $export_symbols
- libobjs=$output
- # Append the command to create the export file.
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
- if test -n "$last_robj"; then
- eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
- fi
- fi
-
- test -n "$save_libobjs" &&
- func_verbose "creating a temporary reloadable object file: $output"
-
- # Loop through the commands generated above and execute them.
- save_ifs="$IFS"; IFS='~'
- for cmd in $concat_cmds; do
- IFS="$save_ifs"
- $opt_silent || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
- $opt_dry_run || eval "$cmd" || {
- lt_exit=$?
-
- # Restore the uninstalled library and exit
- if test "$mode" = relink; then
- ( cd "$output_objdir" && \
- $RM "${realname}T" && \
- $MV "${realname}U" "$realname" )
- fi
-
- exit $lt_exit
- }
- done
- IFS="$save_ifs"
-
- if test -n "$export_symbols_regex" && ${skipped_export-false}; then
- func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
- fi
- fi
-
- if ${skipped_export-false}; then
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
- $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
- fi
-
- if test -n "$orig_export_symbols"; then
- # The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
- # FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
- # though. Also, the filter scales superlinearly with the number of
- # global variables. join(1) would be nice here, but unfortunately
- # isn't a blessed tool.
- $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
- delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
- export_symbols=$output_objdir/$libname.def
- $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- fi
- fi
-
- libobjs=$output
- # Restore the value of output.
- output=$save_output
-
- if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- test "X$libobjs" = "X " && libobjs=
- fi
- # Expand the library linking commands again to reset the
- # value of $libobjs for piecewise linking.
-
- # Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
- cmds=$module_expsym_cmds
- else
- cmds=$module_cmds
- fi
- else
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- cmds=$archive_expsym_cmds
- else
- cmds=$archive_cmds
- fi
- fi
- fi
-
- if test -n "$delfiles"; then
- # Append the command to remove temporary files to $cmds.
- eval cmds=\"\$cmds~\$RM $delfiles\"
- fi
-
- # Add any objects from preloaded convenience libraries
- if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
-
- func_extract_archives $gentop $dlprefiles
- libobjs="$libobjs $func_extract_archives_result"
- test "X$libobjs" = "X " && libobjs=
- fi
-
- save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- $opt_silent || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
- $opt_dry_run || eval "$cmd" || {
- lt_exit=$?
-
- # Restore the uninstalled library and exit
- if test "$mode" = relink; then
- ( cd "$output_objdir" && \
- $RM "${realname}T" && \
- $MV "${realname}U" "$realname" )
- fi
-
- exit $lt_exit
- }
- done
- IFS="$save_ifs"
-
- # Restore the uninstalled library and exit
- if test "$mode" = relink; then
- $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
- if test -n "$convenience"; then
- if test -z "$whole_archive_flag_spec"; then
- func_show_eval '${RM}r "$gentop"'
- fi
- fi
-
- exit $EXIT_SUCCESS
- fi
-
- # Create links to the real library.
- for linkname in $linknames; do
- if test "$realname" != "$linkname"; then
- func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
- fi
- done
-
- # If -module or -export-dynamic was specified, set the dlname.
- if test "$module" = yes || test "$export_dynamic" = yes; then
- # On all known operating systems, these are identical.
- dlname="$soname"
- fi
- fi
- ;;
-
- obj)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for objects"
- fi
-
- case " $deplibs" in
- *\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for objects" ;;
- esac
-
- test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for objects"
-
- test -n "$xrpath" && \
- func_warning "\`-R' is ignored for objects"
-
- test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for objects"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for objects"
-
- case $output in
- *.lo)
- test -n "$objs$old_deplibs" && \
- func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
- libobj=$output
- func_lo2o "$libobj"
- obj=$func_lo2o_result
- ;;
- *)
- libobj=
- obj="$output"
- ;;
- esac
-
- # Delete the old objects.
- $opt_dry_run || $RM $obj $libobj
-
- # Objects from convenience libraries. This assumes
- # single-version convenience libraries. Whenever we create
- # different ones for PIC/non-PIC, this we'll have to duplicate
- # the extraction.
- reload_conv_objs=
- gentop=
- # reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec and hope we can get by with
- # turning comma into space..
- wl=
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
- reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
- else
- gentop="$output_objdir/${obj}x"
- generated="$generated $gentop"
-
- func_extract_archives $gentop $convenience
- reload_conv_objs="$reload_objs $func_extract_archives_result"
- fi
- fi
-
- # Create the old-style object.
- reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
- output="$obj"
- func_execute_cmds "$reload_cmds" 'exit $?'
-
- # Exit if we aren't doing a library object file.
- if test -z "$libobj"; then
- if test -n "$gentop"; then
- func_show_eval '${RM}r "$gentop"'
- fi
-
- exit $EXIT_SUCCESS
- fi
-
- if test "$build_libtool_libs" != yes; then
- if test -n "$gentop"; then
- func_show_eval '${RM}r "$gentop"'
- fi
-
- # Create an invalid libtool object if no PIC, so that we don't
- # accidentally link it into a program.
- # $show "echo timestamp > $libobj"
- # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
- exit $EXIT_SUCCESS
- fi
-
- if test -n "$pic_flag" || test "$pic_mode" != default; then
- # Only do commands if we really have different PIC objects.
- reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
- func_execute_cmds "$reload_cmds" 'exit $?'
- fi
-
- if test -n "$gentop"; then
- func_show_eval '${RM}r "$gentop"'
- fi
-
- exit $EXIT_SUCCESS
- ;;
-
- prog)
- case $host in
- *cygwin*) func_stripname '' '.exe' "$output"
- output=$func_stripname_result.exe;;
- esac
- test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for programs"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for programs"
-
- test "$preload" = yes \
- && test "$dlopen_support" = unknown \
- && test "$dlopen_self" = unknown \
- && test "$dlopen_self_static" = unknown && \
- func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
- # On Rhapsody replace the C library is the System framework
- compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
- ;;
- esac
-
- case $host in
- *-*-darwin*)
- # Don't allow lazy linking, it breaks C++ global constructors
- # But is supposedly fixed on 10.4 or later (yay!).
- if test "$tagname" = CXX ; then
- case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
- 10.[0123])
- compile_command="$compile_command ${wl}-bind_at_load"
- finalize_command="$finalize_command ${wl}-bind_at_load"
- ;;
- esac
- fi
- # Time to change all our "foo.ltframework" stuff back to "-framework foo"
- compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
- ;;
- esac
-
-
- # move library search paths that coincide with paths to not yet
- # installed libraries to the beginning of the library search list
- new_libs=
- for path in $notinst_path; do
- case " $new_libs " in
- *" -L$path/$objdir "*) ;;
- *)
- case " $compile_deplibs " in
- *" -L$path/$objdir "*)
- new_libs="$new_libs -L$path/$objdir" ;;
- esac
- ;;
- esac
- done
- for deplib in $compile_deplibs; do
- case $deplib in
- -L*)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) new_libs="$new_libs $deplib" ;;
- esac
- ;;
- *) new_libs="$new_libs $deplib" ;;
- esac
- done
- compile_deplibs="$new_libs"
-
-
- compile_command="$compile_command $compile_deplibs"
- finalize_command="$finalize_command $finalize_deplibs"
-
- if test -n "$rpath$xrpath"; then
- # If the user specified any rpath flags, then add them.
- for libdir in $rpath $xrpath; do
- # This is the magic to use -rpath.
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir" ;;
- esac
- done
- fi
-
- # Now hardcode the library paths
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) perm_rpath="$perm_rpath $libdir" ;;
- esac
- fi
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
- case :$dllsearchpath: in
- *":$libdir:"*) ;;
- ::) dllsearchpath=$libdir;;
- *) dllsearchpath="$dllsearchpath:$libdir";;
- esac
- case :$dllsearchpath: in
- *":$testbindir:"*) ;;
- ::) dllsearchpath=$testbindir;;
- *) dllsearchpath="$dllsearchpath:$testbindir";;
- esac
- ;;
- esac
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- compile_rpath="$rpath"
-
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- rpath="$rpath $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
- *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- finalize_rpath="$rpath"
-
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
- # Transform all the library objects into standard objects.
- compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- fi
-
- func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
- # template prelinking step
- if test -n "$prelink_cmds"; then
- func_execute_cmds "$prelink_cmds" 'exit $?'
- fi
-
- wrappers_required=yes
- case $host in
- *cygwin* | *mingw* )
- if test "$build_libtool_libs" != yes; then
- wrappers_required=no
- fi
- ;;
- *cegcc)
- # Disable wrappers for cegcc, we are cross compiling anyway.
- wrappers_required=no
- ;;
- *)
- if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
- wrappers_required=no
- fi
- ;;
- esac
- if test "$wrappers_required" = no; then
- # Replace the output file specification.
- compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
-
- # We have no uninstalled library dependencies, so finalize right now.
- exit_status=0
- func_show_eval "$link_command" 'exit_status=$?'
-
- # Delete the generated files.
- if test -f "$output_objdir/${outputname}S.${objext}"; then
- func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
- fi
-
- exit $exit_status
- fi
-
- if test -n "$compile_shlibpath$finalize_shlibpath"; then
- compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
- fi
- if test -n "$finalize_shlibpath"; then
- finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
- fi
-
- compile_var=
- finalize_var=
- if test -n "$runpath_var"; then
- if test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- rpath="$rpath$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- if test -n "$finalize_perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
- rpath="$rpath$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- fi
-
- if test "$no_install" = yes; then
- # We don't need to create a wrapper script.
- link_command="$compile_var$compile_command$compile_rpath"
- # Replace the output file specification.
- link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
- # Delete the old output file.
- $opt_dry_run || $RM $output
- # Link the executable and exit
- func_show_eval "$link_command" 'exit $?'
- exit $EXIT_SUCCESS
- fi
-
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
-
- func_warning "this platform does not like uninstalled shared libraries"
- func_warning "\`$output' will be relinked during installation"
- else
- if test "$fast_install" != no; then
- link_command="$finalize_var$compile_command$finalize_rpath"
- if test "$fast_install" = yes; then
- relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
- fi
- else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
- fi
- fi
-
- # Replace the output file specification.
- link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
- # Delete the old output files.
- $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
- func_show_eval "$link_command" 'exit $?'
-
- # Now create the wrapper script.
- func_verbose "creating $output"
-
- # Quote the relink command for shipping.
- if test -n "$relink_command"; then
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
- relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
- elif eval var_value=\$$var; test -z "$var_value"; then
- relink_command="$var=; export $var; $relink_command"
- else
- func_quote_for_eval "$var_value"
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
- fi
- done
- relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- fi
-
- # Quote $ECHO for shipping.
- if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
- case $progpath in
- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
- *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
- esac
- qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
- else
- qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
- fi
-
- # Only actually do things if not in dry run mode.
- $opt_dry_run || {
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
- *.exe) func_stripname '' '.exe' "$output"
- output=$func_stripname_result ;;
- esac
- # test for cygwin because mv fails w/o .exe extensions
- case $host in
- *cygwin*)
- exeext=.exe
- func_stripname '' '.exe' "$outputname"
- outputname=$func_stripname_result ;;
- *) exeext= ;;
- esac
- case $host in
- *cygwin* | *mingw* )
- func_dirname_and_basename "$output" "" "."
- output_name=$func_basename_result
- output_path=$func_dirname_result
- cwrappersource="$output_path/$objdir/lt-$output_name.c"
- cwrapper="$output_path/$output_name.exe"
- $RM $cwrappersource $cwrapper
- trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
- func_emit_cwrapperexe_src > $cwrappersource
-
- # The wrapper executable is built using the $host compiler,
- # because it contains $host paths and files. If cross-
- # compiling, it, like the target executable, must be
- # executed on the $host or under an emulation environment.
- $opt_dry_run || {
- $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
- $STRIP $cwrapper
- }
-
- # Now, create the wrapper script for func_source use:
- func_ltwrapper_scriptname $cwrapper
- $RM $func_ltwrapper_scriptname_result
- trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
- $opt_dry_run || {
- # note: this script will not be executed, so do not chmod.
- if test "x$build" = "x$host" ; then
- $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
- else
- func_emit_wrapper no > $func_ltwrapper_scriptname_result
- fi
- }
- ;;
- * )
- $RM $output
- trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
- func_emit_wrapper no > $output
- chmod +x $output
- ;;
- esac
- }
- exit $EXIT_SUCCESS
- ;;
- esac
-
- # See if we need to build an old-fashioned archive.
- for oldlib in $oldlibs; do
-
- if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save $symfileobj"
- addlibs="$convenience"
- build_libtool_libs=no
- else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
- oldobjs="$old_deplibs $non_pic_objects"
- if test "$preload" = yes && test -f "$symfileobj"; then
- oldobjs="$oldobjs $symfileobj"
- fi
- fi
- addlibs="$old_convenience"
- fi
-
- if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
-
- func_extract_archives $gentop $addlibs
- oldobjs="$oldobjs $func_extract_archives_result"
- fi
-
- # Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
- cmds=$old_archive_from_new_cmds
- else
-
- # Add any objects from preloaded convenience libraries
- if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
-
- func_extract_archives $gentop $dlprefiles
- oldobjs="$oldobjs $func_extract_archives_result"
- fi
-
- # POSIX demands no paths to be encoded in archives. We have
- # to avoid creating archives with duplicate basenames if we
- # might have to extract them afterwards, e.g., when creating a
- # static archive out of a convenience library, or when linking
- # the entirety of a libtool archive into another (currently
- # not supported by libtool).
- if (for obj in $oldobjs
- do
- func_basename "$obj"
- $ECHO "$func_basename_result"
- done | sort | sort -uc >/dev/null 2>&1); then
- :
- else
- $ECHO "copying selected object files to avoid basename conflicts..."
- gentop="$output_objdir/${outputname}x"
- generated="$generated $gentop"
- func_mkdir_p "$gentop"
- save_oldobjs=$oldobjs
- oldobjs=
- counter=1
- for obj in $save_oldobjs
- do
- func_basename "$obj"
- objbase="$func_basename_result"
- case " $oldobjs " in
- " ") oldobjs=$obj ;;
- *[\ /]"$objbase "*)
- while :; do
- # Make sure we don't pick an alternate name that also
- # overlaps.
- newobj=lt$counter-$objbase
- func_arith $counter + 1
- counter=$func_arith_result
- case " $oldobjs " in
- *[\ /]"$newobj "*) ;;
- *) if test ! -f "$gentop/$newobj"; then break; fi ;;
- esac
- done
- func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
- oldobjs="$oldobjs $gentop/$newobj"
- ;;
- *) oldobjs="$oldobjs $obj" ;;
- esac
- done
- fi
- eval cmds=\"$old_archive_cmds\"
-
- func_len " $cmds"
- len=$func_len_result
- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- cmds=$old_archive_cmds
- else
- # the command line is too long to link in one step, link in parts
- func_verbose "using piecewise archive linking..."
- save_RANLIB=$RANLIB
- RANLIB=:
- objlist=
- concat_cmds=
- save_oldobjs=$oldobjs
- oldobjs=
- # Is there a better way of finding the last object in the list?
- for obj in $save_oldobjs
- do
- last_oldobj=$obj
- done
- eval test_cmds=\"$old_archive_cmds\"
- func_len " $test_cmds"
- len0=$func_len_result
- len=$len0
- for obj in $save_oldobjs
- do
- func_len " $obj"
- func_arith $len + $func_len_result
- len=$func_arith_result
- func_append objlist " $obj"
- if test "$len" -lt "$max_cmd_len"; then
- :
- else
- # the above command should be used before it gets too long
- oldobjs=$objlist
- if test "$obj" = "$last_oldobj" ; then
- RANLIB=$save_RANLIB
- fi
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
- objlist=
- len=$len0
- fi
- done
- RANLIB=$save_RANLIB
- oldobjs=$objlist
- if test "X$oldobjs" = "X" ; then
- eval cmds=\"\$concat_cmds\"
- else
- eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
- fi
- fi
- fi
- func_execute_cmds "$cmds" 'exit $?'
- done
-
- test -n "$generated" && \
- func_show_eval "${RM}r$generated"
-
- # Now create the libtool archive.
- case $output in
- *.la)
- old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
- func_verbose "creating $output"
-
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
- relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
- elif eval var_value=\$$var; test -z "$var_value"; then
- relink_command="$var=; export $var; $relink_command"
- else
- func_quote_for_eval "$var_value"
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
- fi
- done
- # Quote the link command for shipping.
- relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
- if test "$hardcode_automatic" = yes ; then
- relink_command=
- fi
-
- # Only create the output if not a dry run.
- $opt_dry_run || {
- for installed in no yes; do
- if test "$installed" = yes; then
- if test -z "$install_libdir"; then
- break
- fi
- output="$output_objdir/$outputname"i
- # Replace all uninstalled libtool libraries with the installed ones
- newdependency_libs=
- for deplib in $dependency_libs; do
- case $deplib in
- *.la)
- func_basename "$deplib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
- newdependency_libs="$newdependency_libs $libdir/$name"
- ;;
- *) newdependency_libs="$newdependency_libs $deplib" ;;
- esac
- done
- dependency_libs="$newdependency_libs"
- newdlfiles=
-
- for lib in $dlfiles; do
- case $lib in
- *.la)
- func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
- newdlfiles="$newdlfiles $libdir/$name"
- ;;
- *) newdlfiles="$newdlfiles $lib" ;;
- esac
- done
- dlfiles="$newdlfiles"
- newdlprefiles=
- for lib in $dlprefiles; do
- case $lib in
- *.la)
- # Only pass preopened files to the pseudo-archive (for
- # eventual linking with the app. that links it) if we
- # didn't already link the preopened objects directly into
- # the library:
- func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
- newdlprefiles="$newdlprefiles $libdir/$name"
- ;;
- esac
- done
- dlprefiles="$newdlprefiles"
- else
- newdlfiles=
- for lib in $dlfiles; do
- case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- *) abs=`pwd`"/$lib" ;;
- esac
- newdlfiles="$newdlfiles $abs"
- done
- dlfiles="$newdlfiles"
- newdlprefiles=
- for lib in $dlprefiles; do
- case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- *) abs=`pwd`"/$lib" ;;
- esac
- newdlprefiles="$newdlprefiles $abs"
- done
- dlprefiles="$newdlprefiles"
- fi
- $RM $output
- # place dlname in correct position for cygwin
- tdlname=$dlname
- case $host,$output,$installed,$module,$dlname in
- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
- esac
- $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
- if test "$installed" = no && test "$need_relink" = yes; then
- $ECHO >> $output "\
-relink_command=\"$relink_command\""
- fi
- done
- }
-
- # Do a symbolic link so that the libtool archive can be found in
- # LD_LIBRARY_PATH before the program is installed.
- func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
- ;;
- esac
- exit $EXIT_SUCCESS
-}
-
-{ test "$mode" = link || test "$mode" = relink; } &&
- func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
- $opt_debug
- RM="$nonopt"
- files=
- rmforce=
- exit_status=0
-
- # This variable tells wrapper scripts just to set variables rather
- # than running their programs.
- libtool_install_magic="$magic"
-
- for arg
- do
- case $arg in
- -f) RM="$RM $arg"; rmforce=yes ;;
- -*) RM="$RM $arg" ;;
- *) files="$files $arg" ;;
- esac
- done
-
- test -z "$RM" && \
- func_fatal_help "you must specify an RM program"
-
- rmdirs=
-
- origobjdir="$objdir"
- for file in $files; do
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
- if test "X$dir" = X.; then
- objdir="$origobjdir"
- else
- objdir="$dir/$origobjdir"
- fi
- func_basename "$file"
- name="$func_basename_result"
- test "$mode" = uninstall && objdir="$dir"
-
- # Remember objdir for removal later, being careful to avoid duplicates
- if test "$mode" = clean; then
- case " $rmdirs " in
- *" $objdir "*) ;;
- *) rmdirs="$rmdirs $objdir" ;;
- esac
- fi
-
- # Don't error if the file doesn't exist and rm -f was used.
- if { test -L "$file"; } >/dev/null 2>&1 ||
- { test -h "$file"; } >/dev/null 2>&1 ||
- test -f "$file"; then
- :
- elif test -d "$file"; then
- exit_status=1
- continue
- elif test "$rmforce" = yes; then
- continue
- fi
-
- rmfiles="$file"
-
- case $name in
- *.la)
- # Possibly a libtool archive, so verify it.
- if func_lalib_p "$file"; then
- func_source $dir/$name
-
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
- rmfiles="$rmfiles $objdir/$n"
- done
- test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-
- case "$mode" in
- clean)
- case " $library_names " in
- # " " in the beginning catches empty $dlname
- *" $dlname "*) ;;
- *) rmfiles="$rmfiles $objdir/$dlname" ;;
- esac
- test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
- ;;
- uninstall)
- if test -n "$library_names"; then
- # Do each command in the postuninstall commands.
- func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- fi
-
- if test -n "$old_library"; then
- # Do each command in the old_postuninstall commands.
- func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- fi
- # FIXME: should reinstall the best remaining shared library.
- ;;
- esac
- fi
- ;;
-
- *.lo)
- # Possibly a libtool object, so verify it.
- if func_lalib_p "$file"; then
-
- # Read the .lo file
- func_source $dir/$name
-
- # Add PIC object to the list of files to remove.
- if test -n "$pic_object" &&
- test "$pic_object" != none; then
- rmfiles="$rmfiles $dir/$pic_object"
- fi
-
- # Add non-PIC object to the list of files to remove.
- if test -n "$non_pic_object" &&
- test "$non_pic_object" != none; then
- rmfiles="$rmfiles $dir/$non_pic_object"
- fi
- fi
- ;;
-
- *)
- if test "$mode" = clean ; then
- noexename=$name
- case $file in
- *.exe)
- func_stripname '' '.exe' "$file"
- file=$func_stripname_result
- func_stripname '' '.exe' "$name"
- noexename=$func_stripname_result
- # $file with .exe has already been added to rmfiles,
- # add $file without .exe
- rmfiles="$rmfiles $file"
- ;;
- esac
- # Do a test to see if this is a libtool program.
- if func_ltwrapper_p "$file"; then
- if func_ltwrapper_executable_p "$file"; then
- func_ltwrapper_scriptname "$file"
- relink_command=
- func_source $func_ltwrapper_scriptname_result
- rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
- else
- relink_command=
- func_source $dir/$noexename
- fi
-
- # note $name still contains .exe if it was in $file originally
- # as does the version of $file that was added into $rmfiles
- rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
- if test "$fast_install" = yes && test -n "$relink_command"; then
- rmfiles="$rmfiles $objdir/lt-$name"
- fi
- if test "X$noexename" != "X$name" ; then
- rmfiles="$rmfiles $objdir/lt-${noexename}.c"
- fi
- fi
- fi
- ;;
- esac
- func_show_eval "$RM $rmfiles" 'exit_status=1'
- done
- objdir="$origobjdir"
-
- # Try to remove the ${objdir}s in the directories where we deleted files
- for dir in $rmdirs; do
- if test -d "$dir"; then
- func_show_eval "rmdir $dir >/dev/null 2>&1"
- fi
- done
-
- exit $exit_status
-}
-
-{ test "$mode" = uninstall || test "$mode" = clean; } &&
- func_mode_uninstall ${1+"$@"}
-
-test -z "$mode" && {
- help="$generic_help"
- func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
- func_fatal_help "invalid operation mode \`$mode'"
-
-if test -n "$exec_cmd"; then
- eval exec "$exec_cmd"
- exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries. Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them. This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration. But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/m4/libtool.m4 b/m4/libtool.m4
deleted file mode 100644
index 671cde1..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,7360 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 56 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
- [m4_default([$3],
- [m4_fatal([Libtool version $1 or higher is required],
- 63)])],
- [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
- *\ * | *\ *)
- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
- case $cc_temp in
- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
- \-*) ;;
- *) break;;
- esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
-
-case $host_os in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- _LT_PATH_MAGIC
- fi
- ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
- [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
- [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
- [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME. Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
- [m4_ifval([$1], [$1], [$2])])
- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
- m4_ifval([$4],
- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
- lt_dict_add_subkey([lt_decl_dict], [$2],
- [tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
- [0], [m4_fatal([$0: too few arguments: $#])],
- [1], [m4_fatal([$0: too few arguments: $#: $1])],
- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
- [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
- m4_if([$2], [],
- m4_quote(lt_decl_varnames),
- m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'. VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly. In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-# <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-# # Some comment about what VAR is for.
-# visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
- [description])))[]dnl
-m4_pushdef([_libtool_name],
- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
- [0], [_libtool_name=[$]$1],
- [1], [_libtool_name=$lt_[]$1],
- [2], [_libtool_name=$lt_[]$1],
- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'. Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
- dnl If the libtool generation code has been placed in $CONFIG_LT,
- dnl instead of duplicating it all over again into config.status,
- dnl then we will have config.status run $CONFIG_LT later, so it
- dnl needs to know what name is stored there:
- [AC_CONFIG_COMMANDS([libtool],
- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
- dnl If the libtool generation code is destined for config.status,
- dnl expand the accumulated commands and init code now:
- [AC_CONFIG_COMMANDS([libtool],
- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
- *[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
- case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
- *[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
- lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
- ;;
-esac
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
-exec AS_MESSAGE_LOG_FD>>config.log
-{
- echo
- AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2008 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
- case $[1] in
- --version | --v* | -V )
- echo "$lt_cl_version"; exit 0 ;;
- --help | --h* | -h )
- echo "$lt_cl_help"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --quiet | --q* | --silent | --s* | -q )
- lt_cl_silent=: ;;
-
- -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
- *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
- esac
- shift
-done
-
-if $lt_cl_silent; then
- exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure. Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
- lt_cl_success=:
- test "$silent" = yes &&
- lt_config_lt_args="$lt_config_lt_args --quiet"
- exec AS_MESSAGE_LOG_FD>/dev/null
- $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
- exec AS_MESSAGE_LOG_FD>>config.log
- $lt_cl_success || AS_EXIT(1)
-fi
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars. Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
- m4_if(_LT_TAG, [C], [
- # See if we are running on zsh, and set the options which allow our
- # commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
- fi
-
- cfgfile="${ofile}T"
- trap "$RM \"$cfgfile\"; exit 1" 1 2 15
- $RM "$cfgfile"
-
- cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
- case $host_os in
- aix3*)
- cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-_LT_EOF
- ;;
- esac
-
- _LT_PROG_LTMAIN
-
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
- sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- _LT_PROG_XSI_SHELLFNS
-
- sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
- PACKAGE='$PACKAGE'
- VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
- RM='$RM'
- ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-# autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
- [C], [_LT_LANG(C)],
- [C++], [_LT_LANG(CXX)],
- [Java], [_LT_LANG(GCJ)],
- [Fortran 77], [_LT_LANG(F77)],
- [Fortran], [_LT_LANG(FC)],
- [Windows Resource], [_LT_LANG(RC)],
- [m4_ifdef([_LT_LANG_]$1[_CONFIG],
- [_LT_LANG($1)],
- [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
- [LT_SUPPORTED_TAG([$1])dnl
- m4_append([_LT_TAGS], [$1 ])dnl
- m4_define([_LT_LANG_]$1[_enabled], [])dnl
- _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [LT_LANG(CXX)],
- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
- [LT_LANG(F77)],
- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
- [LT_LANG(FC)],
- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
- [LT_LANG(GCJ)],
- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
- [LT_LANG(GCJ)],
- [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
- [LT_LANG(GCJ)],
- [m4_ifdef([AC_PROG_GCJ],
- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
- m4_ifdef([A][M_PROG_GCJ],
- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
- m4_ifdef([LT_PROG_GCJ],
- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
- [LT_LANG(RC)],
- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
- case $host_os in
- rhapsody* | darwin*)
- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
- AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
- AC_CHECK_TOOL([LIPO], [lipo], [:])
- AC_CHECK_TOOL([OTOOL], [otool], [:])
- AC_CHECK_TOOL([OTOOL64], [otool64], [:])
- _LT_DECL([], [DSYMUTIL], [1],
- [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
- _LT_DECL([], [NMEDIT], [1],
- [Tool to change global to local symbols on Mac OS X])
- _LT_DECL([], [LIPO], [1],
- [Tool to manipulate fat objects and archives on Mac OS X])
- _LT_DECL([], [OTOOL], [1],
- [ldd/readelf like tool for Mach-O binaries on Mac OS X])
- _LT_DECL([], [OTOOL64], [1],
- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
- [lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
- # By default we will add the -single_module flag. You can override
- # by either setting the environment variable LT_MULTI_MODULE
- # non-empty at configure time, or by adding -multi_module to the
- # link flags.
- rm -rf libconftest.dylib*
- echo "int foo(void){return 1;}" > conftest.c
- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
- _lt_result=$?
- if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
- lt_cv_apple_cc_single_mod=yes
- else
- cat conftest.err >&AS_MESSAGE_LOG_FD
- fi
- rm -rf libconftest.dylib*
- rm -f conftest.*
- fi])
- AC_CACHE_CHECK([for -exported_symbols_list linker flag],
- [lt_cv_ld_exported_symbols_list],
- [lt_cv_ld_exported_symbols_list=no
- save_LDFLAGS=$LDFLAGS
- echo "_main" > conftest.sym
- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
- [lt_cv_ld_exported_symbols_list=yes],
- [lt_cv_ld_exported_symbols_list=no])
- LDFLAGS="$save_LDFLAGS"
- ])
- case $host_os in
- rhapsody* | darwin1.[[012]])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
- darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- darwin*) # darwin 5.x on
- # if running on 10.5 or later, the deployment target defaults
- # to the OS version, if on x86, and 10.4, the deployment
- # target defaults to 10.4. Don't you love it?
- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- 10.[[012]]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- 10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- esac
- ;;
- esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
- _lt_dar_single_mod='$single_module'
- fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
- else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- if test "$DSYMUTIL" != ":"; then
- _lt_dsymutil='~$DSYMUTIL $lib || :'
- else
- _lt_dsymutil=
- fi
- ;;
- esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
- m4_require([_LT_REQUIRED_DARWIN_CHECKS])
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_automatic, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- _LT_TAGVAR(whole_archive_flag_spec, $1)=''
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
- case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
- *) _lt_dar_can_shared=$GCC ;;
- esac
- if test "$_lt_dar_can_shared" = "yes"; then
- output_verbose_link_cmd=echo
- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
- m4_if([$1], [CXX],
-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
- fi
-],[])
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\(.*\)$/\1/
- p
- }
- }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
- [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
- [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
- # Remove one level of quotation (which was required for Make).
- ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
- ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
- # Discard the --no-reexec flag, and continue.
- shift
-elif test "X[$]1" = X--fallback-echo; then
- # Avoid inline document here, it may be left over
- :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
- # Yippee, $ECHO works!
- :
-else
- # Restart under the correct shell.
- exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
- # used as fallback echo
- shift
- cat <<_LT_EOF
-[$]*
-_LT_EOF
- exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
- if test "X${echo_test_string+set}" != Xset; then
- # find a string as large as possible, as long as the shell can cope with it
- for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
- # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
- if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
- { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
- then
- break
- fi
- done
- fi
-
- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- :
- else
- # The Solaris, AIX, and Digital Unix default echo programs unquote
- # backslashes. This makes it impossible to quote backslashes using
- # echo "$something" | sed 's/\\/\\\\/g'
- #
- # So, first we look for a working echo in the user's PATH.
-
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for dir in $PATH /usr/ucb; do
- IFS="$lt_save_ifs"
- if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
- test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- ECHO="$dir/echo"
- break
- fi
- done
- IFS="$lt_save_ifs"
-
- if test "X$ECHO" = Xecho; then
- # We didn't find a better echo, so look for alternatives.
- if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # This shell has a builtin print -r that does the trick.
- ECHO='print -r'
- elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
- test "X$CONFIG_SHELL" != X/bin/ksh; then
- # If we have ksh, try running configure again with it.
- ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
- export ORIGINAL_CONFIG_SHELL
- CONFIG_SHELL=/bin/ksh
- export CONFIG_SHELL
- exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
- else
- # Try using printf.
- ECHO='printf %s\n'
- if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
- echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- # Cool, printf works
- :
- elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
- export CONFIG_SHELL
- SHELL="$CONFIG_SHELL"
- export SHELL
- ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
- elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
- test "X$echo_testing_string" = 'X\t' &&
- echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
- test "X$echo_testing_string" = "X$echo_test_string"; then
- ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
- else
- # maybe with a smaller string...
- prev=:
-
- for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
- if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
- then
- break
- fi
- prev="$cmd"
- done
-
- if test "$prev" != 'sed 50q "[$]0"'; then
- echo_test_string=`eval $prev`
- export echo_test_string
- exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
- else
- # Oops. We lost completely, so just stick with echo.
- ECHO=echo
- fi
- fi
- fi
- fi
- fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
- lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(lt_ECHO)
-])
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
- [An echo program that does not interpret backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
- [AS_HELP_STRING([--disable-libtool-lock],
- [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.$ac_objext` in
- *ELF-32*)
- HPUX_IA64_MODE="32"
- ;;
- *ELF-64*)
- HPUX_IA64_MODE="64"
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- if test "$lt_cv_prog_gnu_ld" = yes; then
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -melf32bsmip"
- ;;
- *N32*)
- LD="${LD-ld} -melf32bmipn32"
- ;;
- *64-bit*)
- LD="${LD-ld} -melf64bmip"
- ;;
- esac
- else
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
- fi
- fi
- rm -rf conftest*
- ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.o` in
- *32-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_i386_fbsd"
- ;;
- x86_64-*linux*)
- LD="${LD-ld} -m elf_i386"
- ;;
- ppc64-*linux*|powerpc64-*linux*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
- LD="${LD-ld} -m elf_s390"
- ;;
- sparc64-*linux*)
- LD="${LD-ld} -m elf32_sparc"
- ;;
- esac
- ;;
- *64-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_x86_64_fbsd"
- ;;
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
- ppc*-*linux*|powerpc*-*linux*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
- LD="${LD-ld} -m elf64_s390"
- ;;
- sparc*-*linux*)
- LD="${LD-ld} -m elf64_sparc"
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_LANG_PUSH(C)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
- AC_LANG_POP])
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
- fi
- ;;
-sparc*-*solaris*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.o` in
- *64-bit*)
- case $lt_cv_prog_gnu_ld in
- yes*) LD="${LD-ld} -m elf64_sparc" ;;
- *)
- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
- LD="${LD-ld} -64"
- fi
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
- [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
- case $host_os in
- openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
- ;;
- *)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
- ;;
- esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
- [Commands used to build an old-style archive])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
- [$2=no
- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$3"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- # The option is referenced via a variable to avoid confusing sed.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&AS_MESSAGE_LOG_FD
- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- $2=yes
- fi
- fi
- $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
- m4_if([$5], , :, [$5])
-else
- m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-# [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
- [$2=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $3"
- echo "$lt_simple_link_test_code" > conftest.$ac_ext
- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
- # The linker can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- # Append any errors to the config.log.
- cat conftest.err 1>&AS_MESSAGE_LOG_FD
- $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if diff conftest.exp conftest.er2 >/dev/null; then
- $2=yes
- fi
- else
- $2=yes
- fi
- fi
- $RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
- m4_if([$4], , :, [$4])
-else
- m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
- i=0
- teststring="ABCD"
-
- case $build_os in
- msdosdjgpp*)
- # On DJGPP, this test can blow up pretty badly due to problems in libc
- # (any single argument exceeding 2000 bytes causes a buffer overrun
- # during glob expansion). Even if it were fixed, the result of this
- # check would be larger than it should be.
- lt_cv_sys_max_cmd_len=12288; # 12K is about right
- ;;
-
- gnu*)
- # Under GNU Hurd, this test is not required because there is
- # no limit to the length of command line arguments.
- # Libtool will interpret -1 as no limit whatsoever
- lt_cv_sys_max_cmd_len=-1;
- ;;
-
- cygwin* | mingw* | cegcc*)
- # On Win9x/ME, this test blows up -- it succeeds, but takes
- # about 5 minutes as the teststring grows exponentially.
- # Worse, since 9x/ME are not pre-emptively multitasking,
- # you end up with a "frozen" computer, even though with patience
- # the test eventually succeeds (with a max line length of 256k).
- # Instead, let's just punt: use the minimum linelength reported by
- # all of the supported platforms: 8192 (on NT/2K/XP).
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- amigaos*)
- # On AmigaOS with pdksh, this test takes hours, literally.
- # So we just punt and use a minimum line length of 8192.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
- # This has been around since 386BSD, at least. Likely further.
- if test -x /sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
- elif test -x /usr/sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
- else
- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
- fi
- # And add a safety zone
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- ;;
-
- interix*)
- # We know the value 262144 and hardcode it with a safety zone (like BSD)
- lt_cv_sys_max_cmd_len=196608
- ;;
-
- osf*)
- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
- # nice to cause kernel panics so lets avoid the loop below.
- # First set a reasonable default.
- lt_cv_sys_max_cmd_len=16384
- #
- if test -x /sbin/sysconfig; then
- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
- *1*) lt_cv_sys_max_cmd_len=-1 ;;
- esac
- fi
- ;;
- sco3.2v5*)
- lt_cv_sys_max_cmd_len=102400
- ;;
- sysv5* | sco5v6* | sysv4.2uw2*)
- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
- if test -n "$kargmax"; then
- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
- else
- lt_cv_sys_max_cmd_len=32768
- fi
- ;;
- *)
- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
- if test -n "$lt_cv_sys_max_cmd_len"; then
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- else
- # Make teststring a little bigger before we do anything with it.
- # a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
- teststring=$teststring$teststring
- done
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
- = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- # Only check the string length outside the loop.
- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
- teststring=
- # Add a significant safety factor because C++ compilers can tack on
- # massive amounts of additional arguments before passing them to the
- # linker. It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
- fi
- ;;
- esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
- AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
- AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
- [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
- [$4]
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- /* dlclose (self); */
- }
- else
- puts (dlerror ());
-
- return status;
-}]
-_LT_EOF
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) $1 ;;
- x$lt_dlneed_uscore) $2 ;;
- x$lt_dlunknown|x*) $3 ;;
- esac
- else :
- # compilation failed
- $3
- fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- cygwin*)
- lt_cv_dlopen="dlopen"
- lt_cv_dlopen_libs=
- ;;
-
- darwin*)
- # if libdl is installed we need to link against it
- AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
- lt_cv_dlopen="dyld"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ])
- ;;
-
- *)
- AC_CHECK_FUNC([shl_load],
- [lt_cv_dlopen="shl_load"],
- [AC_CHECK_LIB([dld], [shl_load],
- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
- [AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
- [AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
- [AC_CHECK_LIB([svld], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
- [AC_CHECK_LIB([dld], [dld_link],
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
- ])
- ])
- ])
- ])
- ])
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- AC_CACHE_CHECK([whether a program can dlopen itself],
- lt_cv_dlopen_self, [dnl
- _LT_TRY_DLOPEN_SELF(
- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
- ])
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
- lt_cv_dlopen_self_static, [dnl
- _LT_TRY_DLOPEN_SELF(
- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
- ])
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
- [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
- [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
- [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
- $RM -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
- mkdir out
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- lt_compiler_flag="-o out/conftest2.$ac_objext"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&AS_MESSAGE_LOG_FD
- echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
- fi
- fi
- chmod u+w . 2>&AS_MESSAGE_LOG_FD
- $RM conftest*
- # SGI C++ compiler will create directory out/ii_files/ for
- # template instantiation
- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
- $RM out/* && rmdir out
- cd ..
- $RM -r conftest
- $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
- [Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- AC_MSG_CHECKING([if we can lock with hard links])
- hard_links=yes
- $RM conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- AC_MSG_RESULT([$hard_links])
- if test "$hard_links" = no; then
- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- lt_cv_objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
- [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
- [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
- test -n "$_LT_TAGVAR(runpath_var, $1)" ||
- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
- # We can hardcode non-existent directories.
- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
- # Linking always hardcodes the temporary library directory.
- _LT_TAGVAR(hardcode_action, $1)=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- _LT_TAGVAR(hardcode_action, $1)=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
- [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- old_striplib="$STRIP -S"
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- ;;
- *)
- AC_MSG_RESULT([no])
- ;;
- esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
- [], [
-if test "$GCC" = yes; then
- case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
- esac
- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'`
- else
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- # Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
- lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
- for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
- test -d "$lt_sys_path" && \
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
- fi
- done
- lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
- for (lt_i = NF; lt_i > 0; lt_i--) {
- if ($lt_i != "" && $lt_i != ".") {
- if ($lt_i == "..") {
- lt_count++;
- } else {
- if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
- } else {
- lt_count--;
- }
- }
- }
- }
- if (lt_foo != "") { lt_freq[[lt_foo]]++; }
- if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
- sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
-
-aix[[4-9]]*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- else
- # With GCC up to 2.95.x, collect2 would create an import file
- # for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
- aix4 | aix4.[[01]] | aix4.[[01]].*)
- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
- echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
- :
- else
- can_build_shared=no
- fi
- ;;
- esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
- # instead of lib<name>.a to let people know that these are not
- # typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
- # and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
- fi
- shlibpath_var=LIBPATH
- fi
- ;;
-
-amigaos*)
- case $host_cpu in
- powerpc)
- # Since July 2007 AmigaOS4 officially supports .so libraries.
- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- ;;
- m68k)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
- ;;
- esac
- ;;
-
-beos*)
- library_names_spec='${libname}${shared_ext}'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
-bsdi[[45]]*)
- version_type=linux
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
- version_type=windows
- shrext_cmds=".dll"
- need_version=no
- need_lib_prefix=no
-
- case $GCC,$host_os in
- yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname~
- chmod a+x \$dldir/$dlname~
- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
- fi'
- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $RM \$dlpath'
- shlibpath_overrides_runpath=yes
-
- case $host_os in
- cygwin*)
- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
- ;;
- mingw* | cegcc*)
- # MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
- # It is most probably a Windows format PATH printed by
- # mingw gcc, but we are running on Cygwin. Gcc prints its search
- # path with ; separators, and with drive letters. We can handle the
- # drive letters (cygwin fileutils understands them), so leave them,
- # especially as we might pass files found there to a mingw objdump,
- # which wouldn't understand a cygwinified path. Ahh.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- ;;
- pw32*)
- # pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
- ;;
-
- *)
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-
-darwin* | rhapsody*)
- dynamic_linker="$host_os dyld"
- version_type=darwin
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
- shlibpath_overrides_runpath=yes
- shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
- ;;
-
-dgux*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-freebsd1*)
- dynamic_linker=no
- ;;
-
-freebsd* | dragonfly*)
- # DragonFly does not have aout. When/if they implement a new
- # versioning mechanism, adjust this.
- if test -x /usr/bin/objformat; then
- objformat=`/usr/bin/objformat`
- else
- case $host_os in
- freebsd[[123]]*) objformat=aout ;;
- *) objformat=elf ;;
- esac
- fi
- version_type=freebsd-$objformat
- case $version_type in
- freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case $host_os in
- freebsd2*)
- shlibpath_overrides_runpath=yes
- ;;
- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
- *) # from 4.6 on, and DragonFly
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- esac
- ;;
-
-gnu*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- hardcode_into_libs=yes
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- case $host_cpu in
- ia64*)
- shrext_cmds='.so'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.so"
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
- else
- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
- fi
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- hppa*64*)
- shrext_cmds='.sl'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- *)
- shrext_cmds='.sl'
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
- esac
- # HP-UX runs *really* slowly unless shared libraries are mode 555.
- postinstall_cmds='chmod 555 $lib'
- ;;
-
-interix[[3-9]]*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $host_os in
- nonstopux*) version_type=nonstopux ;;
- *)
- if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux
- else
- version_type=irix
- fi ;;
- esac
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
- case $host_os in
- irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
- libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
- libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
- libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- hardcode_into_libs=yes
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
- dynamic_linker=no
- ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- # Some binutils ld are patched to set DT_RUNPATH
- save_LDFLAGS=$LDFLAGS
- save_libdir=$libdir
- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
- [shlibpath_overrides_runpath=yes])])
- LDFLAGS=$save_LDFLAGS
- libdir=$save_libdir
-
- # This implies no fast_install, which is unacceptable.
- # Some rework will be needed to allow for fast_install
- # before this can be enabled.
- hardcode_into_libs=yes
-
- # Add ABI-specific directories to the system library path.
- sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
-
- # Append ld.so.conf contents to the search path
- if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
- sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
- fi
-
- # We used to test for /lib/ld.so.1 and disable shared libraries on
- # powerpc, because MkLinux only supported shared libraries with the
- # GNU dynamic linker. Since this was broken with cross compilers,
- # most powerpc-linux boxes support dynamic linking these days and
- # people can always --disable-shared, the test was removed, and we
- # assume the GNU/Linux dynamic linker is in use.
- dynamic_linker='GNU/Linux ld.so'
- ;;
-
-netbsd*)
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
-
-newsos6)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- ;;
-
-*nto* | *qnx*)
- version_type=qnx
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='ldqnx.so'
- ;;
-
-openbsd*)
- version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
- need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[[89]] | openbsd2.[[89]].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
- else
- shlibpath_overrides_runpath=yes
- fi
- ;;
-
-os2*)
- libname_spec='$name'
- shrext_cmds=".dll"
- need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-rdos*)
- dynamic_linker=no
- ;;
-
-solaris*)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.3*)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
- need_lib_prefix=no
- runpath_var=LD_RUN_PATH
- ;;
- siemens)
- need_lib_prefix=no
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- ;;
- esac
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- version_type=freebsd-elf
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
- else
- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
- case $host_os in
- sco3.2v5*)
- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
- ;;
- esac
- fi
- sys_lib_dlsearch_path_spec='/usr/lib'
- ;;
-
-tpf*)
- # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-uts4*)
- version_type=linux
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
- [Variables whose values should be saved in libtool wrapper scripts and
- restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
- [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
- [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
- [[List of archive names. First name is the real one, the rest are links.
- The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
- [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [postinstall_cmds], [2],
- [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
- [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
- [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
- [[As "finish_cmds", except a single script fragment to be evaled but
- not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
- [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
- [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
- [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] | ?:[\\/]*])
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
-*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word. This closes a longstanding sh security hole.
- ac_dummy="m4_if([$2], , $PATH, [$2])"
- for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$1; then
- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- $EGREP "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
- ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- AC_MSG_RESULT($MAGIC_CMD)
-else
- AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
- [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
- if test -n "$ac_tool_prefix"; then
- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
- else
- MAGIC_CMD=:
- fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_ARG_WITH([gnu-ld],
- [AS_HELP_STRING([--with-gnu-ld],
- [assume the C compiler uses GNU ld @<:@default=no@:>@])],
- [test "$withval" = no || with_gnu_ld=yes],
- [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by $CC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]]* | ?:[[\\/]]*)
- re_direlt='/[[^/]][[^/]]*/\.\./'
- # Canonicalize the pathname of ld
- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
-else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- lt_cv_prog_gnu_ld=yes
- ;;
-*)
- lt_cv_prog_gnu_ld=no
- ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-# -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
- lt_cv_ld_reload_flag,
- [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
- else
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- fi
- ;;
-esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-# -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-beos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-bsdi[[45]]*)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-
-cygwin*)
- # func_win32_libid is a shell function defined in ltmain.sh
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- ;;
-
-mingw* | pw32*)
- # Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump',
- # unless we find 'file', for example because we are cross-compiling.
- if ( file / ) >/dev/null 2>&1; then
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-
-cegcc)
- # use the weaker test based on 'objdump'. See mingw*.
- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- ;;
-
-darwin* | rhapsody*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-freebsd* | dragonfly*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- case $host_cpu in
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
- esac
- else
- lt_cv_deplibs_check_method=pass_all
- fi
- ;;
-
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-hpux10.20* | hpux11*)
- lt_cv_file_magic_cmd=/usr/bin/file
- case $host_cpu in
- ia64*)
- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
- ;;
- hppa*64*)
- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
- ;;
- *)
- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
- esac
- ;;
-
-interix[[3-9]]*)
- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $LD in
- *-32|*"-32 ") libmagic=32-bit;;
- *-n32|*"-n32 ") libmagic=N32;;
- *-64|*"-64 ") libmagic=64-bit;;
- *) libmagic=never-match;;
- esac
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
- fi
- ;;
-
-newos6*)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-*nto* | *qnx*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
- fi
- ;;
-
-osf3* | osf4* | osf5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-rdos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-solaris*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv4 | sysv4.3*)
- case $host_vendor in
- motorola)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- ncr)
- lt_cv_deplibs_check_method=pass_all
- ;;
- sequent)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
- ;;
- sni)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
- siemens)
- lt_cv_deplibs_check_method=pass_all
- ;;
- pc)
- lt_cv_deplibs_check_method=pass_all
- ;;
- esac
- ;;
-
-tpf*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-esac
-])
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
- [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
- [Command to use when deplibs_check_method == "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- lt_cv_path_NM="$NM"
-else
- lt_nm_to_check="${ac_tool_prefix}nm"
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
- lt_nm_to_check="$lt_nm_to_check nm"
- fi
- for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
- */dev/null* | *'Invalid file or object type'*)
- lt_cv_path_NM="$tmp_nm -B"
- break
- ;;
- *)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
- */dev/null*)
- lt_cv_path_NM="$tmp_nm -p"
- break
- ;;
- *)
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- ;;
- esac
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
- done
- : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
-else
- # Didn't find any BSD compatible name lister, look for dumpbin.
- AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
- AC_SUBST([DUMPBIN])
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
- fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
- [lt_cv_nm_interface="BSD nm"
- echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
- (eval "$ac_compile" 2>conftest.err)
- cat conftest.err >&AS_MESSAGE_LOG_FD
- (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
- cat conftest.err >&AS_MESSAGE_LOG_FD
- (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
- cat conftest.out >&AS_MESSAGE_LOG_FD
- if $GREP 'External.*some_variable' conftest.out > /dev/null; then
- lt_cv_nm_interface="MS dumpbin"
- fi
- rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
- # These system don't have libm, or don't need it
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, cos, LIBM="-lm")
- ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
- lt_cv_prog_compiler_rtti_exceptions,
- [-fno-rtti -fno-exceptions], [],
- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
- [Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
- symcode='[[BCDT]]'
- ;;
-cygwin* | mingw* | pw32* | cegcc*)
- symcode='[[ABCDGISTW]]'
- ;;
-hpux*)
- if test "$host_cpu" = ia64; then
- symcode='[[ABCDEGRST]]'
- fi
- ;;
-irix* | nonstopux*)
- symcode='[[BCDEGRST]]'
- ;;
-osf*)
- symcode='[[BCDEGQRST]]'
- ;;
-solaris*)
- symcode='[[BDRT]]'
- ;;
-sco3.2v5*)
- symcode='[[DT]]'
- ;;
-sysv4.2uw2*)
- symcode='[[DT]]'
- ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
- symcode='[[ABDT]]'
- ;;
-sysv4)
- symcode='[[DFNSTU]]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
- symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
- ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
- symxfrm="\\1 $ac_symprfx\\2 \\2"
-
- # Write the raw and C identifiers.
- if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
- # Also find C++ and __fastcall symbols from MSVC++,
- # which start with @ or ?.
- lt_cv_sys_global_symbol_pipe="$AWK ['"\
-" {last_section=section; section=\$ 3};"\
-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-" \$ 0!~/External *\|/{next};"\
-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-" ' prfx=^$ac_symprfx]"
- else
- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
- fi
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-
- rm -f conftest*
- cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
- if AC_TRY_EVAL(ac_compile); then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<_LT_EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
- # Now generate the symbol file.
- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
- cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- void *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
- { "@PROGRAM@", (void *) 0 },
-_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
- cat <<\_LT_EOF >> conftest.$ac_ext
- {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
- lt_save_LIBS="$LIBS"
- lt_save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
- LIBS="$lt_save_LIBS"
- CFLAGS="$lt_save_CFLAGS"
- else
- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
- fi
- else
- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
- fi
- else
- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
- cat conftest.$ac_ext >&5
- fi
- rm -rf conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- lt_cv_sys_global_symbol_pipe=
- fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
- lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- AC_MSG_RESULT(failed)
-else
- AC_MSG_RESULT(ok)
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
- [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
- [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
- [lt_cv_sys_global_symbol_to_c_name_address], [1],
- [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
- [Transform the output of nm in a C name address pair when lib prefix is needed])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-AC_MSG_CHECKING([for $compiler option to produce PIC])
-m4_if([$1], [CXX], [
- # C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- m68k)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
- ;;
- esac
- ;;
-
- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- mingw* | cygwin* | os2* | pw32* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- # Although the cygwin gcc ignores -fPIC, still need this for old-style
- # (--disable-auto-import) libraries
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
- ;;
- *djgpp*)
- # DJGPP does not support shared libraries at all
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- ;;
- interix[[3-9]]*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
- fi
- ;;
- hpux*)
- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
- # sets the default TLS model and affects inlining.
- case $host_cpu in
- hppa*64*)
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- ;;
- *qnx* | *nto*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- else
- case $host_os in
- aix[[4-9]]*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- else
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
- chorus*)
- case $cc_basename in
- cxch68*)
- # Green Hills C++ Compiler
- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
- ;;
- esac
- ;;
- dgux*)
- case $cc_basename in
- ec++*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- ;;
- ghcx*)
- # Green Hills C++ Compiler
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- *)
- ;;
- esac
- ;;
- freebsd* | dragonfly*)
- # FreeBSD uses GNU C++
- ;;
- hpux9* | hpux10* | hpux11*)
- case $cc_basename in
- CC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- if test "$host_cpu" != ia64; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- fi
- ;;
- aCC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- ;;
- esac
- ;;
- *)
- ;;
- esac
- ;;
- interix*)
- # This is c89, which is MS Visual C++ (no shared libs)
- # Anyone wants to do a port?
- ;;
- irix5* | irix6* | nonstopux*)
- case $cc_basename in
- CC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- # CC pic flag -KPIC is the default.
- ;;
- *)
- ;;
- esac
- ;;
- linux* | k*bsd*-gnu)
- case $cc_basename in
- KCC*)
- # KAI C++ Compiler
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- ecpc* )
- # old Intel C++ for x86_64 which still supported -KPIC.
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- icpc* )
- # Intel C++, used to be incompatible with GCC.
- # ICC 10 doesn't accept -KPIC any more.
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- pgCC* | pgcpp*)
- # Portland Group C++ compiler
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- cxx*)
- # Compaq C++
- # Make sure the PIC flag is empty. It appears that all Alpha
- # Linux and Compaq Tru64 Unix objects are PIC.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- xlc* | xlC*)
- # IBM XL 8.0 on PPC
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C++ 5.9
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- ;;
- esac
- ;;
- esac
- ;;
- lynxos*)
- ;;
- m88k*)
- ;;
- mvs*)
- case $cc_basename in
- cxx*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
- ;;
- *)
- ;;
- esac
- ;;
- netbsd*)
- ;;
- *qnx* | *nto*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
- osf3* | osf4* | osf5*)
- case $cc_basename in
- KCC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- ;;
- RCC*)
- # Rational C++ 2.4.1
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- cxx*)
- # Digital/Compaq C++
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # Make sure the PIC flag is empty. It appears that all Alpha
- # Linux and Compaq Tru64 Unix objects are PIC.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- *)
- ;;
- esac
- ;;
- psos*)
- ;;
- solaris*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- ;;
- gcx*)
- # Green Hills C++ Compiler
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
- ;;
- *)
- ;;
- esac
- ;;
- sunos4*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.x
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- lcc*)
- # Lucid
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- *)
- ;;
- esac
- ;;
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- case $cc_basename in
- CC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- esac
- ;;
- tandem*)
- case $cc_basename in
- NCC*)
- # NonStop-UX NCC 3.20
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- ;;
- *)
- ;;
- esac
- ;;
- vxworks*)
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
- esac
- fi
-],
-[
- if test "$GCC" = yes; then
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- m68k)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
- ;;
- esac
- ;;
-
- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- # Although the cygwin gcc ignores -fPIC, still need this for old-style
- # (--disable-auto-import) libraries
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
-
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
- ;;
-
- hpux*)
- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
- # sets the default TLS model and affects inlining.
- case $host_cpu in
- hppa*64*)
- # +Z the default
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- ;;
-
- interix[[3-9]]*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
-
- msdosdjgpp*)
- # Just because we use GCC doesn't mean we suddenly get shared libraries
- # on systems that don't support them.
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- enable_shared=no
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
- fi
- ;;
-
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- else
- # PORTME Check for flag to pass linker flags through the system compiler.
- case $host_os in
- aix*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- else
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
-
- hpux9* | hpux10* | hpux11*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
- # not for PA HP-UX.
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- ;;
- esac
- # Is there a better lt_prog_compiler_static that works with the bundled CC?
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- ;;
-
- irix5* | irix6* | nonstopux*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # PIC (with -KPIC) is the default.
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
-
- linux* | k*bsd*-gnu)
- case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
- ecc*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- # icc used to be incompatible with GCC.
- # ICC 10 doesn't accept -KPIC any more.
- icc* | ifort*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- # Lahey Fortran 8.1.
- lf95*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
- ;;
- pgcc* | pgf77* | pgf90* | pgf95*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- ccc*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # All Alpha code is PIC.
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- xl*)
- # IBM XL C 8.0/Fortran 10.1 on PPC
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C 5.9
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- ;;
- *Sun\ F*)
- # Sun Fortran 8.3 passes all unrecognized flags to the linker
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
- ;;
- esac
- ;;
- esac
- ;;
-
- newsos6)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
-
- osf3* | osf4* | osf5*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # All OSF/1 code is PIC.
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
-
- rdos*)
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
-
- solaris*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- case $cc_basename in
- f77* | f90* | f95*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
- *)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
- esac
- ;;
-
- sunos4*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec ;then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
-
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- unicos*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
-
- uts4*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- *)
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
- esac
- fi
-])
-case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
- *djgpp*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
- ;;
-esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
- [How to pass a linker flag through the compiler])
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
- "" | " "*) ;;
- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
- esac],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
- [Additional compiler flags for building library objects])
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
- $lt_tmp_static_flag,
- [],
- [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
- [Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- case $host_os in
- aix[[4-9]]*)
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- ;;
- pw32*)
- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
- ;;
- cygwin* | mingw* | cegcc*)
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
- *)
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
- esac
- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-], [
- runpath_var=
- _LT_TAGVAR(allow_undefined_flag, $1)=
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(archive_cmds, $1)=
- _LT_TAGVAR(archive_expsym_cmds, $1)=
- _LT_TAGVAR(compiler_needs_object, $1)=no
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- _LT_TAGVAR(hardcode_automatic, $1)=no
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- _LT_TAGVAR(hardcode_minus_L, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- _LT_TAGVAR(inherit_rpath, $1)=no
- _LT_TAGVAR(link_all_deplibs, $1)=unknown
- _LT_TAGVAR(module_cmds, $1)=
- _LT_TAGVAR(module_expsym_cmds, $1)=
- _LT_TAGVAR(old_archive_from_new_cmds, $1)=
- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
- _LT_TAGVAR(thread_safe_flag_spec, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- # include_expsyms should be a list of space-separated symbols to be *always*
- # included in the symbol list
- _LT_TAGVAR(include_expsyms, $1)=
- # exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
- # platforms (ab)use it in PIC code, but their linkers get confused if
- # the symbol is explicitly referenced. Since portable code cannot
- # rely on this symbol name, it's probably fine to never include it in
- # preloaded symbol tables.
- # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
- extract_expsyms_cmds=
-
- case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$GCC" != yes; then
- with_gnu_ld=no
- fi
- ;;
- interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
- with_gnu_ld=yes
- ;;
- openbsd*)
- with_gnu_ld=no
- ;;
- esac
-
- _LT_TAGVAR(ld_shlibs, $1)=yes
- if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # Set some defaults for GNU ld with shared library support. These
- # are reset later if shared libraries are not supported. Putting them
- # here allows them to be overridden if necessary.
- runpath_var=LD_RUN_PATH
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- supports_anon_versioning=no
- case `$LD -v 2>&1` in
- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
- *\ 2.11.*) ;; # other 2.11 versions
- *) supports_anon_versioning=yes ;;
- esac
-
- # See if GNU ld supports shared libraries.
- case $host_os in
- aix[[3-9]]*)
- # On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
- _LT_TAGVAR(ld_shlibs, $1)=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_LT_EOF
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)=''
- ;;
- m68k)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
- esac
- ;;
-
- beos*)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
- # as there is no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-
- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- interix[[3-9]]*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
-
- gnu* | linux* | tpf* | k*bsd*-gnu)
- tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
- case $cc_basename in
- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
- esac
- fi
- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
- then
- tmp_addflag=
- tmp_sharedflag='-shared'
- case $cc_basename,$host_cpu in
- pgcc*) # Portland Group C compiler
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag'
- ;;
- pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag -Mnomain' ;;
- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
- tmp_addflag=' -i_dynamic' ;;
- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
- tmp_addflag=' -i_dynamic -nofor_main' ;;
- ifc* | ifort*) # Intel Fortran compiler
- tmp_addflag=' -nofor_main' ;;
- lf95*) # Lahey Fortran 8.1
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- tmp_sharedflag='--shared' ;;
- xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
- tmp_sharedflag='-qmkshrobj'
- tmp_addflag= ;;
- esac
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*) # Sun C 5.9
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- _LT_TAGVAR(compiler_needs_object, $1)=yes
- tmp_sharedflag='-G' ;;
- *Sun\ F*) # Sun Fortran 8.3
- tmp_sharedflag='-G' ;;
- esac
- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
- fi
-
- case $cc_basename in
- xlf*)
- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
- solaris*)
- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
- _LT_TAGVAR(ld_shlibs, $1)=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
- case `$LD -v 2>&1` in
- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
- _LT_TAGVAR(ld_shlibs, $1)=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- ;;
- *)
- # For security reasons, it is highly recommended that you always
- # use absolute paths for naming shared libraries, and exclude the
- # DT_RUNPATH tag from executables and libraries. But doing so
- # requires that you compile everything twice, which is a pain.
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- sunos4*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- wlarc=
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
-
- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
- runpath_var=
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case $host_os in
- aix3*)
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=yes
- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- _LT_TAGVAR(hardcode_direct, $1)=unsupported
- fi
- ;;
-
- aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- _LT_TAGVAR(archive_cmds, $1)=''
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
- if test "$GCC" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" &&
- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- _LT_TAGVAR(hardcode_direct, $1)=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- fi
- ;;
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to export.
- _LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
- _LT_SYS_MODULE_PATH_AIX
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
- _LT_SYS_MODULE_PATH_AIX
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- # Exported symbols can be pulled into shared objects from archives
- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- # This is similar to how AIX traditionally builds its shared libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)=''
- ;;
- m68k)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
- esac
- ;;
-
- bsdi[[45]]*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
- # FIXME: Should let the user specify the lib program.
- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
- _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- ;;
-
- darwin* | rhapsody*)
- _LT_DARWIN_LINKER_FEATURES($1)
- ;;
-
- dgux*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- freebsd1*)
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- hpux9*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(hardcode_direct, $1)=yes
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- ;;
-
- hpux10*)
- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- fi
- ;;
-
- hpux11*)
- if test "$GCC" = yes -a "$with_gnu_ld" = no; then
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
- *)
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
- esac
- fi
- ;;
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
- AC_LINK_IFELSE(int foo(void) {},
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
- )
- LDFLAGS="$save_LDFLAGS"
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(inherit_rpath, $1)=yes
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
- else
- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- newsos6)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- *nto* | *qnx*)
- ;;
-
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- else
- case $host_os in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- ;;
- esac
- fi
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- os2*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
-
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- else
- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
- # Both c and cxx compiler support -rpath directly
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
-
- solaris*)
- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
- wlarc=''
- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
- ;;
- *)
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- ;;
- esac
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- # The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
- # but is careful enough not to reorder.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
- fi
- ;;
- esac
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
- sunos4*)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- sysv4)
- case $host_vendor in
- sni)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
- ;;
- siemens)
- ## LD is ld it makes a PLAMLIB
- ## CC just makes a GrossModule.
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
- _LT_TAGVAR(hardcode_direct, $1)=no
- ;;
- motorola)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
- ;;
- esac
- runpath_var='LD_RUN_PATH'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- sysv4.3*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- _LT_TAGVAR(ld_shlibs, $1)=yes
- fi
- ;;
-
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- uts4*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- *)
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
-
- if test x$host_vendor = xsni; then
- case $host in
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
- ;;
- esac
- fi
- fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
- [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
- # Assume -lc should be added
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
- if test "$enable_shared" = yes && test "$GCC" = yes; then
- case $_LT_TAGVAR(archive_cmds, $1) in
- *'~'*)
- # FIXME: we may have to deal with multi-command sequences.
- ;;
- '$CC '*)
- # Test whether the compiler implicitly links with -lc since on some
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- AC_MSG_CHECKING([whether -lc should be explicitly linked in])
- $RM conftest*
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
- deplibs=
- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
- compiler_flags=-v
- linker_flags=-v
- verstring=
- output_objdir=.
- libname=conftest
- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
- _LT_TAGVAR(allow_undefined_flag, $1)=
- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
- then
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- else
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- fi
- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
- else
- cat conftest.err 1>&5
- fi
- $RM conftest*
- AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
- ;;
- esac
- fi
- ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
- [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
- [enable_shared_with_static_runtimes], [0],
- [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
- [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
- [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
- [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
- [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
- [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
- [Commands used to build a loadable module if different from building
- a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
- [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
- [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
- [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
- [Flag to hardcode $libdir into a binary during linking.
- This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
- [[If ld is used when linking, flag to hardcode $libdir into a binary
- during linking. This must work even if $libdir does not exist]])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
- [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
- DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
- DIR into the resulting binary and the resulting library dependency is
- "absolute", i.e impossible to change by setting ${shlibpath_var} if the
- library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
- into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
- into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
- [Set to "yes" if building a shared library automatically hardcodes DIR
- into the library and all subsequent libraries and executables linked
- against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
- [Set to yes if linker adds runtime paths of dependent libraries
- to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
- [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
- [Fix the shell variable $srcfile for the compiler])
-_LT_TAGDECL([], [always_export_symbols], [0],
- [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
- [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
- [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
- [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
- [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [file_list_spec], [1],
- [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
- _LT_COMPILER_NO_RTTI($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
- LT_SYS_DLOPEN_SELF
- _LT_CMD_STRIPLIB
-
- # Report which library types will actually be built
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
- AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
- aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- AC_MSG_RESULT([$enable_shared])
-
- AC_MSG_CHECKING([whether to build static libraries])
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
- _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
- AC_PROG_CXXCPP
-else
- _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working. Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
- # Code to be used in simple compile tests
- lt_simple_compile_test_code="int some_variable = 0;"
-
- # Code to be used in simple link tests
- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
-
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC=$CC
- lt_save_LD=$LD
- lt_save_GCC=$GCC
- GCC=$GXX
- lt_save_with_gnu_ld=$with_gnu_ld
- lt_save_path_LD=$lt_cv_path_LD
- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
- else
- $as_unset lt_cv_prog_gnu_ld
- fi
- if test -n "${lt_cv_path_LDCXX+set}"; then
- lt_cv_path_LD=$lt_cv_path_LDCXX
- else
- $as_unset lt_cv_path_LD
- fi
- test -z "${LDCXX+set}" || LD=$LDCXX
- CC=${CXX-"c++"}
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-
- if test -n "$compiler"; then
- # We don't want -fno-exception when compiling C++ code, so set the
- # no_builtin_flag separately
- if test "$GXX" = yes; then
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
- else
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
- fi
-
- if test "$GXX" = yes; then
- # Set up default GNU C++ configuration
-
- LT_PATH_LD
-
- # Check if GNU C++ uses GNU ld as the underlying linker, since the
- # archiving commands below assume that GNU ld is being used.
- if test "$with_gnu_ld" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
- # If archive_cmds runs LD, not CC, wlarc should be empty
- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
- # investigate it a little bit more. (MM)
- wlarc='${wl}'
-
- # ancient GNU ld didn't support --whole-archive et. al.
- if eval "`$CC -print-prog-name=ld` --help 2>&1" |
- $GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- else
- with_gnu_ld=no
- wlarc=
-
- # A generic and very simple default shared library creation
- # command for GNU C++ for the case where it uses the native
- # linker, instead of GNU ld. If possible, this setting should
- # overridden to take advantage of the native linker features on
- # the platform it is being used on.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- fi
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
- else
- GXX=no
- with_gnu_ld=no
- wlarc=
- fi
-
- # PORTME: fill in a description of your system's C++ link characteristics
- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
- _LT_TAGVAR(ld_shlibs, $1)=yes
- case $host_os in
- aix3*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
- for ld_flag in $LDFLAGS; do
- case $ld_flag in
- *-brtl*)
- aix_use_runtimelinking=yes
- break
- ;;
- esac
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- _LT_TAGVAR(archive_cmds, $1)=''
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
- if test "$GXX" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" &&
- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- _LT_TAGVAR(hardcode_direct, $1)=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- fi
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to
- # export.
- _LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
- # Determine the default libpath from the value encoded in an empty
- # executable.
- _LT_SYS_MODULE_PATH_AIX
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
- _LT_SYS_MODULE_PATH_AIX
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- # Exported symbols can be pulled into shared objects from archives
- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- # This is similar to how AIX traditionally builds its shared
- # libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- beos*)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- chorus*)
- case $cc_basename in
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
- # as there is no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- darwin* | rhapsody*)
- _LT_DARWIN_LINKER_FEATURES($1)
- ;;
-
- dgux*)
- case $cc_basename in
- ec++*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- ghcx*)
- # Green Hills C++ Compiler
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- freebsd[[12]]*)
- # C++ shared libraries reported to be fairly broken before
- # switch to ELF
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- freebsd-elf*)
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- ;;
-
- freebsd* | dragonfly*)
- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
- # conventions
- _LT_TAGVAR(ld_shlibs, $1)=yes
- ;;
-
- gnu*)
- ;;
-
- hpux9*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
-
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- aCC*)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
- ;;
- *)
- if test "$GXX" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- hpux10*|hpux11*)
- if test $with_gnu_ld = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- ;;
- *)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- ;;
- esac
- fi
- case $host_cpu in
- hppa*64*|ia64*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
- *)
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
- ;;
- esac
-
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- aCC*)
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
- ;;
- *)
- if test "$GXX" = yes; then
- if test $with_gnu_ld = no; then
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- fi
- else
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- interix[[3-9]]*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
- irix5* | irix6*)
- case $cc_basename in
- CC*)
- # SGI C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-
- # Archives containing C++ object files must be created using
- # "CC -ar", where "CC" is the IRIX C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
- ;;
- *)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
- fi
- fi
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
- esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(inherit_rpath, $1)=yes
- ;;
-
- linux* | k*bsd*-gnu)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
- # Archives containing C++ object files must be created using
- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
- ;;
- icpc* | ecpc* )
- # Intel C++
- with_gnu_ld=yes
- # version 8.0 and above of icpc choke on multiply defined symbols
- # if we add $predep_objects and $postdep_objects, however 7.1 and
- # earlier do not add the objects themselves.
- case `$CC -V 2>&1` in
- *"Version 7."*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- ;;
- *) # Version 8.0 or newer
- tmp_idyn=
- case $host_cpu in
- ia64*) tmp_idyn=' -i_dynamic';;
- esac
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- ;;
- esac
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- ;;
- pgCC* | pgcpp*)
- # Portland Group C++ compiler
- case `$CC -V` in
- *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*)
- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
- compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
- $RANLIB $oldlib'
- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- ;;
- *) # Version 6 will use weak symbols
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- ;;
- esac
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- ;;
- cxx*)
- # Compaq C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
- runpath_var=LD_RUN_PATH
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
- ;;
- xl*)
- # IBM XL 8.0 on PPC, with GNU ld
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
- fi
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C++ 5.9
- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
- _LT_TAGVAR(compiler_needs_object, $1)=yes
-
- # Not sure whether something based on
- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
- # would be better.
- output_verbose_link_cmd='echo'
-
- # Archives containing C++ object files must be created using
- # "CC -xar", where "CC" is the Sun C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- ;;
- esac
- ;;
- esac
- ;;
-
- lynxos*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- m88k*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- mvs*)
- case $cc_basename in
- cxx*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
- wlarc=
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- fi
- # Workaround some broken pre-1.5 toolchains
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
- ;;
-
- *nto* | *qnx*)
- _LT_TAGVAR(ld_shlibs, $1)=yes
- ;;
-
- openbsd2*)
- # C++ shared libraries are fairly broken
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- fi
- output_verbose_link_cmd=echo
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- osf3* | osf4* | osf5*)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Archives containing C++ object files must be created using
- # the KAI C++ compiler.
- case $host in
- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
- esac
- ;;
- RCC*)
- # Rational C++ 2.4.1
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- cxx*)
- case $host in
- osf3*)
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- ;;
- *)
- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- echo "-hidden">> $lib.exp~
- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
- $RM $lib.exp'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- ;;
- esac
-
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
- ;;
- *)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- case $host in
- osf3*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- ;;
- esac
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
- else
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- psos*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- sunos4*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.x
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- lcc*)
- # Lucid
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- solaris*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- # The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
- ;;
- esac
- _LT_TAGVAR(link_all_deplibs, $1)=yes
-
- output_verbose_link_cmd='echo'
-
- # Archives containing C++ object files must be created using
- # "CC -xar", where "CC" is the Sun C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- ;;
- gcx*)
- # Green Hills C++ Compiler
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
- # The C++ compiler must be used to create the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
- ;;
- *)
- # GNU C++ compiler with Solaris linker
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
- if $CC --version | $GREP -v '^2\.7' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
- else
- # g++ 2.7 appears to require `-G' NOT `-shared' on this
- # platform.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
- fi
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- ;;
- esac
- fi
- ;;
- esac
- ;;
-
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var='LD_RUN_PATH'
-
- case $cc_basename in
- CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- ;;
-
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- case $cc_basename in
- CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- ;;
-
- tandem*)
- case $cc_basename in
- NCC*)
- # NonStop-UX NCC 3.20
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- vxworks*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
-
- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
- _LT_TAGVAR(GCC, $1)="$GXX"
- _LT_TAGVAR(LD, $1)="$LD"
-
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- _LT_SYS_HIDDEN_LIBDEPS($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
- fi # test -n "$compiler"
-
- CC=$lt_save_CC
- LDCXX=$LD
- LD=$lt_save_LD
- GCC=$lt_save_GCC
- with_gnu_ld=$lt_save_with_gnu_ld
- lt_cv_path_LDCXX=$lt_cv_path_LD
- lt_cv_path_LD=$lt_save_path_LD
- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library. It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
- Foo (void) { a = 0; }
-private:
- int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
- subroutine foo
- implicit none
- integer*4 a
- a=0
- return
- end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
- subroutine foo
- implicit none
- integer a
- a=0
- return
- end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
- private int a;
- public void bar (void) {
- a = 0;
- }
-};
-_LT_EOF
-])
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
- # Parse the compiler output and extract the necessary
- # objects, libraries and library flags.
-
- # Sentinel used to keep track of whether or not we are before
- # the conftest object file.
- pre_test_object_deps_done=no
-
- for p in `eval "$output_verbose_link_cmd"`; do
- case $p in
-
- -L* | -R* | -l*)
- # Some compilers place space between "-{L,R}" and the path.
- # Remove the space.
- if test $p = "-L" ||
- test $p = "-R"; then
- prev=$p
- continue
- else
- prev=
- fi
-
- if test "$pre_test_object_deps_done" = no; then
- case $p in
- -L* | -R*)
- # Internal compiler library paths should come after those
- # provided the user. The postdeps already come after the
- # user supplied libs so there is no need to process them.
- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
- else
- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
- fi
- ;;
- # The "-l" case would never come before the object being
- # linked, so don't bother handling this case.
- esac
- else
- if test -z "$_LT_TAGVAR(postdeps, $1)"; then
- _LT_TAGVAR(postdeps, $1)="${prev}${p}"
- else
- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
- fi
- fi
- ;;
-
- *.$objext)
- # This assumes that the test object file only shows up
- # once in the compiler output.
- if test "$p" = "conftest.$objext"; then
- pre_test_object_deps_done=yes
- continue
- fi
-
- if test "$pre_test_object_deps_done" = no; then
- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
- _LT_TAGVAR(predep_objects, $1)="$p"
- else
- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
- fi
- else
- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
- _LT_TAGVAR(postdep_objects, $1)="$p"
- else
- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
- fi
- fi
- ;;
-
- *) ;; # Ignore the rest.
-
- esac
- done
-
- # Clean up.
- rm -f a.out a.exe
-else
- echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
- # Interix 3.5 installs completely hosed .la files for C++, so rather than
- # hack all around it, let's just trust "g++" to DTRT.
- _LT_TAGVAR(predep_objects,$1)=
- _LT_TAGVAR(postdep_objects,$1)=
- _LT_TAGVAR(postdeps,$1)=
- ;;
-
-linux*)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C++ 5.9
-
- # The more standards-conforming stlport4 library is
- # incompatible with the Cstd library. Avoid specifying
- # it if it's in CXXFLAGS. Ignore libCrun as
- # -library=stlport4 depends on it.
- case " $CXX $CXXFLAGS " in
- *" -library=stlport4 "*)
- solaris_use_stlport4=yes
- ;;
- esac
-
- if test "$solaris_use_stlport4" != yes; then
- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
- fi
- ;;
- esac
- ;;
-
-solaris*)
- case $cc_basename in
- CC*)
- # The more standards-conforming stlport4 library is
- # incompatible with the Cstd library. Avoid specifying
- # it if it's in CXXFLAGS. Ignore libCrun as
- # -library=stlport4 depends on it.
- case " $CXX $CXXFLAGS " in
- *" -library=stlport4 "*)
- solaris_use_stlport4=yes
- ;;
- esac
-
- # Adding this requires a known-good setup of shared libraries for
- # Sun compiler versions before 5.6, else PIC objects from an old
- # archive will be linked into the output, leading to subtle bugs.
- if test "$solaris_use_stlport4" != yes; then
- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
- fi
- ;;
- esac
- ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
- [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
- [Dependencies to place before and after the objects being linked to
- create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
- [The library search path used internally by the compiler when linking
- a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
- _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working. Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
- # Code to be used in simple compile tests
- lt_simple_compile_test_code="\
- subroutine t
- return
- end
-"
-
- # Code to be used in simple link tests
- lt_simple_link_test_code="\
- program t
- end
-"
-
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
-
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
- lt_save_GCC=$GCC
- CC=${F77-"f77"}
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
- GCC=$G77
- if test -n "$compiler"; then
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
- AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
- aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- AC_MSG_RESULT([$enable_shared])
-
- AC_MSG_CHECKING([whether to build static libraries])
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
- _LT_TAGVAR(GCC, $1)="$G77"
- _LT_TAGVAR(LD, $1)="$LD"
-
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
- fi # test -n "$compiler"
-
- GCC=$lt_save_GCC
- CC="$lt_save_CC"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
- _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working. Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
- # Code to be used in simple compile tests
- lt_simple_compile_test_code="\
- subroutine t
- return
- end
-"
-
- # Code to be used in simple link tests
- lt_simple_link_test_code="\
- program t
- end
-"
-
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
-
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
- lt_save_GCC=$GCC
- CC=${FC-"f95"}
- compiler=$CC
- GCC=$ac_cv_fc_compiler_gnu
-
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-
- if test -n "$compiler"; then
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
- AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
- aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- AC_MSG_RESULT([$enable_shared])
-
- AC_MSG_CHECKING([whether to build static libraries])
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
- _LT_TAGVAR(LD, $1)="$LD"
-
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- _LT_SYS_HIDDEN_LIBDEPS($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
- fi # test -n "$compiler"
-
- GCC=$lt_save_GCC
- CC="$lt_save_CC"
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
- _LT_COMPILER_NO_RTTI($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC="$lt_save_CC"
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
- :
- _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
- [AC_CHECK_TOOL(GCJ, gcj,)
- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
- AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible. Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
- [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into #
-# GNU Autoconf as AC_PROG_SED. When it is available in #
-# a released version of Autoconf we should remove this #
-# macro and use it instead. #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for lt_ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
- fi
- done
- done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
- test ! -f $lt_ac_sed && continue
- cat /dev/null > conftest.in
- lt_ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >conftest.in
- # Check for GNU sed and select it if it is found.
- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
- lt_cv_path_SED=$lt_ac_sed
- break
- fi
- while true; do
- cat conftest.in conftest.in >conftest.tmp
- mv conftest.tmp conftest.in
- cp conftest.in conftest.nl
- echo >>conftest.nl
- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
- cmp -s conftest.out conftest.nl || break
- # 10000 chars as input seems more than enough
- test $lt_ac_count -gt 10 && break
- lt_ac_count=`expr $lt_ac_count + 1`
- if test $lt_ac_count -gt $lt_ac_max; then
- lt_ac_max=$lt_ac_count
- lt_cv_path_SED=$lt_ac_sed
- fi
- done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- lt_unset=unset
-else
- lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
- lt_SP2NL='tr \040 \012'
- lt_NL2SP='tr \015\012 \040\040'
- ;;
- *) # EBCDIC based system
- lt_SP2NL='tr \100 \n'
- lt_NL2SP='tr \r\n \100\100'
- ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
-}
-
-# func_basename file
-func_basename ()
-{
- func_basename_result="${1##*/}"
-}
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-# dirname: Compute the dirname of FILE. If nonempty,
-# add APPEND to the result, otherwise set result
-# to NONDIR_REPLACEMENT.
-# value returned in "$func_dirname_result"
-# basename: Compute filename of FILE.
-# value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
- # positional parameters, so assign one to ordinary parameter first.
- func_stripname_result=${3}
- func_stripname_result=${func_stripname_result#"${1}"}
- func_stripname_result=${func_stripname_result%"${2}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=${1%%=*}
- func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=${#1}
-}
-
-_LT_EOF
- ;;
- *) # Bourne compatible functions.
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- # Extract subdirectory from the argument.
- func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
-}
-
-# func_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
- case ${2} in
- .*) func_stripname_result=`$ECHO "X${3}" \
- | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "X${3}" \
- | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
- esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
- func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
- func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
- yes)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$[1]+=\$[2]"
-}
-_LT_EOF
- ;;
- *)
- cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
- ;;
- esac
-])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 34151a3..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,368 +0,0 @@
-# Helper functions for option handling. -*- Autoconf -*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it. Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
- _LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
- [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME. If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
- dnl
- dnl Simply set some default values (i.e off) if boolean options were not
- dnl specified:
- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
- ])
- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
- ])
- dnl
- dnl If no reference was made to various pairs of opposing options, then
- dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
- dnl archives by default:
- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
- ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS], [0], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
- _LT_DECL([build_libtool_libs], [enable_shared], [0],
- [Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
- _LT_DECL([build_old_libs], [enable_static], [0],
- [Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
- [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
- [AS_HELP_STRING([--with-pic],
- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [pic_mode="$withval"],
- [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
- [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
- [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
- [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
- [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
- [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
deleted file mode 100644
index 9000a05..0000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
- [$#], [2], [[$2]],
- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
- [$#], 1, [],
- [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
- [m4_foreach([_Lt_suffix],
- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
- [lt_append([$1], [$2], [$3])$4],
- [$5])],
- [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
- [$5],
- [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
- [lt_join(m4_quote(m4_default([$4], [[, ]])),
- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
deleted file mode 100644
index b8e154f..0000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers -*- Autoconf -*-
-#
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# Generated from ltversion.in.
-
-# serial 3012 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
deleted file mode 100644
index 637bb20..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 4 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else. This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff --git a/missing b/missing
deleted file mode 100755
index 28055d2..0000000
--- a/missing
+++ /dev/null
@@ -1,376 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
-fi
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- # Exit code 63 means version mismatch. This often happens
- # when the user try to use an ancient version of a tool on
- # a file that requires a minimum version. In this case we
- # we should proceed has if the program had been absent, or
- # if --run hadn't been passed.
- if test $? = 63; then
- run=:
- msg="probably too old"
- fi
- ;;
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- autom4te touch the output file, or create a stub one
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
- exit $?
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing $scriptversion (GNU Automake)"
- exit $?
- ;;
-
- -*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
- ;;
-
-esac
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
-# Now exit if we have it, but it failed. Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program). This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
- lex*|yacc*)
- # Not GNU programs, they don't have --version.
- ;;
-
- tar*)
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- exit 1
- fi
- ;;
-
- *)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
- # Could not run --version or --help. This is probably someone
- # running `$TOOL --version' or `$TOOL --help' to check whether
- # $TOOL exists and not knowing $TOOL uses missing.
- exit 1
- fi
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
- aclocal*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case $f in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te*)
- echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
- You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison*|yacc*)
- echo 1>&2 "\
-WARNING: \`$1' $msg. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if test $# -ne 1; then
- eval LASTARG="\${$#}"
- case $LASTARG in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if test ! -f y.tab.h; then
- echo >y.tab.h
- fi
- if test ! -f y.tab.c; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex*|flex*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if test $# -ne 1; then
- eval LASTARG="\${$#}"
- case $LASTARG in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if test -f "$SRCFILE"; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if test ! -f lex.yy.c; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit $?
- fi
- ;;
-
- makeinfo*)
- echo 1>&2 "\
-WARNING: \`$1' is $msg. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- # The file to touch is that specified with -o ...
- file=`echo "$*" | sed -n "$sed_output"`
- test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
- if test -z "$file"; then
- # ... or it is the one specified with @setfilename ...
- infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '
- /^@setfilename/{
- s/.* \([^ ]*\) *$/\1/
- p
- q
- }' $infile`
- # ... or it is derived from the source name (dir/f.texi becomes f.info)
- test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
- fi
- # If the file does not exist, the user really needs makeinfo;
- # let's fail without touching anything.
- test -f $file || exit 1
- touch $file
- ;;
-
- tar*)
- shift
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case $firstarg in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case $firstarg in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
- You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequisites for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/src/.cvsignore b/src/.cvsignore
new file mode 100644
index 0000000..258abdf
--- /dev/null
+++ b/src/.cvsignore
@@ -0,0 +1,14 @@
+libmtp.h
+libmtp.la
+gphoto2-endian.h
+libptp-stdint.h
+_stdint.h
+Makefile.in
+Makefile
+.deps
+.libs
+*.gphoto2
+*.lo
+*.loT
+*.orig
+
diff --git a/src/Makefile.am b/src/Makefile.am
index bd10139..05cf170 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,7 +30,7 @@ EXTRA_DIST=libmtp.h.in libmtp.sym ptp-pack.c
# ---------------------------------------------------------------------------
CURRENT=11
AGE=3
-REVISION=1
+REVISION=0
SOVERSION=$(CURRENT):$(REVISION):$(AGE)
LT_CURRENT_MINUS_AGE=`expr $(CURRENT) - $(AGE)`
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index 3b294c0..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,616 +0,0 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src
-DIST_COMMON = README $(include_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/libmtp.h.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/byteorder.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = libmtp.h
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-am_libmtp_la_OBJECTS = libmtp.lo unicode.lo util.lo playlist-spl.lo \
- libusb-glue.lo ptp.lo
-libmtp_la_OBJECTS = $(am_libmtp_la_OBJECTS)
-libmtp_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libmtp_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libmtp_la_SOURCES)
-DIST_SOURCES = $(libmtp_la_SOURCES)
-DATA = $(noinst_DATA)
-HEADERS = $(include_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GREP = @GREP@
-HAVE_DOXYGEN = @HAVE_DOXYGEN@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OSFLAGS = @OSFLAGS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-ms_lib_exe = @ms_lib_exe@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-lib_LTLIBRARIES = libmtp.la
-libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h playlist-spl.c \
- libusb-glue.c libusb-glue.h \
- gphoto2-endian.h libptp-stdint.h ptp.c ptp.h \
- music-players.h device-flags.h playlist-spl.h
-
-include_HEADERS = libmtp.h
-EXTRA_DIST = libmtp.h.in libmtp.sym ptp-pack.c
-
-# ---------------------------------------------------------------------------
-# Advanced information about versioning:
-# * "Writing shared libraries" by Mike Hearn
-# http://navi.cx/~mike/writing-shared-libraries.html
-# * libtool.info chapter "Versioning"
-# * libtool.info chapter "Updating library version information"
-# ---------------------------------------------------------------------------
-# Versioning:
-# - CURRENT (Major): Increment if the interface has changes. AGE is always
-# *changed* at the same time.
-# - AGE (Micro): Increment if any interfaces have been added; set to 0
-# if any interfaces have been removed. Removal has
-# precedence over adding, so set to 0 if both happened.
-# It denotes upward compatibility.
-# - REVISION (Minor): Increment any time the source changes; set to
-# 0 if you incremented CURRENT.
-#
-# To summarize. Any interface *change* increment CURRENT. If that interface
-# change does not break upward compatibility (ie it is an addition),
-# increment AGE, Otherwise AGE is reset to 0. If CURRENT has changed,
-# REVISION is set to 0, otherwise REVISION is incremented.
-# ---------------------------------------------------------------------------
-CURRENT = 11
-AGE = 3
-REVISION = 1
-SOVERSION = $(CURRENT):$(REVISION):$(AGE)
-LT_CURRENT_MINUS_AGE = `expr $(CURRENT) - $(AGE)`
-@COMPILE_MINGW32_TRUE@W32_LIBS = -lws2_32
-@COMPILE_MINGW32_TRUE@W32_LDFLAGS = -export-dynamic
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@noinst_DATA = libmtp.lib
-libmtp_la_LDFLAGS = @LDFLAGS@ -no-undefined -export-symbols $(srcdir)/libmtp.sym -version-info $(SOVERSION) $(W32_LDFLAGS)
-libmtp_la_LIBADD = $(W32_LIBS) $(LTLIBICONV)
-libmtp_la_DEPENDENCIES = $(srcdir)/libmtp.sym
-DISTCLEANFILES = _stdint.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-libmtp.h: $(top_builddir)/config.status $(srcdir)/libmtp.h.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
- }
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libmtp.la: $(libmtp_la_OBJECTS) $(libmtp_la_DEPENDENCIES)
- $(libmtp_la_LINK) -rpath $(libdir) $(libmtp_la_OBJECTS) $(libmtp_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libusb-glue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/playlist-spl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
- @$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
- @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
- $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
- done
-
-uninstall-includeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-@COMPILE_MINGW32_FALSE@install-data-local:
-@MS_LIB_EXE_FALSE@install-data-local:
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-data-local install-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libLTLIBRARIES clean-libtool ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-data-local install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am \
- install-includeHEADERS install-info install-info-am \
- install-libLTLIBRARIES install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-includeHEADERS \
- uninstall-libLTLIBRARIES
-
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@libmtp.def: $(srcdir)/libmtp.sym
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ echo "LIBRARY \"@PACKAGE@\"" > libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ echo "DESCRIPTION \"Media Transfer Protocol (MTP) library\"" >> libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ echo "VERSION @VERSION@" >> libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ echo >> libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ echo "EXPORTS" >> libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ cat $< >> libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@libmtp.lib: libmtp.la libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ lib -name:libmtp-$(LT_CURRENT_MINUS_AGE).dll -def:libmtp.def -out:$@
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@install-data-local: libmtp.lib libmtp.def
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ $(INSTALL) libmtp.def $(DESTDIR)$(libdir)
-@COMPILE_MINGW32_TRUE@@MS_LIB_EXE_TRUE@ $(INSTALL) libmtp.lib $(DESTDIR)$(libdir)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/gphoto2-endian-intel.h b/src/gphoto2-endian-intel.h
deleted file mode 100644
index 89f84f6..0000000
--- a/src/gphoto2-endian-intel.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* This file is generated automatically by configure */
-/* It is valid only for the system type i386-apple-darwin10.4.0 */
-
-#ifndef __BYTEORDER_H
-#define __BYTEORDER_H
-
-/* ntohl and relatives live here */
-#include <arpa/inet.h>
-
-/* Define generic byte swapping functions */
-#include <machine/byte_order.h>
-#define swap16(x) NXSwapShort(x)
-#define swap32(x) NXSwapLong(x)
-#define swap64(x) NXSwapLongLong(x)
-
-/* The byte swapping macros have the form: */
-/* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */
-/* le (little-endian), NN is 16 or 32 (number of bits) and a, */
-/* if present, indicates that the endian side is a pointer to an */
-/* array of uint8_t bytes instead of an integer of the specified length. */
-/* h refers to the host's ordering method. */
-
-/* So, to convert a 32-bit integer stored in a buffer in little-endian */
-/* format into a uint32_t usable on this machine, you could use: */
-/* uint32_t value = le32atoh(&buf[3]); */
-/* To put that value back into the buffer, you could use: */
-/* htole32a(&buf[3], value); */
-
-/* Define aliases for the standard byte swapping macros */
-/* Arguments to these macros must be properly aligned on natural word */
-/* boundaries in order to work properly on all architectures */
-#ifndef htobe16
-# define htobe16(x) htons(x)
-#endif
-#ifndef htobe32
-# define htobe32(x) htonl(x)
-#endif
-#ifndef be16toh
-# define be16toh(x) ntohs(x)
-#endif
-#ifndef be32toh
-# define be32toh(x) ntohl(x)
-#endif
-
-#define HTOBE16(x) (x) = htobe16(x)
-#define HTOBE32(x) (x) = htobe32(x)
-#define BE32TOH(x) (x) = be32toh(x)
-#define BE16TOH(x) (x) = be16toh(x)
-
-/* On little endian machines, these macros are null */
-#ifndef htole16
-# define htole16(x) (x)
-#endif
-#ifndef htole32
-# define htole32(x) (x)
-#endif
-#ifndef htole64
-# define htole64(x) (x)
-#endif
-#ifndef le16toh
-# define le16toh(x) (x)
-#endif
-#ifndef le32toh
-# define le32toh(x) (x)
-#endif
-#ifndef le64toh
-# define le64toh(x) (x)
-#endif
-
-#define HTOLE16(x) (void) (x)
-#define HTOLE32(x) (void) (x)
-#define HTOLE64(x) (void) (x)
-#define LE16TOH(x) (void) (x)
-#define LE32TOH(x) (void) (x)
-#define LE64TOH(x) (void) (x)
-
-/* These don't have standard aliases */
-#ifndef htobe64
-# define htobe64(x) swap64(x)
-#endif
-#ifndef be64toh
-# define be64toh(x) swap64(x)
-#endif
-
-#define HTOBE64(x) (x) = htobe64(x)
-#define BE64TOH(x) (x) = be64toh(x)
-
-/* Define the C99 standard length-specific integer types */
-#include <stdint.h>
-
-/* Here are some macros to create integers from a byte array */
-/* These are used to get and put integers from/into a uint8_t array */
-/* with a specific endianness. This is the most portable way to generate */
-/* and read messages to a network or serial device. Each member of a */
-/* packet structure must be handled separately. */
-
-/* The i386 and compatibles can handle unaligned memory access, */
-/* so use the optimized macros above to do this job */
-#ifndef be16atoh
-# define be16atoh(x) be16toh(*(uint16_t*)(x))
-#endif
-#ifndef be32atoh
-# define be32atoh(x) be32toh(*(uint32_t*)(x))
-#endif
-#ifndef be64atoh
-# define be64atoh(x) be64toh(*(uint64_t*)(x))
-#endif
-#ifndef le16atoh
-# define le16atoh(x) le16toh(*(uint16_t*)(x))
-#endif
-#ifndef le32atoh
-# define le32atoh(x) le32toh(*(uint32_t*)(x))
-#endif
-#ifndef le64atoh
-# define le64atoh(x) le64toh(*(uint64_t*)(x))
-#endif
-
-#ifndef htob16a
-# define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x)
-#endif
-#ifndef htobe32a
-# define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x)
-#endif
-#ifndef htobe64a
-# define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x)
-#endif
-#ifndef htole16a
-# define htole16a(a,x) *(uint16_t*)(a) = htole16(x)
-#endif
-#ifndef htole32a
-# define htole32a(a,x) *(uint32_t*)(a) = htole32(x)
-#endif
-#ifndef htole64a
-# define htole64a(a,x) *(uint64_t*)(a) = htole64(x)
-#endif
-
-#endif /*__BYTEORDER_H*/
diff --git a/src/gphoto2-endian-ppc.h b/src/gphoto2-endian-ppc.h
deleted file mode 100644
index 6ff07cc..0000000
--- a/src/gphoto2-endian-ppc.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* This file is generated automatically by configure */
-/* It is valid only for the system type powerpc-apple-darwin9.8.0 */
-
-#ifndef __BYTEORDER_H
-#define __BYTEORDER_H
-
-/* ntohl and relatives live here */
-#include <arpa/inet.h>
-
-/* Define generic byte swapping functions */
-#include <machine/byte_order.h>
-#define swap16(x) NXSwapShort(x)
-#define swap32(x) NXSwapLong(x)
-#define swap64(x) NXSwapLongLong(x)
-
-/* The byte swapping macros have the form: */
-/* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */
-/* le (little-endian), NN is 16 or 32 (number of bits) and a, */
-/* if present, indicates that the endian side is a pointer to an */
-/* array of uint8_t bytes instead of an integer of the specified length. */
-/* h refers to the host's ordering method. */
-
-/* So, to convert a 32-bit integer stored in a buffer in little-endian */
-/* format into a uint32_t usable on this machine, you could use: */
-/* uint32_t value = le32atoh(&buf[3]); */
-/* To put that value back into the buffer, you could use: */
-/* htole32a(&buf[3], value); */
-
-/* Define aliases for the standard byte swapping macros */
-/* Arguments to these macros must be properly aligned on natural word */
-/* boundaries in order to work properly on all architectures */
-#ifndef htobe16
-# define htobe16(x) htons(x)
-#endif
-#ifndef htobe32
-# define htobe32(x) htonl(x)
-#endif
-#ifndef be16toh
-# define be16toh(x) ntohs(x)
-#endif
-#ifndef be32toh
-# define be32toh(x) ntohl(x)
-#endif
-
-#define HTOBE16(x) (x) = htobe16(x)
-#define HTOBE32(x) (x) = htobe32(x)
-#define BE32TOH(x) (x) = be32toh(x)
-#define BE16TOH(x) (x) = be16toh(x)
-
-/* Define our own extended byte swapping macros for big-endian machines */
-#ifndef htole16
-# define htole16(x) swap16(x)
-#endif
-#ifndef htole32
-# define htole32(x) swap32(x)
-#endif
-#ifndef le16toh
-# define le16toh(x) swap16(x)
-#endif
-#ifndef le32toh
-# define le32toh(x) swap32(x)
-#endif
-#ifndef le64toh
-# define le64toh(x) swap64(x)
-#endif
-
-#ifndef htobe64
-# define htobe64(x) (x)
-#endif
-#ifndef be64toh
-# define be64toh(x) (x)
-#endif
-
-#define HTOLE16(x) (x) = htole16(x)
-#define HTOLE32(x) (x) = htole32(x)
-#define LE16TOH(x) (x) = le16toh(x)
-#define LE32TOH(x) (x) = le32toh(x)
-#define LE64TOH(x) (x) = le64toh(x)
-
-#define HTOBE64(x) (void) (x)
-#define BE64TOH(x) (void) (x)
-
-/* Define the C99 standard length-specific integer types */
-#include <stdint.h>
-
-/* Here are some macros to create integers from a byte array */
-/* These are used to get and put integers from/into a uint8_t array */
-/* with a specific endianness. This is the most portable way to generate */
-/* and read messages to a network or serial device. Each member of a */
-/* packet structure must be handled separately. */
-
-/* Non-optimized but portable macros */
-#define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1]))
-#define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3]))
-#define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<<shift)
-#define be64atoh(x) ((uint64_t)(be64atoh_x(x,0,56)|be64atoh_x(x,1,48)|be64atoh_x(x,2,40)| \
- be64atoh_x(x,3,32)|be64atoh_x(x,4,24)|be64atoh_x(x,5,16)|be64atoh_x(x,6,8)|((x)[7])))
-#define le16atoh(x) ((uint16_t)(((x)[1]<<8)|(x)[0]))
-#define le32atoh(x) ((uint32_t)(((x)[3]<<24)|((x)[2]<<16)|((x)[1]<<8)|(x)[0]))
-#define le64atoh_x(x,off,shift) (((uint64_t)(x)[off])<<shift)
-#define le64atoh(x) ((uint64_t)(le64atoh_x(x,7,56)|le64atoh_x(x,6,48)|le64atoh_x(x,5,40)| \
- le64atoh_x(x,4,32)|le64atoh_x(x,3,24)|le64atoh_x(x,2,16)|le64atoh_x(x,1,8)|((x)[0])))
-
-#define htobe16a(a,x) (a)[0]=(uint8_t)((x)>>8), (a)[1]=(uint8_t)(x)
-#define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \
- (a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x)
-#define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \
- (a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \
- (a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \
- (a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x)
-#define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-#define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \
- (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-#define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \
- (a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \
- (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \
- (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-
-#endif /*__BYTEORDER_H*/
diff --git a/src/gphoto2-endian.h b/src/gphoto2-endian.h
deleted file mode 100644
index 90cdeae..0000000
--- a/src/gphoto2-endian.h
+++ /dev/null
@@ -1,7 +0,0 @@
-/* added 10/26/2010 to deal with both archs on Mac */
-
-#ifdef __BIG_ENDIAN__
-#include "gphoto2-endian-ppc.h"
-#else
-#include "gphoto2-endian-intel.h"
-#endif
diff --git a/src/gphoto2-sync.sh b/src/gphoto2-sync.sh
new file mode 100755
index 0000000..43115ca
--- /dev/null
+++ b/src/gphoto2-sync.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+#set -e
+
+srcdir=`dirname $0`
+
+# Get sources from gphoto2 SVN
+WGET=`which wget`
+if [ "x$WGET" != "x" ]; then
+ wget -O tmpfile http://gphoto.svn.sourceforge.net/viewvc/*checkout*/gphoto/trunk/libgphoto2/camlibs/ptp2/ptp.c
+ mv tmpfile ptp.c.gphoto2
+ wget -O tmpfile http://gphoto.svn.sourceforge.net/viewvc/*checkout*/gphoto/trunk/libgphoto2/camlibs/ptp2/ptp.h
+ mv tmpfile ptp.h.gphoto2
+ wget -O tmpfile http://gphoto.svn.sourceforge.net/viewvc/*checkout*/gphoto/trunk/libgphoto2/camlibs/ptp2/ptp-pack.c
+ mv tmpfile ptp-pack.c.gphoto2
+ wget -O tmpfile http://gphoto.svn.sourceforge.net/viewvc/*checkout*/gphoto/trunk/libgphoto2/camlibs/ptp2/library.c
+ mv tmpfile library.c.gphoto2
+ wget -O tmpfile http://gphoto.svn.sourceforge.net/viewvc/*checkout*/gphoto/trunk/libgphoto2/camlibs/ptp2/music-players.h
+ mv tmpfile music-players.h.gphoto2
+else
+ echo "Could not sync to gphoto2. No WGET."
+fi
+
+echo "Finished!"
+
diff --git a/src/libmtp.c b/src/libmtp.c
index 8c86cde..d6d4474 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -91,7 +91,6 @@ static filemap_t *filemap = NULL;
// This holds the global property mapping table
static propertymap_t *propertymap = NULL;
-static int load_cache_on_demand = 0;
/*
* Forward declarations of local (static) functions.
*/
@@ -319,7 +318,6 @@ static int register_filetype(char const * const description, LIBMTP_filetype_t c
static void init_filemap()
{
- register_filetype("Folder", LIBMTP_FILETYPE_FOLDER, PTP_OFC_Association);
register_filetype("MediaCard", LIBMTP_FILETYPE_MEDIACARD, PTP_OFC_MTP_MediaCard);
register_filetype("RIFF WAVE file", LIBMTP_FILETYPE_WAV, PTP_OFC_WAV);
register_filetype("ISO MPEG-1 Audio Layer 3", LIBMTP_FILETYPE_MP3, PTP_OFC_MP3);
@@ -2111,18 +2109,6 @@ void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t *device)
}
}
-void LIBMTP_Set_Device_Timeout(LIBMTP_mtpdevice_t *device, int milliseconds)
-{
- PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
- set_usb_device_timeout(ptp_usb, milliseconds);
-}
-
-void LIBMTP_Get_Device_Timeout(LIBMTP_mtpdevice_t *device, int * milliseconds)
-{
- PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
- get_usb_device_timeout(ptp_usb, milliseconds);
-}
-
/**
* This command gets all handles and stuff by FAST directory retrieveal
* which is available by getting all metadata for object
@@ -2310,224 +2296,6 @@ static void get_handles_recursively(LIBMTP_mtpdevice_t *device,
free(currentHandles.Handler);
}
-
-LIBMTP_file_t * obj2file(LIBMTP_mtpdevice_t *device, PTPObject *ob)
-{
- PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
- PTPParams *params = (PTPParams *) device->params;
- LIBMTP_file_t *file;
- PTPObject *xob;
- uint16_t ret;
-
-
- if (ob->oi.Filename == NULL)
- ob->oi.Filename = strdup("<null>");
-
- if (ob->oi.Keywords == NULL)
- ob->oi.Keywords = strdup("<null>");
-
- // Allocate a new file type
- file = LIBMTP_new_file_t();
-
- file->parent_id = ob->oi.ParentObject;
- file->storage_id = ob->oi.StorageID;
-
- // This is some sort of unique ID so we can keep track of the track.
- file->item_id = ob->oid;
-
- // Set the filetype
- file->filetype = map_ptp_type_to_libmtp_type(ob->oi.ObjectFormat);
-
- // Set the modification date
- file->modificationdate = ob->oi.ModificationDate;
-
- // Original file-specific properties
- // We only have 32-bit file size here; if we find it, we use the
- // PTP_OPC_ObjectSize property which has 64bit precision.
- file->filesize = ob->oi.ObjectCompressedSize;
- if (ob->oi.Filename != NULL) {
- file->filename = strdup(ob->oi.Filename);
- }
-
- /*
- * A special quirk for devices that doesn't quite
- * remember that some files marked as "unknown" type are
- * actually OGG or FLAC files. We look at the filename extension
- * and see if it happens that this was atleast named "ogg" or "flac"
- * and fall back on this heuristic approach in that case,
- * for these bugged devices only.
- */
- if (file->filetype == LIBMTP_FILETYPE_UNKNOWN) {
- if ((FLAG_IRIVER_OGG_ALZHEIMER(ptp_usb) ||
- FLAG_OGG_IS_UNKNOWN(ptp_usb)) &&
- has_ogg_extension(file->filename))
-
- file->filetype = LIBMTP_FILETYPE_OGG;
-
- if (FLAG_FLAC_IS_UNKNOWN(ptp_usb) && has_flac_extension(file->filename))
- file->filetype = LIBMTP_FILETYPE_FLAC;
- }
-
- /*
- * If we have a cached, large set of metadata, then use it!
- */
- ret = ptp_object_want (params, ob->oid, PTPOBJECT_MTPPROPLIST_LOADED, &xob);
- if (ob->mtpprops) {
- MTPProperties *prop = ob->mtpprops;
- int i;
-
- for (i=0;i<ob->nrofmtpprops;i++) {
- // Pick ObjectSize here...
- if (prop->property == PTP_OPC_ObjectSize) {
- if (device->object_bitsize == 64) {
- file->filesize = prop->propval.u64;
- } else {
- file->filesize = prop->propval.u32;
- }
- break;
- }
- prop++;
- }
- } else {
- uint16_t *props = NULL;
- uint32_t propcnt = 0;
-
- // First see which properties can be retrieved for this object format
- ret = ptp_mtp_getobjectpropssupported(params, ob->oi.ObjectFormat, &propcnt, &props);
- if (ret != PTP_RC_OK) {
- add_ptp_error_to_errorstack(device, ret, "obj2file(): call to ptp_mtp_getobjectpropssupported() failed.");
- // Silently fall through.
- } else {
- int i;
- for (i=0;i<propcnt;i++) {
-
-/*
- TODO: (yavor) See what is a sensible thing to do for Folders
- if (ob->oi.ObjectFormat == PTP_OFC_Association)
-*/
- switch (props[i]) {
- case PTP_OPC_ObjectSize:
- if (device->object_bitsize == 64) {
- file->filesize = get_u64_from_object(device, file->item_id, PTP_OPC_ObjectSize, 0);
- } else {
- file->filesize = get_u32_from_object(device, file->item_id, PTP_OPC_ObjectSize, 0);
- }
- break;
- default:
- break;
- }
- }
- free(props);
- }
- }
-
- return file;
-}
-
-
-
-static LIBMTP_file_t * get_files(LIBMTP_mtpdevice_t *device,
- PTPParams *params,
- uint32_t storageid,
- uint32_t parentId
- )
-{
- int i = 0;
- LIBMTP_file_t *curfile = NULL;
- LIBMTP_file_t *retfiles = NULL;
- PTPObjectHandles currentHandles;
-
- uint16_t ret = ptp_getobjecthandles(params,
- storageid,
- PTP_GOH_ALL_FORMATS,
- parentId,
- &currentHandles);
-
- if (ret != PTP_RC_OK) {
- add_ptp_error_to_errorstack(device, ret, "get_files(): could not get object handles.");
- return NULL;
- }
-
- if (currentHandles.Handler == NULL || currentHandles.n == 0)
- return NULL;
-
- for (i = 0; i < currentHandles.n; i++) {
- PTPObject *ob;
- LIBMTP_file_t *file;
-
- ret = ptp_object_want(params, currentHandles.Handler[i],PTPOBJECT_OBJECTINFO_LOADED, &ob);
- if (ret != PTP_RC_OK)
- return NULL;
-
- file = obj2file(device, ob);
-
- if (file == NULL)
- continue;
-
- // Add track to a list that will be returned afterwards.
- if (curfile == NULL) {
- curfile = file;
- retfiles = file;
- } else {
- curfile->next = file;
- curfile = file;
- }
- }
-
- free(currentHandles.Handler);
-
- // Return a pointer to the original first file
- // in the big list.
- return retfiles;
-}
-
-/**
- * This function controls the usage of the internal object cache.
- * The default configuration loads all object handles on initialization.
- * In order to handle large number of files turn on the on demand
- * loading by calling this function with parameter 1, and use
- * LIBMTP_Get_Files_And_Folders() to load content when needed.
- *
- * @param flag - 0 means turn off on demand loading.
- * - 1 means turn on on demand loading.
- */
-void LIBMTP_Set_Load_Cache_On_Demand(int flag)
-{
- load_cache_on_demand = flag;
-}
-
-/**
- * This function retrieves the content of a folder with id - parentId.
- * The result contains both files and folders.
- * NOTE: the request will always perform I/O with the device.
- * @param device a pointer to the MTP device to report info from.
- * @storageId the id for the storage.
- * @param parentId the parent folder id.
- */
-LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *device, uint32_t storageId, uint32_t parentId)
-{
- LIBMTP_file_t *retfiles = NULL;
- PTPParams *params = (PTPParams *) device->params;
- PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
- int ret;
- uint32_t i;
-
-#if 0
- //TODO: (yavor) Try to use get_all_metadata_fast for a parendId.
- if (ptp_operation_issupported(params,PTP_OC_MTP_GetObjPropList)
- && !FLAG_BROKEN_MTPGETOBJPROPLIST(ptp_usb)
- && !FLAG_BROKEN_MTPGETOBJPROPLIST_ALL(ptp_usb)) {
- // Use the fast method. Ignore return value for now.
- ret = get_all_metadata_fast(device, PTP_GOH_ALL_STORAGE);
- }
-#endif
-
-
- retfiles = get_files(device, params, storageId, parentId);
-
- return retfiles;
-}
-
/**
* This function refresh the internal handle list whenever
* the items stored inside the device is altered. On operations
@@ -2542,10 +2310,6 @@ static void flush_handles(LIBMTP_mtpdevice_t *device)
int ret;
uint32_t i;
- if (load_cache_on_demand) {
- return;
- }
-
if (params->objects != NULL) {
for (i=0;i<params->nrofobjects;i++)
ptp_free_object (&params->objects[i]);
@@ -2560,7 +2324,6 @@ static void flush_handles(LIBMTP_mtpdevice_t *device)
// Use the fast method. Ignore return value for now.
ret = get_all_metadata_fast(device, PTP_GOH_ALL_STORAGE);
}
-
// If the previous failed or returned no objects, use classic
// methods instead.
if (params->nrofobjects == 0) {
@@ -4716,7 +4479,6 @@ int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t *device, uint32_t const id,
void const * const data)
{
int fd = -1;
- struct utimbuf mtime;
int ret;
// Sanity check
@@ -4739,7 +4501,7 @@ int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t *device, uint32_t const id,
return -1;
}
- ret = LIBMTP_Get_File_To_File_Descriptor(device, id, fd, callback, data, &mtime);
+ ret = LIBMTP_Get_File_To_File_Descriptor(device, id, fd, callback, data);
// Close file
close(fd);
@@ -4747,9 +4509,8 @@ int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t *device, uint32_t const id,
// Delete partial file.
if (ret == -1) {
unlink(path);
- } else {
- utime(path, &mtime);
}
+
return ret;
}
@@ -4769,18 +4530,15 @@ int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t *device, uint32_t const id,
* the <code>progress</code> function in order to
* pass along some user defined data to the progress
* updates. If not used, set this to NULL.
- * @param mtime out parameter to return the timestamp for file on
- * the device.
* @return 0 if the transfer was successful, any other value means
- * failure.
+ * failure.
* @see LIBMTP_Get_File_To_File()
*/
int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t *device,
uint32_t const id,
int const fd,
LIBMTP_progressfunc_t const callback,
- void const * const data,
- struct utimbuf * mtime)
+ void const * const data)
{
uint16_t ret;
PTPParams *params = (PTPParams *) device->params;
@@ -4797,11 +4555,6 @@ int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t *device,
return -1;
}
- if (mtime != NULL) {
- mtime->actime = ob->oi.CaptureDate;
- mtime->modtime = ob->oi.ModificationDate;
- }
-
// Callbacks
ptp_usb->callback_active = 1;
ptp_usb->current_transfer_total = ob->oi.ObjectCompressedSize+
@@ -4940,8 +4693,6 @@ int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t *device, uint32_t const id,
* the <code>progress</code> function in order to
* pass along some user defined data to the progress
* updates. If not used, set this to NULL.
- * @param mtime out parameter to return the timestamp for file on
- * the device.
* @return 0 if the transfer was successful, any other value means
* failure.
* @see LIBMTP_Get_Track_To_File()
@@ -4950,11 +4701,10 @@ int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t *device,
uint32_t const id,
int const fd,
LIBMTP_progressfunc_t const callback,
- void const * const data,
- struct utimbuf * mtime)
+ void const * const data)
{
// This is just a wrapper
- return LIBMTP_Get_File_To_File_Descriptor(device, id, fd, callback, data, mtime);
+ return LIBMTP_Get_File_To_File_Descriptor(device, id, fd, callback, data);
}
/**
@@ -5554,19 +5304,20 @@ static int send_file_object_info(LIBMTP_mtpdevice_t *device, LIBMTP_file_t *file
PTPParams *params = (PTPParams *) device->params;
PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
uint32_t store;
-
-#ifdef _AFT_BUILD
- int use_primary_storage = 0;
-#else
int use_primary_storage = 1;
-#endif
-
uint16_t of = map_libmtp_type_to_ptp_type(filedata->filetype);
LIBMTP_devicestorage_t *storage;
uint32_t localph = filedata->parent_id;
uint16_t ret;
int i;
+ // Sanity check: no zerolength files.
+ if (filedata->filesize == 0) {
+ add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "send_file_object_info(): "
+ "File of zero size.");
+ return -1;
+ }
+
if (filedata->storage_id != 0) {
store = filedata->storage_id;
} else {
@@ -5618,11 +5369,6 @@ static int send_file_object_info(LIBMTP_mtpdevice_t *device, LIBMTP_file_t *file
}
}
- // default parent handle
- if (localph == 0) {
- localph = 0xFFFFFFFFU; // Set to -1
- }
-
// Here we wire the type to unknown on bugged, but
// Ogg or FLAC-supportive devices.
if (FLAG_OGG_IS_UNKNOWN(ptp_usb) && of == PTP_OFC_MTP_OGG) {
@@ -5699,6 +5445,10 @@ static int send_file_object_info(LIBMTP_mtpdevice_t *device, LIBMTP_file_t *file
uint16_t *properties = NULL;
uint32_t propcnt = 0;
+ // default parent handle
+ if (localph == 0)
+ localph = 0xFFFFFFFFU; // Set to -1
+
// Must be 0x00000000U for new objects
filedata->item_id = 0x00000000U;
@@ -5787,18 +5537,14 @@ static int send_file_object_info(LIBMTP_mtpdevice_t *device, LIBMTP_file_t *file
if (FLAG_ONLY_7BIT_FILENAMES(ptp_usb)) {
strip_7bit_from_utf8(new_file.Filename);
}
- if (filedata->filesize > 0xFFFFFFFFL) {
- // This is a kludge in the MTP standard for large files.
- new_file.ObjectCompressedSize = (uint32_t) 0xFFFFFFFF;
- } else {
- new_file.ObjectCompressedSize = (uint32_t) filedata->filesize;
- }
+ // We lose precision here.
+ new_file.ObjectCompressedSize = (uint32_t) filedata->filesize;
new_file.ObjectFormat = of;
new_file.StorageID = store;
new_file.ParentObject = localph;
new_file.ModificationDate = time(NULL);
- // Create the object
+ // Create the object
ret = ptp_sendobjectinfo(params, &store, &localph, &filedata->item_id, &new_file);
if (ret != PTP_RC_OK) {
@@ -6782,11 +6528,6 @@ uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t *device, char *name,
} else {
store = storage_id;
}
-
- if (parent_id == 0) {
- parent_id = 0xFFFFFFFFU; // Set to -1
- }
-
parenthandle = parent_id;
memset(&new_folder, 0, sizeof(new_folder));
diff --git a/src/libmtp.h b/src/libmtp.h
deleted file mode 100644
index aebf0ae..0000000
--- a/src/libmtp.h
+++ /dev/null
@@ -1,941 +0,0 @@
-/**
- * \file libmtp.h
- * Interface to the Media Transfer Protocol library.
- *
- * Copyright (C) 2005-2008 Linus Walleij <triad@df.lth.se>
- * Copyright (C) 2005-2008 Richard A. Low <richard@wentnet.com>
- * Copyright (C) 2007 Ted Bullock <tbullock@canada.com>
- * Copyright (C) 2008 Florent Mertens <flomertens@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * <code>
- * #include <libmtp.h>
- * </code>
- */
-#ifndef LIBMTP_H_INCLUSION_GUARD
-#define LIBMTP_H_INCLUSION_GUARD
-
-#define LIBMTP_VERSION 1.0.1
-#define LIBMTP_VERSION_STRING "1.0.1"
-
-/* This handles MSVC pecularities */
-#ifdef _MSC_VER
-#include <windows.h>
-#define __WIN32__
-#define snprintf _snprintf
-#define ssize_t SSIZE_T
-/*
- * Types that do not exist in Windows
- * sys/types.h, but they exist in mingw32
- * sys/types.h.
- */
-typedef char int8_t;
-typedef unsigned char uint8_t;
-typedef __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int64 uint64_t;
-#endif
-
-#include <stdio.h>
-#include <usb.h>
-#include <stdint.h>
-#include <utime.h>
-
-/**
- * @defgroup types libmtp global type definitions
- * @{
- * The filetypes defined here are the external types used
- * by the libmtp library interface. The types used internally
- * as PTP-defined enumerator types is something different.
- */
-typedef enum {
- LIBMTP_FILETYPE_FOLDER,
- LIBMTP_FILETYPE_WAV,
- LIBMTP_FILETYPE_MP3,
- LIBMTP_FILETYPE_WMA,
- LIBMTP_FILETYPE_OGG,
- LIBMTP_FILETYPE_AUDIBLE,
- LIBMTP_FILETYPE_MP4,
- LIBMTP_FILETYPE_UNDEF_AUDIO,
- LIBMTP_FILETYPE_WMV,
- LIBMTP_FILETYPE_AVI,
- LIBMTP_FILETYPE_MPEG,
- LIBMTP_FILETYPE_ASF,
- LIBMTP_FILETYPE_QT,
- LIBMTP_FILETYPE_UNDEF_VIDEO,
- LIBMTP_FILETYPE_JPEG,
- LIBMTP_FILETYPE_JFIF,
- LIBMTP_FILETYPE_TIFF,
- LIBMTP_FILETYPE_BMP,
- LIBMTP_FILETYPE_GIF,
- LIBMTP_FILETYPE_PICT,
- LIBMTP_FILETYPE_PNG,
- LIBMTP_FILETYPE_VCALENDAR1,
- LIBMTP_FILETYPE_VCALENDAR2,
- LIBMTP_FILETYPE_VCARD2,
- LIBMTP_FILETYPE_VCARD3,
- LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT,
- LIBMTP_FILETYPE_WINEXEC,
- LIBMTP_FILETYPE_TEXT,
- LIBMTP_FILETYPE_HTML,
- LIBMTP_FILETYPE_FIRMWARE,
- LIBMTP_FILETYPE_AAC,
- LIBMTP_FILETYPE_MEDIACARD,
- LIBMTP_FILETYPE_FLAC,
- LIBMTP_FILETYPE_MP2,
- LIBMTP_FILETYPE_M4A,
- LIBMTP_FILETYPE_DOC,
- LIBMTP_FILETYPE_XML,
- LIBMTP_FILETYPE_XLS,
- LIBMTP_FILETYPE_PPT,
- LIBMTP_FILETYPE_MHT,
- LIBMTP_FILETYPE_JP2,
- LIBMTP_FILETYPE_JPX,
- LIBMTP_FILETYPE_ALBUM,
- LIBMTP_FILETYPE_PLAYLIST,
- LIBMTP_FILETYPE_UNKNOWN
-} LIBMTP_filetype_t;
-
-/**
- * \def LIBMTP_FILETYPE_IS_AUDIO
- * Audio filetype test.
- *
- * For filetypes that can be either audio
- * or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO
- */
-#define LIBMTP_FILETYPE_IS_AUDIO(a)\
-(a == LIBMTP_FILETYPE_WAV ||\
- a == LIBMTP_FILETYPE_MP3 ||\
- a == LIBMTP_FILETYPE_MP2 ||\
- a == LIBMTP_FILETYPE_WMA ||\
- a == LIBMTP_FILETYPE_OGG ||\
- a == LIBMTP_FILETYPE_FLAC ||\
- a == LIBMTP_FILETYPE_AAC ||\
- a == LIBMTP_FILETYPE_M4A ||\
- a == LIBMTP_FILETYPE_AUDIBLE ||\
- a == LIBMTP_FILETYPE_UNDEF_AUDIO)
-
-/**
- * \def LIBMTP_FILETYPE_IS_VIDEO
- * Video filetype test.
- *
- * For filetypes that can be either audio
- * or video, use LIBMTP_FILETYPE_IS_AUDIOVIDEO
- */
-#define LIBMTP_FILETYPE_IS_VIDEO(a)\
-(a == LIBMTP_FILETYPE_WMV ||\
- a == LIBMTP_FILETYPE_AVI ||\
- a == LIBMTP_FILETYPE_MPEG ||\
- a == LIBMTP_FILETYPE_UNDEF_VIDEO)
-
-/**
- * \def LIBMTP_FILETYPE_IS_AUDIOVIDEO
- * Audio and&slash;or video filetype test.
- */
-#define LIBMTP_FILETYPE_IS_AUDIOVIDEO(a)\
-(a == LIBMTP_FILETYPE_MP4 ||\
- a == LIBMTP_FILETYPE_ASF ||\
- a == LIBMTP_FILETYPE_QT)
-
-/**
- * \def LIBMTP_FILETYPE_IS_TRACK
- * Test if filetype is a track.
- * Use this to determine if the File API or Track API
- * should be used to upload or download an object.
- */
-#define LIBMTP_FILETYPE_IS_TRACK(a)\
-(LIBMTP_FILETYPE_IS_AUDIO(a) ||\
- LIBMTP_FILETYPE_IS_VIDEO(a) ||\
- LIBMTP_FILETYPE_IS_AUDIOVIDEO(a))
-
-/**
- * \def LIBMTP_FILETYPE_IS_IMAGE
- * Image filetype test
- */
-#define LIBMTP_FILETYPE_IS_IMAGE(a)\
-(a == LIBMTP_FILETYPE_JPEG ||\
-a == LIBMTP_FILETYPE_JFIF ||\
-a == LIBMTP_FILETYPE_TIFF ||\
-a == LIBMTP_FILETYPE_BMP ||\
-a == LIBMTP_FILETYPE_GIF ||\
-a == LIBMTP_FILETYPE_PICT ||\
-a == LIBMTP_FILETYPE_PNG ||\
-a == LIBMTP_FILETYPE_JP2 ||\
-a == LIBMTP_FILETYPE_JPX ||\
-a == LIBMTP_FILETYPE_WINDOWSIMAGEFORMAT)
-
-/**
- * \def LIBMTP_FILETYPE_IS_ADDRESSBOOK
- * Addressbook and Business card filetype test
- */
-#define LIBMTP_FILETYPE_IS_ADDRESSBOOK(a)\
-(a == LIBMTP_FILETYPE_VCARD2 ||\
-a == LIBMTP_FILETYPE_VCARD2)
-
-/**
- * \def LIBMTP_FILETYPE_IS_CALENDAR
- * Calendar and Appointment filetype test
- */
-#define LIBMTP_FILETYPE_IS_CALENDAR(a)\
-(a == LIBMTP_FILETYPE_VCALENDAR1 ||\
-a == LIBMTP_FILETYPE_VCALENDAR2)
-
-/**
- * The properties defined here are the external types used
- * by the libmtp library interface.
- */
-typedef enum {
- LIBMTP_PROPERTY_StorageID,
- LIBMTP_PROPERTY_ObjectFormat,
- LIBMTP_PROPERTY_ProtectionStatus,
- LIBMTP_PROPERTY_ObjectSize,
- LIBMTP_PROPERTY_AssociationType,
- LIBMTP_PROPERTY_AssociationDesc,
- LIBMTP_PROPERTY_ObjectFileName,
- LIBMTP_PROPERTY_DateCreated,
- LIBMTP_PROPERTY_DateModified,
- LIBMTP_PROPERTY_Keywords,
- LIBMTP_PROPERTY_ParentObject,
- LIBMTP_PROPERTY_AllowedFolderContents,
- LIBMTP_PROPERTY_Hidden,
- LIBMTP_PROPERTY_SystemObject,
- LIBMTP_PROPERTY_PersistantUniqueObjectIdentifier,
- LIBMTP_PROPERTY_SyncID,
- LIBMTP_PROPERTY_PropertyBag,
- LIBMTP_PROPERTY_Name,
- LIBMTP_PROPERTY_CreatedBy,
- LIBMTP_PROPERTY_Artist,
- LIBMTP_PROPERTY_DateAuthored,
- LIBMTP_PROPERTY_Description,
- LIBMTP_PROPERTY_URLReference,
- LIBMTP_PROPERTY_LanguageLocale,
- LIBMTP_PROPERTY_CopyrightInformation,
- LIBMTP_PROPERTY_Source,
- LIBMTP_PROPERTY_OriginLocation,
- LIBMTP_PROPERTY_DateAdded,
- LIBMTP_PROPERTY_NonConsumable,
- LIBMTP_PROPERTY_CorruptOrUnplayable,
- LIBMTP_PROPERTY_ProducerSerialNumber,
- LIBMTP_PROPERTY_RepresentativeSampleFormat,
- LIBMTP_PROPERTY_RepresentativeSampleSize,
- LIBMTP_PROPERTY_RepresentativeSampleHeight,
- LIBMTP_PROPERTY_RepresentativeSampleWidth,
- LIBMTP_PROPERTY_RepresentativeSampleDuration,
- LIBMTP_PROPERTY_RepresentativeSampleData,
- LIBMTP_PROPERTY_Width,
- LIBMTP_PROPERTY_Height,
- LIBMTP_PROPERTY_Duration,
- LIBMTP_PROPERTY_Rating,
- LIBMTP_PROPERTY_Track,
- LIBMTP_PROPERTY_Genre,
- LIBMTP_PROPERTY_Credits,
- LIBMTP_PROPERTY_Lyrics,
- LIBMTP_PROPERTY_SubscriptionContentID,
- LIBMTP_PROPERTY_ProducedBy,
- LIBMTP_PROPERTY_UseCount,
- LIBMTP_PROPERTY_SkipCount,
- LIBMTP_PROPERTY_LastAccessed,
- LIBMTP_PROPERTY_ParentalRating,
- LIBMTP_PROPERTY_MetaGenre,
- LIBMTP_PROPERTY_Composer,
- LIBMTP_PROPERTY_EffectiveRating,
- LIBMTP_PROPERTY_Subtitle,
- LIBMTP_PROPERTY_OriginalReleaseDate,
- LIBMTP_PROPERTY_AlbumName,
- LIBMTP_PROPERTY_AlbumArtist,
- LIBMTP_PROPERTY_Mood,
- LIBMTP_PROPERTY_DRMStatus,
- LIBMTP_PROPERTY_SubDescription,
- LIBMTP_PROPERTY_IsCropped,
- LIBMTP_PROPERTY_IsColorCorrected,
- LIBMTP_PROPERTY_ImageBitDepth,
- LIBMTP_PROPERTY_Fnumber,
- LIBMTP_PROPERTY_ExposureTime,
- LIBMTP_PROPERTY_ExposureIndex,
- LIBMTP_PROPERTY_DisplayName,
- LIBMTP_PROPERTY_BodyText,
- LIBMTP_PROPERTY_Subject,
- LIBMTP_PROPERTY_Priority,
- LIBMTP_PROPERTY_GivenName,
- LIBMTP_PROPERTY_MiddleNames,
- LIBMTP_PROPERTY_FamilyName,
- LIBMTP_PROPERTY_Prefix,
- LIBMTP_PROPERTY_Suffix,
- LIBMTP_PROPERTY_PhoneticGivenName,
- LIBMTP_PROPERTY_PhoneticFamilyName,
- LIBMTP_PROPERTY_EmailPrimary,
- LIBMTP_PROPERTY_EmailPersonal1,
- LIBMTP_PROPERTY_EmailPersonal2,
- LIBMTP_PROPERTY_EmailBusiness1,
- LIBMTP_PROPERTY_EmailBusiness2,
- LIBMTP_PROPERTY_EmailOthers,
- LIBMTP_PROPERTY_PhoneNumberPrimary,
- LIBMTP_PROPERTY_PhoneNumberPersonal,
- LIBMTP_PROPERTY_PhoneNumberPersonal2,
- LIBMTP_PROPERTY_PhoneNumberBusiness,
- LIBMTP_PROPERTY_PhoneNumberBusiness2,
- LIBMTP_PROPERTY_PhoneNumberMobile,
- LIBMTP_PROPERTY_PhoneNumberMobile2,
- LIBMTP_PROPERTY_FaxNumberPrimary,
- LIBMTP_PROPERTY_FaxNumberPersonal,
- LIBMTP_PROPERTY_FaxNumberBusiness,
- LIBMTP_PROPERTY_PagerNumber,
- LIBMTP_PROPERTY_PhoneNumberOthers,
- LIBMTP_PROPERTY_PrimaryWebAddress,
- LIBMTP_PROPERTY_PersonalWebAddress,
- LIBMTP_PROPERTY_BusinessWebAddress,
- LIBMTP_PROPERTY_InstantMessengerAddress,
- LIBMTP_PROPERTY_InstantMessengerAddress2,
- LIBMTP_PROPERTY_InstantMessengerAddress3,
- LIBMTP_PROPERTY_PostalAddressPersonalFull,
- LIBMTP_PROPERTY_PostalAddressPersonalFullLine1,
- LIBMTP_PROPERTY_PostalAddressPersonalFullLine2,
- LIBMTP_PROPERTY_PostalAddressPersonalFullCity,
- LIBMTP_PROPERTY_PostalAddressPersonalFullRegion,
- LIBMTP_PROPERTY_PostalAddressPersonalFullPostalCode,
- LIBMTP_PROPERTY_PostalAddressPersonalFullCountry,
- LIBMTP_PROPERTY_PostalAddressBusinessFull,
- LIBMTP_PROPERTY_PostalAddressBusinessLine1,
- LIBMTP_PROPERTY_PostalAddressBusinessLine2,
- LIBMTP_PROPERTY_PostalAddressBusinessCity,
- LIBMTP_PROPERTY_PostalAddressBusinessRegion,
- LIBMTP_PROPERTY_PostalAddressBusinessPostalCode,
- LIBMTP_PROPERTY_PostalAddressBusinessCountry,
- LIBMTP_PROPERTY_PostalAddressOtherFull,
- LIBMTP_PROPERTY_PostalAddressOtherLine1,
- LIBMTP_PROPERTY_PostalAddressOtherLine2,
- LIBMTP_PROPERTY_PostalAddressOtherCity,
- LIBMTP_PROPERTY_PostalAddressOtherRegion,
- LIBMTP_PROPERTY_PostalAddressOtherPostalCode,
- LIBMTP_PROPERTY_PostalAddressOtherCountry,
- LIBMTP_PROPERTY_OrganizationName,
- LIBMTP_PROPERTY_PhoneticOrganizationName,
- LIBMTP_PROPERTY_Role,
- LIBMTP_PROPERTY_Birthdate,
- LIBMTP_PROPERTY_MessageTo,
- LIBMTP_PROPERTY_MessageCC,
- LIBMTP_PROPERTY_MessageBCC,
- LIBMTP_PROPERTY_MessageRead,
- LIBMTP_PROPERTY_MessageReceivedTime,
- LIBMTP_PROPERTY_MessageSender,
- LIBMTP_PROPERTY_ActivityBeginTime,
- LIBMTP_PROPERTY_ActivityEndTime,
- LIBMTP_PROPERTY_ActivityLocation,
- LIBMTP_PROPERTY_ActivityRequiredAttendees,
- LIBMTP_PROPERTY_ActivityOptionalAttendees,
- LIBMTP_PROPERTY_ActivityResources,
- LIBMTP_PROPERTY_ActivityAccepted,
- LIBMTP_PROPERTY_Owner,
- LIBMTP_PROPERTY_Editor,
- LIBMTP_PROPERTY_Webmaster,
- LIBMTP_PROPERTY_URLSource,
- LIBMTP_PROPERTY_URLDestination,
- LIBMTP_PROPERTY_TimeBookmark,
- LIBMTP_PROPERTY_ObjectBookmark,
- LIBMTP_PROPERTY_ByteBookmark,
- LIBMTP_PROPERTY_LastBuildDate,
- LIBMTP_PROPERTY_TimetoLive,
- LIBMTP_PROPERTY_MediaGUID,
- LIBMTP_PROPERTY_TotalBitRate,
- LIBMTP_PROPERTY_BitRateType,
- LIBMTP_PROPERTY_SampleRate,
- LIBMTP_PROPERTY_NumberOfChannels,
- LIBMTP_PROPERTY_AudioBitDepth,
- LIBMTP_PROPERTY_ScanDepth,
- LIBMTP_PROPERTY_AudioWAVECodec,
- LIBMTP_PROPERTY_AudioBitRate,
- LIBMTP_PROPERTY_VideoFourCCCodec,
- LIBMTP_PROPERTY_VideoBitRate,
- LIBMTP_PROPERTY_FramesPerThousandSeconds,
- LIBMTP_PROPERTY_KeyFrameDistance,
- LIBMTP_PROPERTY_BufferSize,
- LIBMTP_PROPERTY_EncodingQuality,
- LIBMTP_PROPERTY_EncodingProfile,
- LIBMTP_PROPERTY_BuyFlag,
- LIBMTP_PROPERTY_UNKNOWN
-} LIBMTP_property_t;
-
-/**
- * These are the data types
- */
-typedef enum {
- LIBMTP_DATATYPE_INT8,
- LIBMTP_DATATYPE_UINT8,
- LIBMTP_DATATYPE_INT16,
- LIBMTP_DATATYPE_UINT16,
- LIBMTP_DATATYPE_INT32,
- LIBMTP_DATATYPE_UINT32,
- LIBMTP_DATATYPE_INT64,
- LIBMTP_DATATYPE_UINT64,
-} LIBMTP_datatype_t;
-
-/**
- * These are the numbered error codes. You can also
- * get string representations for errors.
- */
-typedef enum {
- LIBMTP_ERROR_NONE,
- LIBMTP_ERROR_GENERAL,
- LIBMTP_ERROR_PTP_LAYER,
- LIBMTP_ERROR_USB_LAYER,
- LIBMTP_ERROR_MEMORY_ALLOCATION,
- LIBMTP_ERROR_NO_DEVICE_ATTACHED,
- LIBMTP_ERROR_STORAGE_FULL,
- LIBMTP_ERROR_CONNECTING,
- LIBMTP_ERROR_CANCELLED
-} LIBMTP_error_number_t;
-typedef struct LIBMTP_device_entry_struct LIBMTP_device_entry_t; /**< @see LIBMTP_device_entry_struct */
-typedef struct LIBMTP_raw_device_struct LIBMTP_raw_device_t; /**< @see LIBMTP_raw_device_struct */
-typedef struct LIBMTP_error_struct LIBMTP_error_t; /**< @see LIBMTP_error_struct */
-typedef struct LIBMTP_allowed_values_struct LIBMTP_allowed_values_t; /**< @see LIBMTP_allowed_values_struct */
-typedef struct LIBMTP_mtpdevice_struct LIBMTP_mtpdevice_t; /**< @see LIBMTP_mtpdevice_struct */
-typedef struct LIBMTP_file_struct LIBMTP_file_t; /**< @see LIBMTP_file_struct */
-typedef struct LIBMTP_track_struct LIBMTP_track_t; /**< @see LIBMTP_track_struct */
-typedef struct LIBMTP_playlist_struct LIBMTP_playlist_t; /**< @see LIBMTP_playlist_struct */
-typedef struct LIBMTP_album_struct LIBMTP_album_t; /**< @see LIBMTP_album_struct */
-typedef struct LIBMTP_folder_struct LIBMTP_folder_t; /**< @see LIBMTP_folder_t */
-typedef struct LIBMTP_object_struct LIBMTP_object_t; /**< @see LIBMTP_object_t */
-typedef struct LIBMTP_filesampledata_struct LIBMTP_filesampledata_t; /**< @see LIBMTP_filesample_t */
-typedef struct LIBMTP_devicestorage_struct LIBMTP_devicestorage_t; /**< @see LIBMTP_devicestorage_t */
-
-/**
- * The callback type definition. Notice that a progress percentage ratio
- * is easy to calculate by dividing <code>sent</code> by
- * <code>total</code>.
- * @param sent the number of bytes sent so far
- * @param total the total number of bytes to send
- * @param data a user-defined dereferencable pointer
- * @return if anything else than 0 is returned, the current transfer will be
- * interrupted / cancelled.
- */
-typedef int (* LIBMTP_progressfunc_t) (uint64_t const sent, uint64_t const total,
- void const * const data);
-
-/**
- * Callback function for get by handler function
- * @param params the device parameters
- * @param priv a user-defined dereferencable pointer
- * @param wantlen the number of bytes wanted
- * @param data a buffer to write the data to
- * @param gotlen pointer to the number of bytes actually written
- * to data
- * @return LIBMTP_HANDLER_RETURN_OK if successful,
- * LIBMTP_HANDLER_RETURN_ERROR on error or
- * LIBMTP_HANDLER_RETURN_CANCEL to cancel the transfer
- */
-typedef uint16_t (* MTPDataGetFunc) (void* params, void* priv,
- uint32_t wantlen, unsigned char *data, uint32_t *gotlen);
-
-/**
- * Callback function for put by handler function
- * @param params the device parameters
- * @param priv a user-defined dereferencable pointer
- * @param sendlen the number of bytes available
- * @param data a buffer to read the data from
- * @param putlen pointer to the number of bytes actually read
- * from data
- * @return LIBMTP_HANDLER_RETURN_OK if successful,
- * LIBMTP_HANDLER_RETURN_ERROR on error or
- * LIBMTP_HANDLER_RETURN_CANCEL to cancel the transfer
- */
-typedef uint16_t (* MTPDataPutFunc) (void* params, void* priv,
- uint32_t sendlen, unsigned char *data, uint32_t *putlen);
-
-/**
- * The return codes for the get/put functions
- */
-#define LIBMTP_HANDLER_RETURN_OK 0
-#define LIBMTP_HANDLER_RETURN_ERROR 1
-#define LIBMTP_HANDLER_RETURN_CANCEL 2
-
-/**
- * @}
- * @defgroup structar libmtp data structures
- * @{
- */
-
-/**
- * A data structure to hold MTP device entries.
- */
-struct LIBMTP_device_entry_struct {
- char *vendor; /**< The vendor of this device */
- uint16_t vendor_id; /**< Vendor ID for this device */
- char *product; /**< The product name of this device */
- uint16_t product_id; /**< Product ID for this device */
- uint32_t device_flags; /**< Bugs, device specifics etc */
-};
-
-/**
- * A data structure to hold a raw MTP device connected
- * to the bus.
- */
-struct LIBMTP_raw_device_struct {
- LIBMTP_device_entry_t device_entry; /**< The device entry for this raw device */
- uint32_t bus_location; /**< Location of the bus, if device available */
- uint8_t devnum; /**< Device number on the bus, if device available */
-};
-
-/**
- * A data structure to hold errors from the library.
- */
-struct LIBMTP_error_struct {
- LIBMTP_error_number_t errornumber;
- char *error_text;
- LIBMTP_error_t *next;
-};
-
-/**
- * A data structure to hold allowed ranges of values
- */
-struct LIBMTP_allowed_values_struct {
- uint8_t u8max;
- uint8_t u8min;
- uint8_t u8step;
- uint8_t* u8vals;
- int8_t i8max;
- int8_t i8min;
- int8_t i8step;
- int8_t* i8vals;
- uint16_t u16max;
- uint16_t u16min;
- uint16_t u16step;
- uint16_t* u16vals;
- int16_t i16max;
- int16_t i16min;
- int16_t i16step;
- int16_t* i16vals;
- uint32_t u32max;
- uint32_t u32min;
- uint32_t u32step;
- uint32_t* u32vals;
- int32_t i32max;
- int32_t i32min;
- int32_t i32step;
- int32_t* i32vals;
- uint64_t u64max;
- uint64_t u64min;
- uint64_t u64step;
- uint64_t* u64vals;
- int64_t i64max;
- int64_t i64min;
- int64_t i64step;
- int64_t* i64vals;
- /**
- * Number of entries in the vals array
- */
- uint16_t num_entries;
- /**
- * The datatype specifying which of the above is used
- */
- LIBMTP_datatype_t datatype;
- /**
- * Non zero for range, 0 for enum
- */
- int is_range;
-};
-
-/**
- * Main MTP device object struct
- */
-struct LIBMTP_mtpdevice_struct {
- /**
- * Object bitsize, typically 32 or 64.
- */
- uint8_t object_bitsize;
- /**
- * Parameters for this device, must be cast into
- * \c (PTPParams*) before internal use.
- */
- void *params;
- /**
- * USB device for this device, must be cast into
- * \c (PTP_USB*) before internal use.
- */
- void *usbinfo;
- /**
- * The storage for this device, do not use strings in here without
- * copying them first, and beware that this list may be rebuilt at
- * any time.
- * @see LIBMTP_Get_Storage()
- */
- LIBMTP_devicestorage_t *storage;
- /**
- * The error stack. This shall be handled using the error getting
- * and clearing functions, not by dereferencing this list.
- */
- LIBMTP_error_t *errorstack;
- /** The maximum battery level for this device */
- uint8_t maximum_battery_level;
- /** Default music folder */
- uint32_t default_music_folder;
- /** Default playlist folder */
- uint32_t default_playlist_folder;
- /** Default picture folder */
- uint32_t default_picture_folder;
- /** Default video folder */
- uint32_t default_video_folder;
- /** Default organizer folder */
- uint32_t default_organizer_folder;
- /** Default ZENcast folder (only Creative devices...) */
- uint32_t default_zencast_folder;
- /** Default Album folder */
- uint32_t default_album_folder;
- /** Default Text folder */
- uint32_t default_text_folder;
- /** Per device iconv() converters, only used internally */
- void *cd;
-
- /** Pointer to next device in linked list; NULL if this is the last device */
- LIBMTP_mtpdevice_t *next;
-};
-
-/**
- * MTP file struct
- */
-struct LIBMTP_file_struct {
- uint32_t item_id; /**< Unique item ID */
- uint32_t parent_id; /**< ID of parent folder */
- uint32_t storage_id; /**< ID of storage holding this file */
- char *filename; /**< Filename of this file */
- uint64_t filesize; /**< Size of file in bytes */
- time_t modificationdate; /**< Date of last alteration of the file */
- LIBMTP_filetype_t filetype; /**< Filetype used for the current file */
- LIBMTP_file_t *next; /**< Next file in list or NULL if last file */
-};
-
-/**
- * MTP track struct
- */
-struct LIBMTP_track_struct {
- uint32_t item_id; /**< Unique item ID */
- uint32_t parent_id; /**< ID of parent folder */
- uint32_t storage_id; /**< ID of storage holding this track */
- char *title; /**< Track title */
- char *artist; /**< Name of recording artist */
- char *composer; /**< Name of recording composer */
- char *genre; /**< Genre name for track */
- char *album; /**< Album name for track */
- char *date; /**< Date of original recording as a string */
- char *filename; /**< Original filename of this track */
- uint16_t tracknumber; /**< Track number (in sequence on recording) */
- uint32_t duration; /**< Duration in milliseconds */
- uint32_t samplerate; /**< Sample rate of original file, min 0x1f80 max 0xbb80 */
- uint16_t nochannels; /**< Number of channels in this recording 0 = unknown, 1 or 2 */
- uint32_t wavecodec; /**< FourCC wave codec name */
- uint32_t bitrate; /**< (Average) bitrate for this file min=1 max=0x16e360 */
- uint16_t bitratetype; /**< 0 = unused, 1 = constant, 2 = VBR, 3 = free */
- uint16_t rating; /**< User rating 0-100 (0x00-0x64) */
- uint32_t usecount; /**< Number of times used/played */
- uint64_t filesize; /**< Size of track file in bytes */
- time_t modificationdate; /**< Date of last alteration of the track */
- LIBMTP_filetype_t filetype; /**< Filetype used for the current track */
- LIBMTP_track_t *next; /**< Next track in list or NULL if last track */
-};
-
-/**
- * MTP Playlist structure
- */
-struct LIBMTP_playlist_struct {
- uint32_t playlist_id; /**< Unique playlist ID */
- uint32_t parent_id; /**< ID of parent folder */
- uint32_t storage_id; /**< ID of storage holding this playlist */
- char *name; /**< Name of playlist */
- uint32_t *tracks; /**< The tracks in this playlist */
- uint32_t no_tracks; /**< The number of tracks in this playlist */
- LIBMTP_playlist_t *next; /**< Next playlist or NULL if last playlist */
-};
-
-/**
- * MTP Album structure
- */
-struct LIBMTP_album_struct {
- uint32_t album_id; /**< Unique playlist ID */
- uint32_t parent_id; /**< ID of parent folder */
- uint32_t storage_id; /**< ID of storage holding this album */
- char *name; /**< Name of album */
- char *artist; /**< Name of album artist */
- char *composer; /**< Name of recording composer */
- char *genre; /**< Genre of album */
- uint32_t *tracks; /**< The tracks in this album */
- uint32_t no_tracks; /**< The number of tracks in this album */
- LIBMTP_album_t *next; /**< Next album or NULL if last album */
-};
-
-/**
- * MTP Folder structure
- */
-struct LIBMTP_folder_struct {
- uint32_t folder_id; /**< Unique folder ID */
- uint32_t parent_id; /**< ID of parent folder */
- uint32_t storage_id; /**< ID of storage holding this folder */
- char *name; /**< Name of folder */
- LIBMTP_folder_t *sibling; /**< Next folder at same level or NULL if no more */
- LIBMTP_folder_t *child; /**< Child folder or NULL if no children */
-};
-
-/**
- * LIBMTP Object RepresentativeSampleData Structure
- */
-struct LIBMTP_filesampledata_struct {
- uint32_t width; /**< Width of sample if it is an image */
- uint32_t height; /**< Height of sample if it is an image */
- uint32_t duration; /**< Duration in milliseconds if it is audio */
- LIBMTP_filetype_t filetype; /**< Filetype used for the sample */
- uint64_t size; /**< Size of sample data in bytes */
- char *data; /**< Sample data */
-};
-
-/**
- * LIBMTP Device Storage structure
- */
-struct LIBMTP_devicestorage_struct {
- uint32_t id; /**< Unique ID for this storage */
- uint16_t StorageType; /**< Storage type */
- uint16_t FilesystemType; /**< Filesystem type */
- uint16_t AccessCapability; /**< Access capability */
- uint64_t MaxCapacity; /**< Maximum capability */
- uint64_t FreeSpaceInBytes; /**< Free space in bytes */
- uint64_t FreeSpaceInObjects; /**< Free space in objects */
- char *StorageDescription; /**< A brief description of this storage */
- char *VolumeIdentifier; /**< A volume identifier */
- LIBMTP_devicestorage_t *next; /**< Next storage, follow this link until NULL */
- LIBMTP_devicestorage_t *prev; /**< Previous storage */
-};
-
-
-/** @} */
-
-/* Make functions available for C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup internals The libmtp internals API.
- * @{
- */
-void LIBMTP_Init(void);
-int LIBMTP_Get_Supported_Devices_List(LIBMTP_device_entry_t ** const, int * const);
-/**
- * @}
- * @defgroup basic The basic device management API.
- * @{
- */
-LIBMTP_error_number_t LIBMTP_Detect_Raw_Devices(LIBMTP_raw_device_t **, int *);
-LIBMTP_mtpdevice_t *LIBMTP_Open_Raw_Device(LIBMTP_raw_device_t *);
-/* Begin old, legacy interface */
-LIBMTP_mtpdevice_t *LIBMTP_Get_First_Device(void);
-LIBMTP_error_number_t LIBMTP_Get_Connected_Devices(LIBMTP_mtpdevice_t **);
-uint32_t LIBMTP_Number_Devices_In_List(LIBMTP_mtpdevice_t *);
-void LIBMTP_Release_Device_List(LIBMTP_mtpdevice_t*);
-/* End old, legacy interface */
-void LIBMTP_Release_Device(LIBMTP_mtpdevice_t*);
-void LIBMTP_Dump_Device_Info(LIBMTP_mtpdevice_t*);
-int LIBMTP_Reset_Device(LIBMTP_mtpdevice_t*);
-char *LIBMTP_Get_Manufacturername(LIBMTP_mtpdevice_t*);
-char *LIBMTP_Get_Modelname(LIBMTP_mtpdevice_t*);
-char *LIBMTP_Get_Serialnumber(LIBMTP_mtpdevice_t*);
-char *LIBMTP_Get_Deviceversion(LIBMTP_mtpdevice_t*);
-char *LIBMTP_Get_Friendlyname(LIBMTP_mtpdevice_t*);
-int LIBMTP_Set_Friendlyname(LIBMTP_mtpdevice_t*, char const * const);
-char *LIBMTP_Get_Syncpartner(LIBMTP_mtpdevice_t*);
-int LIBMTP_Set_Syncpartner(LIBMTP_mtpdevice_t*, char const * const);
-int LIBMTP_Get_Batterylevel(LIBMTP_mtpdevice_t *,
- uint8_t * const,
- uint8_t * const);
-int LIBMTP_Get_Secure_Time(LIBMTP_mtpdevice_t *, char ** const);
-int LIBMTP_Get_Device_Certificate(LIBMTP_mtpdevice_t *, char ** const);
-int LIBMTP_Get_Supported_Filetypes(LIBMTP_mtpdevice_t *, uint16_t ** const, uint16_t * const);
-LIBMTP_error_t *LIBMTP_Get_Errorstack(LIBMTP_mtpdevice_t*);
-void LIBMTP_Clear_Errorstack(LIBMTP_mtpdevice_t*);
-void LIBMTP_Dump_Errorstack(LIBMTP_mtpdevice_t*);
-
-void LIBMTP_Set_Device_Timeout(LIBMTP_mtpdevice_t *device, int milliseconds);
-void LIBMTP_Get_Device_Timeout(LIBMTP_mtpdevice_t *device, int * milliseconds);
-
-#define LIBMTP_STORAGE_SORTBY_NOTSORTED 0
-#define LIBMTP_STORAGE_SORTBY_FREESPACE 1
-#define LIBMTP_STORAGE_SORTBY_MAXSPACE 2
-
-int LIBMTP_Get_Storage(LIBMTP_mtpdevice_t *, int const);
-int LIBMTP_Format_Storage(LIBMTP_mtpdevice_t *, LIBMTP_devicestorage_t *);
-
-/**
- * Get/set arbitrary properties. These do not update the cache; should only be used on
- * properties not stored in structs
- */
-char *LIBMTP_Get_String_From_Object(LIBMTP_mtpdevice_t *, uint32_t const, LIBMTP_property_t const);
-uint64_t LIBMTP_Get_u64_From_Object(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint64_t const);
-uint32_t LIBMTP_Get_u32_From_Object(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint32_t const);
-uint16_t LIBMTP_Get_u16_From_Object(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint16_t const);
-uint8_t LIBMTP_Get_u8_From_Object(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint8_t const);
-int LIBMTP_Set_Object_String(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, char const * const);
-int LIBMTP_Set_Object_u32(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint32_t const);
-int LIBMTP_Set_Object_u16(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint16_t const);
-int LIBMTP_Set_Object_u8(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_property_t const, uint8_t const);
-char const * LIBMTP_Get_Property_Description(LIBMTP_property_t inproperty);
-int LIBMTP_Is_Property_Supported(LIBMTP_mtpdevice_t*, LIBMTP_property_t const,
- LIBMTP_filetype_t const);
-int LIBMTP_Get_Allowed_Property_Values(LIBMTP_mtpdevice_t*, LIBMTP_property_t const,
- LIBMTP_filetype_t const, LIBMTP_allowed_values_t*);
-void LIBMTP_destroy_allowed_values_t(LIBMTP_allowed_values_t*);
-
-/**
- * @}
- * @defgroup files The file management API.
- * @{
- */
-LIBMTP_file_t *LIBMTP_new_file_t(void);
-void LIBMTP_destroy_file_t(LIBMTP_file_t*);
-char const * LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t);
-LIBMTP_file_t *LIBMTP_Get_Filelisting(LIBMTP_mtpdevice_t *);
-LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
- LIBMTP_progressfunc_t const, void const * const);
-LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
-int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
- LIBMTP_progressfunc_t const, void const * const);
-int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
- LIBMTP_progressfunc_t const, void const * const, struct utimbuf * mtime);
-int LIBMTP_Get_File_To_Handler(LIBMTP_mtpdevice_t *, uint32_t const, MTPDataPutFunc, void *,
- LIBMTP_progressfunc_t const, void const * const);
-int LIBMTP_Send_File_From_File(LIBMTP_mtpdevice_t *, char const * const,
- LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
- void const * const);
-int LIBMTP_Send_File_From_File_Descriptor(LIBMTP_mtpdevice_t *, int const,
- LIBMTP_file_t * const, LIBMTP_progressfunc_t const,
- void const * const);
-int LIBMTP_Send_File_From_Handler(LIBMTP_mtpdevice_t *, MTPDataGetFunc, void *,
- LIBMTP_file_t * const, LIBMTP_progressfunc_t const, void const * const);
-int LIBMTP_Set_File_Name(LIBMTP_mtpdevice_t *, LIBMTP_file_t *, const char *);
-LIBMTP_filesampledata_t *LIBMTP_new_filesampledata_t(void);
-void LIBMTP_destroy_filesampledata_t(LIBMTP_filesampledata_t *);
-int LIBMTP_Get_Representative_Sample_Format(LIBMTP_mtpdevice_t *,
- LIBMTP_filetype_t const,
- LIBMTP_filesampledata_t **);
-int LIBMTP_Send_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_filesampledata_t *);
-int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
- LIBMTP_filesampledata_t *);
-
-
-void LIBMTP_Set_Load_Cache_On_Demand(int flag);
-
-LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *device,
- uint32_t storageId, uint32_t parentId);
-
-/**
- * @}
- * @defgroup tracks The track management API.
- * @{
- */
-LIBMTP_track_t *LIBMTP_new_track_t(void);
-void LIBMTP_destroy_track_t(LIBMTP_track_t*);
-LIBMTP_track_t *LIBMTP_Get_Tracklisting(LIBMTP_mtpdevice_t*);
-LIBMTP_track_t *LIBMTP_Get_Tracklisting_With_Callback(LIBMTP_mtpdevice_t*,
- LIBMTP_progressfunc_t const, void const * const);
-LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t*, uint32_t const);
-int LIBMTP_Get_Track_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
- LIBMTP_progressfunc_t const, void const * const);
-int LIBMTP_Get_Track_To_File_Descriptor(LIBMTP_mtpdevice_t*, uint32_t const, int const,
- LIBMTP_progressfunc_t const, void const * const, struct utimbuf * mtime);
-int LIBMTP_Get_Track_To_Handler(LIBMTP_mtpdevice_t *, uint32_t const, MTPDataPutFunc,
- void *, LIBMTP_progressfunc_t const, void const * const);
-int LIBMTP_Send_Track_From_File(LIBMTP_mtpdevice_t *,
- char const * const, LIBMTP_track_t * const,
- LIBMTP_progressfunc_t const,
- void const * const);
-int LIBMTP_Send_Track_From_File_Descriptor(LIBMTP_mtpdevice_t *,
- int const, LIBMTP_track_t * const,
- LIBMTP_progressfunc_t const,
- void const * const);
-int LIBMTP_Send_Track_From_Handler(LIBMTP_mtpdevice_t *,
- MTPDataGetFunc, void *, LIBMTP_track_t * const,
- LIBMTP_progressfunc_t const,
- void const * const);
-int LIBMTP_Update_Track_Metadata(LIBMTP_mtpdevice_t *,
- LIBMTP_track_t const * const);
-int LIBMTP_Track_Exists(LIBMTP_mtpdevice_t *, uint32_t);
-int LIBMTP_Set_Track_Name(LIBMTP_mtpdevice_t *, LIBMTP_track_t *, const char *);
-/** @} */
-
-/**
- * @}
- * @defgroup folders The folder management API.
- * @{
- */
-LIBMTP_folder_t *LIBMTP_new_folder_t(void);
-void LIBMTP_destroy_folder_t(LIBMTP_folder_t*);
-LIBMTP_folder_t *LIBMTP_Get_Folder_List(LIBMTP_mtpdevice_t*);
-LIBMTP_folder_t *LIBMTP_Find_Folder(LIBMTP_folder_t*, uint32_t const);
-uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t*, char *, uint32_t, uint32_t);
-int LIBMTP_Set_Folder_Name(LIBMTP_mtpdevice_t *, LIBMTP_folder_t *, const char *);
-/** @} */
-
-
-/**
- * @}
- * @defgroup playlists The audio/video playlist management API.
- * @{
- */
-LIBMTP_playlist_t *LIBMTP_new_playlist_t(void);
-void LIBMTP_destroy_playlist_t(LIBMTP_playlist_t *);
-LIBMTP_playlist_t *LIBMTP_Get_Playlist_List(LIBMTP_mtpdevice_t *);
-LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const);
-int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const);
-int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const);
-int LIBMTP_Set_Playlist_Name(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t *, const char *);
-
-/**
- * @}
- * @defgroup albums The audio/video album management API.
- * @{
- */
-LIBMTP_album_t *LIBMTP_new_album_t(void);
-void LIBMTP_destroy_album_t(LIBMTP_album_t *);
-LIBMTP_album_t *LIBMTP_Get_Album_List(LIBMTP_mtpdevice_t *);
-LIBMTP_album_t *LIBMTP_Get_Album(LIBMTP_mtpdevice_t *, uint32_t const);
-int LIBMTP_Create_New_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t * const);
-int LIBMTP_Update_Album(LIBMTP_mtpdevice_t *, LIBMTP_album_t const * const);
-int LIBMTP_Set_Album_Name(LIBMTP_mtpdevice_t *, LIBMTP_album_t *, const char *);
-
-/**
- * @}
- * @defgroup objects The object management API.
- * @{
- */
-int LIBMTP_Delete_Object(LIBMTP_mtpdevice_t *, uint32_t);
-int LIBMTP_Set_Object_Filename(LIBMTP_mtpdevice_t *, uint32_t , char *);
-
-/** @} */
-
-/* End of C++ exports */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LIBMTP_H_INCLUSION_GUARD */
-
diff --git a/src/libptp-stdint.h b/src/libptp-stdint.h
deleted file mode 100644
index 80ecf41..0000000
--- a/src/libptp-stdint.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* This file is generated automatically by configure */
-#include <stdint.h>
diff --git a/src/libusb-glue.c b/src/libusb-glue.c
index e46cfc5..61ffdce 100644
--- a/src/libusb-glue.c
+++ b/src/libusb-glue.c
@@ -49,13 +49,6 @@
#define USB_CLASS_PTP 6
#endif
-/* libusb dosn't have misc class defined */
-#ifndef USB_CLASS_MISC
-#define USB_CLASS_MISC 0xEF
-#endif
-
-#define APPLE_VID 0x05ac
-
/* To enable debug prints for USB stuff, switch on this */
//#define ENABLE_USB_BULK_DEBUG
@@ -206,94 +199,6 @@ static void free_mtpdevice_list(mtpdevice_list_t *devlist)
return;
}
-/* Comment out this define to enable the original, more aggressive probing. */
-#define MILD_MTP_PROBING
-
-#ifdef MILD_MTP_PROBING
-/**
- * This checks if a device has an interface with MTP description.
- *
- * @param dev a device struct from libusb.
- * @param dumpfile set to non-NULL to make the descriptors dump out
- * to this file in human-readable hex so we can scruitinze them.
- * @return 1 if the device is MTP compliant, 0 if not.
- */
-static int probe_device_descriptor(struct usb_device *dev, FILE *dumpfile)
-{
- usb_dev_handle *devh;
- unsigned char buf[1024];
- int i;
- int ret;
-
- /*
- * Don't examine devices that are not likely to
- * contain any MTP interface, update this the day
- * you find some weird combination...
- */
- if (!(dev->descriptor.bDeviceClass == USB_CLASS_PER_INTERFACE ||
- dev->descriptor.bDeviceClass == USB_CLASS_PTP ||
- dev->descriptor.bDeviceClass == USB_CLASS_VENDOR_SPEC) ||
- /* Apple devices sometimes freeze when probed by libusb */
- dev->descriptor.idVendor == APPLE_VID) {
- return 0;
- }
-
- /* Attempt to open Device on this port */
- devh = usb_open(dev);
- if (devh == NULL) {
- /* Could not open this device */
- return 0;
- }
-
- /*
- * This sometimes crashes on the j for loop below
- * I think it is because config is NULL yet
- * dev->descriptor.bNumConfigurations > 0
- * this check should stop this
- */
- if (dev->config) {
- /*
- * Loop over the interfaces, and check for string "MTP"
- * in the descriptions.
- */
-
- for (i = 0; i < dev->descriptor.bNumConfigurations; i++) {
- uint8_t j;
-
- for (j = 0; j < dev->config[i].bNumInterfaces; j++) {
- int k;
- for (k = 0; k < dev->config[i].interface[j].num_altsetting; k++) {
- /* Current interface descriptor */
- struct usb_interface_descriptor *intf =
- &dev->config[i].interface[j].altsetting[k];
-
- buf[0] = '\0';
- ret = usb_get_string_simple(devh,
- dev->config[i].interface[j].altsetting[k].iInterface,
- (char *) buf,
- 1024);
-
- if (ret < 3)
- continue;
- if (strcmp((char *) buf, "MTP") == 0) {
- if (dumpfile != NULL) {
- fprintf(dumpfile, "Configuration %d, interface %d, altsetting %d:\n", i, j, k);
- fprintf(dumpfile, " Interface description contains the string \"MTP\"\n");
- fprintf(dumpfile, " Device recognized as MTP, no further probing.\n");
- }
- usb_close(devh);
- return 1;
- }
- }
- }
- }
- }
-
- usb_close(devh);
- return 0;
-}
-
-#else /* MILD_MTP_PROBING */
/**
* This checks if a device has an MTP descriptor. The descriptor was
* elaborated about in gPhoto bug 1482084, and some official documentation
@@ -347,7 +252,21 @@ static int probe_device_descriptor(struct usb_device *dev, FILE *dumpfile)
struct usb_interface_descriptor *intf =
&dev->config[i].interface[j].altsetting[k];
-
+ /*
+ * Check for Still Image Capture class with PIMA 15740 protocol,
+ * also known as PTP
+ */
+ if (intf->bInterfaceClass == USB_CLASS_PTP
+ && intf->bInterfaceSubClass == 0x01
+ && intf->bInterfaceProtocol == 0x01) {
+ if (dumpfile != NULL) {
+ fprintf(dumpfile, "Configuration %d, interface %d, altsetting %d:\n", i, j, k);
+ fprintf(dumpfile, " Interface implements PTP class,"
+ " no further probing.\n");
+ }
+ usb_close(devh);
+ return 1;
+ }
buf[0] = '\0';
ret = usb_get_string_simple(devh,
dev->config[i].interface[j].altsetting[k].iInterface,
@@ -494,7 +413,6 @@ static int probe_device_descriptor(struct usb_device *dev, FILE *dumpfile)
usb_close(devh);
return 1;
}
-#endif /* MILD_MTP_PROBING */
/**
* This function scans through the connected usb devices on a machine and
@@ -639,14 +557,6 @@ LIBMTP_error_number_t LIBMTP_Detect_Raw_Devices(LIBMTP_raw_device_t ** devices,
retdevs[i].device_entry.vendor = mtp_device_table[j].vendor;
retdevs[i].device_entry.product = mtp_device_table[j].product;
retdevs[i].device_entry.device_flags = mtp_device_table[j].device_flags;
-
-#ifdef _AFT_BUILD
- // Disable the following features for all devices.
- retdevs[i].device_entry.device_flags |= DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST|
- DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST|
- DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST;
-#endif
-
#ifdef ENABLE_USB_BULK_DEBUG
// This device is known to the developers
fprintf(stderr, "Device %d (VID=%04x and PID=%04x) is a %s %s.\n",
@@ -805,7 +715,6 @@ libusb_glue_error (PTPParams *params, const char *format, ...)
#define CONTEXT_BLOCK_SIZE_1 0x3e00
#define CONTEXT_BLOCK_SIZE_2 0x200
#define CONTEXT_BLOCK_SIZE CONTEXT_BLOCK_SIZE_1+CONTEXT_BLOCK_SIZE_2
-
static short
ptp_read_func (
unsigned long size, PTPDataHandler *handler,void *data,
@@ -819,23 +728,6 @@ ptp_read_func (
unsigned long written;
unsigned char *bytes;
int expect_terminator_byte = 0;
- unsigned long usb_inep_maxpacket_size;
- unsigned long context_block_size_1;
- unsigned long context_block_size_2;
- uint16_t ptp_dev_vendor_id = ptp_usb->rawdevice.device_entry.vendor_id;
-
- //"iRiver" device special handling
- if (ptp_dev_vendor_id == 0x4102 || ptp_dev_vendor_id == 0x1006) {
- usb_inep_maxpacket_size = ptp_usb->inep_maxpacket;
- if (usb_inep_maxpacket_size == 0x400) {
- context_block_size_1 = CONTEXT_BLOCK_SIZE_1 - 0x200;
- context_block_size_2 = CONTEXT_BLOCK_SIZE_2 + 0x200;
- }
- else {
- context_block_size_1 = CONTEXT_BLOCK_SIZE_1;
- context_block_size_2 = CONTEXT_BLOCK_SIZE_2;
- }
- }
// This is the largest block we'll need to read in.
bytes = malloc(CONTEXT_BLOCK_SIZE);
@@ -881,9 +773,7 @@ ptp_read_func (
printf("<==USB IN\n");
if (result == 0)
printf("Zero Read\n");
- else if (result < 0)
- fprintf(stderr, "USB_BULK_READ result=%#x\n", result);
- else
+ else
data_dump_ascii (stdout,bytes,result,16);
#endif
@@ -982,11 +872,7 @@ ptp_write_func (
result = USB_BULK_WRITE(ptp_usb->handle,ptp_usb->outep,((char*)bytes+usbwritten),towrite-usbwritten,ptp_usb->timeout);
#ifdef ENABLE_USB_BULK_DEBUG
printf("USB OUT==>\n");
- if (result > 0) {
- data_dump_ascii (stdout,bytes+usbwritten,result,16);
- } else {
- fprintf(stderr, "USB_BULK_WRITE: result=%#x\n", result);
- }
+ data_dump_ascii (stdout,bytes+usbwritten,result,16);
#endif
if (result < 0) {
return PTP_ERROR_IO;
@@ -1253,10 +1139,6 @@ static uint16_t ptp_usb_getpacket(PTPParams *params,
PTPDataHandler memhandler;
uint16_t ret;
unsigned char *x = NULL;
- unsigned long packet_size;
- PTP_USB *ptp_usb = (PTP_USB *) params->data;
-
- packet_size = ptp_usb->inep_maxpacket;
/* read the header and potentially the first data */
if (params->response_packet_size > 0) {
@@ -1270,7 +1152,7 @@ static uint16_t ptp_usb_getpacket(PTPParams *params,
return PTP_RC_OK;
}
ptp_init_recv_memory_handler (&memhandler);
- ret = ptp_read_func(packet_size, &memhandler, params->data, rlen, 0);
+ ret = ptp_read_func(PTP_USB_BULK_HS_MAX_PACKET_LEN_READ, &memhandler, params->data, rlen, 0);
ptp_exit_recv_memory_handler (&memhandler, &x, rlen);
if (x) {
memcpy (packet, x, *rlen);
@@ -1617,38 +1499,37 @@ static int init_ptp_usb (PTPParams* params, PTP_USB* ptp_usb, struct usb_device*
ptp_usb->timeout = USB_TIMEOUT_DEFAULT;
- device_handle = usb_open(dev);
- if (!device_handle) {
- perror("usb_open()");
- return -1;
- }
-
- ptp_usb->handle = device_handle;
+ if ((device_handle = usb_open(dev))){
+ if (!device_handle) {
+ perror("usb_open()");
+ return -1;
+ }
+ ptp_usb->handle = device_handle;
#ifdef LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP
- /*
- * If this device is known to be wrongfully claimed by other kernel
- * drivers (such as mass storage), then try to unload it to make it
- * accessible from user space.
- */
- if (FLAG_UNLOAD_DRIVER(ptp_usb)) {
- if (usb_detach_kernel_driver_np(device_handle, (int) ptp_usb->interface)) {
- // Totally ignore this error!
- // perror("usb_detach_kernel_driver_np()");
+ /*
+ * If this device is known to be wrongfully claimed by other kernel
+ * drivers (such as mass storage), then try to unload it to make it
+ * accessible from user space.
+ */
+ if (FLAG_UNLOAD_DRIVER(ptp_usb)) {
+ if (usb_detach_kernel_driver_np(device_handle, (int) ptp_usb->interface)) {
+ // Totally ignore this error!
+ // perror("usb_detach_kernel_driver_np()");
+ }
}
- }
#endif
#ifdef __WIN32__
- // Only needed on Windows, and cause problems on other platforms.
- if (usb_set_configuration(device_handle, dev->config->bConfigurationValue)) {
- perror("usb_set_configuration()");
- return -1;
- }
+ // Only needed on Windows, and cause problems on other platforms.
+ if (usb_set_configuration(device_handle, dev->config->bConfigurationValue)) {
+ perror("usb_set_configuration()");
+ return -1;
+ }
#endif
- if (usb_claim_interface(device_handle, (int) ptp_usb->interface)) {
- perror("usb_claim_interface()");
- return -1;
+ if (usb_claim_interface(device_handle, (int) ptp_usb->interface)) {
+ perror("usb_claim_interface()");
+ return -1;
+ }
}
-
return 0;
}
@@ -1709,7 +1590,6 @@ static void close_usb(PTP_USB* ptp_usb)
// Commented out since it was confusing some
// devices to do these things.
if (!FLAG_NO_RELEASE_INTERFACE(ptp_usb)) {
-
/*
* Clear any stalled endpoints
* On misbehaving devices designed for Windows/Mac, quote from:
@@ -1729,7 +1609,9 @@ static void close_usb(PTP_USB* ptp_usb)
usb_resetep(ptp_usb->handle, ptp_usb->outep);
usb_release_interface(ptp_usb->handle, (int) ptp_usb->interface);
}
-
+ // Brutally reset device
+ // TODO: is this good on the Mac too?
+ usb_reset(ptp_usb->handle);
usb_close(ptp_usb->handle);
}
@@ -1854,7 +1736,6 @@ LIBMTP_error_number_t configure_usb_device(LIBMTP_raw_device_t *device,
(void) probe_device_descriptor(libusb_device, NULL);
}
-
/* Assign endpoints to usbinfo... */
find_interface_and_endpoints(libusb_device,
&ptp_usb->interface,
diff --git a/src/music-players.h b/src/music-players.h
index 6867887..b007f4c 100644
--- a/src/music-players.h
+++ b/src/music-players.h
@@ -45,10 +45,6 @@
* some of the folders will start to disappear when getting all objects
* and properties.
*/
-
- { "Samsung", 0x4e8, "Galaxy S2, S3, Note", 0x6860, DEVICE_FLAG_NONE},
- { "Motorola", 0x22b8, "Xoom", 0x70a9, DEVICE_FLAG_NONE },
- { "Motorola", 0x22b8, "Xoom", 0x70a8 , DEVICE_FLAG_NONE},
{ "Creative", 0x041e, "ZEN Vision", 0x411f, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
{ "Creative", 0x041e, "Portable Media Center", 0x4123, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
{ "Creative", 0x041e, "ZEN Xtra (MTP mode)", 0x4128, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL },
diff --git a/src/playlist-spl.c b/src/playlist-spl.c
index fe5e598..95844d0 100644
--- a/src/playlist-spl.c
+++ b/src/playlist-spl.c
@@ -141,7 +141,7 @@ void spl_to_playlist_t(LIBMTP_mtpdevice_t* device, PTPObjectInfo *oi,
// make sure the file will be deleted afterwards
if(unlink(tmpname) < 0)
printf("failed to delete temp file for %s.spl -> %s, errno=%s\n", pl->name, tmpname, strerror(errno));
- int ret = LIBMTP_Get_File_To_File_Descriptor(device, pl->playlist_id, fd, NULL, NULL, NULL);
+ int ret = LIBMTP_Get_File_To_File_Descriptor(device, pl->playlist_id, fd, NULL, NULL);
if( ret < 0 ) {
// FIXME add_ptp_error_to_errorstack(device, ret, "LIBMTP_Get_Playlist: Could not get .spl playlist file.");
close(fd);
diff --git a/src/ptp-pack.c b/src/ptp-pack.c
index c6a090c..a427628 100644
--- a/src/ptp-pack.c
+++ b/src/ptp-pack.c
@@ -556,9 +556,6 @@ ptp_unpack_PTPTIME (const char *str) {
strncpy (tmp, ptpdate + 13, 2);
tmp[2] = 0;
tm.tm_sec = atoi (tmp);
-
- tm.tm_isdst = -1;
-
return mktime (&tm);
}
diff --git a/src/ptp.c b/src/ptp.c
index a8c265b..4a2e051 100644
--- a/src/ptp.c
+++ b/src/ptp.c
@@ -4848,7 +4848,6 @@ ptp_object_want (PTPParams *params, uint32_t handle, int want, PTPObject **retob
want &= ~PTPOBJECT_MTPPROPLIST_LOADED;
goto fallback;
}
-
/* Microsoft/MTP has fast directory retrieval. */
if (!ptp_operation_issupported(params,PTP_OC_MTP_GetObjPropList)) {
want &= ~PTPOBJECT_MTPPROPLIST_LOADED;
diff --git a/sync-usbids.sh b/sync-usbids.sh
new file mode 100755
index 0000000..45e9314
--- /dev/null
+++ b/sync-usbids.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Script to compare the USB ID list from linux-usb
+# with the internal list of libmtp.
+
+WGET=`which wget`
+if [ "x$WGET" != "x" ]; then
+ wget -O usb.ids http://www.linux-usb.org/usb.ids
+ examples/hotplug -i > usb.ids-libmtp
+ echo "OK now compare usb.ids and usb.ids-libmtp..."
+else
+ echo "Could not sync to linux-usb USB ID list. No WGET."
+fi