Integrate EmbedOps HIL (Hardware-in-the-Loop) testing and device management directly into VS Code.
Features
Fleet Devices Panel
View and manage your HIL fleet from the Activity Bar sidebar:
Real-time status — device status updates via SSE, no waiting for polls
Hardware details — expand any device to see connected USB devices, serial ports, and debug probes
Device locking — see which devices are checked out, by whom, and release locks directly from VS Code
Guided onboarding — step-by-step setup walks you through CLI installation, login, project init, and device provisioning
Device Management
Interact with devices through inline buttons, context menus, or the ellipsis quick-pick menu:
Run HIL Tests — run all tests or choose specific tests/markers on a device
Development Session — open a live development session with bidirectional file sync and your IDE connected to the device
SSH Terminal — open an interactive SSH session to any device
Blink LED — identify a physical device by blinking its LED
Restart — restart a device remotely
Rename / Remove — manage your fleet inventory
Release Lock — release your own lock, or force-release another user's lock (org admin)
Set Default Device — skip the device picker by setting a default per workspace or team
Test Explorer Integration
Discover and run HIL tests via VS Code's native Test Explorer:
Automatically discovers pytest tests in your hil/ directory
Run individual tests or entire test files on remote devices
Navigate to test source with one click
View pass/fail results directly in Test Explorer
Default Device
Set a default device to skip the picker when running tests or starting sessions:
Workspace setting — per-developer override via embedops.defaultDevice in VS Code settings
Team config — shared default in .embedops/hil/config.yml (default_device field)
Set from the ellipsis menu on any device or via the Fleet Devices title bar
Requirements
EmbedOps CLI — install and authenticate:
eo login
EmbedOps Repository — your workspace must be an EmbedOps-configured repository with .embedops/repo_id.yml (run eo init to set up)
Getting Started
Open a workspace containing .embedops/repo_id.yml
Click the EO icon in the Activity Bar
If this is your first time, follow the onboarding prompts to install the CLI, log in, and provision a device
Once devices appear, use the inline buttons to run tests, connect via SSH, or start a development session
Device Status
Icon
Status
Description
Green circle
Available
Online and ready for testing / sessions
Lock icon
Checked out (you)
Locked by your current session
Lock icon
Checked out (other)
Locked by another user or session
Red circle
Offline
Device is not connected
Sync icon
Updating
Device OS is being updated
Sync icon
Provisioning
Device is being set up
Running Tests
From Fleet Devices panel:
Click the play button on an available device to run all HIL tests
Use the ellipsis menu for "Run with Options..." to specify markers or test paths
From Test Explorer:
Expand "EmbedOps HIL Tests" to see discovered tests
Click run on any test, file, or the whole suite
Select a device from the picker (or use your default device)
View results inline in the Test Explorer
Troubleshooting
Issue
Solution
"Run eo login to authenticate"
Run eo login in your terminal
"Missing .embedops/repo_id.yml"
Initialize your repo with eo init
"No devices available"
Check device status in the EmbedOps web app
Device shows as checked out
Release the lock from the ellipsis menu, or wait for it to expire
SSE updates not working
Check the "EmbedOps" Output Channel for connection errors
Diagnostic Logging
Open the Output panel and select EmbedOps to see extension logs (API calls, SSE connections, errors). HIL test output goes to the separate EmbedOps HIL channel.