I'd like to programatically disconnect DATA lines on a USB device (while leaving the power lines active), and I know that USB data lines are a differential pair, which I have no previous experience with.

So the question is: is it enough to use a reasonable quality signal MOSFET (p-channel) to do so? This should work with high speed (480 Mbit/s) USB, and I've found a blog post which recommends using an analog switch ("like 74HC4066") for this purpose instead.

  • 2
    \$\begingroup\$ What disruption of functionality are you hoping to achieve? \$\endgroup\$
    – Andy aka
    Mar 11 '17 at 10:49
  • \$\begingroup\$ Two things, at first just the disconnection / reconnection of a device to be controlled by a MCU (i.e. as far as the host is concerned, that the device might just as well be unplugged / replugged, ignoring the power lines which will stay on), and in the future, possibly "multiplexing" of two devices, i.e. the MCU controls which one is presented to the host - but that's not the subject of this question. \$\endgroup\$
    – Ivan Voras
    Mar 11 '17 at 13:17

Won't work with a MOSFET picked at random, too much capacitance, too much chance for bad layout, etc.

Why not use a chip designed for this specific purpose?


  • \$\begingroup\$ Good idea, but let's say I don't have the means to solder this SMD for prototyping...? \$\endgroup\$
    – Ivan Voras
    Mar 11 '17 at 13:18
  • \$\begingroup\$ I haven't checked, but perhaps you could find this type of switches in packages like TSSOP? \$\endgroup\$
    – bobflux
    Mar 11 '17 at 13:20
  • 1
    \$\begingroup\$ @IvanVoras Prototyping USB without making a prototype PCB is a very bad idea at speeds of USB HS mode - 240++ MHz. Without carefully controlling impedance of the entire differential link, you likely will waste a lot of time chasing ghosts of reflections and intersymbol interference. Do a PCB prototype, with right real components. If you are validating/debugging some software regarding "surprise disconnect", there are devices already on the market that do this function for you. \$\endgroup\$ Mar 16 '17 at 5:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.