Chinese Mega Clone not working

I've bought this Chinese Arduino Mega clone (Chinese clone with CH340) around February 2024. I tried uploading sketches on it, and it failed every time. Here's what I know so far about the behavior of the board:

  • loopback test: failed
  • TX LED faintly lights up when pressing enter in serial monitor, while RX LED never seen lit up
  • TX faintly blink once at the start when uploading sketch, and never seen lit after that.
  • TX and RX are not seen rapidly blinking while uploading sketch
  • "L" LED blink quickly with a rhythm similar to a heartbeat. With 2 quick blinks follow by a wait then the 2 quick blinks repeats and so on.
  • Pin 13 does emit signals at a regular interval (tested this by connecting pin 13 of the mega to a working Arduino Uno)

These behaviors are consistent and hasn't changed despite my attempts at fixing it.

Here are the attempts I've made at fixing it:

Is there anything else that I could try to test to diagnose where and what went wrong? I'm guessing this is a hardware issue instead of a software, due to a few tests I conducted which showed that the RX and TX are not functioning correctly. Thank you very much!

Please enable verbose output during upload and disable verbose output during compilation under file/preferences in the IDE and perform an upload.
Post the results here using code tags.

The Tx should be quite bright. This might indicate a problem with the CH340.

I think that this indicates that a sketch is missing but not 100% sure.

Does it match the 2 quick blinks that you mentioned before.

The loopback does not work (or is non-conclusive) with CH340 based boards.

Assuming that you can't upload a sketch after burning the bootloader, this will again point at the CH340. You can upload sketches in the same way as you did burn the bootloader using the Uno as the programmer (use sketch -> upload using programmer). I would first try the blink sketch; the L-LED should blink one second on, one second off.

After that you can upload (again using sketch -> upload using programmer) a simple sketch that sends some serial data to the PC and check what happens with the Tx LED and in serial monitor. This should give you some indication about the

Note:
Uploading a sketch using a programmer will wipe the bootloader; you can restore that later again.

1 Like

I apologize for my late responds due to time zone differences.

Here is my attempt at uploading the Blink program

FQBN: arduino:avr:mega
Using board 'mega' from platform in folder: C:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Using core 'arduino' from platform in folder: C:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Detecting libraries used...
C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\mega C:\Users\silve\AppData\Local\Temp\arduino\sketches\6D62637E141D92CF131A1393392BD535\sketch\Blink.ino.cpp -o nul
Generating function prototypes...
C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\mega C:\Users\silve\AppData\Local\Temp\arduino\sketches\6D62637E141D92CF131A1393392BD535\sketch\Blink.ino.cpp -o C:\Users\silve\AppData\Local\Temp\1320882381\sketch_merged.cpp
C:\Users\silve\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\silve\AppData\Local\Temp\1320882381\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535\\sketch\\Blink.ino.cpp" -o "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535\\sketch\\Blink.ino.cpp.o"
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\silve\AppData\Local\Temp\arduino\cores\arduino_avr_mega_cpu_atmega2560_728212fa9d231fb0c05fe2bd0ae17779\core.a
Linking everything together...
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega2560 -o "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535\\sketch\\Blink.ino.cpp.o" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/..\\..\\cores\\arduino_avr_mega_cpu_atmega2560_728212fa9d231fb0c05fe2bd0ae17779\\core.a" "-LC:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535" -lm
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.eep"
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.hex"

"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf"
Sketch uses 1536 bytes (0%) of program storage space. Maximum is 253952 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 8183 bytes for local variables. Maximum is 8192 bytes.
"C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v  -patmega2560 -cwiring "-PCOM3" -b115200 -D "-Uflash:w:C:\Users\silve\AppData\Local\Temp\arduino\sketches\6D62637E141D92CF131A1393392BD535/Blink.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

avrdude done.  Thank you.

Failed uploading: uploading error: exit status 1

It does not. it output a signal at the same interval (about 1 seconds) compared to the L LED, which blink in a heartbeat rhythm.

The result was the same as when I upload to the mega board directly. Here is what I've done:

  • Wired the Uno to the Mega based on the burn bootloader configuration.
  • Connected the Uno to my computer
  • Loaded up ArduinoISP program and upload to my Uno. Successful upload.
  • Opened the blink program from example, change the board to mega (still connected to uno)
  • Sketch -> Upload Using Programmer
    Here is the result:
FQBN: arduino:avr:mega
Using board 'mega' from platform in folder: C:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Using core 'arduino' from platform in folder: C:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Detecting libraries used...
C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\mega C:\Users\silve\AppData\Local\Temp\arduino\sketches\6D62637E141D92CF131A1393392BD535\sketch\Blink.ino.cpp -o nul
Generating function prototypes...
C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\mega C:\Users\silve\AppData\Local\Temp\arduino\sketches\6D62637E141D92CF131A1393392BD535\sketch\Blink.ino.cpp -o C:\Users\silve\AppData\Local\Temp\4178832713\sketch_merged.cpp
C:\Users\silve\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\silve\AppData\Local\Temp\4178832713\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535\\sketch\\Blink.ino.cpp" -o "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535\\sketch\\Blink.ino.cpp.o"
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\silve\AppData\Local\Temp\arduino\cores\arduino_avr_mega_cpu_atmega2560_728212fa9d231fb0c05fe2bd0ae17779\core.a
Linking everything together...
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega2560 -o "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535\\sketch\\Blink.ino.cpp.o" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/..\\..\\cores\\arduino_avr_mega_cpu_atmega2560_728212fa9d231fb0c05fe2bd0ae17779\\core.a" "-LC:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535" -lm
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.eep"
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.hex"

"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\6D62637E141D92CF131A1393392BD535/Blink.ino.elf"
Sketch uses 1536 bytes (0%) of program storage space. Maximum is 253952 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 8183 bytes for local variables. Maximum is 8192 bytes.
"C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v  -patmega2560 -cwiring "-PCOM6" -b115200 -D "-Uflash:w:C:\Users\silve\AppData\Local\Temp\arduino\sketches\6D62637E141D92CF131A1393392BD535/Blink.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM6
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

avrdude done.  Thank you.

Failed uploading: uploading error: exit status 1

Note that during this process, the mega showed no changes in behavior, TX and RX still unlit and L LED still blink in heartbeat rhythm.

Have you installed the driver for the specific USB chip on your Mega Board. You will need a magnifier, and then tilt it around to read it. It will be a chip near the USB connector.

I have installed the CH340 driver.

I tried installing different drivers from different sources, even different Windows versions. I also tried installing the driver manually through device manager, but nothing changed.

There are two possible chips, verify which one it is. All that messing with different websites, OSs, etc means it now is much more difficult to fix.

How do I identify which chip it is? The drivers that were installed on my computer could be deleted, so I don't think it should be much of a problem.

There is a 9 digits serial number on my chip, I wonder if that would allow me to identify.

Edit: I think you meant the CH340G or CH340C. In which case, I am using the CH340G variant

Edit: The board is being recognise in the device manager, so I don't think it has an issue with the driver
image

This is normal and expected when the port is from a board that uses a general purpose USB to serial bridge chip such as the CH340 on your Mega derivative board.

Arduino IDE has a feature where it attempts to identify the specific Arduino board model of each of the ports it discovers on your computer. It is able to make this identification when the port has properties that are unique to a specific board model.

The most commonly used properties are the USB VID/PID identifiers. Arduino, as well as some of the 3rd party board manufacturers have purchased a dedicated "vendor ID" (VID) from the USB-IF organization. This allows them to design boards that use a custom firmware that produces a serial port with a unique VID/PID pair dedicated for exclusive use with boards of that model. The ports of these boards can be identified by Arduino IDE.

An alternative option for adding a USB interface to an Arduino board is to use a general purpose USB to serial bridge chip (e.g., Silicon Labs CP2102, FTDI FT232R, WCH CH340). An example of this is the classic Nano, which uses the FT232R chip. These chips come with a VID/PID pair provided by the chip manufacturer. That means the VID/PID pair doesn't serve as a unique identifying property associated with a specific Arduino board model because the chips with that VID/PID pair are used on many different board models (and even other devices that are not Arduino boards).

In the case where the port does not provide unique properties, Arduino IDE doesn't have any way to identify the board model associated with the port and so the identification features will not be available for that port:

  • Port will be initially labeled as "Unknown" in the board selector menu on the IDE toolbar.
  • Port will not be labeled with board name in Tools > Port menu.
  • "BN" field of the "Board Info" dialog will say "Unknown board".

However, this is not a real problem because port identification is only a convenience feature. When using the boards that produce an unidentifiable port, you only need to make sure the correct board is selected in the Tools > Board menu and the correct port selected in the Tools > Port menu and everything will work perfectly well.

I think that there is something wrong; that output looks more like the results of a normal upload where the ATmega2560 does not have a bootloader.

I don't use an Arduino as a programmer but took the following steps to reproduce your issue.

  1. Burn bootloader; this uses the programmer that I have. The result is an "odd" blinking LED which (to my knowledge) indicates that there is no sketch; something like 1 second on, 0.5 second off.
  2. Upload a modified (to make sure that I could identify the difference) blink using the programmer. This works as expected.
    • Note that this wipes the bootloader.
  3. Upload the same modified blink using a normal upload (after the previous setp) and I get the output that you have.
    For below outputs, COM16 is the programmer, COM5 is the Mega

===
Burn bootloader

"C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega2560 -cstk500 -PCOM16 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD8:m -Ulfuse:w:0xFF:m

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM16
         Using Programmer              : stk500
         AVR Part                      : ATmega2560
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500
         Programmer Model: STK500
         Hardware Version: 15
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 5.1 V
         SCK period      : 8.7 us
         Varef           : 0.0 V
         Oscillator      : Off

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: erasing chip
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
"C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega2560 -cstk500 -PCOM16 "-Uflash:w:C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6/bootloaders/stk500v2/stk500boot_v2_mega2560.hex:i" -Ulock:w:0x0F:m
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0xFD"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFD:
avrdude: load data efuse data from input file 0xFD:
avrdude: input file 0xFD contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xD8"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD8:
avrdude: load data hfuse data from input file 0xD8:
avrdude: input file 0xD8 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done.  Thank you.


avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM16
         Using Programmer              : stk500
         AVR Part                      : ATmega2560
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500
         Programmer Model: STK500
         Hardware Version: 15
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 5.0 V
         SCK period      : 8.7 us
         Varef           : 0.0 V
         Oscillator      : Off

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6/bootloaders/stk500v2/stk500boot_v2_mega2560.hex"
avrdude: writing flash (261406 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 261406 bytes of flash written
avrdude: verifying flash memory against C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6/bootloaders/stk500v2/stk500boot_v2_mega2560.hex:
avrdude: load data flash data from input file C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6/bootloaders/stk500v2/stk500boot_v2_mega2560.hex:
avrdude: input file C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6/bootloaders/stk500v2/stk500boot_v2_mega2560.hex contains 261406 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 261406 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.

===
Upload using programmer

"C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v  -patmega2560 -cstk500 -PCOM16 "-Uflash:w:C:\Users\bugge\AppData\Local\Temp\arduino\sketches\5CD9110B662A00DBFB626823711C1C28/Blink.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM16
         Using Programmer              : stk500
         AVR Part                      : ATmega2560
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500
         Programmer Model: STK500
         Hardware Version: 15
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 5.1 V
         SCK period      : 8.7 us
         Varef           : 0.0 V
         Oscillator      : Off

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Users\bugge\AppData\Local\Temp\arduino\sketches\5CD9110B662A00DBFB626823711C1C28/Blink.ino.hex"
avrdude: writing flash (1536 bytes):

Writing | ################################################## | 100% 0.53s

avrdude: 1536 bytes of flash written
avrdude: verifying flash memory against C:\Users\bugge\AppData\Local\Temp\arduino\sketches\5CD9110B662A00DBFB626823711C1C28/Blink.ino.hex:
avrdude: load data flash data from input file C:\Users\bugge\AppData\Local\Temp\arduino\sketches\5CD9110B662A00DBFB626823711C1C28/Blink.ino.hex:
avrdude: input file C:\Users\bugge\AppData\Local\Temp\arduino\sketches\5CD9110B662A00DBFB626823711C1C28/Blink.ino.hex contains 1536 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.50s

avrdude: verifying ...
avrdude: 1536 bytes of flash verified

avrdude done.  Thank you.

===
Normal upload (after upload of sketch using programmer).

"C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v  -patmega2560 -cwiring "-PCOM5" -b115200 -D "-Uflash:w:C:\Users\bugge\AppData\Local\Temp\arduino\sketches\5CD9110B662A00DBFB626823711C1C28/Blink.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\bugge\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

avrdude done.  Thank you.

Please note the differences in the field "Using programmer:". I'm not familiar with the use of an Arduino as the programmer but I suspect that my output is similar to what you should get.

I followed what you did, and it worked! But there are still issues.

I repeated the burn bootloader process, using the Uno as the programmer. I managed to upload a modified blink program, and the L LED followed the expected behaviour. This meant that the board was successfully able to be programmed. Not entirely sure what I missed last time.

But a trouble that I've encountered is that I was not able to program the Mega directly despite having burnt the bootloader. Here is the log when I attempted to reupload the program directly:

FQBN: arduino:avr:mega
Using board 'mega' from platform in folder: C:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Using core 'arduino' from platform in folder: C:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Detecting libraries used...
C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\mega C:\Users\silve\AppData\Local\Temp\arduino\sketches\9DF6EA6127220E87B060F41738D97115\sketch\sketch_oct6a.ino.cpp -o nul
Generating function prototypes...
C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\silve\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\mega C:\Users\silve\AppData\Local\Temp\arduino\sketches\9DF6EA6127220E87B060F41738D97115\sketch\sketch_oct6a.ino.cpp -o C:\Users\silve\AppData\Local\Temp\3285168024\sketch_merged.cpp
C:\Users\silve\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\silve\AppData\Local\Temp\3285168024\sketch_merged.cpp
Compiling sketch...
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115\\sketch\\sketch_oct6a.ino.cpp" -o "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115\\sketch\\sketch_oct6a.ino.cpp.o"
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\silve\AppData\Local\Temp\arduino\cores\arduino_avr_mega_cpu_atmega2560_728212fa9d231fb0c05fe2bd0ae17779\core.a
Linking everything together...
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega2560 -o "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115\\sketch\\sketch_oct6a.ino.cpp.o" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/..\\..\\cores\\arduino_avr_mega_cpu_atmega2560_728212fa9d231fb0c05fe2bd0ae17779\\core.a" "-LC:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115" -lm
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.eep"
"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.elf" "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.hex"

"C:\\Users\\silve\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\silve\\AppData\\Local\\Temp\\arduino\\sketches\\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.elf"
Sketch uses 1544 bytes (0%) of program storage space. Maximum is 253952 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 8183 bytes for local variables. Maximum is 8192 bytes.
"C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v  -patmega2560 -cwiring "-PCOM4" -b115200 -D "-Uflash:w:C:\Users\silve\AppData\Local\Temp\arduino\sketches\9DF6EA6127220E87B060F41738D97115/sketch_oct6a.ino.hex:i"

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\silve\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : wiring
         Overriding Baud Rate          : 115200
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

avrdude done.  Thank you.

Failed uploading: uploading error: exit status 1

I think this meant that the issue doesn't lie in the bootloader, instead it has to do with the electronics.

I tried to test out different micro-USB cables, but none of them make any differences. So, I doubt it's an issue with the cable.

I did a test where I wired the pin 13 with TX on both the Uno and the Mega. Both the Uno and the Mega are loaded with the blink program. The Uno sends a signal that could be seen on the TX LED and the serial monitor, while the Mega couldn't see either.

I can confirm that the pin 13 of the Mega does send out a signal. I connected the Uno and the Mega to my computer, has pin 13 on Mega connected to TX on Uno. This sends out a signal to the serial monitor on the Uno side.

I'm very thankful for your assistance!

Next step is to test the serial; I've modified the blink example

void setup()
{
  Serial.begin(115200);
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  Serial.println(millis());
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(2000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(2000);                      // wait for a second
}

Set the baudrate of the serial monitor to match the value of Serial.begin(); I used my default of 115200.

Upload this using the programmer. You should get the modified blink again and when you open serial monitor you should see the millis() count every 4 seconds. You should also see the Tx LED flash every 4 seconds when the message goes out.

While you have the serial monitor open, you can also send some data; the Rx LED should flash every time that you send a message (by clicking the send button

If you don't get the output in the serial monitor or you don't see the Rx LED flash when you send something to the board, your board is broken in some way.

  1. A bad connection between the ATmega2560 and the CH340.
  2. The CH340 itself. With the faint blink that you mentioned in the opening post I suspect this to be the case.

Some more tests that you can do.

  1. With the bootloader in place and no sketch loaded you will see the kind-of odd blink sequence. When you open the serial monitor, you should see a very short disruption of that odd blink pattern. Opening serial monitor will reset the board and as a result the bootloader starts (which normally will result in one short flash of the L-LED).
  2. You can write an echo test. Anything that you send from serial monitor should be echoed back to the serial monitor and Tx LED and Rx LED should flash while receiving/sending data. You can again load this using the programmer.
void setup()
{
  Serial.begin(115200);
}

void loop()
{
  if (Serial.available())
  {
    Serial.write(Serial.read());
  }
}

These tests are to determine if the communication between CH340 and ATmega2560 works as expected and what possibly fails.

I've went ahead and conducted the tests. Here is the result:

  • Modified blink example with serial test: Uploaded using the programmer to the Mega. The L LED shows the correct blink pattern of 2 seconds each, but the TX LED shows no flash.
  • Serial monitor: I connected the Mega to my computer and opened serial monitor. No output was seen in the serial monitor from the previous blink program. The Rx LED does not flash when a message was sent. But just like before, Tx LED faint flash instead when a message was sent.
  • Serial monitor resetting board: With the mega connected to the computer, opening the serial monitor does result in a short flash of the L-LED. This means the computer is able to communicate a reset signal.
  • Echo test: I loaded that code on to the Mega and connected the mega directly to the computer. Again, no message is being echoed back. Only Tx LED is faintly flashed while the Rx does not flash.

This likely confirm your suspicion that there may be an issue with the communication between CH340 and ATmega2560.

The faint blink of the Tx LED indicates in my opinion that the CH340 is the culprit.

I would try to get a warranty return; but it's 8 month ago so I'm not sure if that will work.

I'm not quite sure what to advise further. Your board is probably not quite useless but it's inconvenient not to have the ability to upload via USB. You will have to upload using the programmer and debug (print to serial monitor) using a serial-to-USB converter connected to one of the other UARTs (Serial1..Serial3); you can use the Uno for that as well.

Thank you very much for helping me. I've spent enough time trying to diagnose the issue. This board was only worth 10 dollars, so I'm not too pity to get rid of it.

You have been of great help to me, and I'm very thankful!

1 Like

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