1

I have an equipment that communicates through a COM port and it is powered by the USB port. My problem is that when the PC reboots, the power is kept but the communication with the COM port stops. The only way to restart is to remove and insert the USB cable.

I'm developing a Delphi application that turns off the USB power. I tried using devcon to do it:

devcon.exe disable *ID*
devcon.exe enable *ID*
devcon.exe restarts *ID*

But it only stops the communication with the COM port. The USB power is kept.

Is there a way to power off the USB port, so the equipment would also turn off?

Any tip will be very helpful.

2
  • Also, please identify the computers.
    – fixer1234
    Sep 5, 2016 at 19:44
  • Yes, I'll do it as part of the PC reboot process. My only problem is that devcon is not turning off the power of the USB. The equipment is connected by a PL2303 USB-TTL converter. Sep 5, 2016 at 19:52

1 Answer 1

0

For most PCs the USB VBUS power on ROOT ports does not have any high-side hardware switches to control VBUS, thus there is no means to turn the VBUS on/off by software. The VBUS is connected nearly directly to system's PS, to +5VSB (standby) rail, so even if the PC is turned off, VBUS stays. This is done this way so a keyboard or mouse can wake the PC up. (Laptops are somewhat different, it depends). Therefore, you have three options:

(1) Use a good (certified and expensive) hub with ports that have high-side switches to connect to your COM devices. When PC reboots, new enumeration cycle for USB hub will have USB_RESET state, and high-side switches will turn off and then on. It might be not easy to find this kind of hub, since manufacturers usually have stuffing options on their PCBs either to use high-side switches (adding cost), or bypass them with resettable polyfuse (cheap) at assembly point.

(2) Use a separate controlled power source like this SPDT USB-controlled switch between USB port and your equipment.

(3) Fix your COM-port equipment and/or host driver to implement "reset/initialize" protocol.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .