{"id":42019119,"url":"https://github.com/vectorgrp/sil-kit-adapters-qemu","last_synced_at":"2026-01-26T03:30:59.800Z","repository":{"id":128811663,"uuid":"574881406","full_name":"vectorgrp/sil-kit-adapters-qemu","owner":"vectorgrp","description":"A collection of software to connect QEMU images to the Vector SIL Kit","archived":false,"fork":false,"pushed_at":"2025-10-06T13:54:17.000Z","size":4098,"stargazers_count":13,"open_issues_count":0,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-10-14T18:24:27.180Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vectorgrp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-12-06T09:27:23.000Z","updated_at":"2025-10-06T13:54:21.000Z","dependencies_parsed_at":"2024-07-18T11:49:48.170Z","dependency_job_id":"079d4811-3e48-428a-a993-1b130f327d34","html_url":"https://github.com/vectorgrp/sil-kit-adapters-qemu","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/vectorgrp/sil-kit-adapters-qemu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorgrp%2Fsil-kit-adapters-qemu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorgrp%2Fsil-kit-adapters-qemu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorgrp%2Fsil-kit-adapters-qemu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorgrp%2Fsil-kit-adapters-qemu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vectorgrp","download_url":"https://codeload.github.com/vectorgrp/sil-kit-adapters-qemu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorgrp%2Fsil-kit-adapters-qemu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28765881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T03:19:35.311Z","status":"ssl_error","status_checked_at":"2026-01-26T03:19:13.815Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-26T03:30:59.250Z","updated_at":"2026-01-26T03:30:59.785Z","avatar_url":"https://github.com/vectorgrp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vector SIL Kit Adapter for QEMU\n[![Vector Informatik](https://img.shields.io/badge/Vector%20Informatik-rgb(180,0,50))](https://www.vector.com/int/en/)\n[![SocialNetwork](https://img.shields.io/badge/vectorgrp-rgb(0,113,176))](https://www.linkedin.com/company/vectorgrp/)\\\n[![ReleaseBadge](https://img.shields.io/github/v/release/vectorgrp/sil-kit-adapters-qemu.svg)](https://github.com/vectorgrp/sil-kit-adapters-qemu/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/vectorgrp/sil-kit-adapters-qemu/blob/main/LICENSE)\n[![Win \u0026 Linux Builds](https://github.com/vectorgrp/sil-kit-adapters-qemu/actions/workflows/build-linux-and-windows-release.yml/badge.svg)](https://github.com/vectorgrp/sil-kit-adapters-qemu/actions/workflows/build-linux-and-windows-release.yml)\n[![SIL Kit](https://img.shields.io/badge/SIL%20Kit-353b42?logo=github\u0026logoColor=969da4)](https://github.com/vectorgrp/sil-kit)\n\nThis collection of software is provided to illustrate how the [Vector SIL Kit](https://github.com/vectorgrp/sil-kit/)\ncan be attached to running [QEMU](https://www.qemu.org/) processes.\n\nThis repository contains instructions to create, set up, and launch a QEMU image, and a minimal development environment.\n\nThe main contents are working examples of necessary software to connect the running system to a SIL Kit environment,\nas well as complimentary demo applications for some communication to happen.\n\n# Getting Started\nThose instructions assume you use WSL (Ubuntu) or a Linux OS for running QEMU and building and running the adapter (nevertheless it is also possible to do this directly on a Windows system, with the exception of setting up the QEMU image), and use ``bash`` as your interactive\nshell.\n## a) Getting Started with self-built Adapter and Demos\nThis section specifies steps you should do if you have just cloned the repository.\n\nBefore any of those topics, please change your current directory to the top-level in the ``sil-kit-adapters-qemu``\nrepository:\n\n    cd /path/to/sil-kit-adapters-qemu\n\n### Fetch Third Party Software\nThe first thing that you should do is initializing the submodules to fetch the required third party software:\n\n    git submodule update --init --recursive\n\nOtherwise clone the standalone version of asio manually:\n\n    git clone --branch asio-1-24-0 https://github.com/chriskohlhoff/asio.git third_party/asio\n\n### Build the Adapter and Demos\nTo build the adapter and demos, you'll need a SIL Kit package ``SilKit-x.y.z-$platform`` for your platform. You can download them directly from [Vector SIL Kit Releases](https://github.com/vectorgrp/sil-kit/releases). \nThe easiest way would be to download it with your web browser, unzip it and place it on your Windows file system, where it also can be accessed by WSL.\n\nThe adapter and demos are built using ``cmake``:\n\n    mkdir build\n    cmake -S. -Bbuild -DSILKIT_PACKAGE_DIR=/path/to/SilKit-x.y.z-$platform/ -D CMAKE_BUILD_TYPE=Release\n    cmake --build build --parallel --config Release\n\n**Note 1:** If you have a self-built or pre-built version of SIL Kit, you can build the adapter against it by setting SILKIT_PACKAGE_DIR to the path, where the bin, include and lib directories are.\n\n**Note 2:** If you have SIL Kit installed on your system, you can build the adapter against it, even by not providing SILKIT_PACKAGE_DIR to the installation path at all. Hint: Be aware, if you are using WSL2 this may result in issue where your Windows installation of SIL Kit is found. To avoid this specify SILKIT_PACKAGE_DIR.\n\n**Note 3:** If you don't provide a specific path for SILKIT_PACKAGE_DIR and there is no SIL Kit installation on your system, a SIL Kit release package (the default version listed in CMakeLists.txt) will be fetched from github.com and the adapter will be built against it.\n\nThe adapter and demo executables will be available in the ``bin`` directory as well as the ``SilKit.dll`` if you are on Windows. Additionally the ``SilKit.lib`` on Windows and the ``libSilKit.so`` on Linux are automatically copied to the ``lib`` directory.\n\n## b) Getting Started with pre-built Adapter and Demos\nDownload a preview or release of the adapter directly from [Vector SIL Kit QEMU Releases](https://github.com/vectorgrp/sil-kit-adapters-qemu/releases).\n\nIf not already existent on your system you should also download a SIL Kit Release directly from [Vector SIL Kit Releases](https://github.com/vectorgrp/sil-kit/releases). You will need this for being able to start a sil-kit-registry.\n\n## Install the sil-kit-adapter-qemu (optional)\n\n### Installation with Debian package\nOn Debian systems, the most straightforward way to install the sil-kit-adapter-qemu is to use the Debian package `sil-kit-adapter-qemu_*.deb` which is provided with each release (version v1.2.0 and above).\nAfter downloading it, you can install it using the following command:\n```\nsudo apt install ./sil-kit-adapter-qemu_*.deb\n```\nTo get more information about this Debian package you can refer to the SIL Kit Adapter Packaging [README](https://github.com/vectorgrp/sil-kit-adapters-pkg).\n\n**Note 1:** To be able to install and run the adapter, you will also need to install the SIL Kit library. This can be done by installing the `libsilkit\u003cmajor\u003e_*.deb` and `libsilkit-dev_*.deb` packages provided in the SIL Kit releases, where `\u003cmajor\u003e` corresponds to the SIL Kit major version (e.g., 5).\n\n**Note 2:** After installing the adapter, you can run the ``sil-kit-adapter-qemu`` from any location without specifying a path. The default installation path is ``/usr/bin``.\n\n### Linux installation with CMake\nTo install the sil-kit-adapter-qemu using CMake on Linux, run the following command (can be done for self-built and pre-built package after cmake configure):\n\n    sudo cmake --build build --target install\n\n**Note 1:** Be aware that SIL Kit itself also needs to be installed to run the adapter.\n\n**Note 2:** After installing the adapter on Linux, the following command  ``sil-kit-adapter-qemu`` can be called from everywhere without defining a path. The default installation path will be ``/usr/local/bin``.\n\n### Windows installation\nTo install the sil-kit-adapter-qemu on Windows, run the following command (can be done for self-built and pre-built package after cmake configure):\n\n    cmake --build build --target install --config Release\n\n**Note 1:** Be aware that SIL Kit itself also needs to be installed to run the adapter.\n\n**Note 2:** Elevated rights are needed to install the adapter under its default location. This can be achieved by running the command in a PowerShell opened as administrator.\n\n**Note 3:** The default installation path will be ``C:\\Program Files\\Vector SIL Kit Adapter QEMU \u003cQEMU_ADAPTER_VERSION\u003e``, with \u003cQEMU_ADAPTER_VERSION\u003e as the version of the QEMU adapter you install. \nDepending on your system this default path can be ``Program Files (x86)``.\n\n### Run the sil-kit-adapter-qemu\nThis application allows the user to attach simulated ethernet interface (``nic``) and/or character devices (e.g. ``SPI``) of a QEMU virtual machine to the\nSIL Kit.\n\nThe application uses the *socket* backend provided by QEMU.\nIt can be configured for the QEMU virtual machine using the following command line arguments of QEMU:\n\n    -netdev socket,listen=:12345\n    -chardev socket,server=on,wait=off,host=0.0.0.0,port=23456\n\nThe arguments of ``listen=`` and ``host=``\u0026``port=`` specify a TCP socket endpoint on which QEMU will listen for incoming connections, \nwhich sil-kit-adapter-qemu will establish.\n\nAll *outgoing* ethernet frames on that particular virtual ethernet interface inside of the virtual machine are sent to\nall connected clients.\nAny *incoming* data from any connected clients is presented to the virtual machine as an incoming ethernet frame on the\nvirtual interface.\nAll characters sent to the SPI associated to the chardev will be sent to the topic specified to sil-kit-adapter-qemu.\nAll characters published on the subscribed topic by sil-kit-adapter-qemu will be sent to the SPI of the guest.\n\nBefore you start the adapter there always needs to be a sil-kit-registry running already. Start it e.g. like this:\n\n    /path/to/SilKit-x.y.z-$platform/SilKit/bin/sil-kit-registry --listen-uri 'silkit://0.0.0.0:8501'\n\nThe application takes the following command line arguments (defaults in curly braces if you omit the switch):\n\n    sil-kit-adapter-qemu [--name \u003cparticipant's name{SilKitAdapterQemu}\u003e]\n      [--configuration \u003cpath to .silkit.yaml or .json configuration file\u003e]\n      [--registry-uri silkit://\u003chost{localhost}\u003e:\u003cport{8501}\u003e]\n      [--log \u003cTrace|Debug|Warn|{Info}|Error|Critical|Off\u003e]\n     [[--socket-to-ethernet \u003chost\u003e:\u003cport\u003e,network=\u003cnetwork's name\u003e[:\u003ccontroller's name\u003e]]]\n     [[--unix-socket-to-ethernet \u003cpath to socket identifier\u003e,network=\u003cnetwork's name\u003e[:\u003ccontroller's name\u003e]]]\n     [[--socket-to-chardev\n         \u003chost\u003e:\u003cport\u003e,\n        [\u003cnamespace\u003e::]\u003ctoChardev topic name\u003e[~\u003csubscriber's name\u003e]\n           [[,\u003clabel key\u003e:\u003coptional label value\u003e\n            |,\u003clabel key\u003e=\u003cmandatory label value\u003e\n           ]],\n        [\u003cnamespace\u003e::]\u003cfromChardev topic name\u003e[~\u003cpublisher's name\u003e]\n           [[,\u003clabel key\u003e:\u003coptional label value\u003e\n            |,\u003clabel key\u003e=\u003cmandatory label value\u003e\n           ]]\n     ]]\n     [[--unix-socket-to-chardev\n         \u003cpath to socket identifier\u003e,\n        [\u003cnamespace\u003e::]\u003ctoChardev topic name\u003e[~\u003csubscriber's name\u003e]\n           [[,\u003clabel key\u003e:\u003coptional label value\u003e\n            |,\u003clabel key\u003e=\u003cmandatory label value\u003e\n           ]],\n        [\u003cnamespace\u003e::]\u003cfromChardev topic name\u003e[~\u003cpublisher's name\u003e]\n           [[,\u003clabel key\u003e:\u003coptional label value\u003e\n            |,\u003clabel key\u003e=\u003cmandatory label value\u003e\n           ]]\n     ]]\n     [--version]\n     [--help]\n\nThere needs to be at least one ``--socket-to-chardev`` or ``--unix-socket-to-chardev`` or ``--socket-to-ethernet`` or ``--unix-socket-to-ethernet`` argument. Each socket must be unique.\n\nSIL Kit-specific CLI arguments will be overwritten by the config file passed by ``--configuration``.\n\n**Example:**\nHere is an example that runs the Chardev adapter and demonstrates several forms of parameters that the adapter takes into account: \n\n    sil-kit-adapter-qemu --name ChardevAdapter --socket-to-chardev localhost:12345,ChardevDemo::toChardev,VirtualNetwork=Default,ChardevDemo::fromChardev,VirtualNetwork:Default\n\nIn the example, `localhost` and port `12345` are used to establish a socket connection between the adapter and the QEMU instance where the Character Device is running. On SIL Kit side, the adapter has `ChardevAdapter` as a participant name and uses the default values for the SIL Kit URI connection. It subscribes to `toChardev` topic and publishes on `fromChardev` topic.     \nBoth subscriber and publisher are configured with `VirtualNetwork` label set to `Default` value. For the subscriber it is a `Required` label due to the `=` while the publisher one is `Optional` due to the `:`. The subscriber requires the `Namespace` label be set to `ChardevDemo`. The publisher has the optional `Namespace` label set to `ChardevDemo` as well. \n\n**Note:** Be aware that the QEMU image needs to be running already before you start the adapter application.\n\n## Setup QEMU image\nWith the following instructions you can setup your own QEMU image which can be used for the demos below: [tools/README.md](tools/README.md)\n\n## Ethernet Demo\nThe aim of this demo is to showcase a simple adapter forwarding ethernet traffic from and to the QEMU image through\nVector SIL Kit. Traffic being exchanged are ping (ICMP) requests, and the answering device replies only to them.\n\nThis demo is further explained in [eth/README.md](eth/README.md).\n\n## Chardev Demo\nThis demo application allows the user to attach a simulated character device (chardev) interface (pipe) of a QEMU image to the SIL Kit in the form of a DataPublisher/DataSubscriber.\n\nThis demo is further explained in [chardev/README.md](chardev/README.md).\n\n## SUT remote control Demo\nThis demo is based on the ethernet demo from above. In addition it also makes use of the SIL Kit Adapter QEMU chardev option to connect the Adapter to QEMUs QMP (QEMU Machine Protocol) interface. This makes it possible to remote control the QEMU SUT via SIL Kit. How that can be done exactly is showcased by this demo.\n\nThis demo is further explained in [qmp/README.md](qmp/README.md).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvectorgrp%2Fsil-kit-adapters-qemu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvectorgrp%2Fsil-kit-adapters-qemu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvectorgrp%2Fsil-kit-adapters-qemu/lists"}