16

I'm developing onto Arduino and sometimes the USB port that is being used stops working. Then I need to plug the device into another USB port. Once all the USB ports stop working I have to restart the machine which is really annoying.

As far as I remember there is a command which is able to restart the USB subsystem individually but I can't remember. How can I restart USBs without restarting the entire system?

I'm using macOS Sierra.

This is different to the question Resetting the USB port on a MacBook Pro as I need software-only solution as my USB ports get frozen - which means they stop working until full system restart. There must be a way of restarting the USB subsystem individually.

4
  • What model(s) of Mac are you using? – IconDaemon Aug 23 '17 at 10:28
  • 2
    Why is this not Mac related? It's about USB ports on his Mac, and how to restart the USB system on the Mac, not on Arduino. On the other hand, the Ardiono community might be more helpfull as they will see this problem more often. arduino.stackexchange.com – SPRBRN Aug 23 '17 at 10:40
  • From my comment that starts off "From the way your question is worded..." tells why it appears this isn't Mac related. You need to articulate what your issue is, what you expect the result to be and what your environment is. Remember, we're not there to look over your shoulder. Also, this question recently answered addresses your question apple.stackexchange.com/questions/294944/… so now your question (based on the comments) is potentially a dupe. – Allan Aug 23 '17 at 13:11
  • This sort of sounds like an XY problem. A possible reason for the issue is the Arduino device is drawing too much power and overheating the USB Bus. Connect it to an externally powered USB Hub and connect the externally powered USB Hub to the Mac. – user3439894 Jan 11 '18 at 16:50
5

You can reset the USB Bus with the USB Prober.app. It's not included with XCode, but you can download it separately from the Apple Developer Download page. You will need to signup and login.

  1. search for iousbfamily
  2. Download the latest IOUSBFamily Log Release file (at the time of this post it was IOUSBFamiliy Log Release for OS X 10.9.3)
  3. Mount the .dmg and navigate to the directory with IOUSB-XXXXXX-log.
  4. DO NOT install. Just right click the package and "Show Package Contents"
  5. Unzip the Archive.pax.gz; the file USBProber.app will be in /Archive/DevTools/Hardware


Important:

Just launching the app will reset your USB bus. Make sure you you unmount any drives you don't want unceremoniously and improperly removed!

9
  • I'm not able to reset the USB with this USB Prober. Can you point out how to do so? – haxpanel Oct 10 '17 at 20:55
  • Just launching USB prober will reset it. What did you do and what happened? – Allan Oct 10 '17 at 21:00
  • 2
    I did everything according to your answer but the app doesn't reset it. – haxpanel Oct 10 '17 at 21:03
  • I clearly remember there was a command to restart the goddamn USB nonsense. 1 piece of command, in the terminal. I just don't have to restart it on a normal day so that I've forgot it.... – haxpanel Oct 10 '17 at 21:17
  • Indeed this does not work here. Tried to mount a 'bad' usb stick on latest Sierra. No further sticks are recognised until restart. External periphery still works after bad stick, USBProber does nothing resetting on launch. Any other way? – LаngLаngС Jan 24 '18 at 12:21
4

To reset a USB device, first download the USB Prober.app as explained in this other answer.

Next, you need to figure out the so-called Vendor and Product IDs of the USB device that you want to reset. You can do that with USB Prober, but it may be easier by using the System Profiler app from your Application / Utilities folder: Select USB within the Hardware topic in the left pane, then look for your USB device in the top right pane, select it, and you'll see its Product and Vendor IDs shown below, like this:

System Profiler screenshot

The IDs start are hex codes that start with 0x and have 4 more digits/letters. Make a note of them, with the Vendor ID first.

Inside USB Prober, there's a tool called reenumerate that you have to invoke from Terminal.app (find that in your Application / Utilities folder).

Move or copy the downloaded USB Prober.app to your Utilities folder.

Open Terminal.app, and paste the following line into it:

/Applications/Utilities/USB\ Prober.app/Contents/Resources/reenumerate

Then click into the Terminal window and type the space key, then type the two USB device IDs, Vendor ID first, separated with a comma. If your IDs were 0x174c and 0x55aa, then the line now should read:

...$ /Applications/Utilities/USB\ Prober.app/Contents/Resources/reenumerate -v 0x174c,0x55aa

Press return and you should get output similar to this:

Verbose mode ON
Looking for vid: 0x174c, pid: 0x55aa
Found "ASM105x" @ 0x14200000
Calling USBDeviceReEnumerate
USBDeviceReEnumerate returns 0x00000000

If you don't get more than the first line, it means that you entered the wrong IDs. If you get the full output, the device should have reset - for a disk device this means that it'll disconnect and reconnect as if you had unplugged the cable briefly.

If you invoke the reenumerate command without any arguments, you'll get usage information with more options you could try.

3
  • 1
    What is Prober.app? What exactly does happen here? What directory is USB? – IceFire Jul 31 '18 at 7:19
  • 1
    On Mojave, this command using USB Prober doesn't work for me. I see the first two lines, but nothing after that. – Patrick Chu Jun 14 '19 at 14:47
  • Sadly this isn't working for the particular device I'm trying to control - probably because it's actually a Thunderbolt hub. ;] I get this output: ``` ~ ❯❯❯ /Applications/USB\ Prober.app/Contents/Resources/reenumerate -v 0x2109,0x0812 Verbose mode ON Looking for vid: 0x2109, pid: 0x812 Found "USB3.0 Hub " @ 0x00500000 Not able to Open() the IOUSBDevice. A kernel driver is probably controlling it. ``` I don't suppose you know how to deal with that by any chance? – HerbCSO Mar 4 at 13:45

You must log in to answer this question.

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