# Visual Studio Code Development [Visual Studio Code](https://code.visualstudio.com/) is a great and simple IDE that can be used to build & develop with for Matter. Matter supports the docker / remote container workflow in Visual Studio Code, and has a container environment setup automatically. You can read more about this workflow [here](https://code.visualstudio.com/docs/remote/containers). Tested on: - Windows 11 Pro + WSL 2 + Ubuntu 22.04 LTS - Ubuntu 22.04 LTS ## Setup Steps Follow [these](https://github.com/project-chip/connectedhomeip/edit/master/docs/VSCODE_DEVELOPMENT.md) steps to set up Visual Studio Code for Matter development. ### Linux For Espressif esp32 devices: 1. Connect your device to the system before running the container. 1. Add `"--device=/dev/ttyUSB0",` inside runArgs in [devcontainer.json](../../../.devcontainer/devcontainer.json). Confirm the port of the device and change the parameter accordingly. 1. On opening connectedhomeip in Visual Studio code, At the bottom right of your window you should have a new box prompting you to re-open the window as a container. Hit yes. 1. The container will be built. 1. Install esp-idf : `cd /opt/espressif/esp-idf && ./install.sh` 1. Source esp-idf : `source /opt/espressif/esp-idf/export.sh` 1. Activate matter : `cd /workspaces/connectedhomeip && source scripts/bootstrap.sh && source scripts/activate.sh` 1. Confirm that the device is accessible : `ls -l /dev/ttyUSB*` 1. Go to lighting_example : `cd examples/lighting-app/esp32` 1. Set-target: `idf.py set-target esp32c3` 1. Build the project: `idf.py build` 1. Flash: `idf.py -p /dev/ttyUSB0 flash` 1. Monitor: `idf.py -p /dev/ttyUSB0 monitor` ### Windows 1. Connect to WSL Distro from VS Code. 1. Git clone inside WSL from Matter repository here: 1. Follow [these](https://github.com/dorssel/usbipd-win) steps on Windows and [these](https://github.com/espressif/vscode-esp-idf-extension/blob/master/docs/WSL.md#usbipd) steps in WSL to have serial port access inside WSL. 1. Confirm that the device is accessible inside WSL : `ls -l /dev/ttyUSB*`. 1. Open connectedhomeip within WSL on Visual Studio Code. 1. Perform step 2 onwards from [Linux](#linux) guide.