Devicetree Language Server

raw JSON →
0.9.3 verified Sat Apr 25 auth: no javascript

A Language Server Protocol (LSP) implementation for Devicetree source files (.dts/.dtsi) based on Devicetree Specification v0.4. Current stable version is 0.9.3, with frequent releases addressing bugs and adding features. Provides IDE features like go-to-definition, hover, formatting, diagnostics, semantic tokens, and Zephyr DT macro support. Supports Zephyr and Linux devicetree bindings, and integrates with multiple editors (VS Code, Neovim, Helix, kakoune). Differentiator: dedicated DTS LSP with deep understanding of devicetree semantics, unlike generic XML-based tools.

error Error: Cannot find module 'devicetree-language-server'
cause Package not installed in current directory or globally.
fix
Run 'npm install -g devicetree-language-server' or use 'npx devicetree-language-server'.
error Sort keys must be set
cause Exception thrown when default values from Zephyr bindings are used (fixed in 0.8.3).
fix
Upgrade to v0.8.3 or later.
error Language server crashed: context defined without dtsFile set
cause Incorrect configuration in workspace settings.
fix
Ensure each context in the configuration has 'dtsFile' property set.
gotcha The language server binary is named 'devicetree-language-server' but the npm package name is 'devicetree-language-server'. Ensure the binary is in PATH.
fix Install globally with -g flag or use npx.
breaking Version 0.9.0 introduced Zephyr binding vendor autocompletion, which may change completion results.
fix Review completion behavior if upgrading from pre-0.9.0.
deprecated The formatting option 'sortNodesByAddress' was renamed to 'sortNodesBy' with value 'address' in v0.8.6.
fix Update configuration: use 'sortNodesBy: address' instead of 'sortNodesByAddress: true'.
gotcha The server requires Node.js >=16. Older versions will fail to start.
fix Ensure Node.js version is 16 or later.
npm install devicetree-language-server
yarn add devicetree-language-server
pnpm add devicetree-language-server

Shows how to install and run the language server globally, then connect to it via stdio LSP.

// Install globally or locally
npm install -g devicetree-language-server

// Start the language server (example using VS Code extension, but standalone also possible)
devicetree-language-server --stdio

// Or use with an editor that supports LSP (e.g., Neovim)
// In your editor config, set the language server command to:
"devicetree-language-server --stdio"