diff --git a/main.go b/main.go index 850e2d83..01e20977 100644 --- a/main.go +++ b/main.go @@ -998,7 +998,8 @@ func getDefaultPort(portFlag string, usbInterfaces []string) (port string, err e preferredPortIDs = append(preferredPortIDs, [2]uint16{uint16(vid), uint16(pid)}) } - var primaryPorts []string // ports picked from preferred USB VID/PID + var primaryPorts []string // ports picked from preferred USB VID/PID + var secondaryPorts []string // other ports (as a fallback) for _, p := range portsList { if !p.IsUSB { continue @@ -1020,6 +1021,8 @@ func getDefaultPort(portFlag string, usbInterfaces []string) (port string, err e continue } } + + secondaryPorts = append(secondaryPorts, p.Name) } if len(primaryPorts) == 1 { // There is exactly one match in the set of preferred ports. Use @@ -1031,18 +1034,10 @@ func getDefaultPort(portFlag string, usbInterfaces []string) (port string, err e // one device of the same type are connected (e.g. two Arduino // Unos). ports = primaryPorts - } - - if len(ports) == 0 { - // fallback - switch runtime.GOOS { - case "darwin": - ports, err = filepath.Glob("/dev/cu.usb*") - case "linux": - ports, err = filepath.Glob("/dev/ttyACM*") - case "windows": - ports, err = serial.GetPortsList() - } + } else { + // No preferred ports found. Fall back to other serial ports + // available in the system. + ports = secondaryPorts } default: return "", errors.New("unable to search for a default USB device to be flashed on this OS")