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,
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