OK,

Attached is a patch that will print out copious debugging. It won't change
anything, but hopefully it'll tell us where things are failing.

Apply this patch and try the firmware upgrade again with verbose mode on,
and send the output.

Once that's done, you're remote should be once again stuck in safe mode. At
this point, please run:

   sudo lsusb -vvv

And send the output of that as well. The remote *has* to be there somewhere,
and I want to know why we don't see it when it's in safemode.

Thanks!
-- 
Phil Dibowitz                             p...@ipom.com
Open Source software and tech docs        Insanity Palace of Metallica
http://www.phildev.net/                   http://www.ipom.com/

"Never write it in C if you can do it in 'awk';
 Never do it in 'awk' if 'sed' can handle it;
 Never use 'sed' when 'tr' can do the job;
 Never invoke 'tr' when 'cat' is sufficient;
 Avoid using 'cat' whenever possible" -- Taylor's Laws of Programming

Index: concordance/concordance.c
===================================================================
RCS file: /cvsroot/concordance/concordance/concordance/concordance.c,v
retrieving revision 1.39
diff -u -r1.39 concordance.c
--- concordance/concordance.c	5 Jul 2009 13:46:56 -0000	1.39
+++ concordance/concordance.c	20 Aug 2009 18:09:33 -0000
@@ -648,33 +648,40 @@
 	}
 
 	if (!(*options).direct) {
+		printf("Calling finish_firmware()\n");
 		if ((err = finish_firmware())) {
 			printf("Failed to finalize FW update\n");
 			return err;
 		}
+		printf("Done calling finish_firmware()\n");
 	}
 
 	if ((*options).noreset) {
 		return 0;
 	}
 
-	printf("Resetting Remote:    ");
+	printf("Resetting Remote:    \n");
 	reset_remote();
 
+	printf("Deinitializing libconcord\n");
 	deinit_concord();
 	for (i = 0; i < MAX_WAIT_FOR_BOOT; i++) {
 		sleep(WAIT_FOR_BOOT_SLEEP);
+		printf("Attempting initializing libconcord\n");
 		err = init_concord();
 		if (err == 0) {
+			printf("Attempting get_identity\n");
 			err = get_identity(cb_print_percent_status, NULL);
 			if (err == 0) {
 				break;
 			}
+			printf("Deinitializing libconcord\n");
 			deinit_concord();
 		}
 	}
 
 	if (err != 0) {
+		printf("concordance: failure\n");
 		return err;
 	}
 	printf("                     done\n");
Index: libconcord/libconcord.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/libconcord.cpp,v
retrieving revision 1.41
diff -u -r1.41 libconcord.cpp
--- libconcord/libconcord.cpp	20 May 2009 19:46:09 -0000	1.41
+++ libconcord/libconcord.cpp	20 Aug 2009 18:09:33 -0000
@@ -44,7 +44,7 @@
 #define ZWAVE_HID_PID_MIN 0xC112
 #define ZWAVE_HID_PID_MAX 0xC115
 
-#define FIRMWARE_MAX_SIZE 64*1024
+#define FIRMWARE_MAX_SIZE 128*1024
 
 static class CRemoteBase *rmt;
 static struct TRemoteInfo ri;
@@ -622,10 +622,12 @@
 	}
 #endif
 
+	printf("Calling InitUSB()");
 	if (InitUSB()) {
 		return LC_ERROR_OS;
 	}
 
+	printf("Calling FindRemote()");
 	if ((err = FindRemote(hid_info))) {
 		hid_info.pid = 0;
 
@@ -664,7 +666,9 @@
 
 int deinit_concord()
 {
+	printf("In deinit_concord(), calling ShutdownUSB()\n");
 	ShutdownUSB();
+	printf("In deinit_concord(), deleting the rmt object\n");
 	delete rmt;
 	return 0;
 }
@@ -693,6 +697,7 @@
 
 int reset_remote()
 {
+	printf("LCDEBUG: in reset_remote, calling Reset()\n");
 	int err = rmt->Reset(COMMAND_RESET_DEVICE);
 	return err;
 }
@@ -1207,6 +1212,7 @@
 	while (GetTag("DATA", x, x_size, x, &hex) == 0) {
 		uint32_t hex_size = hex.length() / 2;
 		if (hex_size > o_size) {
+			debug("Got more data than we have space for\n");
 			return LC_ERROR;
 		}
 
Index: libconcord/remote.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/remote.cpp,v
retrieving revision 1.39
diff -u -r1.39 remote.cpp
--- libconcord/remote.cpp	11 Feb 2009 20:00:13 -0000	1.39
+++ libconcord/remote.cpp	20 Aug 2009 18:09:33 -0000
@@ -70,6 +70,7 @@
 {
 	uint8_t reset_cmd[64] = { COMMAND_RESET, kind };
 
+        printf("In Reset(), calling WriteReport()\n");
 	return HID_WriteReport(reset_cmd);
 }
 
Index: libconcord/libusb/libusbhid.cpp
===================================================================
RCS file: /cvsroot/concordance/concordance/libconcord/libusb/libusbhid.cpp,v
retrieving revision 1.18
diff -u -r1.18 libusbhid.cpp
--- libconcord/libusb/libusbhid.cpp	11 Apr 2008 05:05:26 -0000	1.18
+++ libconcord/libusb/libusbhid.cpp	20 Aug 2009 18:09:33 -0000
@@ -53,6 +53,7 @@
 
 int InitUSB()
 {
+	printf("Calling usb_init()\n");
 	usb_init();
 	return 0;
 }
@@ -60,6 +61,7 @@
 void ShutdownUSB()
 {
 	if (h_hid) {
+		printf("Calling usb_release_interface\n");
 		usb_release_interface(h_hid,0);
 	}
 }
@@ -206,9 +208,11 @@
 	 * In Windows you send an preceeding 0x00 byte with
 	 * every command, so we data+1 here to skip that.
 	 */
+	printf("Calling usb_interrupt_write\n");
 	const int err=usb_interrupt_write(h_hid, ep_write,
 		reinterpret_cast<char *>(const_cast<uint8_t*>(data)),
 		orl, 500);
+	printf("Done calling usb_interrupt_write\n");
 
 	if (err < 0) {
 		debug("Failed to write to device: %d (%s)", err,

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel

Reply via email to