I’m bringing up some custom PCBs which use e-series modules. I have successfully updated Device OS on several of the boards, but one isn’t even able to enter DFU mode. The error I get is:
Unable to get serial number descriptor: LIBUSB_TRANSFER_STALL.
We are working on a pogo pin connector so I can get access to the MODE and RESET test points on our custom PCB, but until then I’m not able to manually enter DFU mode and am stuck with just the CLI.
I have tried the Device Doctor, but since I’m not able to get into DFU mode it wasn’t helpful and just directed me to post here.
Are there any other methods or tricks to get a board to respond to some sort of command if it won’t enter DFU from the CLI, and if I don’t have access to enter DFU manually?
Try connecting by USB serial (CDC) at 14400 baud. This should cause the device to go into DFU mode.
particle usb dfu command does it using USB control requests, which is a different code path. They might behave slightly differently.
Thanks for the quick reply.
I just tried to connect to the board with PuTTY. I got this error message at both 14400 and 9600. I double checked that I’m using the correct COM port with the Device Manager.
Do you think a different terminal emulator might help?
Our test-point connector came through and I’m not able to manually put the board into DFU mode.
Even with the board in DFU mode (breathing yellow) I’m still not able to reset or update from the CLI. I tried booting into safe mode (breathing magenta) and got the same results. The error I get now is:
Unable to open USB device: LIBUSB_ERROR_NOT_FOUND
I’m not sure how, but at some point after resetting the board went into usb listening mode (breathing blue) and I was able to call particle identify and get the device ID and ICCID. Using the ICCID I was able to claim the board.
I’ve updated the Topic name. I think once I’m able to update Device OS I’ll be fine.
UPDATE: I was able to update Device OS, but I still get the LIBUSB_ERROR_NOT_FOUND whenever I try any CLI commands.
If you can get into listening mode, can you do a
particle serial inspect? That will show the versions of the components on the device. Unless there is a problem with the bootloader you should always be able to use DFU mode.
When I run serial inspect I see the bootloader is at version 1005, and the other 3 modules are version 2101.
I misspoke earlier. I can use the CLI to get into DFU mode, but when I try to update or upload tinker I have an invalid DFU suffix signature.
Invalid DFU suffix is not actually an error. It always says that in verbose mode, even if successful.
When I came back to this board I was able to upload tinker and other device firmware. I was able to reset and get into DFU mode and update and everything, I’m not exactly sure what fixed it.
I have another board from the set that was previously working, and now I keep getting the same error: LIBUSB_ERROR_NOT_FOUND. I am able to get it into DFU mode using the RESET and MODE pins. From here I’m able to update Device OS, upload firmware including Tinker, and run the Device Doctor. All these seem to complete successfully, but afterwards I’m still not able to use any Particle CLI commands unless I manually put it into DFU mode.