DT5215 Control SDK
Everything the DT5215's web interface can do, from your own program — in Python, C, C++,
Go, .NET, Node.js and Java, or from a shell with nothing but curl.
import dt5215
with dt5215.connect("192.168.0.10", username="user", password="user") as dev:
print(dev.info().hostname, dev.info().info.sw_release)
for chain in dev.chains.status().enabled:
print(f"chain {chain.chain}: {chain.board_count} boards, {chain.mbps:.1f} Mbps")
for board in dev.chains.links().boards:
print(board.id, board.name, board.tempBoard, "C", board.status.faults)Documentation: https://downloads.nuclearinstruments.eu/package/dt5215-control-sdk · Download: https://downloads.nuclearinstruments.eu/package/dt5215-control-sdk
Install
| Python | pip install dt5215 |
| Node.js | npm install @nuclearinstruments/dt5215 |
| .NET | dotnet add package Dt5215.Sdk |
| Java | eu.nuclearinstruments:dt5215:1.0.2 (Maven) |
| C / C++ | apt install dt5215-sdk / dt5215-sdk-cpp, or the tarball, or cmake --install from this repository |
| Go | nuclearinstruments.eu/dt5215 — see sdk/go/README.md for the module path |
| Windows | DT5215-SDK-Setup.exe: the C, C++, .NET, Python, Node.js and Java packages, the examples and the documentation, offline |
| No SDK | the instrument speaks plain HTTP/JSON — the protocol is documented |
What it covers
| Identity and health | hostname, PID, firmware releases, temperatures and voltages, the fan, the error flags, the front panel LEDs |
| The eight TDlink chains | state, rates, buffers, the SFP+ of each cage, enabling and disabling, the whole enumeration with its progress |
| The FERS boards | every board found, its status bits, temperatures, trigger counters, HV; registers read and written over TDlink; the firmware upgrade of the boards |
| The front panel | LEMO direction and function, the sync matrix, the test pulse, the software sync |
| The clock tree | the master PLL and its references, the DDMTD phase detectors and their histograms, the link phase |
| Time | the GPS receiver and its fix, the PPS, the FPGA time counter, the system clock, systemd-timesyncd |
| The system | the application log, the debug monitors, the configuration file, the network interfaces and their traffic, reboot and system upgrade |
Event data is not here. It leaves the instrument over the binary control (9760) and streaming (9000) sockets that Janus and FERSlib speak. This SDK is the control plane: what you reach for to set an instrument up, to watch it, and to find out why a chain is down.
The same API in every language
| Language | Install | Call |
|---|---|---|
| Python | pip install dt5215 | dev.chains.status() |
| C | libdt5215 | dt5215_chains_status(dev, &out) |
| C++ | libdt5215_cpp | dev.chains().status() |
| Go | nuclearinstruments.eu/dt5215 | dev.Chains.Status(ctx) |
| .NET | Dt5215.Sdk | await dev.Chains.StatusAsync() |
| Node.js | @nuclearinstruments/dt5215 | await dev.chains.status() |
| Java | eu.nuclearinstruments:dt5215 | dev.chains().status() |
| curl | — | curl -H "Authorization: Bearer $TOKEN" $HOST/api-v1.0/chains_status |
One contract — spec/dt5215-api.yaml, 66 operations in 9 groups —
implemented natively in each language: no language wraps another, none of them needs a
shared library, and installing one does not drag in another's runtime. The
API reference shows every operation with its endpoint and the same call
in all eight.
Errors
Six kinds, the same meaning and the same numeric code in every language:
ConnectionError (-1), Timeout (-2), DeviceError (-3), AuthError (-4),
NotSupported (-5), InvalidArgument (-6). InvalidArgument is the one that guarantees
nothing was sent. See errors.
Without an instrument
pip install dt5215-emulator
dt5215-emulator --port 8080
DT5215_HOST=127.0.0.1:8080 dt5215 infoA DT5215 on localhost that answers the whole API, statefully, and reproduces the firmware's awkward behaviours on purpose. Every SDK in this repository is tested against it, in CI, so seven languages are exercised on every commit with no hardware in the rack. See the emulator.
HTTPS
The instrument serves plain HTTP today. HTTPS is coming, and every SDK here already accepts
an https:// URL with verification on by default, a CA bundle, a client certificate and an
insecure switch for a self-signed certificate. Nothing in your program changes the day the
firmware serves TLS. See compatibility.
Repository layout
| Path | What |
|---|---|
spec/ | the contract: dt5215-api.yaml, errors.md, compat.md |
sdk/<language>/ | one native implementation each, with its build, tests, examples and README |
emulator/ | the Python instrument emulator |
ci-test/ | the conformance runner and what every language asserts |
docs/ | the documentation site (the API reference is generated from the spec) |
tools/ | check_spec.py, gen_api_docs.py, set_version.py, the CI helpers |
packaging/ | the Windows installer and the packaging notes |
MIT licensed. © 2026 Nuclear Instruments SRL.
DT5215 Control SDK
The control and monitoring SDK of the DT5215 FERS concentrator: everything its web interface can do, from your own program. Identity and health, the eight TDlink chains and their enumeration, the FERS boards (status, registers, HV, firmware upgrade), the front panel I/O, the clock tree, GPS and the system clock. One API, native in Python, C, C++, Go, .NET, Node.js and Java — or plain HTTP with no SDK at all. With a firmware emulator, so you can write and test code with no instrument.
License:
Source Code
Git RepositoryTrending Products
DT5771
Compact 1-channel Digital Multi-Channel Analyzer (MCA) designed for high-resolution gamma spectroscopy.
DAQ141-6
High-performance, 6-channel waveform digitizer developed by Nuclear Instruments for demanding scientific and industrial data acquisition.
R5560SE
High-density, rack-mountable digitizer designed for large-scale physics experiments requiring fast digitization and flexible data processing
Trending Packages
Sci-SDK
Cross-platform SDK to control and acquire data from FPGA firmware generated with Sci-Compiler.
Sci-Digitizer
Windows readout and analysis software for the Nuclear Instruments Open Hardware digitizers.
Lib R5560
Cross-platform hardware access library for communicating with CAEN R5560 and DT5560 devices.
