Development on Windows — Trezor Suite

This guide shows how to set up the Trezor Suite development environment on Windows using WSL2 (Windows Subsystem for Linux) and usbipd to forward USB devices to WSL.

Overview

Trezor Suite is developed as a monorepo with desktop, web, and related services. On Windows the recommended development workflow uses WSL2 so you work in a Linux environment while still running on a Windows host. USB device forwarding is handled with usbipd, which lets the Trezor device be attached to the WSL instance for development and testing.

Prerequisites (Windows host)

Prerequisites (WSL)

Open your WSL terminal (Ubuntu) and install build essentials and Electron dependencies:

sudo apt-get update
sudo apt-get install -y build-essential curl git
# Install any Electron dependencies required for your distribution (see electronjs.org)

Also ensure udev rules for Trezor devices are installed so the application can access the hardware — without the udev rules the device may appear in lsusb but will not be usable by the app.

Repository & initial setup

Clone the Trezor Suite monorepo and follow the general README to install dependencies and bootstrap the workspace (Node.js, Yarn, and any additional build tooling are typically required):

git clone https://github.com/trezor/trezor-suite.git
cd trezor-suite
# follow the general readme for installing node, yarn and running bootstrap scripts

Connecting a Trezor device via usbipd

On Windows (PowerShell or cmd) list USB devices and locate your Trezor's bus ID:

usbipd list

Bind and attach the device to WSL (replace 2-1 with the bus id you found):

usbipd bind --busid 2-1
usbipd attach --wsl --busid 2-1

Back in your WSL terminal verify the device is present:

lsusb

Note: If udev rules aren't installed you may see the device in lsusb but it will not be accessible by the app until the rules are in place.

Running the development build

From the monorepo, there are scripts to run a development desktop build that starts a watch build and launches the Electron wrapper. Common commands include:

# run a web dev server (useful for web-only debugging)
yarn dev:web

# run desktop dev (watch + electron)
yarn dev:desktop

# build production desktop
yarn build:desktop

Refer to the repo's package.json scripts and the docs for exact command names — they provide dev:web, dev:desktop, build:web, build:desktop, lint, and type-check helper scripts.

Troubleshooting tips

Quick links