Install the driver your board needs to flash
Many dev boards talk to your computer through a USB-to-serial bridge chip. If the matching driver isn't installed, the board powers on but never shows up as a serial port, so flashing fails. Find your board's chip below and install its driver.
CH340 driver
The CH340 (and CH341) is a USB-to-serial bridge from WCH found on most low-cost ESP32 and ESP8266 boards, HMI display panels, and Arduino clones. macOS does not ship a driver for it, so the board powers up but never appears as a serial port until you install one.
Common boards: Elecrow CrowPanel / ESP32-P4 Advance HMI, Sunton CYD displays, NodeMCU, WeMos / LOLIN D1, and many ESP32/ESP8266 clones.
macOS
- Download the macOS package from the WCH download page below and unzip it.
- Run the included .pkg installer.
- Open System Settings → Privacy & Security and click Allow if macOS blocks the system extension, then restart your Mac.
- Unplug and replug the board, it should now appear as /dev/cu.wchusbserial* (or /dev/cu.usbserial*).
Windows
- Download the Windows driver from the WCH download page below.
- Run the installer and click INSTALL.
- Reconnect the board: it appears under Ports (COM & LPT) in Device Manager.
Linux
- Modern kernels include the ch341 module, so the board usually appears as /dev/ttyUSB0 with no install.
- If it does not, add your user to the dialout group (sudo usermod -aG dialout $USER) and replug.
CP210x driver
The CP2102 / CP2104 is a USB-to-serial bridge from Silicon Labs used on official Espressif DevKits, Heltec, TTGO / LilyGO, and M5Stack boards. It uses the Silicon Labs CP210x VCP driver. Recent macOS versions often include it, but installing the official driver is the reliable fix when the port doesn't show up.
Common boards: Espressif ESP32-DevKitC, ESP-WROVER-KIT, Heltec, TTGO / LilyGO, and M5Stack devices.
macOS
- Download the macOS VCP driver from the Silicon Labs page below.
- Run the .dmg / .pkg installer.
- Approve the system extension in System Settings → Privacy & Security if prompted, then restart.
- Replug the board: it appears as /dev/cu.SLAB_USBtoUART (or /dev/cu.usbserial*).
Windows
- Download the Windows VCP driver from the Silicon Labs page below.
- Run the installer, then reconnect the board.
- It appears under Ports (COM & LPT) in Device Manager.
Linux
- The cp210x module ships with modern kernels, the board appears as /dev/ttyUSB0 automatically.
- If your user lacks access, add it to the dialout group (sudo usermod -aG dialout $USER) and replug.
J-Link driver
Nordic development kits flash straight from the browser through the DK's onboard SEGGER J-Link debug probe (WebUSB). macOS needs no driver. Windows and Linux may need one-time setup before the browser can claim the probe.
Common boards: Nordic nRF9151 DK, nRF7002 DK, and nRF54L15 DK when their verified J-Link metadata is present in the board registry. Other Nordic kits remain download-only and flash locally with west or nrfjprog.
macOS
- No driver is required, Chrome talks to the J-Link directly over WebUSB.
- Turn the DK power switch on and connect the USB port labeled J-Link or DEBUG, not the target USB port.
- Quit other J-Link tools (nRF Connect, VS Code extensions, JLinkExe) while deploying, they hold the probe exclusively.
Windows
- Install the current J-Link Software Pack from the SEGGER page below.
- Open J-Link Configurator, update the DK's J-Link firmware if prompted, and set “USB Driver (Windows)” to WinUSB.
- Turn the DK on, then unplug and replug its J-Link USB port. The browser can only claim the probe in WinUSB mode, the legacy SEGGER bulk driver blocks browser access.
Linux
- Install the current J-Link Software Pack .deb/.rpm, it installs the udev rules that grant USB access to the probe.
- Replug the DK, or run: sudo udevadm control --reload-rules && sudo udevadm trigger.
- If the browser's device chooser still shows nothing, verify /etc/udev/rules.d/99-jlink.rules exists and log out and back in.
Still not detected after installing? Try a different USB cable (some are charge-only), press the board's RESET button after plugging in, and make sure you connected to the UART / debug port rather than a native-USB port.