Skip to content

inpax ​

BMW INPA Interpreter & Toolchain

GitHub

About ​

inpax is a cross-platform interpreter for BMW INPA (INterface for Programming Applications). INPA is BMW's diagnostic tool for running test procedures on vehicle ECUs.

Features ​

  • IPO Parser — Parse compiled INPA bytecode
  • Disassembler — Decompile IPO to readable assembly
  • TUI Runtime — Terminal UI matching original INPA
  • ⌨ IPS Compiler — Compile source scripts (WIP)
  • Provider System — Pluggable UI and EDIABAS backends

Installation ​

bash
npm install -g inpax

Usage ​

Disassemble ​

bash
# Disassemble IPO file
inpax dis script.ipo

# Output to file
inpax dis script.ipo -o script.asm

Run ​

bash
# Run with TUI
inpax run script.ipo

# Headless mode
inpax run script.ipo --headless

# Debug mode
inpax run script.ipo --debug

Info ​

bash
# Show IPO file information
inpax info script.ipo

Architecture ​

┌─────────────────────────────────────────────┐
│                   CLI                        │
├─────────────────────────────────────────────┤
│     TUI Provider    │    CLI Provider       │
├─────────────────────────────────────────────┤
│                Interpreter                   │
├─────────────────────────────────────────────┤
│    IPO Parser    │    EDIABAS Provider      │
└─────────────────────────────────────────────┘

Packages ​

PackageDescription
@inpax/coreConstants, opcodes, types
@inpax/disassemblerIPO → assembly
@inpax/interpreterVM execution
@inpax/tuiTerminal UI (ink)
@inpax/tui-providerUI state management
@inpax/cli-providerHeadless UI
@inpax/ini-parserINPA config parser
@inpax/cliCommand-line interface

INPA Script Example ​

ips
// INPA script example
PROC inpainit()
{
    settitle("My Script");
    setscreen(my_screen, TRUE);
    setmenu(main_menu);
}

PROC main_menu()
{
    setitem(1, "Read Ident", TRUE);
    setitem(10, "Exit", TRUE);
}

Status ​

ComponentStatus
IPO ParserComplete
DisassemblerComplete
InterpreterIn progress
TUIComplete
CompilerResearch
  • EdiabasX — EDIABAS implementation
  • tisx — TIS graphics decoder
  • wdsx — SP-Daten decoder