Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>ethosNew to Visual Studio Code? Get it now.
ethos

ethos

bsongis

|
357 installs
| (3) | Free
Ethos simulator extension for Visual Studio Code
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Description

Ethos is a VSCode extension that provides Ethos firmware simulation.

Features

  • Start/ Stop Ethos
  • Open display
  • Open telemetry
  • Open controls
  • Redirect logs to a file
  • Simulator's persistent directory isolation
  • Status Bar to set or add a new simulator
  • Status Bar shows the current simulator and its status (running or not)
  • Optional Quick Pick menu to launch tasks or commands
  • Audio support with toolbar icon to mute/unmute
  • Screenshot support with a toolbar icon
  • Toolbar icon to open the Lua documentation for the selected simulator

Installing

This extension is available for free in the Visual Studio Code Marketplace

On first run in a new project, or if the status bar does not appear, run from the command palette Ethos: Set Simulator to select a simulator or add a new one.

To ease your development process, the installation of the companion extension Ethos DevTools is highly recommended.

Breaking changes

  • ethos.root, ethos.firmware and ethos.version are not used anymore.
  • ethos.simulatorsFolder is by default simulators and is the workspace folder where all simulators are stored.
  • all persistent data for a simulator is stored in its own folder under ethos.simulatorsFolder. The folder is named ${board}_${protocol}@${release} and is not configurable to ensure isolation.
  • ethos.board,ethos.protocol and ethos.release are the three required fields to define a simulator. Ethos: Set Simulator will set them for you when you click on the status bar.

Status Bar customization

Like for all Status Bar in VSCode, you can hide it using a right click.

You can set the alignment of the status bar item with ethos.statusBarAlignment ("left" or "right", default is "right").

ethos.statusBarPriority (number, default 0) controls ordering within the same alignment group. Higher values appear further left in both groups (i.e. closer to the center of the status bar).

You can customize the text shown in the status bar with two separate settings:

  • ethos.statusBarIdleText — text when the simulator is not running, default is $(radio-tower) ${board}_${protocol}${releaseTag}
  • ethos.statusBarRunningText — text when the simulator is running, default is 🟢 ${board}_${protocol}${releaseTag}

Both settings support the following variables: board, protocol, release and releaseTag (releaseTag is shorter as it skips @nightly26). You can also use any VSCode icon using the syntax $(icon-name), e.g. $(radio-tower), emoji are also supported.

The main customization is to show a quick pick menu when clicking on the status bar, which is defined in .vscode/ethos-menu.json (see below).

.vscode/ethos-menu.json

Create .vscode/ethos-menu.json to define a custom quick pick shown when clicking the status bar. The placeholder shows the currently active simulator.

Each item supports the following fields:

Field Type Description
label string Display text (supports VS Code icon syntax, e.g. $(debug-start))
description string Optional secondary text shown next to the label
command string \| CommandEntry \| (string \| CommandEntry)[] VS Code command(s) to execute sequentially. A CommandEntry is { "id": "<commandId>", "args": [...] }
task string VS Code task label to run (single task only)
separator boolean If true, renders a separator line
[
    {
        "label": "▶️ Start SIM",
        "command": "ethos.start"
    },
    {
        "label": "🛑 Stop SIM",
        "command": "ethos.stop"
    },
    {
        "label": "🆑 Clear Logfile",
        "command": ["ethos.clearLogfile", "ethos.showMenu"]
    },
    { "label": "", "separator": true },
    {
        "label": "🎛️ Open Controls",
        "command": "ethos.openControls"
    },
    {
        "label": "📡 Open Telemetry",
        "command": "ethos.openTelemetry"
    },
    {
        "label": "🖥️ Open Display",
        "command": "ethos.openDisplay"
    },
    { "label": "", "separator": true },
    {
        "label": "⚙️ Change SIM",
        "command": ["ethos.setSimulator", "ethos.showMenu"]
    }
]

[!NOTE] To pass arguments to a command, use the object form { "id": "<commandId>", "args": [...] } instead of a plain string:

[
    {
        "label": "Set Altitude to 100m",
        "command": { "id": "ethos.injectTelemetry", "args": [[{"name": "Altitude", "value": 100}], true] }
    }
]

[!NOTE] If you want to use a task defined in tasks.json, use this format with the task field instead of command.

[
    {
        "label": "$(debug-start)Deploy & Launch SIM",
        "task": "Deploy & Launch [SIM]"
    }
]

Commands

All commands are available from the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) under the Ethos category.

Command ID Description
Start Ethos ethos.start Start the Ethos simulator
Stop Ethos ethos.stop Stop the running simulator
Open Display ethos.openDisplay Open the simulator display panel
Open Telemetry ethos.openTelemetry Open the telemetry editor panel
Open Controls ethos.openControls Open the controls panel
Set Simulator ethos.setSimulator Select the active simulator (board, protocol, release)
Add Simulator ethos.addSimulator Download and add a new simulator
Set simulators folder ethos.setSimulatorsFolder Change the folder where simulators are stored
Set log file ethos.setLogfile Choose a file to redirect simulator logs
Clear log file ethos.clearLogfile Clear the contents of the log file
Show Menu ethos.showMenu Show the quick pick menu defined in .vscode/ethos-menu.json
Take Screenshot ethos.takeScreenshot Save a screenshot of the display panel (also available as a toolbar icon)
Mute Audio ethos.muteAudio Mute the simulator audio (also available as a toolbar icon)
Unmute Audio ethos.unmuteAudio Unmute the simulator audio (also available as a toolbar icon)

[!NOTE] ethos.showMenu should be your entry point to add/set simulators even if you are not using the ethos-menu.json.

Settings

Setting Type Default Description
ethos.board string "" Radio board
ethos.protocol string "" Protocol
ethos.release string "nightly26" Release / branch
ethos.simulatorsFolder string "simulators" Workspace folder where all simulators are stored
ethos.logfile string null Path to the log file
ethos.server string "https://ethos.studio1247.com" Server URL used to fetch simulators
ethos.audioOnStart boolean false Enable audio automatically when the display panel is opened (after a first user click on the simulator's canvas)
ethos.statusBarAlignment "left" | "right" "right" Status bar item alignment
ethos.statusBarPriority number 0 Status bar item priority. Higher values appear further left within the same alignment group
ethos.statusBarIdleText string "$(radio-tower) ${board}_${protocol}${releaseTag}" Status bar text when the simulator is not running
ethos.statusBarRunningText string "🟢 ${board}_${protocol}${releaseTag}" Status bar text when the simulator is running

Logging

All output from the simulator is logged to the VS Code Output panel under the "Ethos Logs" channel. You can also redirect logs to a file with the ethos.setLogfile command, having a real logfile is useful if you want to analyze logs with AI. AI currently does not have access to VS Code's Output panel but can read files from the filesystem.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft