Arduino Nano không nạp được code: lỗi stk500_getsync, Old Bootloader, driver CH340 Windows 11
Arduino Nano không nạp được code: đọc thông báo lỗi avrdude stk500_getsync, Access is denied, sửa driver CH340, chọn Old Bootloader, nạp bằng reset tay và kiểm tra mạch hỏng.
Arduino Nano dùng chip CH340 rất rẻ và phổ biến, nhưng lần đầu nạp chương trình hay gặp lỗi: không thấy cổng COM, Arduino IDE báo stk500_getsync(): not in sync, programmer is not responding hoặc Access is denied. Bài này giải thích chương trình đi từ máy tính vào Nano như thế nào, đọc thông báo lỗi để biết lỗi ở đâu, rồi sửa theo từng bước: driver CH340 trên Windows 10, 11, lựa chọn Old Bootloader, dây vướng chân D0, D1, nạp bằng reset tay và cách kiểm tra mạch còn tốt hay đã hỏng.
1. Chương trình đi từ máy tính vào Nano như thế nào

Khi bấm Upload, Arduino IDE biên dịch chương trình rồi gọi phần mềm avrdude gửi file qua cổng COM. Chip CH340 trên Nano biến cổng USB thành cổng COM, đồng thời dùng chân DTR qua một tụ 100 nF kéo chân RESET xuống để chip ATmega328P khởi động lại. Ngay sau khi khởi động lại, chương trình nhỏ có sẵn trong chip là bootloader chờ khoảng một giây; nếu có dữ liệu nạp tới, bootloader nhận và ghi vào bộ nhớ flash. Lỗi xảy ra ở chỗ nào trên đường đi này thì thông báo lỗi sẽ khác nhau.
2. Đọc thông báo lỗi để biết lỗi ở đâu
| Thông báo trong cửa sổ Output | Ý nghĩa | Xem mục |
|---|---|---|
Tools > Port không có cổng nào, hoặc Board at COM5 is not available | Máy tính không thấy Nano: cáp chỉ sạc, thiếu driver CH340 | 3 |
can't open device "\\.\COM5": The system cannot find the file specified | Chọn cổng COM không còn tồn tại (đã rút ra cắm lại, số cổng đổi) | 3 |
can't open device "\\.\COM5": Access is denied | Cổng COM đang bị phần mềm khác giữ: Serial Monitor ở cửa sổ khác, phần mềm terminal, Cura, Processing | 4 |
stk500_recv(): programmer is not responding và stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 | Có cổng COM nhưng không nói chuyện được với bootloader: sai Processor, có dây ở D0, D1, mạch không tự reset | 5 |
verification error, first mismatch at byte | Ghi xong nhưng đọc lại sai: cáp kém, nguồn yếu, có tải lớn nối vào Nano | 5 |
Device signature = 0x1e9516 kèm Expected signature for ATmega328P is 1E 95 0F | Chip trên mạch là ATmega328PB, không phải ATmega328P | 7 |
Sketch too big | Chương trình vượt 30.720 byte bộ nhớ dành cho chương trình | Rút gọn chương trình, dùng ESP32 |
3. Máy tính không thấy cổng COM

- Không thấy gì mới khi cắm, rút: phần lớn do cáp chỉ có hai sợi nguồn để sạc, không có dây dữ liệu. Đổi sang dây USB nạp code hoặc dây đã từng truyền dữ liệu được với điện thoại, thử cổng USB khác trên máy. Cách phân biệt dây sạc và dây dữ liệu có trong bài ESP32 không nhận cổng COM, áp dụng y hệt cho Nano.
- Hiện "USB2.0-Serial" có dấu chấm than: Windows chưa có driver CH340. Windows 10, 11 thường tự tải driver qua Windows Update sau vài phút; nếu không, cài driver CH340 của nhà sản xuất chip (WCH), rồi rút cáp cắm lại. Cách cài từng bước có trong bài bắt đầu với Arduino Nano CH340.
- Đã hiện "USB-SERIAL CH340 (COM5)": chọn đúng cổng đó trong Tools > Port. Mỗi lần cắm sang cổng USB khác, số COM có thể đổi.
4. Lỗi Access is denied
Một cổng COM chỉ một phần mềm được mở tại một thời điểm. Đóng Serial Monitor, Serial Plotter đang mở ở cửa sổ Arduino IDE khác, các phần mềm terminal, phần mềm in 3D hay phần mềm nào khác có thể đang kết nối với cổng đó, rồi bấm Upload lại. Vẫn không được thì rút cáp, chờ vài giây rồi cắm lại.
5. Lỗi not in sync, programmer is not responding
Có cổng COM nhưng avrdude không nói chuyện được với bootloader. Thử lần lượt:
- Đổi lựa chọn Processor. Trong Tools > Processor có hai lựa chọn: ATmega328P và ATmega328P (Old Bootloader). Hai loại bootloader nhận dữ liệu ở hai tốc độ khác nhau (115200 và 57600 baud). Mạch Nano CH340 thường dùng loại Old Bootloader; nạp không được thì đổi sang lựa chọn còn lại. Chọn sai chỉ làm việc nạp thất bại, không làm hỏng mạch.
- Rút dây ở chân D0 (RX0), D1 (TX1). Hai chân này nối với chip CH340 để nạp; module Bluetooth, module RS-485, module GPS hay bất cứ dây nào cắm vào đây đều chen vào đường nạp. Rút ra khi nạp, hoặc chuyển module sang chân khác dùng SoftwareSerial.
- Tháo shield, tải lớn. Shield mở rộng, servo, relay lấy nguồn từ chân 5V có thể làm sụt áp lúc nạp. Tháo Nano ra khỏi đế, nạp riêng rồi cắm lại.
- Nạp bằng reset tay nếu mạch không tự khởi động lại (xem hình dưới).

Cách làm: bấm và giữ nút RESET trên Nano, bấm Upload, nhìn cửa sổ Output; khi biên dịch xong và hiện dòng Uploading thì nhả nút ngay. Bootloader chỉ chờ khoảng một giây sau khi nhả, nên có thể phải thử vài lần để canh đúng lúc. Nạp tay được mà nạp bình thường không được thì đường tự reset (tụ 100 nF ở chân DTR) có vấn đề; mạch vẫn dùng được, chỉ bất tiện khi nạp.
6. Kiểm tra vòng lặp RX0–TX1: mạch còn tốt hay đã hỏng

Khi đã thử hết các bước trên mà vẫn báo not in sync, phép thử này cho biết lỗi nằm ở phần USB hay ở chip ATmega328P:
- Rút hết dây khác ra khỏi Nano. Nối chân RST với chân GND ngay cạnh để giữ ATmega328P đứng yên, nối chân RX0 với TX1.
- Mở Serial Monitor, gõ vài chữ rồi Enter.
- Chữ hiện lại đúng: cáp, driver, chip CH340 đều tốt, lỗi nằm ở ATmega328P hoặc bootloader. Không hiện gì: lỗi ở cáp, driver hoặc chip CH340.
Nếu CH340 tốt mà vẫn không nạp được với cả hai lựa chọn Processor, bootloader có thể đã mất. Có thể nạp lại bootloader bằng một mạch Arduino khác chạy chương trình ArduinoISP, nối qua 6 chân ICSP; hoặc liên hệ PYWORLD để được kiểm tra mạch.
7. Chip ATmega328PB
Một số lô mạch Nano dùng chip ATmega328PB thay cho ATmega328P. Phần lớn vẫn nạp được với lựa chọn Arduino Nano thông thường. Nếu thông báo lỗi ghi Device signature = 0x1e9516, chip đúng là ATmega328PB: cài gói bo mạch MiniCore trong Boards Manager và chọn ATmega328PB, hoặc liên hệ PYWORLD để được hướng dẫn theo đúng lô mạch.
8. Xem thêm
- Sản phẩm: Arduino Nano CH340, dây USB nạp code.
- Bắt đầu với Arduino Nano CH340: sơ đồ chân, driver và nạp code.
- ESP32 không nhận cổng COM, lỗi Failed to connect.
- CH340 hay CP2102: cài driver trên Windows.
Cần hỗ trợ khi Nano vẫn không nạp được, liên hệ PYWORLD qua số 0915703319.
Xem thêm