{"id":16839653,"url":"https://github.com/stv0g/xilinx-hw-server-docker","last_synced_at":"2025-06-22T00:36:35.183Z","repository":{"id":39333524,"uuid":"462860900","full_name":"stv0g/xilinx-hw-server-docker","owner":"stv0g","description":"Run a Xilinx hw_server in a Docker container","archived":false,"fork":false,"pushed_at":"2023-05-30T12:05:26.000Z","size":460,"stargazers_count":17,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-25T03:25:04.261Z","etag":null,"topics":["docker","xilinx"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stv0g.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-23T18:35:06.000Z","updated_at":"2024-08-09T17:30:08.000Z","dependencies_parsed_at":"2024-06-11T16:52:28.128Z","dependency_job_id":"c6b7cff5-23f7-41cb-b60f-9c66eb87a8e4","html_url":"https://github.com/stv0g/xilinx-hw-server-docker","commit_stats":{"total_commits":17,"total_committers":4,"mean_commits":4.25,"dds":"0.23529411764705888","last_synced_commit":"a07884b0be3afeb05d95fb85d64d9d0c172de126"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stv0g%2Fxilinx-hw-server-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stv0g%2Fxilinx-hw-server-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stv0g%2Fxilinx-hw-server-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stv0g%2Fxilinx-hw-server-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stv0g","download_url":"https://codeload.github.com/stv0g/xilinx-hw-server-docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248346315,"owners_count":21088435,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","xilinx"],"created_at":"2024-10-13T12:33:23.427Z","updated_at":"2025-04-11T05:21:37.138Z","avatar_url":"https://github.com/stv0g.png","language":"Dockerfile","funding_links":[],"categories":["Dockerfile"],"sub_categories":[],"readme":"# Xilinx hw_server \u0026 xsdb Docker Image\n\nThis Docker image allows you to run Xilinx's `hw_server` as well as the Xilinx debugger `xsdb` in a Docker container.\nUsing QEmu user-space emulation, these tools can also run on embedded devices like a Raspberry Pi or the Ultra-scale boards themself.\n\n- [Blog article with details](https://noteblok.net/2022/02/23/running-a-xilinx-hw_server-as-docker-container/)\n\n![Setup](./docs/setup.png)\n\n## Tested Vivado versions\n\n- [v2021.2](https://github.com/users/sstaehli/packages/container/hw_server/20585701?tag=2021.2)\n- [v2020.1](https://github.com/users/sstaehli/packages/container/hw_server/20585725?tag=2020.1)\n\n## Tested systems\n\n- Raspberry Pi 4 with 64-bit Raspberry Pi OS (Debian Bullseye)\n\n## Usage\n\n### Docker\n\n```bash\ndocker run \\\n   --rm \\\n   --restart unless-stopped \\\n   --privileged \\\n   --volume /dev/bus/usb:/dev/bus/usb \\\n   --publish 3121:3121 \\\n   --detach \\\n   ghcr.io/stv0g/hw_server:v2021.2\n```\n\n### Docker-compose\n\nCopy the `docker-compose.yml` file from this repo to your target's working directory and run the following command to start the container.\n\n```bash\ndocker-compose up -d\n```\n\n## Running on non x86_64 systems\n\n```bash\n# Install docker\nsudo apt-get update \u0026\u0026 sudo apt-get upgrade\ncurl -sSL https://get.docker.com | sh\n\nsudo systemctl enable --now docker\n\n# Optional: Install docker-compose (with Python3)\nsudo apt-get install libffi-dev libssl-dev\nsudo apt install python3-dev\nsudo apt-get install -y python3 python3-pip\n‍sudo pip3 install docker-compose\n\n# Enable qemu-user emulation support for running amd64 Docker images\ndocker run --rm --privileged aptman/qus -s -- -p x86_64\n\n# Run the hw_server with docker\ndocker run --rm --restart unless-stopped --privileged --volume /dev/bus/usb:/dev/bus/usb --publish 3121:3121 --detach ghcr.io/sst/hw_server:2021.2\n\n# - OR -\n\n# Run the hw_server with docker-compose (copy the docker-compose.yml to your working dir first)\ndocker-compose up -d\n```\n\nThe following steps are not necessary if you use docker-compose.\n\n### Optional: Enable QEmu userspace emulation at system startup\n\n```bash\ncat \u003e /etc/systemd/system/qus.service \u003c\u003cEOF\n[Unit]\nDescription=Start docker container for QEMU x86 emulation\nRequires=docker.service\nAfter=docker.service\n\n[Service]\nType=forking\nTimeoutStartSec=infinity\nRestart=no\nExecStart=/usr/bin/docker run --rm --privileged aptman/qus -s -- -p x86_64\n\n[Install]\nWantedBy=multi-user.target\nEOF\n\nsystemctl daemon-reload\nsystemctl enable --now qus\n```\n\nThe above steps in conjunction with the docker restart policy will make your `hw_server` container start whenever your system is booted.\n\nIf you want to let systemd manage the hw_server you can use also do the following\n\n```bash\ncat \u003e /etc/systemd/system/hw_server.service \u003c\u003cEOF\n[Unit]\nDescription=Starts xilinx hardware server\nAfter=docker-qemu-interpreter.service\nRequires=docker.service\n\n[Service]\nType=forking\nPIDFile=/run/hw_server.pid\nTimeoutStartSec=infinity\nRestart=always\nExecStart=/usr/bin/docker run --rm --name hw_server --privileged  --platform linux/amd64 --volume /dev/bus/usb:/dev/bus/usb --publish 3121:3121 --detach ghcr.io/stv0g/hw_server:v2021.2\nExecStartPost=/bin/bash -c '/usr/bin/docker inspect -f '{{.State.Pid}}' hw_server | tee /run/hw_server.pid'\nExecStop=/usr/bin/docker stop hw_server\n\n[Install]\nWantedBy=multi-user.target\nEOF\n\nsystemctl daemon-reload\nsystemctl enable --now hw_server\n```\n\n## Building your own image\n\n1. Download the _Vivado Lab Solutions_ Linux installer to the current directory.\n   - **Do not extract it!**\n   - E.g. `Xilinx_Vivado_Lab_Lin_2021.2_1021_0703.tar.gz`\n2. Build the image with the [build.sh](build.sh) script:\n\n   ```bash\n   ./build.sh\n   ```\n\n### Note concerning Accept EULA\n\nDepending on the Vivado version, you have to agree WebTalk (e. g. Version 2020.1) in the [Dockerfile](Dockerfile) or omit it (e. g. Version 2021.2). If this particular line does not match, Vivado installation will fail!\n\n#### For 2021.2 and future versions\n\n```bash\n...\n--agree XilinxEULA,3rdPartyEULA \\\n...\n```\n\n#### For 2020.1 and probably older versions\n\n```bash\n...\n--agree XilinxEULA,3rdPartyEULA,WebTalkTerms \\\n...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstv0g%2Fxilinx-hw-server-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstv0g%2Fxilinx-hw-server-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstv0g%2Fxilinx-hw-server-docker/lists"}