Upload error: ... revisited, again and again and again

I play with my Arduino daily. And I get this error message at least once a day. I can upload 4 programs successfully and magically on the 5th time it happens. I run Arduino IDE 2.0.0 Beta.9

 avrdude: ser_open(): can't set com-state for "\\.\COM3"
 Upload error: Error: 2 UNKNOWN: uploading error: uploading error: exit status 1

I then go to Windows 10 --> device manager --> universal serial bus controllers --> and "update" drivers with the existing already installed driver --> restart my computer --> reorganize all my stuff after a reboot

Most of the time my quest ends there, but occasionally I have to pull the USB out and plug it back in for good measure. I've seen this error since 2015 in the forum (that thread was closed 4 years later with no real answer), but don't ever see a satisfactory answer that would fix this error so it never, ever, ever happens again.

Any suggestions?

It's a known issue:
Compilation error: Error: 2 UNKNOWN: exit status 1 · Issue #151 · arduino/arduino-ide · GitHub
I do not see a solution as of yet.

I also have not determined the cause of this error. I have been collecting some references with the idea of eventually doing a survey to see whether I can find a good explanation or a pattern that will allow me to identify the cause, but I haven't found the time for it. Here is the list of links in case you want to take a look:

That is completely unrelated. The "Error: 2 UNKNOWN: exit status 1" is a very generic error message that only means something went wrong. There are a near infinite number of possible causes of this error message, so it shouldn't be used for correlation purposes. The more meaningful error message from the linked bug report is "undefined reference to `main'", whereas the one here is "can't set com-state". The one in the bug report is coming from the avr-gcc compiler, while this one is coming from the AVRDUDE uploader tool.

It looks like the problem is detected when avrdude tries to set the baud rate and the driver rejects the attempt.

285         fdp->pfd = (void *)hComPort;
286	        if (ser_setspeed(fdp, pinfo.baud) != 0)
287	        {
288	                CloseHandle(hComPort);
289	                avrdude_message(MSG_INFO, "%s: ser_open(): can't set com-state for \"%s\"\n",
290	                                progname, port);
291	                return -1;
292	        }

http://svn.savannah.gnu.org/viewvc/avrdude/trunk/avrdude/ser_win32.c?revision=1353&view=markup

56	static struct baud_mapping baud_lookup_table [] = {
57	  { 1200,   CBR_1200 },
58	  { 2400,   CBR_2400 },
59	  { 4800,   CBR_4800 },
60	  { 9600,   CBR_9600 },
61	  { 19200,  CBR_19200 },
62	  { 38400,  CBR_38400 },
63	  { 57600,  CBR_57600 },
64	  { 115200, CBR_115200 },
65	  { 0,      0 }                 /* Terminator. */
66	};
67	
68    static DWORD serial_baud_lookup(long baud)
69	{
70	  struct baud_mapping *map = baud_lookup_table;
71	
72	  while (map->baud) {
73	    if (map->baud == baud)
74	      return map->speed;
75	    map++;
76	  }
77	
78	  /*
79	   * If a non-standard BAUD rate is used, issue
80	   * a warning (if we are verbose) and return the raw rate
81	   */
82	  avrdude_message(MSG_NOTICE, "%s: serial_baud_lookup(): Using non-standard baud rate: %ld",
83	              progname, baud);
84	
85	  return baud;
86	}

100 static int ser_setspeed(union filedescriptor *fd, long baud)
101	{
102	        if (serial_over_ethernet) {
103	                return -ENOTTY;
104	        } else {
105	                DCB dcb;
106	                HANDLE hComPort = (HANDLE)fd->pfd;
107	
108	                ZeroMemory (&dcb, sizeof(DCB));
109	                dcb.DCBlength = sizeof(DCB);
110	                dcb.BaudRate = serial_baud_lookup (baud);
111	                dcb.fBinary = 1;
112	                dcb.fDtrControl = DTR_CONTROL_DISABLE;
113	                dcb.fRtsControl = RTS_CONTROL_DISABLE;
114	                dcb.ByteSize = 8;
115	                dcb.Parity = NOPARITY;
116	                dcb.StopBits = ONESTOPBIT;
117	
118	                if (!SetCommState(hComPort, &dcb))
119	                        return -1;
120	
121	                return 0;
122	        }
123	}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.