A Visual Studio Code extension for editing Device Tree Source (DTS) and Device Tree Overlay (DTSO) files with schema validation, binding support, and remote deployment capabilities.
- Plug and Play Editor (default for
.dtso): Intuitive, guided experience for quick device integration with a three-panel interface - Tree Config Editor (default for
.dts): Full tree visualization for advanced device tree modifications
- Device Catalog: Searchable list of supported devices grouped by category
- Smart Configuration: Dynamic property panels with real-time validation
- Binding Compliance: Automatic validation against Linux kernel device tree binding specifications
- Channel Support: Add and configure device channels with regex-validated naming
- Local Compilation: Built-in device tree compilation using
dtc - Remote Deployment: SSH-based deployment to target hardware
- Auto-merge: Automatically remembers and re-merges DTS bases for DTSO overlays
Analog Attach requires a valid Linux kernel repository to be configured before use.
For full functionality, install the following packages:
sudo apt install gcc # C preprocessor for DTS includes
sudo apt install device-tree-compiler # dtc compiler
sudo apt install ssh # Remote connections
sudo apt install sshpass # Password-based SSH for deployment- Download the
.vsixfile from the project releases - In VS Code, open Command Palette (
Ctrl+Shift+P) - Run Extensions: Install from VSIX
- Select the downloaded file
See DEVELOPMENT.md for build instructions.
Before using the extension, configure the path to your Linux kernel repository:
- Open VS Code Settings (
Ctrl+,) - Search for "Analog Attach"
- Set Default Linux Repository to your Linux kernel source path
(e.g.,
~/linuxor~/analogdevicesinc/linux)
| Setting | Description |
|---|---|
defaultLinuxRepository |
Path to the Linux kernel repository (required) |
defaultDtSchemaRepository |
Path to dt-schema repository (optional, uses bundled version if not set) |
enableAutoMergeDtsoBase |
Automatically merge DTSO with last selected DTS base |
preprocessDtsFilesCommand |
Command for preprocessing DTS files with includes |
compileDtsFileCommand |
Command for compiling DTS/DTSO files |
remoteHost |
Target device IP address for deployment |
remoteUser |
SSH username for target device |
remotePassword |
SSH password for target device |
.dtsofiles open in Plug and Play editor by default.dtsfiles open in Tree Config editor by default
To switch editors:
- Right-click the file tab and select Reopen Editor With...
- Or use the Analog Attach side panel and click Switch View
Best for creating new overlays and quick device integration.
- Merge a DTS base: Run
Analog Attach: Add Device Tree file to current overlay(Ctrl+Shift+P) to provide context for parent suggestions - Add devices: Use the left panel to search and add devices from the catalog
- Select parent: Choose a valid parent node for the device
- Configure: Use the right panel to set properties and add channels
- Save: Changes are automatically saved to the
.dtsofile
For users requiring maximum flexibility and control.
- Navigate: Click nodes in the tree to view their configuration
- Add nodes: Use the + button to add devices or custom nodes
- Configure: Edit properties in the main panel
- Search: Use the search bar to find nodes by path
- Go to references: Use the hyperlink button to navigate to referenced nodes
Access via Command Palette (Ctrl+Shift+P):
- Analog Attach: Add Device Tree file to current overlay - Merge a DTS base into the current DTSO
- Analog Attach: Compile Device Tree - Compile the current file to DTB/DTBO
- Analog Attach: Deploy Device Tree - Deploy compiled binary to target via SSH
The Analog Attach side panel (click the AA icon in the activity bar) provides:
- Quick access to merge, compile, and deploy commands
- Remote settings editor (IP, user, password)
- View switcher between editors
- Settings shortcut
Analog Attach writes logs to analog-attach.log in the VS Code extension log
directory. The path is printed in the Extension Host output at startup.
For issues and bug reports, see GitHub Issues.
See CONTRIBUTING.md for guidelines.
See LICENSE for details.