Can't upload to Leonardo more than once per PC reboot

I just built myself a new PC and have been getting everything setup and came across a problem with my Arduino Leonardo. I can upload to the Leonardo just fine the first time I try after booting up my PC. After that though, every try to upload says Permission Denied. I am using Ubuntu Mate 16.04 so I tried all the things I could find online. I made sure I am a member of the dialout group. I even added the tty group just in case. I also tried sudo chmod 666 ttyACM0 and adding udev rules. It just doesn't like to be used more than once. I assume it has to do with the Leonardo's virtual serial port because I can upload as many times as I want with my Uno. If I run as root I can upload every time but that is not a proper fix. I have seen people mention problems with USB3 which could be part of the problem. I plugged the Arduino into the USB2 ports on the motherboard but it still says that it is connecting using xhci_hcd so I think those ports are actually USB3. I don't know what else to try. If you have any suggestions let me know.

If you have a POWERED USB 2.0 HUB use that as an intermediate device between the computer and the Arduinos. See if that improves things as it is a known fix for boxes with USB 3.0 and windows for Arduino.

The Uno comes with a separate USB_serial chip, whereas the Leonardo has the USB_serial function built in the main ATMEL chip. During boot process of your PC the chip gets a reset and is identified; after that first time, while the Leonardo is still connected to the PC (no matter what OS you use), the com-port is closed and your OS can't see the Leonardo until next boot sequence. But, if you press the reset button on the Leonardo, it should be recognized again for the first shot.

So, if the Leonardo is not recognized, press its reset button each time before you can upload anything.

See my reply #3 to this thread: http://forum.arduino.cc/index.php?topic=432993.msg2984760#msg2984760

Just plugged a LEO in and am also seeing issues with it...

GIT issue opened as it seems to be a builder issue.

Is that issue similar to yours ? eg. the output from the lower console

Ballscrewbob: If you have a POWERED USB 2.0 HUB use that as an intermediate device between the computer and the Arduinos. See if that improves things as it is a known fix for boxes with USB 3.0 and windows for Arduino.

That fixed it. It's funny because I was going to try using the USB hub but thought that couldn't fix it as it is still connecting to to USB3 port on the PC but it worked. Thanks for the suggestion.

LOL you are welcome.

The hub acts as a form of reducer and slows down speed transfers.

Its been my GOTO solution for a lot of real life USB 3.0 issues. Found it out sort of by accident but now everyone gets to share.