Windows nie pokazuje portu COM, a Arduino IDE nie może połączyć się z ESP32? Zacznijmy od ustalenia, na którym etapie zatrzymuje się komunikacja. W tym poradniku zbierzesz informacje o urządzeniu i przygotujesz raport bez odinstalowywania sterowników czy kasowania pamięci płytki.

Zanim otworzysz Menedżer urządzeń

Użyj sprawdzonego kabla do danych, odłącz dodatkowe moduły i zasil płytkę jednym przewodem USB. Jeśli ma dwa gniazda, sprawdzaj je osobno. Jedno może prowadzić do konwertera USB–UART, a drugie bezpośrednio do ESP32. Dla natywnego USB wykonaj próbę przytrzymaj BOOT → naciśnij i puść RESET → puść BOOT.

Sprawny konwerter jest odrębnym urządzeniem USB, natomiast natywne USB może zniknąć wskutek działania programu. Szczegóły rodzin C3/C6/S2/S3 znajdziesz w poradniku USB i trybu BOOT.

Urządzenie USB, wpis PnP i COM to kolejne etapy

Po podłączeniu komputer próbuje odczytać deskryptory USB. Następnie Windows rejestruje urządzenie w systemie Plug and Play i przypisuje sterownik. Dopiero odpowiedni interfejs szeregowy daje port COM. Dlatego brak COM nie rozstrzyga, czy komputer w ogóle zauważył podłączenie.

Uruchom devmgmt.msc. W Menedżerze urządzeń wybierz widok urządzeń według połączenia, odłącz i podłącz płytkę, a następnie obserwuj zmianę. Właściwości nowego urządzenia zawierają stan, kod problemu i identyfikatory sprzętu. Nie kieruj się wyłącznie nazwą portu zapamiętaną z poprzedniej sesji.

Odczyt w PowerShell

Poniższe przykłady są przeznaczone dla Windows PowerShell 5.1. Najpierw wyświetl wszystkie obecne urządzenia PnP:

Get-PnpDevice -PresentOnly |
    Sort-Object Class, FriendlyName |
    Format-Table Status, Class, FriendlyName, InstanceId -AutoSize -Wrap

Nie filtrujemy pierwszego odczytu po identyfikatorze Espressif ani WCH: przy błędzie deskryptora prawidłowego identyfikatora może jeszcze nie być. Bez -PresentOnly wynik obejmowałby również zapamiętane, obecnie odłączone urządzenia. Dokumentacja Get-PnpDevice.

Porty szeregowe sprawdzisz osobno:

Get-PnpDevice -PresentOnly -Class Ports |
    Format-Table Status, FriendlyName, InstanceId -AutoSize -Wrap

Sama klasa USB nie obejmuje każdego urządzenia podłączonego do USB — działający konwerter może należeć do klasy Ports. Mając pełny identyfikator interesującego wpisu, można odczytać jego właściwości:

$deviceId = 'TU_WKLEJ_PELNY_INSTANCE_ID'
Get-PnpDeviceProperty -InstanceId $deviceId |
    Format-List KeyName, Type, Data

Zwróć uwagę na HardwareIds, ProblemCode, Service i relację do urządzenia nadrzędnego. Poszczególne pola zależą od urządzenia. Dokumentacja Get-PnpDeviceProperty.

PnPUtil i znaczenie błędów

W Windows 10 od wersji 1903 oraz Windows 11 dostępne są m.in.:

pnputil /enum-devices /connected
pnputil /enum-devices /problem

Nowsze wydania dodają m.in. filtrowanie magistrali i drzewo urządzeń. Przy odmowie dostępu użyj terminala administratora do tych odczytów; nie trzeba zmieniać sterowników. Zgodność opcji opisuje dokumentacja PnPUtil.

Wynik Co sprawdzić
Jest COM, ale konsola milczy Wybrany port, firmware, Serial/Serial0, prędkość UART
Brak sterownika dla rozpoznanego urządzenia Sterownik właściwego konwertera od producenta
Żądanie deskryptora urządzenia nie powiodło się Kabel, gniazdo, zasilanie, drugi port komputera
Urządzenie pojawia się tylko po BOOT + RESET Konfigurację programu i natywnego USB

Sam kod 43 nie dowodzi fizycznego uszkodzenia. Istotny jest pełny opis, etap komunikacji i porównanie z działającym zestawem. Lista kodów jest dostępna w dokumentacji Microsoft.

Gotowy skrypt raportujący IMZ

W sekcji pobierania znajduje się ZIP z imz-diagnostyka-usb-windows.ps1 i instrukcją. Skrypt odczytuje stan przed podłączeniem i po nim, porównuje identyfikatory oraz zapisuje raport w nowym katalogu IMZ_USB_* na Pulpicie. Nie zmienia sterowników ani firmware; zapisuje pliki raportu na komputerze.

  1. Rozpakuj ZIP i otwórz skrypt w edytorze, aby obejrzeć jego zawartość.
  2. Otwórz Windows PowerShell w rozpakowanym katalogu.
  3. Uruchom ./imz-diagnostyka-usb-windows.ps1 i wykonuj komunikaty: najpierw odłączona płytka, potem podłączenie oraz ewentualnie BOOT + RESET.
  4. Obejrzyj roznice_pnp.csv, pliki portów COM i szczegóły nowych urządzeń.

Jeżeli polityka komputera blokuje skrypty, wykonaj ręcznie powyższe polecenia albo zastosuj firmową procedurę uruchamiania zatwierdzonych skryptów. Nie trzeba globalnie wyłączać zabezpieczeń PowerShell.

Skrypt został przejrzany statycznie. Nie deklarujemy testu wykonania na Windows ani na konkretnej płytce. Błędy uprawnień lub brak części poleceń mogą dać niepełny raport. Raport zawiera identyfikatory także innych urządzeń oraz zdarzenia systemowe — przed udostępnieniem sprawdź i usuń dane prywatne. Skrypt niczego sam nie wysyła.

Gdy zwykły odczyt nie wystarcza

Plik %windir%\INF\setupapi.dev.log opisuje instalowanie urządzeń i dobieranie sterowników. To przydatne źródło przy problemach sterownika, ale nie rejestr wszystkich operacji fizycznego portu. Microsoft — log SetupAPI.

Do obejrzenia kontrolerów, hubów i deskryptorów można użyć UsbTreeView ze strony autora. Porównaj drzewo przed podłączeniem i po nim, zamiast od razu używać funkcji restartowania urządzeń. Alternatywą jest Microsoft USBView.

Chwilowe błędy mogą umknąć dwóm odczytom PnP. W trudniejszych przypadkach Windows udostępnia ETW, czyli szczegółowy ślad zdarzeń. Oficjalna procedura Microsoft z narzędziem Logman wymaga terminala administratora i jawnego zatrzymania sesji po krótkiej próbie. Zapisuj tylko czas potrzebny do odtworzenia błędu; ślady mogą szybko rosnąć i zawierać dane innych urządzeń.

Do zgłoszenia problemu zwykle wystarczą model płytki, nazwa badanego gniazda, wersja Windows, wynik BOOT + RESET oraz fragment raportu z momentu próby. Takie dane pomagają wybrać następny test, ale same nie wskazują, kto lub co spowodowało ewentualne uszkodzenie.