First of all please note that I'm not a hardware guy, nor an experimented developer so please excuse my mistakes.
I need to make the following setup: PC -> Arduino -> USB device. The sole purpose of the Arduino should be to toggle power on and off for the USB device. (simulate plug / unplug device from the PC).
There is a solution with a mosfet but I was wondering if there are any other simpler/elegant solutions.
To simulate an unplug you really need to interrupt all four wires. The cleanest solution is probably low-power relays. Get four Single Pole relays that operate on 5V and 30 mA or less. Control each one with an Arduino pin. Alternatively you can use cheaper medium-power relays (say around 75 mA) and use a transistor or transistors to control them from one or more Arduino pins.
If you can get Double Pole relays you only need two.
If you're using relays, you can get very inexpensive relay modules on e-bay that arduino can control.
Or, use little telecom relays with higher coil resistances that arduino can control directly.
Don't forget diodes across the coil contacts.
For example, here are 15 of them on a board controlled by a '1284P chip.
danizgod:
I need to make the following setup: PC -> Arduino -> USB device. The sole purpose of the Arduino should be to toggle power on and off for the USB device. (simulate plug / unplug device from the PC).
Do you actually need to power the device down? USB device presence and type sensing is triggered by pull-up and pull-down of the D+ and D- data lines. If you just need to make the host think the device has been un-/re-plugged, it is only the data lines you need to intercept. (If you need to power cycle the device too, you need to isolate the data lines before you isolate the power lines, and reconnect in the reverse order.)
Where is the 'toggle' command coming from? If it's a manual input then quite likely what you need is a two pole switch rather than an Arduino.