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.
Common errors
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.
Warnings
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.
Install
npm install devicetree-language-server yarn add devicetree-language-server pnpm add devicetree-language-server Imports
- default wrong
import { DevicetreeLanguageServer } from 'devicetree-language-server';correctimport { createConnection } from 'vscode-languageserver/node'; import { TextDocuments } from 'vscode-languageserver'; // The language server is used programmatically via LSP, not direct import. - DevicetreeLanguageServer wrong
import { DevicetreeLanguageServer } from 'devicetree-language-server';correctconst server = new DevicetreeLanguageServer(); // only available in source, not published
Quickstart
// 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"