Skip to main content
Glama

ppk2-mcp

Ein Headless-Treiber, eine Kommandozeile und ein MCP-Server für das Nordic Power Profiler Kit II, aufgebaut um die Geräteschicht der offiziellen nRF Connect Power Profiler App von Nordic.

Warum es die offizielle App umschließt, statt sie neu zu implementieren

Die Genauigkeit des PPK2 liegt nicht in seinem Befehlssatz, der aus einer Handvoll Opcodes besteht. Sie liegt in der gerätespezifischen Kalibrierung, die das Instrument beim Verbinden meldet, und in der Umrechnung, die aus einem 14-Bit-ADC-Wert, einem Messbereich und dieser Kalibrierung einen Strom macht – einschließlich des Filters, der den Spike unterdrückt, den ein Bereichswechsel erzeugt. Das sind die Teile, die sich ändern, wenn Nordic neue Instrument-Firmware ausliefert, und das sind die Teile, die eine Neuimplementierung leise falsch macht: Die Zahlen sehen trotzdem noch wie Ströme aus.

Deshalb ist vendor/pc-nrfconnect-ppk ein Submodul der App selbst, und src/device/serialDevice.ts darin wird importiert und unverändert verwendet. Nichts in diesem Repository rechnet einen ADC-Wert um. Eine neue Firmware-Version zu übernehmen ist ein Submodul-Bump.

Was dieses Repository hinzufügt, ist der Teil, den die App einem Skript nicht geben kann: Die App ist ein Electron-Programm mit einem Diagramm, und was eine Messung braucht, ist eine Zahl, die einem Zustand zugeordnet ist.

Related MCP server: Prometheus MCP Server

Was es misst, was ein Durchschnitt nicht misst

Das Instrument sampelt Strom und acht digitale Kanäle gemeinsam mit 100 kSa/s. Verdrahte einen digitalen Kanal mit einem Pin, den die Firmware ansteuert, um einen Zustand zu markieren – ein Funkmodul abgeschaltet, ein Peripherietakt aktiv, eine Aufgabe läuft – und die Aufzeichnung kann sagen, was dieser Zustand gekostet hat, statt was das Board gemittelt hat, während es passierte.

Das ist das gesamte Design. Aufzeichnungen werden als RUNS gespeichert: maximale Spannen, über die das digitale Wort sich nicht änderte, jede mit ihrer Sample-Anzahl, Mittelwert, Extremwerten und Ladung. Eine Run-Datei ist drei Größenordnungen kleiner als die Samples dahinter, verliert nichts, was eine Frage pro Zustand braucht, und ist klein genug, um neben dem Ergebnis eingecheckt zu werden, das sie stützt.

Zwei Dinge werden bewusst nicht geglättet:

  • Ein Sample, das der eigene Payload-Zähler des Instruments als verloren meldet, wird als verloren gezählt und schließt keinen Run ab. Ein Dropout ist keine Zustandsänderung und auch kein Strom. Eine Aufzeichnung, die mehr verlor, als der Aufrufer erlaubt, wird REFUSED statt gemittelt, weil Verlust nicht gleichmäßig über die Zustände verteilt ist.

  • Ein Zustand ist das MASKED digitale Wort, sodass Kanäle, auf die nichts geklemmt ist, einen Run nicht in zwei teilen können. probe meldet jeden Kanal, damit die Maske aus dem gewählt werden kann, was tatsächlich verdrahtet ist.

Installation

Node 20 oder neuer und ein PPK2 am USB.

git clone --recurse-submodules https://github.com/schuschu/ppk2-mcp
cd ppk2-mcp
npm install

Wenn node nicht im PATH ist, export PPK2_NODE_BIN=/pfad/zu/node/bin setzen und der ./ppk2-Launcher findet es.

Unter Linux braucht der Benutzer Lese- und Schreibrechte auf der seriellen Schnittstelle des Instruments, was üblicherweise die Mitgliedschaft in dialout bedeutet.

Kommandozeile

./ppk2 list
./ppk2 info
./ppk2 probe --seconds 5
./ppk2 capture --out /tmp/run --seconds 60 --mask 0x0f \
    --names txrx,addr,txen,rxen --label "what this run is"

probe sagt, welche digitalen Kanäle verdrahtet sind. capture schreibt <out>.runs.csv und <out>.meta.json und gibt eine Zeile pro digitalem Zustand aus. Es beendet sich mit einem Fehlercode ungleich null, wenn das Instrument mehr als --max-dropped-ppm des Streams verlor.

MCP-Server

./node_modules/.bin/tsx src/mcp.ts

oder als stdio-Server-Eintrag:

{
  "command": "npm",
  "args": ["--prefix", "/path/to/ppk2-mcp", "run", "--silent", "mcp"]
}

Werkzeuge: ppk2_list, ppk2_info, ppk2_probe, ppk2_capture, ppk2_analyze.

Jedes Werkzeug antwortet mit Aggregaten und Dateipfaden. Keines gibt Samples zurück: Bei 100 kSa/s sind sechs Millionen davon in einer Minute Aufzeichnung, was weder eine Antwort ist, die ein Aufrufer halten kann, noch eine, die ein Leser prüfen kann. ppk2_analyze liest eine Run-Datei zurück und teilt bei einem gegebenen digitalen Zustand und einer Menge von Dauer-Grenzen die Runs dieses Zustands nach ihrer Länge auf – so werden zwei Zustände, die ein Pin nicht unterscheiden kann, stattdessen anhand der Länge des Intervalls unterschieden.

Das Instrument wird pro Aufruf geöffnet und danach geschlossen, weil nur ein Prozess gleichzeitig den Port halten kann und ein Server, der ihn hielte, sowohl die App als auch die Kommandozeile aussperren würde.

Modi

Hier wird nie ein Quellenausgang aktiviert. Das Instrument wird in dem Modus verwendet, in dem es bereits ist, und die Testumgebung, für die dies geschrieben wurde, ist ein Amperemeter in Reihe mit einem Board, das von seiner eigenen Versorgung gespeist wird – auf einem Nordic DK der Strommess-Header mit entferntem Jumper.

Lizenz

Die eingebundene App und dieser Wrapper stehen unter Nordics Lizenz; siehe vendor/pc-nrfconnect-ppk/LICENSE.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for the JouleScope JS220 precision energy analyzer, enabling agents to measure current, voltage, power, charge, and energy via tools like measure_energy.
    10
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to Prometheus metrics and queries, allowing AI assistants to execute PromQL queries and analyze metrics data through standardized MCP interfaces.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A read-only MCP server for querying telemetry data from configurable backends. Provides tools to list sources, describe schemas, run bounded queries, and compute aggregates.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Nordic Semiconductor's Power Profiler Kit II (PPK2), enabling current measurement and device control via 12 tools from Claude.
    1
    MIT

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/schuschu/ppk2-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server