The Matter Virtual Device Development Environment (MVD-DE) is a Docker container where you can create your Matter Virtual Device (MVD) and use the Virtual Device Controller (VDC) desktop app to provide a graphical user interface to control and display the states of your virtual Matter devices. The app provides a visual representation of your virtual device, as well as the controls for the Matter clusters supported by the device.
The app uses an RPC client to communicate with the virtual device's RPC server, sending requests reflecting your actions (toggle power, dim, brighten) and polling once every second to retrieve state.
Currently, the MVD-DE supports the following Matter device types:
|Matter Device Type||Application Cluster(s)||Home Ecosystem Type|
|Contact Sensor||Boolean State||Sensor|
|Extended Color Light||On/Off
|Flow Sensor||Flow Measurement||Sensor|
|Humidity Sensor||Relative Humidity Measurement||Sensor|
|Illuminance Sensor||Illuminance Measurement||Sensor|
|Occupancy Sensor||Occupancy Sensing||Sensor|
|Pressure Sensor||Pressure Measurement||Sensor|
|Temperature Sensor||Temperature Measurement||Sensor|
Set up the Matter Virtual Device Development Environment
The MVD-DE is a pre-configured Docker image available on the Docker Hub. To install it, run:
user@host> docker pull us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
This operation might take a few minutes to complete.
Run the Matter Virtual Device Development Environment
Start the Docker container:
user@host> xhost local:1000 user@host> docker run -it --ipc=host --net=host -e DISPLAY --name matter-container us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest
After starting the container, you should see some diagnostic output followed by a message affirming that your container configuration is correct, and finally, the container shell prompt:
Environment looks good, you are ready to go!
Create a second terminal session instance:
user@host> docker exec -it matter-container /bin/bash
For a virtual Matter device, once the device is running, start the VDC, passing it the
--sargument and the IP port used by the device:
$ electron main.js --s=localhost:33000
For a physical device, start the VDC, passing it the
--dargument followed by the device serial port:
$ electron main.js --d=/dev/ttyUSB0
If you start the VDC without providing any arguments, it will default to the network socket option using localhost port 33000.
Once the VDC is able to connect to your device, it will display a screen showing your device state:
Display the device's QR code
The VDC can also be used to retrieve the QR code as part of your device commissioning flow. Click on the QR code icon next to the device image to display the QR code for this device:
You can use this QR code to commission your device.
Stop the Matter Virtual Device Development Environment
To stop the MVD-DE, press Control-Q with the VDC's screen in focus, or press Control-C in the terminal session where you started the app.
To submit your thoughts or feedback on how we can improve your experience with the MVD-DE, complete our Feedback Form.