{"id":13759439,"url":"https://github.com/lxi-tools/lxi-tools","last_synced_at":"2026-02-21T03:02:17.537Z","repository":{"id":6231237,"uuid":"54972998","full_name":"lxi-tools/lxi-tools","owner":"lxi-tools","description":"Open source LXI tools","archived":false,"fork":false,"pushed_at":"2025-05-18T19:53:11.000Z","size":7461,"stargazers_count":586,"open_issues_count":21,"forks_count":58,"subscribers_count":26,"default_branch":"master","last_synced_at":"2026-02-15T01:28:42.686Z","etag":null,"topics":["automation","instruments","linux","lxi","macos","mdns","open-source","scpi","test","vxi11","windows"],"latest_commit_sha":null,"homepage":"https://lxi-tools.github.io","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lxi-tools.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://www.paypal.me/lundmar"]}},"created_at":"2016-03-29T12:14:34.000Z","updated_at":"2026-02-08T19:37:12.000Z","dependencies_parsed_at":"2023-11-12T09:27:50.009Z","dependency_job_id":"cde2ea81-19d6-47d8-b892-dfb7fdb43f2e","html_url":"https://github.com/lxi-tools/lxi-tools","commit_stats":{"total_commits":761,"total_committers":16,"mean_commits":47.5625,"dds":"0.042049934296977676","last_synced_commit":"6d104d1558357835832afba27246dd3d66ac6243"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/lxi-tools/lxi-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxi-tools%2Flxi-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxi-tools%2Flxi-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxi-tools%2Flxi-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxi-tools%2Flxi-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lxi-tools","download_url":"https://codeload.github.com/lxi-tools/lxi-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lxi-tools%2Flxi-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29672258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"online","status_checked_at":"2026-02-21T02:00:07.432Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","instruments","linux","lxi","macos","mdns","open-source","scpi","test","vxi11","windows"],"created_at":"2024-08-03T13:00:53.220Z","updated_at":"2026-02-21T03:02:17.521Z","avatar_url":"https://github.com/lxi-tools.png","language":"C","readme":"\n[![lxi-tools](images/lxi-tools-icon.png)]()\n\n# lxi-tools - open source LXI tools\n\n[![](https://img.shields.io/circleci/build/github/lxi-tools/lxi-tools)](https://circleci.com/gh/lxi-tools/lxi-tools/tree/master)\n[![](https://img.shields.io/github/v/release/lxi-tools/lxi-tools?sort=semver)](https://github.com/lxi-tools/lxi-tools/releases)\n[![](https://img.shields.io/repology/repositories/lxi-tools)](https://repology.org/project/lxi-tools/versions)\n[![](https://img.shields.io/codefactor/grade/github/lxi-tools/lxi-tools)](https://www.codefactor.io/repository/github/lxi-tools/lxi-tools)\n\u003c!-- [![](https://img.shields.io/tokei/lines/github/lxi-tools/lxi-tools)](https://github.com/lxi-tools/lxi-tools) --\u003e\n\n## 1. Introduction\n\nlxi-tools are open source software tools for managing network attached LXI\ncompatible test instruments such as modern oscilloscopes, power supplies,\nspectrum analyzers etc.\n\nFeatures include automatic discovery of test instruments, sending SCPI\ncommands, grabbing screenshots from supported instruments, benchmarking SCPI\nmessage performance, and powerful scripting for test automation. Both a\ncommandline tool and a GUI tool are available.\n\nlxi-tools rely on [liblxi](https://github.com/lxi-tools/liblxi) for all\ncommunication.\n\n### 1.1 What is LXI?\n\nLAN eXtensions for Instrumentation (LXI) is a standard developed by the LXI\nConsortium, an industry consortium that maintains the LXI specification and\npromotes the LXI Standard. The LXI standard defines the communication protocols\nfor modern instrumentation and data acquisition systems using Ethernet.\n\nVisit www.lxistandard.org for more details.\n\nPlease notice that lxi-tools is not affiliated with the LXI consortium - it is\nan independent open source community effort.\n\n### 1.2 Motivation\n\nTo make better and simpler open source tools for managing network attached LXI\ncompatible test instruments.\n\n## 2. Features\n\n * Automatically discover test instruments on local network via VXI11 or mDNS\n * Send SCPI commands and receive responses\n * Automatically grab screenshots from supported instruments\n * Benchmark request/response performance of instruments\n * Support for manually adding instruments in case they are undiscoverable\n * Powerful Lua scripting support for advanced automation\n   - Simple script editor with syntax highlighting\n   - Simple API which supports\n     - Connecting/disconnecting remote test instruments\n     - Send SCPI commands to connected test instruments and receive responses\n     - Clock sources for managing elapsed time\n     - Log data to CSV files\n     - Charts for graphically presenting captured data live in various chart types:\n       - Line\n       - Scatter\n       - Number\n       - Angular gauge\n       - Linear gauge\n     - Charts can be saved in PNG or CSV format\n * Command-line and GUI tool available\n * Interactive command-line mode\n * Dump received response in hexadecimal format\n\n## 3. Usage\n\n### 3.1 lxi-gui\n\nThe lxi-gui application provides some of the same features as the commandline\ntool and more but presents them in a modern GUI frontend.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"images/lxi-gui-scpi.png\"\u003e\n\u003cem\u003eSCPI mode - easily explore SCPI features of your instruments\u003c/em\u003e\n\u003cimg src=\"images/lxi-gui-search.png\"\u003e\n\u003cem\u003eSearch for instruments - using standard broadcast discovery or mDNS\u003c/em\u003e\n\u003cimg src=\"images/lxi-gui-screenshot.png\"\u003e\n\u003cem\u003eScreenshot mode - easily grab display screenshots from supported instruments\u003c/em\u003e\n\u003cimg src=\"images/lxi-gui-benchmark.png\"\u003e\n\u003cem\u003eBenchmark mode - measure the message response performance of your instruments\u003c/em\u003e\n\u003cimg src=\"images/lxi-gui-script.png\"\u003e\n\u003cem\u003eScript mode - program your LXI compatible instruments in a powerful clean cut Lua script environment\u003c/em\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/lxi-tools/lxi-tools/master/images/lxi-gui-script-in-action.png\"\u003e\n\u003cem\u003eScript mode in action plotting voltage levels from a DC power supply to line chart and CSV/PNG files\u003c/em\u003e\n\u003c/p\u003e\n\n### 3.2 lxi\n\nThe commandline interface of the lxi application is described in the output\nfrom 'lxi --help':\n```\n     Usage: lxi [--version] [--help] \u003ccommand\u003e [\u003cargs\u003e]\n\n       -v, --version                        Display version\n       -h, --help                           Display help\n\n     Commands:\n       discover [\u003coptions\u003e]                 Search for devices\n       scpi [\u003coptions\u003e] \u003cscpi-command\u003e      Send SCPI command\n       screenshot [\u003coptions\u003e] [\u003cfilename\u003e]  Capture screenshot\n       benchmark [\u003coptions\u003e]                Benchmark\n       run \u003cfilename\u003e                       Run Lua script\n\n     Discover options:\n       -t, --timeout \u003cseconds\u003e              Timeout (default: 3)\n       -m, --mdns                           Search via mDNS/DNS-SD\n\n     Scpi options:\n       -a, --address \u003cip\u003e                   Device IP address\n       -p, --port \u003cport\u003e                    Use port (default: VXI11: 111, RAW: 5025)\n       -t, --timeout \u003cseconds\u003e              Timeout (default: 3)\n       -x, --hex                            Print response in hexadecimal\n       -i, --interactive                    Enter interactive mode\n       -r, --raw                            Use raw/TCP\n\n     Screenshot options:\n       -a, --address \u003cip\u003e                   Device IP address\n       -t, --timeout \u003cseconds\u003e              Timeout (default: 15)\n       -p, --plugin \u003cname\u003e                  Use screenshot plugin by name\n       -l, --list                           List available screenshot plugins\n\n     Benchmark options:\n       -a, --address \u003cip\u003e                   Device IP address\n       -p, --port \u003cport\u003e                    Use port (default: VXI11: 111, RAW: 5025)\n       -t, --timeout \u003cseconds\u003e              Timeout (default: 3)\n       -c, --count \u003ccount\u003e                  Number of request messages (default: 100)\n       -r, --raw                            Use raw/TCP\n```\n\n#### 3.2.1 Example - Discover LXI devices on available networks\n\n```\n     $ lxi discover\n     Searching for LXI devices - please wait...\n\n     Broadcasting on interface lo\n     Broadcasting on interface eth0\n         Found \"RIGOL TECHNOLOGIES,DS1104Z,DS1ZA1234567890,00.04.03.SP2\" on address 10.42.1.20\n         Found \"RIGOL TECHNOLOGIES,DP831,DP8F1234567890,00.01.14\" on address 10.42.1.67\n     Broadcasting on interface wlan0\n\n     Found 2 devices\n```\n\n#### 3.2.2 Example - Send SCPI command to an instrument\n\n```\n     $ lxi scpi --address 10.42.1.20 \"*IDN?\"\n     RIGOL TECHNOLOGIES,DS1104Z,DS1ZA1234567890,00.04.03\n```\nTo dump response to file simply do:\n```\n     $ lxi scpi --address 10.42.1.20 \"*IDN?\" \u003e response.txt\n```\n\n#### 3.2.3 Example - Capture screenshot from a Rigol 1000z series oscilloscope\n\n```\n     $ lxi screenshot --address 10.42.1.20 --plugin rigol-1000z\n     Saved screenshot image to screenshot_10.42.1.20_2017-11-11_13:45:47.png\n```\n\nOr using plugin autodetection simply:\n\n```\n     $ lxi screenshot --address 10.42.1.20\n     Loaded rigol-1000 screenshot plugin\n     Saved screenshot image to screenshot_10.42.1.20_2017-11-11_13:46:02.png\n```\n\n#### 3.2.4 Example - Capture screenshot and convert it to any image format\n\nBy default the format of the captured screenshot image is dictated by which\nscreenshot plugin and instrument are in play. However, it is possible to write\nthe screenshot image to stdout and pipe it directly to other tools for image\nprocessing.\n\nFor example, use ImageMagicks convert tool to automatically convert any\nscreenshot image to JPG:\n\n```\n    $ lxi screenshot --address 10.42.1.20 - | convert - screenshot.jpg\n```\n\n#### 3.2.5 Example - List available screenshot plugins\n\n```\n     $ lxi screenshot --list\n                 Name   Description\n         keysight-ivx   Keysight InfiniVision 2000X/3000X series oscilloscope\n               lecroy   LeCroy WavePro oscilloscopes\n          rigol-1000z   Rigol DS/MSO 1000z series oscilloscope\n           rigol-2000   Rigol DS/MSO 2000 series oscilloscope\n         rigol-dg4000   Rigol DG 4000 series function generator\n         rigol-dm3000   Rigol DM 3000 series digital multimeter\n          rigol-dp800   Rigol DP 800 series power supply\n            rigol-dsa   Rigol DSA 700/800 series spectrum analyzer\n           rs-hmo1000   Rohde \u0026 Schwarz HMO 1000 series oscilloscope\n      siglent-sdm3000   Siglent SDM 3000/3000X series digital multimeter\n          siglent-sdg   Siglent SDG 1000X/2000X/6000X series waveform generator\n          siglent-sds   Siglent SDS 1000X/2000X series oscilloscope\n     siglent-ssa3000x   Siglent SSA 3000X series spectrum analyzer\n       tektronix-2000   Tektronix DPO/MSO 2000 series oscilloscope (experimental)\n```\n\n#### 3.2.6 Example - Benchmark instrument request/response performance\n\n```\n     $ lxi benchmark --address 10.42.1.20\n     Benchmarking by sending 100 ID requests. Please wait...\n     Result: 24.7 requests/second\n```\n\n## 4. Installation\n\n### 4.1 Installation using package manager (Linux)\n\nlxi-tools comes prepackaged for various GNU/Linux distributions. Please consult\nyour package manager tool to find and install lxi-tools.\n\nIf you would like to see lxi-tools included in your favorite distribution,\nplease reach out to their package maintainers team.\n\n### 4.2 Installation using snap (Linux)\n\nInstall latest stable version:\n```\n    $ snap install lxi-tools\n```\nInstall bleeding edge:\n```\n    $ snap install lxi-tools --edge\n```\n\n### 4.3 Installation using homebrew (MacOS, Linux)\n\nIf you have [homebrew](http://brew.sh) installed:\n```\n$ brew install lxi-tools\n```\n\n### 4.4 Installation using Windows installer (Windows - experimental)\n\nInstall using the latest Windows installer found [here](https://github.com/lxi-tools/lxi-tools-windows-installer/releases).\n\n### 4.5 Installation using Linux on Windows with WSL2 (Windows)\nIf you have [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)\ninstalled you can simply use snap to install lxi-tools in the Ubuntu WSL:\n```\n$ snap install lxi-tools\n```\n\n### 4.6 Installation from source\n\nThe latest source releases can be found [here](https://github.com/lxi-tools/lxi-tools/releases).\n\nTo compile and install successfully from source you need to first install the\nfollowing dependencies:\n\n * liblxi\n * libreadline\n * liblua\n * libgtk\n * libadwaita\n * gtksourceview\n * bash-completion\n\nInstall steps:\n```\n    $ meson setup build\n    $ meson compile -C build\n    $ meson install -C build\n```\n\nSee meson\\_options.txt for which features to enable/disable.\n\nNote: The meson install steps may differ depending on your specific system.\n\n## 5. Tested instruments\n\nThe tools are tested to work successfully with the following LXI compatible\ninstruments:\n\n| Instrument                        | Working features           | Note                          |\n|-----------------------------------|----------------------------|-------------------------------|\n| AimTTi CPX400DP                   | [scpi]                     | Use RAW/TCP, port 9221        |\n| AimTTi PL303-P                    | [scpi]                     | Use RAW/TCP, port 9221        |\n| Chroma 63205A                     | [discover+scpi]            | Use RAW/TCP, port 2101        |\n| ITECH IT6018C                     | [discover+scpi]            |                               |\n| GW-INSTEK PSW800                  | [scpi]                     | Use RAW/TCP, port 2268        |\n| Keysight Technologies PSA E4446A  | [discover+scpi+screenshot] |                               |\n| Keysight Technologies PXA N9030A  | [discover+scpi+screenshot] |                               |\n| Keysight Technologies DSO 6054A   | [discover+scpi+screenshot] |                               |\n| Keysight Technologies AWG 33612A  | [discover+scpi+screenshot] |                               |\n| Keysight Technologies DMM 34461A  | [discover+scpi+screenshot] |                               |\n| Keysight Technologies DMM L4411A  | [discover+scpi]            |                               |\n| Keysight Technologies MSO-X 3024T | [discover+scpi+screenshot] |                               |\n| Keysight Technologies MSO-X 6004A | [discover+scpi+screenshot] |                               |\n| Kikusui Electronics PMX35-3A      | [discover+scpi]            |                               |\n| LeCroy WavePro ZI-a               | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DG1062Z        | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DG4062         | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DG4102         | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DG4162         | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DL3021         | [discover+scpi]            |                               |\n| Rigol Technologies DP831          | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DP832          | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DM3058         | [discover+scpi]            |                               |\n| Rigol Technologies DM3068         | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DS1074Z+       | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DS1104Z        | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DS2302         | [discover+scpi+screenshot] |                               |\n| Rigol Technologies DSA815         | [discover+scpi+screenshot] |                               |\n| Rigol Technologies MSO1104Z       | [discover+scpi+screenshot] |                               |\n| Rigol Technologies MSO2302A       | [discover+scpi+screenshot] |                               |\n| Rigol Technologies MSO4024        | [discover+scpi+screenshot] |                               |\n| Rigol Technologies MSO4054        | [discover+scpi+screenshot] |                               |\n| Rigol Technologies MSO5074        | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz CMW 270           | [discover+scpi]            |                               |\n| Rohde \u0026 Schwarz HMC 8012          | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz HMC 8043          | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz HMO 1202          | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz HMO 3054          | [scpi+screenshot]          |                               |\n| Rohde \u0026 Schwarz NGE 100           | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz NGM 202           | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz NGL 202           | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz RTB 2004          | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz RTH 1004          | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz RTM 3004          | [discover+scpi+screenshot] |                               |\n| Rohde \u0026 Schwarz ZNL3              | [discover+scpi]            |                               |\n| Rohde \u0026 Schwarz FSV-30            | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDG1032X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDG2122X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDG2042X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDG6052      | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDS1152CML   | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDS1202X-E   | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDS1204X-E   | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDS2304X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDS3034X-HD  | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDM3045X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDM3055      | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDM3055-SC   | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SDM3065X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SPD1168X     | [scpi]                     |                               |\n| Siglent Technologies SPD3303X-E   | [scpi]                     |                               |\n| Siglent Technologies SSA3032X     | [discover+scpi+screenshot] |                               |\n| Siglent Technologies SVA1032X     | [discover+scpi+screenshot] |                               |\n| Tektronix TDS3034B                | [discover+scpi+screenshot] |                               |\n| Tektronix MDO3024                 | [discover+scpi]            |                               |\n| Tektronix 4 Series MSO            | [discover+scpi]            |                               |\n| Tektronix MSO56                   | [discover+scpi+screenshot] |                               |\n\nNotes:\n * Feel free to add tested instruments to the list via GitHub pull request or report via GitHub issue.\n * The [lxi-tools wiki](https://github.com/lxi-tools/lxi-tools/wiki/) provides further information regarding test instruments, including known issues and SCPI commands.\n\n## 6. Documentation\n\n## 6.1 lxi\n\nThe lxi commandline tool is documented in its included manpages.\n\n## 6.2 Lua script API\n\nThe lxi-tools Lua script API is documented [here](doc/lua-api.txt).\n\n## 7. Contributing\n\nlxi-tools is open source. If you want to help out with the project please feel\nfree to join in.\n\nAll contributions (bug reports, code, doc, ideas, etc.) are welcome.\n\nPlease use the github issue tracker and pull request features.\n\nAlso, if you find this free open source software useful please feel free to\nconsider making a donation of your choice:\n\n[![Donate](images/Paypal.png)](https://www.paypal.me/lundmar)\n\n## 8. Support\n\nSubmit bug reports [here](https://github.com/lxi-tools/lxi-tools/issues).\n\n## 9. Website\n\nVisit [lxi-tools.github.io](https://lxi-tools.github.io)\n\n## 10. Wiki\n\nVisit wiki [here](https://github.com/lxi-tools/lxi-tools/wiki/).\n\n## 11. License\n\nThis code is released under BSD-3, commonly known as the 3-clause (or\n\"modified\") BSD license.\n\n## 12. Authors\n\nCreated and maintained by Martin Lund \\\u003cmartin.lund@keep-it-simple.com\u003e\n\nSee the AUTHORS file for full list of contributors.\n\n## 13. Sponsors\n\nA big thank you to the following sponsors that have donated test equipment to\nsupport the lxi-tools open source effort:\n\n * Siglent Technologies - www.siglent.com\n * KIKUSUI Electronics Corp. - www.kikusui.co.jp\n\n","funding_links":["https://www.paypal.me/lundmar"],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxi-tools%2Flxi-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flxi-tools%2Flxi-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flxi-tools%2Flxi-tools/lists"}