Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Endpoint DebuggerNew to Visual Studio Code? Get it now.
Endpoint Debugger

Endpoint Debugger

Preview

GHI Electronics

| (0) | Free
Create, run and debug .NET, Python and C/C++ programs on the GHI Electronics Endpoint board, over USB.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Endpoint Debugger

Create, run and debug programs on the GHI Electronics Endpoint board from Visual Studio Code, in .NET (C#), Python and C/C++ — all three languages, one USB cable.

No JTAG, no wires, no SSH, no keys, no passwords, no IP address.

Getting started

  1. Flash the SD card with the proper image from the GHI Electronics download page. Insert it into the board and power on.
  2. Connect the board to the PC with a USB cable. The status bar shows Endpoint when VS Code sees it.
  3. Run Endpoint: New Project... from the Command Palette (Ctrl+Shift+P).
  4. Choose the language, a name and a folder. VS Code opens the new project.
  5. Press F5: the program is built, copied to the board and started under the debugger. F5 first checks the board: when it cannot be used (not connected, in use by another program, not answering), F5 stops and says why.

What each language needs on the PC:

Language Install
.NET (C#) .NET SDK matching the firmware's .NET runtime, the C# extension
Python Python (for pip install), the Python and Python Debugger extensions
C/C++ the C/C++ extension

C/C++ programs are built for the board with clang, which the first build downloads (about 50 MB). C/C++ projects come with libendpoint in their endpoint folder: the board's hardware (GPIO, I2C, SPI, PWM, ADC, DAC, serial ports, CAN, watchdog, RTC) with the same API as .NET, in #include <endpoint.h>.

.NET packages

An Endpoint project is a normal .NET project — any NuGet package works, with one caveat below. New projects reference GHIElectronics.Endpoint.Core (the board's pins, for .NET's System.Device.Gpio). Add any other with the standard command:

dotnet add package Newtonsoft.Json
dotnet add package GHIElectronics.Endpoint.Devices.UsbHost -v 0.3.0

The GHI packages at version 0.3.0 come bundled with this extension (Devices.Storage, Devices.Adc, Devices.Dac, Devices.Can, Devices.Rtc, Devices.Watchdog, Devices.Camera, Devices.Media, Devices.Network, Devices.Display, Devices.Touch, UsbHost, UI) — dotnet restore finds them in the project's nuget folder without reaching nuget.org. Everything else goes to nuget.org as usual.

Caveat for packages with native code: the Endpoint board runs Linux on ARM 32-bit. Pure-managed packages (Newtonsoft.Json, Serilog, RestSharp, …) always work. Packages that ship a native binary must include a runtimes/linux-arm/native/ build; many popular ones do (SQLitePCL, SkiaSharp, …) but not all. If the package has no linux-arm runtime, the program fails at load with "Unable to load shared library" — pick a different package or build the native dep yourself.

Python packages

In a Python project's terminal, pip installs packages for the board, as usual:

pip install requests

The PC downloads them (the board needs no internet) and puts them in the project's packages folder, which F5 and Run copy to the board over USB. pip uninstall, pip list, pip freeze, pip show, pip check and pip install -r requirements.txt work on the same folder.

To update: pip list --outdated shows the project's packages that have a newer version for the board, and pip install -U <name> installs it (with the newer versions it needs of other project packages).

  • numpy, pillow, psutil and pyyaml are already on the board (in its firmware): they need no install, and packages that need them use them.
  • New projects come with the GHI GPIO package; the other GHI packages (GHIElectronics.Endpoint.Devices.I2c, ...Spi, ...Pwm, ...Adc, ...Dac, ...Watchdog, ...Rtc, ...UsbHost, ...Camera, ...Media, ...Network, ...Display, ...Touch, ...Storage, GHIElectronics.Endpoint.UI) install with pip. A copy of them comes with this extension, so they install without internet too; pip takes the newest version it finds (PyPI or that copy).
  • Packages with C code install only if they have a build for the board (Linux, ARM 32-bit, Python 3.14); pip says so when they don't.
  • python -m pip is still this PC's own pip.

Upgrading the C/C++ SDK in an existing project

Unlike .NET and Python, the C/C++ side has no package manager: the endpoint folder of a project holds the headers and libendpoint.a of the libraries' version at project creation. To upgrade an existing C/C++ project to a newer libendpoint without starting over:

endpoint-cli sdk current           print the version in this project's endpoint/ folder
endpoint-cli sdk install 0.3.0     download that version and replace the endpoint/ folder
endpoint-cli sdk list              versions available for "sdk install"

New projects always get the libendpoint that this extension ships with — the command is only for upgrading existing projects to a newer release without reinstalling the extension.

Running without the debugger

Terminal > Run Task lists the board's tasks:

Task What it does
endpoint: run Builds the release version, copies it to the board and runs it, showing its output (Ctrl+C stops it)
endpoint: run at boot The same, and starts it again at every power-on
endpoint: stop run at boot Starts nothing at power-on
endpoint: stop Stops the program on the board

.NET release builds are compiled ahead of time (Native AOT): one program that starts in a fraction of a second.

Commands

Command
Endpoint: New Project... A new .NET, Python or C/C++ project
Endpoint: Board Information Firmware, .NET version, memory and storage of the connected board
Endpoint: Stop the Program on the Board
Endpoint: Restart the Board

Settings

Setting
endpoint.cli Another endpoint-cli to use instead of the one in this extension (leave empty)
endpoint.main Python projects: the file that starts the program (main.py)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft