Skip to content

Licensing

Component License
Firmware (firmware/) BSD-3-Clause (pico-sdk-compatible)
Linux kernel driver (driver/) GPL-2.0 (kernel requirement)
Userspace Rust crates (userspace/) Apache-2.0 OR MIT (Rust default)
Documentation (docs/) CC-BY-4.0
Hardware design files (hardware/) CERN-OHL-S-2.0
Example scripts (tools/, tutorials) Apache-2.0 OR MIT
Vendored third-party (third_party/) upstream (per submodule): pico-sdk BSD-3, can2040 GPL-3

Every source file carries the SPDX identifier for its license; the top-level LICENSE file reproduces the project-default license. The full SPDX expression per file is authoritative.

Why the mixed model

  • The Linux kernel forces GPL-2.0 on any module that is linked into the kernel at runtime.
  • pico-sdk is BSD-3-Clause and we follow the same license on the firmware side to stay compatible with reused SDK components.
  • Rust userspace uses the dual Apache/MIT convention that is almost universal in the crate ecosystem.
  • Hardware designs use CERN-OHL-S-2.0, the strong-reciprocity hardware license, to keep derivative board designs open.

Contributing under these licenses

By opening a pull request against this repository, contributors agree to license their contributions under the license applicable to the file(s) they touch. Mixed changes are licensed per-file.

Sign-off (git commit -s) is mandatory on kernel-driver changes for eventual upstream submission; the BAUER GROUP commit standard forbids AI-attribution trailers in any commit.