PORTS Forum

Ports and Interfaces => USB => Topic started by: arador on October 23, 2014, 03:08:46 am

Title: Closing a HID handle for booloader
Post by: arador on October 23, 2014, 03:08:46 am
Hi,
Using a HID host application (based on generic_hid_cs_46) I connect to my device with a certain VID/PID, then I send a  message to the device to switch to bootloader mode, and then need to re-connect the device with new VID/PID.
I get "Device not connected" when trying the connect with the second VID/PID.
Is there a function that completely shuts down the previous HID handle?

Thanks
Title: Re: Closing a HID handle for booloader
Post by: Jan Axelson on October 23, 2014, 03:10:14 pm
Did you physically detach and reattach the device or emulate it by disconnecting/reconnecting the pull-up/pull-down to cause the host to re-enumerate the device with the new VID and PID?
Title: Re: Closing a HID handle for booloader
Post by: arador on October 27, 2014, 05:53:13 am
Sorry for the late reply.

I did not physically detach and reattach.
The idea is to implement a bootloadable device via usb (without a programmer):
The device enumerates with a VID/PID as a measurement device. When its firmware needs to be upgraded, the host application sends a message to the device which "tells" the device to run a bootloader firmware, and at that stage the host should close the connection with the original VID/PID, and initiate a new connection with the bootloader with a new VID/PID in order to transfer the upgraded firmware.
At the end of the upgrade process, the device resets itself and boots as the measurement device (original VID/PID again). The host should again disconnect from the device (as a bootloader) and reconnect with the original VID/PID.
The whole process is done without touching the USB cable.
Title: Re: Closing a HID handle for booloader
Post by: Jan Axelson on October 27, 2014, 10:07:22 am
Thus you need to emulate detach/reattach by electronically switching the pull-up/pull-down on D+ or D- out and back in. That tells the host there is a device that may have a different VID/PID attached.