--- /dev/null
+diff -urN libgphoto2-2.3.1/camlibs/ptp2/ptp-pack.c libgphoto2-2.3.1.new/camlibs/ptp2/ptp-pack.c
+--- libgphoto2-2.3.1/camlibs/ptp2/ptp-pack.c 2006-12-24 16:16:20.000000000 +0100
++++ libgphoto2-2.3.1.new/camlibs/ptp2/ptp-pack.c 2007-02-28 00:17:17.000000000 +0100
+@@ -116,8 +116,17 @@
+ nconv = iconv (params->cd_ucs2_to_locale, &stringp, &convlen, &locp, &convmax);
+ /* FIXME: handle size errors */
+ loclstr[PTP_MAXSTRLEN*3] = '\0';
+- if (nconv == (size_t) -1)
+- return NULL;
++ if (nconv == (size_t) -1) {
++ int i;
++ /* try the old way, in case iconv is broken */
++ for (i=0;i<loclen;i++) {
++ if (string[i]>127)
++ loclstr[i] = '?';
++ else
++ loclstr[i] = string[i];
++ }
++ string[loclen] = 0;
++ }
+ return strdup(loclstr);
+ }
+ return NULL;