USB->Serial convertor on Arduino MEGA seems to trip when sending a lot of data


When sending a lot of data to an Arduino MEGA from a PC, the USB->serial chip seems to restart itself.
It goes fine up to about 8k of data, at that time when doing the Win32 WriteFile side, I get a 'ERROR_SEM_TIMEOUT' and the TX line of the USB->Serial chip becomes DC 5V with some weird glitching now and then...

After a second or 5 it seems to restart itself only to trip up again after again about 8k of data.

Found something similar here, and they seemed to suggest using an Arduino with a FTDI chip instead...

I also have an Arduino clone here with a CH340 chip, and that one works fine.

Any idea what I might be doing wrong?


Some missing information that may be VITAL

Could you take a few moments to Learn How To Use The Forum.
It will help you get the best out of the forum in the future.

  • Your OS and version can be valuable information, please include it along with extra security you are using.
  • Always list the version of the IDE you are using and the board version if applicable.
  • Use quote or add error messages as an attachment NOT a picture.
  • How to insert an image into your post. ( Thanks @Robin2 )
  • Add your sketch where applicable but please use CODE TAGS ( </> )
  • Add a SCHEMATIC were needed even if it is hand drawn
  • Add working links to any specific hardware as needed (NOT links to similar items)
  • Remember that the people trying to help cannot see your problem so give as much information as you can


  • Ensure you have FULLY inserted the USB cables.
  • Check you have a COMMON GROUND where required. ( Thanks @Perry)
  • Where possible use USB 2.0 ports or a USB 2.0 POWERED HUB to rule out USB 3.0 issues.
  • Try other computers where possible.
  • Try other USB leads where possible.
  • You may not have the correct driver installed. CH340/341 or CP2102
  • There may be a problem with the board check or remove your wiring first.
  • Remove any items connected to pins 0 and 1.


  • Close any other serial programs before opening the IDE.
  • Ensure you turn off any additional security / antivirus just to test.
  • There may be a problem with the PC try RESTARTING it.
  • You may be selecting the wrong COM port.
  • Avoid cloud/network based installations where possible OR ensure your Network/Cloud software is RUNNING.
  • Clear your browsers CACHE.
  • Close the IDE before using any other serial programs.
  • Preferably install IDE’s as ADMINISTRATOR or your OS equivalent


  • CH340/341 based clones do not report useful information to the “get board info” button.
  • NANO (Old Types) some require you to use the OLD BOOTLOADER option.
  • NANO (ALL Types) See the specific sections lower in the forum.
  • NANO (NEW Types) Install your board CORE’s.
  • Unless using EXTERNAL PROGRAMMERS please leave the IDE selection at default “AVRISP mkII”.
  • Boards using a MICRO usb connector need a cable that is both DATA and CHARGE. Many are CHARGE ONLY.

CREATE editor install locations.

  • On macOs ~/Applications/ArduinoCreateAgent-1.1/
  • On Linux ~/ArduinoCreateAgent-1.1/config.ini
  • On Windows C:\Users[your user]\AppData\Roaming\ArduinoCreateAgent-1.1

Performing the above actions may help resolve your problem without further help.
Language problem ?
Try a language closer to your native language:

Thanks to all those who helped and added to this list.


Most of those topics are already covered I feel like.

Win: Microsoft Windows [Version 10.0.19042.985]

I build the hex in Atmel studio. But I feel like this is irrelevant because the USB->serial converter works independent of the ATmega, or not?


You might build the hex file but what / where is the source file and do you also build that using hex too ?
Or do you use C ?

We cannot see your code so cannot comment if there may be an issue with it.

Do you continously pump data without any delays in between? Can you slow the transmission down (e.g add a delay after every N bytes)?

Without seeing your sender and receiver code, no idea. But I have some doubts that you're doing something wrong as it seems to work with a CH340.

There are significant differences in how the ttl-to-usb converters work. The 16U2 is an active device (microcontroller) and actually identifies itself as a modem. The others are far more simple.

There might also very well be a bug in the 16U2 firmware that only shows its face when you 'stress' it.


I indeed got the same feeling, that the 16U2 somehow gets overwhelmed and resets.
I already tried with a 1ms delay between writes (one write is 16 bytes to the windows API). Same result though.

Is there a system in the 16U2 that actively scans the incoming data for some kind of pattern so it can move into a special state or something similar?

Unfortunately, it is hard for me to make a small test script since this is part of a bigger application. I will try though, maybe write from a binary file with the same data or so. Will take a while though, probably next Friday.

Thanks for all your responses,


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