ESP32 không nhận cổng COM, lỗi Failed to connect, phải giữ nút BOOT: nguyên nhân và cách sửa
- 1. Lỗi thuộc nhóm nào?
- 2. Nhóm A: máy tính không thấy cổng COM
- 2.1. Dây USB chỉ sạc, không truyền dữ liệu
- 2.2. Cổng USB của máy tính, bộ chia USB
- 2.3. Chưa có driver hoặc driver lỗi
- 2.4. Unknown USB Device (Device Descriptor Request Failed)
- 2.5. Đèn nguồn không sáng
- 2.6. Chip USB hoặc phần nguồn trên mạch hỏng
- 3. Nhóm B: có cổng COM nhưng nạp báo lỗi
- 3.1. Giữ nút BOOT khi Connecting
- 3.2. Module nối vào chân khởi động
- 3.3. Lần nào cũng phải giữ BOOT: gắn tụ 10 µF ở chân EN
- 3.4. Hạ tốc độ nạp
- 3.5. Cổng COM đang bị chương trình khác mở
- 4. Nhóm C: nạp xong mà không chạy
- 5. Bảng tra thông báo lỗi khi nạp ESP32
- 6. Khi nào kết luận mạch hỏng?
- 7. Xem thêm
Cách sửa ESP32 không nhận cổng COM, lỗi Failed to connect, Wrong boot mode, phải giữ nút BOOT, nạp xong không chạy: dây USB, driver, chân khởi động, tụ 10 µF ở chân EN, bảng tra thông báo lỗi.
Cắm ESP32 vào máy tính mà Arduino IDE không có cổng COM, hoặc bấm Upload thì báo Failed to connect to ESP32, là lỗi người mới gặp nhiều nhất. Phần lớn trường hợp không phải mạch hỏng mà do dây USB, driver, cách vào chế độ nạp hoặc module nối vào chân khởi động. Bài viết chia lỗi thành ba nhóm, mỗi nhóm có cách kiểm tra từng bước, kèm bảng tra các thông báo lỗi thường gặp.
1. Lỗi thuộc nhóm nào?

- Nhóm A: máy tính không thấy cổng COM của mạch.
- Nhóm B: có cổng COM nhưng bấm Upload thì báo lỗi.
- Nhóm C: nạp xong nhưng chương trình không chạy, hoặc mạch khởi động lại liên tục.
2. Nhóm A: máy tính không thấy cổng COM
2.1. Dây USB chỉ sạc, không truyền dữ liệu

Đây là nguyên nhân số một. Dây chỉ sạc vẫn cấp nguồn nên đèn trên mạch sáng bình thường, nhưng máy tính không thấy thiết bị nào. Đổi sang dây USB nạp code có truyền dữ liệu, hoặc thử dây đang chép được ảnh từ điện thoại sang máy tính.
2.2. Cổng USB của máy tính, bộ chia USB
Cắm thẳng vào cổng USB trên thân máy (máy bàn nên dùng cổng phía sau). Bộ chia USB không có nguồn riêng, cổng USB phía trước vỏ máy hay dây nối dài thường làm tín hiệu chập chờn. Thử thêm một cổng USB khác trước khi kết luận.
2.3. Chưa có driver hoặc driver lỗi
Mở Device Manager: nếu mạch nằm trong Other devices với dấu chấm than vàng, máy thấy mạch nhưng chưa có driver. Cài driver CP210x cho mạch chip CP2102 hoặc CH341SER cho mạch chip CH340, rồi rút ra cắm lại. Cách nhận biết chip và cài từng loại driver có trong bài ESP32 CH340 hay CP2102 cùng loạt.
2.4. Unknown USB Device (Device Descriptor Request Failed)
Máy thấy có thiết bị cắm vào nhưng không đọc được thông tin. Thường do dây kém, cổng USB lỏng, cổng trên mạch bị bẩn hoặc lệch chân. Đổi dây và cổng; nếu thông báo vẫn còn với nhiều dây và nhiều máy, chip USB trên mạch có thể đã hỏng.
2.5. Đèn nguồn không sáng
- Mạch Type-C cắm bằng dây Type-C sang Type-C (từ laptop đời mới hay củ sạc nhanh) có thể không được cấp nguồn nếu mạch thiếu điện trở 5,1 kΩ ở chân CC. Thử dây USB-A sang Type-C. Giải thích chi tiết trong bài vì sao cắm sạc Type-C không lên nguồn.
- Mạch đang cắm trên breadboard hay đế ra chân có chỗ chập giữa 3V3, VIN và GND: rút mạch ra cắm riêng để thử.
2.6. Chip USB hoặc phần nguồn trên mạch hỏng
Sau khi thử dây tốt, nhiều cổng, nhiều máy mà vẫn không nhận, xem lại mạch đã từng bị cấp ngược nguồn, cấp 12 V vào chân VIN, 3V3 hoặc chạm dây nguồn tải vào chân GPIO chưa. Các trường hợp này có thể làm hỏng chip USB hoặc IC ổn áp.
3. Nhóm B: có cổng COM nhưng nạp báo lỗi
3.1. Giữ nút BOOT khi Connecting
Bình thường chip USB tự kéo GPIO0 xuống và reset ESP32 để vào chế độ nạp. Nếu cửa sổ Output đứng ở Connecting...... rồi báo lỗi: bấm Upload lại, nhấn giữ nút BOOT khi thấy chữ Connecting, thả ra khi bắt đầu ghi dữ liệu.
3.2. Module nối vào chân khởi động

Nếu nạp được khi mạch để trống nhưng không nạp được khi đã nối module, kiểm tra các chân GPIO0, GPIO2, GPIO12 và TX0, RX0. Module relay, cảm biến có điện trở kéo lên nối vào GPIO2 hoặc GPIO12 là trường hợp hay gặp. Rút dây các chân này khi nạp, hoặc chuyển thiết bị sang chân khác. Danh sách chân nên dùng có trong bài sơ đồ chân ESP32 30 chân và 38 chân cùng loạt.
3.3. Lần nào cũng phải giữ BOOT: gắn tụ 10 µF ở chân EN

Một số mạch có mạch tự nạp hoạt động không ổn định với một số máy tính. Gắn tụ hóa 10 µF giữa chân EN (chân dương) và GND (chân âm) làm chân EN lên mức cao chậm hơn một chút, đủ để GPIO0 kịp được kéo xuống. Nếu mạch đang lắp trên đế ra chân ESP32, có thể cắm tụ vào hàng chân EN và GND trên đế.
3.4. Hạ tốc độ nạp
Dây dài hoặc dây kém có thể nạp lỗi giữa chừng ở tốc độ mặc định 921600. Vào Tools › Upload Speed, chọn 115200: nạp chậm hơn nhưng ổn định hơn.
3.5. Cổng COM đang bị chương trình khác mở
Một cổng COM chỉ một chương trình mở được tại một thời điểm. Đóng Serial Monitor ở cửa sổ Arduino IDE khác, Thonny, PuTTY hay phần mềm đọc cổng COM khác, rồi nạp lại.
4. Nhóm C: nạp xong mà không chạy
Mở Serial Monitor ở tốc độ 115200, nhấn nút EN một lần và đọc các dòng ESP32 in ra lúc khởi động:
Brownout detector was triggeredvà mạch khởi động lại liên tục: điện áp bị sụt, thường lúc bật Wi-Fi. Cắm thẳng vào máy tính, đổi dây ngắn, không lấy nguồn relay, động cơ từ chân 3V3 hay VIN của mạch.flash read err, 1000: GPIO12 bị kéo lên cao lúc khởi động. Rút thiết bị khỏi GPIO12.Guru Meditation Errorrồi khởi động lại: chương trình bị lỗi khi chạy (truy cập sai bộ nhớ, chia cho 0, tràn ngăn xếp). Dòng thông báo phía sau cho biết loại lỗi; thử chương trình mẫu đơn giản để chắc mạch vẫn tốt.- Không có dòng nào: kiểm tra đúng tốc độ 115200, đúng cổng COM; chương trình có gọi
Serial.begin(115200)không.
Mạch chạy khi cắm máy tính nhưng không chạy khi cấp nguồn ngoài: nguồn ngoài không đủ dòng hoặc nối sai chân. ESP32 cần nguồn 5 V đủ khoảng 500 mA vào chân VIN, hoặc 3,3 V ổn định vào chân 3V3, và phải nối chung GND.
5. Bảng tra thông báo lỗi khi nạp ESP32
| Thông báo (có thể khác chút tùy phiên bản) | Ý nghĩa | Cách xử lý |
|---|---|---|
| Menu Tools › Port trống hoặc mờ | Máy không thấy mạch | Nhóm A: dây, cổng, driver |
Failed to connect to ESP32: No serial data received. | ESP32 không trả lời, chưa vào chế độ nạp | Giữ BOOT; rút dây GPIO0, GPIO2; tụ 10 µF ở EN |
Wrong boot mode detected (0x13)! The chip needs to be in download mode. | ESP32 đang chạy chương trình, không ở chế độ nạp | Giữ BOOT khi Connecting |
Timed out waiting for packet header | Mất liên lạc giữa chừng | Giữ BOOT, hạ Upload Speed 115200, đổi dây |
could not open port 'COM5', Access is denied | Cổng đang bị chương trình khác mở | Đóng chương trình đó, rút cắm lại mạch |
the port doesn't exist | Chọn sai số COM hoặc mạch vừa bị rút ra | Chọn lại cổng trong Tools › Port |
Invalid head of packet | Dữ liệu bị nhiễu | Đổi dây, hạ Upload Speed |
Failed uploading: uploading error: exit status 2 | Thông báo chung của Arduino IDE khi bước nạp lỗi | Đọc các dòng phía trên trong cửa sổ Output để biết lỗi cụ thể |
Brownout detector was triggered | Sụt áp nguồn | Dây tốt, cổng USB khỏe, nguồn đủ dòng |
flash read err, 1000 | GPIO12 ở mức cao lúc khởi động | Rút thiết bị khỏi GPIO12 |
6. Khi nào kết luận mạch hỏng?
Chỉ nên nghĩ tới mạch hỏng khi đã thử đủ các bước sau mà vẫn lỗi:
- Mạch rút khỏi breadboard, không nối bất cứ dây nào ngoài dây USB.
- Thử ít nhất hai dây có truyền dữ liệu và hai cổng USB, tốt nhất trên hai máy tính.
- Device Manager đã nhận đúng chip CP210x hoặc CH340.
- Đã giữ nút BOOT khi Connecting và hạ Upload Speed xuống 115200.
Một mạch ESP32 dự phòng giúp xác định lỗi nằm ở mạch hay ở máy tính rất nhanh, nên có sẵn khi làm đồ án hay dự án quan trọng.
7. Xem thêm
- ESP32 DevKit V1 30 chân Type-C và bản chip CH340.
- Nạp file .bin vào ESP32 bằng Flash Download Tool: cách nạp khác khi Arduino IDE gặp sự cố.
- Bắt đầu với Arduino Nano CH340: driver CH340 dùng chung.
- Tìm lỗi mạch điện tử từng bước.
- Bài cùng loạt: cài ESP32 vào Arduino IDE, ESP32 CH340 hay CP2102, sơ đồ chân ESP32 30 chân và 38 chân.
Xem thêm