arduino / arduino/ArduinoCore-samd
USB hot-plug doesn't work on MKRZero?
- Dominant language
- C
- Stars
- 502
- Forks
- 740
- PR merge metrics
- No merged PRs in 30d
Description
Is this a bug in the Arduino USB code or am I doing something wrong?
The problem can very easily be recreated in a simple hello world sketch
With the latest Arduino installed (1.8.9):
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
Serial.println("Hello World!");
}
Then:
1. Upload the sketch.
2. Open the COM port (I use Putty) and see the "Hello World" text.
3. Power the MKRZero from external source (+5V on Vin).
4. Disconnect USB cable to PC and close Putty terminal.
5. Reconnect USB and open COM port (Again I use putty).
6. Verify that the "Hello World" text is received.
7. Try sending data to the Arduino by typing in the putty window.
Step. 7 will result in the serial program "crashing" with the error: "Unable to write to serial device".
I first saw this problem in some application code (C#) I was writing, but then traced it all the way back to this simple test.
The Arduino serial monitor doesn’t report any problem, but it is clear (if the Arduino is set to loop back received data) that the data is not sent.
The only way I found to get out of this problem, is to power the hardware OFF and then ON Again (which is a no go for my application).
Perhaps the USB code is missing some sort of re-init when hot-plugged?
I will try and see if I can work around this with USB.detach / attach or something... but it would be nice to get this looked at by some more skilled programmers.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the issue on an MKRZero with Arduino 1.8.9 using the provided hello-world sketch and the listed external-power, USB disconnect/reconnect steps. Observe the failed host-to-device write after reopening the COM port, compare it with the Arduino serial monitor and loopback behavior, and trace the USB handling involved in reconnecting. Done means the issue is explained and the hot-plug behavior is corrected or clearly documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100