Arduino Zero on Windows 7

Hi All,

I am using CC03 based off SAMD21 bootloaded with Arduino Zero. I am uploading the sketch via native USB. On a Windows 10 machine the port appears "COM92 (Arduino/Genuino Zero (Native USB Port))". I've successfully uploaded a blink sketch and the program will run as per expected.

When I switch over to a Windows 7 machine the COM port appears as above. The problem arises when I upload the sketch the IDE returns the following error:

Sketch uses 10200 bytes (3%) of program storage space. Maximum is 262144 bytes.
Forcing reset using 1200bps open/close on port COM92
PORTS {COM92, } / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
Couldn't find a Board on the selected port. Check that you have the correct port selected.  If it is correct, try pressing the board's reset button after initiating the upload.

The port then disappears and CC03 seems to be stuck in bootloader mode. The only way to get out of it is to upload from a Windows 10 machine. I've experienced the same issue on all Windows 7 machines I've tested on. I have pressed the reset button after the upload but it stays in bootloader mode. I am suspecting a driver issue with Windows 7. Has anyone experienced the same problem with Arduino Zero?

Any assistance will be appreciated. Thanks.

All pre-10 versions of Windows have a really confusing bug in their CDC serial driver which is triggered by "surprise removal" (unplugging the cable or hardware reset if using the native port) and then reconnection while any program has the port open. When nothing has the COM port open, you're fine. But if any program has the COM port open when the board disconnects (which happens on the native port during reset) and reconnects, then the bug happens.

Normally Arduino avoids this by automatically closing the serial monitor when you click Upload. The problem is usually avoided when Zero's programming port, because hardware reset doesn't reset the USB-serial chip that provides the programming port.

The bug is terribly confusing because the COM port is visible in the Ports menu and also in Windows Device Manager. You can open the port. But no communication works. It's so confusing because this happens after you're reconnected the board. Even if you go hours or days, the next time the board connects the COM port shows up, but no communication happens.

The good news is Microsoft finally fixed this bug for Windows 10. The bad news is if you're still using Windows 7 and you're using the native port and you stray off the normal path (by pressing the reset button or using another non-Arduino program to open the COM port which isn't aware of when Arduino uploads) then you're probably going to hit this really confusing problem.

Here's a video I made years ago to document the problem.