{"id":27006768,"url":"https://github.com/solokeys/solo","last_synced_at":"2025-04-04T08:01:39.566Z","repository":{"id":37421751,"uuid":"148706208","full_name":"solokeys/solo1","owner":"solokeys","description":"Solo 1 firmware in C","archived":false,"fork":false,"pushed_at":"2022-11-13T10:16:36.000Z","size":3442,"stargazers_count":2328,"open_issues_count":216,"forks_count":280,"subscribers_count":96,"default_branch":"master","last_synced_at":"2025-03-31T01:06:05.158Z","etag":null,"topics":["fido2","hardware","security","u2f","webauthn"],"latest_commit_sha":null,"homepage":"https://solokeys.com/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solokeys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null},"funding":{"github":["solokeys"]}},"created_at":"2018-09-13T22:42:08.000Z","updated_at":"2025-03-26T16:36:20.000Z","dependencies_parsed_at":"2023-01-21T17:46:58.941Z","dependency_job_id":null,"html_url":"https://github.com/solokeys/solo1","commit_stats":null,"previous_names":["solokeys/solo"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solokeys%2Fsolo1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solokeys%2Fsolo1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solokeys%2Fsolo1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solokeys%2Fsolo1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solokeys","download_url":"https://codeload.github.com/solokeys/solo1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142051,"owners_count":20890652,"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":["fido2","hardware","security","u2f","webauthn"],"created_at":"2025-04-04T08:01:21.148Z","updated_at":"2025-04-04T08:01:39.544Z","avatar_url":"https://github.com/solokeys.png","language":"C","readme":"[![latest release](https://img.shields.io/github/release/solokeys/solo.svg)](https://github.com/solokeys/solo/releases)\n[![Keybase Chat](https://img.shields.io/badge/chat-on%20keybase-brightgreen.svg)](https://keybase.io/team/solokeys.public)\n[![Build Status](https://travis-ci.com/solokeys/solo.svg?style=flat-square\u0026branch=master)](https://travis-ci.com/solokeys/solo)\n\nSolo is an open source security key. We just launched Solo v2, join our campaign on [Kickstarter](https://solokeys.com/v2)!\n\n[\u003cimg src=\"https://ksr-ugc.imgix.net/assets/032/127/709/6fdd7fc45ce4b0fa125a2a26d260fb01_original.png?ixlib=rb-2.1.0\u0026crop=faces\u0026w=1024\u0026h=576\u0026fit=crop\u0026v=1611596872\u0026auto=format\u0026frame=1\u0026q=92\u0026s=52b8b89ae6aad9b38b605b65e5cd6ff6\" width=\"600\"\u003e](https://solokeys.com/v2)\n\nSolo supports FIDO2 and U2F standards for strong two-factor authentication and password-less login, and it will protect you against phishing and other online attacks. With colored cases and multilingual guides we want to make secure login more personable and accessible to everyone around the globe.\n\nThis repo contains the Solo firmware, including implementations of FIDO2 and U2F (CTAP2 and CTAP) over USB and NFC. The main implementation is for STM32L432, but it is easily portable.\n\nFor development no hardware is needed, Solo also runs as a standalone application for Windows, Linux, and Mac OSX. If you like (or want to learn) hardware instead, you can run Solo on the NUCLEO-L432KC development board, or we make Solo for Hacker, an unlocked version of Solo that lets you customize its firmware.\n\n\n# Security\n\nSolo is based on the STM32L432 microcontroller. It offers the following security features.\n\n- True random number generation to guarantee random keys.\n- Security isolation so only simple \u0026 secure parts of code can handle keys.\n- Flash protection from both external use and untrusted code segments.\n- 256 KB of memory to support hardened crypto implementations and, later, additional features such as OpenPGP or SSH.\n- No NDA needed to develop for.\n\n\n# Solo for Hackers\n\nSolo for Hacker is a special version of Solo that let you customize its firmware, for example you can change the LED color, and even build advanced applications.\n\nCheck out [solokeys.com](https://solokeys.com), for options on where to buy Solo.  Solo Hacker can be converted to a secure version, but normal Solo cannot be converted to a Hacker version.\n\nIf you have a Solo for Hacker, here's how you can load your own code on it. You can find more details, including how to permanently lock it, in our [documentation](https://docs.solokeys.dev/building/). We support Python3.\n\nFor example, if you want to turn off any blue light emission, you can edit [`led_rgb()`](https://github.com/solokeys/solo/blob/master/targets/stm32l432/src/app.h#L48) and change `LED_INIT_VALUE`\nto be a different hex color.\n\nThen recompile, load your new firmware, and enjoy a different LED color Solo.\n\nIn the Hacker version, hardware is the same but the firmware is unlocked, so you can 1) load an unsigned application, or 2) entirely reflash the key. By contrast, in a regular Solo you can only upgrade to a firmware signed by SoloKeys, and flash is locked and debug disabled permanently.\n\nHacker Solo isn't really secure so you should only use it for development. An attacker with physical access to a Solo for Hacker can reflash it following the steps above, and even a malware on your computer could possibly reflash it.\n\n## Checking out the code\n```bash\ngit clone --recurse-submodules https://github.com/solokeys/solo\ncd solo\n```\n\nIf you forgot the `--recurse-submodules` while cloning, simply run `git submodule update --init --recursive`.\n\n`make update` will also checkout the latest code on `master` and submodules.\n\n## Checking out the code to build a specific version\n\nYou can checkout the code to build a specific version of the firmware with:\n```\nVERSION_TO_BUILD=2.5.3\ngit fetch --tags\ngit checkout ${VERSION_TO_BUILD}\ngit submodule update --init --recursive\n```\n\n## Installing the toolchain and applying updates\n\nIn order to compile ARM code, you need the ARM compiler and other things like bundling bootloader and firmware require the [solo1](https://github.com/solokeys/solo1-cli) python package. Check our [documentation](https://docs.solokeys.dev/) for details.\n\nYou can update your SoloKey after running `pip3 install solo1` with `solo1 key update` for the latest version. To apply a custom image use `solo1 program bootloader \u003cfile\u003e(.json|.hex)`.\n\n## Installing the toolkit and compiling in Docker\nAlternatively, you can use Docker to create a container with the toolchain.\nYou can run:\n\n```bash\n# Build the toolchain container\nmake docker-build-toolchain\n\n# Build all versions of the firmware in the \"builds\" folder\nmake docker-build-all\n```\n\nThe `builds` folder will contain all the variation on the firmware in `.hex` files.\n\n## Build locally\n\n### Prereqs\n\n1. [Install Rust](https://www.rust-lang.org/tools/install) and add the `thumbv7em-none-eabihf` target.\n\n```\nrustup target add thumbv7em-none-eabihf\n```\n\n### Building\n\nIf you have the toolchain installed on your machine you can build the firmware with:\n\n```bash\ncd targets/stm32l432\nmake cbor\nmake build-hacker\ncd ../..\n\nmake venv\nsource venv/bin/activate\nsolo1 program aux enter-bootloader\nsolo1 program bootloader targets/stm32l432/solo.hex\n```\n\n# Developing Solo (No Hardware Needed)\n\n## Prereqs\n\n1. Need libsodium.  On debian, install:\n\n```\nsudo apt install libsodium-dev\n```\n\n## Building\n\nClone Solo and build it\n\n```bash\ngit clone --recurse-submodules https://github.com/solokeys/solo\ncd solo\nmake all\n```\n\nThis builds Solo as a standalone application. Solo application is set up to send and receive USB HID messages over UDP to ease development and reduce need for hardware.\n\nTesting can be done using our fork of Yubico's client software, python-fido2. Our fork of python-fido2 has small changes to make it send USB HID over UDP to the authenticator application. You can install our fork by running the following:\n\n```bash\npip install -r tools/requirements.txt\n```\n\nRun the Solo application:\n```bash\n./main\n```\n\nIn another shell, you can run our [test suite](https://github.com/solokeys/fido2-tests).\n\nYou can find more details in our [documentation](https://docs.solokeys.dev/), including how to build on the the NUCLEO-L432KC development board.\n\n\n# Documentation\n\nCheck out our [official documentation](https://docs.solokeys.dev/).\n\n\n# Contributors ✨\n\nSolo is an upgrade to [U2F Zero](https://github.com/conorpp/u2f-zero). It was born from Conor's passion for making secure hardware, and from our shared belief that security should be open to be trustworthy, in hardware like in software.\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\nThe ultimate goal is to have a FIDO2 security key supporting USB, NFC, and BLE interfaces, that can run on a variety of MCUs.\nLook at the issues to see what is currently being worked on. Feel free to add issues as well.\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/szszszsz\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/17005426?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSzczepan Zalega\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=szszszsz\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=szszszsz\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-szszszsz\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Wesseldr\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/4012809?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWessel dR\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=Wesseldr\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.imperialviolet.org\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/21203?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAdam Langley\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/issues?q=author%3Aagl\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=agl\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.lotteam.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/807634?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOleg Moiseenko\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=merlokk\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/aseigler\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/6605560?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlex Seigler\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/issues?q=author%3Aaseigler\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.cotech.de/services/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/321888?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDominik Schürmann\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/issues?q=author%3Adschuermann\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ehershey\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/286008?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eErnie Hershey\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=ehershey\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/YakBizzarro\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/767740?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAndrea Corna\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-YakBizzarro\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://place.org/~pj/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/11100?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePaul Jimenez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-pjz\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=pjz\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/yparitcher\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/38916402?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyparitcher\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-yparitcher\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#maintenance-yparitcher\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/StoyanDimitrov\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/10962709?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStoyanDimitrov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=StoyanDimitrov\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/alphathegeek\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/51253712?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ealphathegeek\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-alphathegeek\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://xakcop.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/271616?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRadoslav Gerganov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-rgerganov\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=rgerganov\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://13-37.org\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/10274356?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eManuel Domke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-manuel-domke\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=manuel-domke\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#business-manuel-domke\" title=\"Business development\"\u003e💼\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://1bitsquared.com\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/17334?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePiotr Esden-Tempski\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#business-esden\" title=\"Business development\"\u003e💼\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/m3hm00d\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/42179593?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ef.m3hm00d\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=m3hm00d\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://blogs.gnome.org/hughsie/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/151380?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRichard Hughes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-hughsie\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=hughsie\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-hughsie\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#tool-hughsie\" title=\"Tools\"\u003e🔧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.schulz.dk\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1150049?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKim Schulz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#business-kimusan\" title=\"Business development\"\u003e💼\u003c/a\u003e \u003ca href=\"#ideas-kimusan\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/oplik0\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/25460763?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJakub\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/issues?q=author%3Aoplik0\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jolo1581\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/53423977?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJan A.\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=jolo1581\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=jolo1581\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ccinelli\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/38021940?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eccinelli\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-ccinelli\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=ccinelli\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.nitrokey.com\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/9438831?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNitrokey\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=Nitrokey\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/commits?author=Nitrokey\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"#ideas-Nitrokey\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/enrikb\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1910914?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEnrik Berkhan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=enrikb\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-enrikb\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#ideas-enrikb\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/saravanan30erd\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/17641354?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSaravanan Palanisamy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=saravanan30erd\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/dmpiergiacomo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/15999043?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003edmpiergiacomo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/solokeys/solo/commits?author=dmpiergiacomo\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/solokeys/solo/issues?q=author%3Admpiergiacomo\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n\n# License\n\nSolo is fully open source.\n\nAll software, unless otherwise noted, is dual licensed under Apache 2.0 and MIT.\nYou may use Solo software under the terms of either the Apache 2.0 license or MIT license.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n\nAll hardware, unless otherwise noted, is dual licensed under CERN and CC-BY-SA.\nYou may use Solo hardware under the terms of either the CERN 1.2 license or CC-BY-SA 4.0 license.\n\nAll documentation, unless otherwise noted, is licensed under CC-BY-SA.\nYou may use Solo documentation under the terms of the CC-BY-SA 4.0 license\n\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fsolokeys%2Fsolo.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fsolokeys%2Fsolo?ref=badge_large)\n\n# Where To Buy Solo\n\nYou can buy Solo, Solo Tap, and Solo for Hackers at [solokeys.com](https://solokeys.com).\n\n\u003cbr/\u003e\n\u003chr/\u003e\n\u003cbr/\u003e\n\n[![License](https://img.shields.io/github/license/solokeys/solo.svg)](https://github.com/solokeys/solo/blob/master/LICENSE)\n[![All Contributors](https://img.shields.io/badge/all_contributors-22-orange.svg?style=flat-square)](#contributors)\n[![Build Status](https://travis-ci.com/solokeys/solo.svg?branch=master)](https://travis-ci.com/solokeys/solo)\n[![Discourse Users](https://img.shields.io/discourse/https/discourse.solokeys.com/users.svg)](https://discourse.solokeys.com)\n[![Keybase Chat](https://img.shields.io/badge/chat-on%20keybase-brightgreen.svg)](https://keybase.io/team/solokeys.public)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fsolokeys%2Fsolo.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fsolokeys%2Fsolo?ref=badge_shield)\n\n[![latest release](https://img.shields.io/github/release/solokeys/solo.svg)](https://github.com/solokeys/solo/releases)\n[![commits since last release](https://img.shields.io/github/commits-since/solokeys/solo/latest.svg)](https://github.com/solokeys/solo/commits/master)\n[![last commit](https://img.shields.io/github/last-commit/solokeys/solo.svg)](https://github.com/solokeys/solo/commits/master)\n[![commit activity](https://img.shields.io/github/commit-activity/m/solokeys/solo.svg)](https://github.com/solokeys/solo/commits/master)\n[![contributors](https://img.shields.io/github/contributors/solokeys/solo.svg)](https://github.com/solokeys/solo/graphs/contributors)\n","funding_links":["https://github.com/sponsors/solokeys"],"categories":["\u003ca id=\"04102345243a4bcaec83f703afff6cb3\"\u003e\u003c/a\u003e硬件设备\u0026\u0026USB\u0026树莓派","C (61)"],"sub_categories":["\u003ca id=\"48c53d1304b1335d9addf45b959b7d8a\"\u003e\u003c/a\u003eUSB"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolokeys%2Fsolo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolokeys%2Fsolo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolokeys%2Fsolo/lists"}