From f3000981452f2986022279cf5996cdc3de6bb7b4 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Fri, 6 Nov 2026 15:16:27 +0100 Subject: [PATCH 1/4] chore(license): add BSD headers to I3C sources Signed-off-by: Frederic Pillon --- libraries/I3C/src/I3C.cpp | 12 ++++++++++++ libraries/I3C/src/I3C.h | 12 ++++++++++++ libraries/I3C/src/I3C_I2C.cpp | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/libraries/I3C/src/I3C.cpp b/libraries/I3C/src/I3C.cpp index 315a81634f..3f9c864011 100644 --- a/libraries/I3C/src/I3C.cpp +++ b/libraries/I3C/src/I3C.cpp @@ -1,3 +1,15 @@ +/* + ******************************************************************************* + * Copyright (c) 2026, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ #include "I3C.h" #include diff --git a/libraries/I3C/src/I3C.h b/libraries/I3C/src/I3C.h index 2c6b21b6f8..b9768178c3 100644 --- a/libraries/I3C/src/I3C.h +++ b/libraries/I3C/src/I3C.h @@ -1,3 +1,15 @@ +/* + ******************************************************************************* + * Copyright (c) 2026, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ #pragma once #include "Arduino.h" diff --git a/libraries/I3C/src/I3C_I2C.cpp b/libraries/I3C/src/I3C_I2C.cpp index ba2a11ae91..241a82cf53 100644 --- a/libraries/I3C/src/I3C_I2C.cpp +++ b/libraries/I3C/src/I3C_I2C.cpp @@ -1,3 +1,15 @@ +/* + ******************************************************************************* + * Copyright (c) 2026, STMicroelectronics + * All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ******************************************************************************* + */ #include "I3C.h" #include From ce1601d9367d7f6304247607fa96aced5a10c769 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Thu, 5 Nov 2026 14:45:00 +0100 Subject: [PATCH 2/4] docs(license): fix and complete the license scope list Fix the pinmap.h and STM32_USB_*_Library paths, which did not exist. List the directories that were missing or wrongly attributed: - cores/arduino/api, cores/arduino/stm32 (LGPL-2.1) - libraries using LGPL-2.1 or BSD 3-Clause (EEPROM, Wire, USBDevice, SubGhz, RGB_LED_TLC59731, SrcWrapper, ...) - the BSD 3-Clause headers in cores/arduino and variants - the MIT files (HardwareTimer, new.cpp, Udp.h, VirtIOSerial, ...) Signed-off-by: Frederic Pillon Assisted-by: GitHub Copilot --- License.md | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/License.md b/License.md index 2f1fc5aaef..e7667ab4a2 100644 --- a/License.md +++ b/License.md @@ -5,7 +5,17 @@ This files includes licensing information for parts of this repository. [LGPLv2.1](#lgplv21) is used for: -* `cores/arduino/*.*` mainly contains modified files from Arduino. +* `cores/arduino/*.*` mainly contains modified files from Arduino, except the + files listed under [BSD 3-Clause License](#bsd-3-clause-license) and + [MIT License](#mit-license) +* `cores/arduino/stm32` +* `cores/arduino/api` (own copy of the license in `cores/arduino/api/LICENSE`), + except the files listed under [MIT License](#mit-license) +* `libraries/EEPROM`, `libraries/IWatchdog`, `libraries/Keyboard`, + `libraries/Mouse`, `libraries/Servo`, `libraries/SoftwareSerial`, + `libraries/SPI`, `libraries/Wire` - except the files listed under + [BSD 3-Clause License](#bsd-3-clause-license) +* `libraries/USBDevice/src/USBSerial.cpp` and `libraries/USBDevice/inc/USBSerial.h` [BSD 3-Clause License](#bsd-3-clause-license) is used for: @@ -13,19 +23,33 @@ This files includes licensing information for parts of this repository. * `system/Middlewares/OpenAMP` * `libraries/VirtIO` - except virtio implementation (see [MIT License](#mit-license)) * `libraries/SrcWrapper/inc/PinName*.h` +* `cores/arduino/variant.h`, `cores/arduino/pins_arduino_analog.h` and + `cores/arduino/pins_arduino_digital.h` +* `libraries/EEPROM/src/utility/stm32_eeprom.*` +* `libraries/Wire/src/utility/twi.*` +* `libraries/USBDevice/src/cdc/cdc_queue.c` and `libraries/USBDevice/inc/cdc_queue.h` +* `libraries/I3C`, `libraries/RGB_LED_TLC59731` and `libraries/SubGhz` +* `libraries/SrcWrapper` - files with a BSD 3-Clause header, mainly + `libraries/SrcWrapper/src/stm32` and `libraries/SrcWrapper/inc` +* `variants` - files with a BSD 3-Clause header, such as `PeripheralPins.c`, + `variant_generic.*` and `generic_clock.c` [Ultimate Liberty License](#Ultimate-Liberty-License) is used for: -* `system/Middlewares/STM32_USB_*_Library` folders -* `libraries/USBDevice` (see header) +* `system/Middlewares/ST/STM32_USB_*_Library` folders +* `libraries/USBDevice` - files with a SLA0044 header, see the + [restrictions](#ultimate-liberty-license) of this license [Apache License](#apache-license) is used for: * `system/Drivers/CMSIS` folder includes the STMicroelectronics CMSIS device -* `system/include/include/pinmap.h` +* `libraries/SrcWrapper/inc/pinmap.h` * `libraries/SrcWrapper/src/stm32/pinmap.c` * `tools/platformio/platformio-build.py` -[MIT License](#mit-license) -* `libraries/VirtIO/*/virtio*` +[MIT License](#mit-license) is used for: +* `libraries/VirtIO/*/virtio*` and `libraries/VirtIO/*/VirtIOSerial.*` +* `libraries/SrcWrapper/*/HardwareTimer.*` +* `libraries/SrcWrapper/src/new.cpp` +* `cores/arduino/api/Udp.h` and `cores/arduino/api/deprecated-avr-comp/avr/pgmspace.h` > [!NOTE] > `system/STM32*xx/system_stm32*xx.c` uses same license than `system/Drivers/CMSIS` From a1759a617bda9173ba6a171df47bf84b3a6e8168 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Thu, 5 Nov 2026 14:45:28 +0100 Subject: [PATCH 3/4] docs(license): document SLA0044 restrictions and license boundaries The Ultimate Liberty License (SLA0044) is not an open source license: it restricts use to STMicroelectronics devices and forbids placing the software under Open Source Terms. Summarize these terms next to the license reference so redistributors are aware of them. Add a note stating that each file keeps its own license, and that Apache-2.0 files must not be merged into LGPL-2.1 files as the two are not compatible. Document the GPLv2 licensed OpenAMP spelling.txt data file, which is only used by development scripts and is not part of the core build. Signed-off-by: Frederic Pillon Assisted-by: GitHub Copilot --- License.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/License.md b/License.md index e7667ab4a2..2816a901ac 100644 --- a/License.md +++ b/License.md @@ -55,6 +55,18 @@ This files includes licensing information for parts of this repository. > `system/STM32*xx/system_stm32*xx.c` uses same license than `system/Drivers/CMSIS` > `system/STM32*xx/stm32*xx_hal_conf_default.h` uses same license than `system/Drivers` subfolders +> [!NOTE] +> Files under different licenses are separate files, each one keeps its own +> license. Only the license of a file applies to that file: the LGPLv2.1 terms +> do not extend to the files under other licenses and vice versa. +> The Apache License 2.0 is compatible with LGPLv3 but not with LGPLv2.1 alone: +> Apache licensed files must not be merged in an LGPLv2.1 licensed file. + +> [!NOTE] +> `system/Middlewares/OpenAMP/*/scripts/spelling.txt` is a data file used by the +> OpenAMP development scripts, licensed under GPLv2 (see its header). It is not +> part of the build of the core. + ------------------------------------------------------------------------------- ## LGPLv2.1 GNU LESSER GENERAL PUBLIC LICENSE @@ -601,6 +613,24 @@ SLA0044, the "License"; You may not use this file except in compliance with the License. You may obtain a copy of the License at: http://www.st.com/SLA0044 +> [!IMPORTANT] +> SLA0044 is not an open source license. The full text is available in +> `system/Middlewares/ST/STM32_USB_Device_Library/LICENSE.md`. Among others: +> +> * The software, including modifications and derivative works, must be used +> and executed solely and exclusively on or in combination with a processing +> unit device manufactured by or for STMicroelectronics. +> * No use, reproduction or redistribution may be done in any manner that would +> subject the software to any Open Source Terms (GPL, EPL, Apache, BSD, MIT +> or any license requiring the distribution of the source code). +> * The name of STMicroelectronics must not be used to endorse or promote +> derived products without prior written permission. +> * Redistribution and use outside the terms of the agreement is void. +> +> Redistributors must check these terms against their own distribution policy. +> The files under this license are kept separate from the files under other +> licenses of this repository. + ------------------------------------------------------------------------------- ## Apache License Apache License From ffef4fbbf527d8dbb49f83a9baaf7d144509d18e Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Thu, 5 Nov 2026 14:48:56 +0100 Subject: [PATCH 4/4] docs(license): add third-party components and attributions List the files written by third parties (Teensyduino, Daniel Fekete, Bumsik Kim, Bjoern Hartmann, Arduino, Mentor Graphics, Xilinx) with their copyright holder and license, so the notices to retain are easy to find. Mention the Arm CMSIS, CMSIS-DSP and CMSIS-NN packages, which are Apache-2.0 licensed and downloaded as tools instead of being shipped in this repository. Signed-off-by: Frederic Pillon Assisted-by: GitHub Copilot --- License.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/License.md b/License.md index 2816a901ac..f8167a817a 100644 --- a/License.md +++ b/License.md @@ -67,6 +67,31 @@ This files includes licensing information for parts of this repository. > OpenAMP development scripts, licensed under GPLv2 (see its header). It is not > part of the build of the core. +## Third-party components and attributions + +The following files are not written by STMicroelectronics or by the +STM32duino contributors. The copyright notice and the permission notice of their +header must be retained: + +| Files | Copyright | License | +|-------|-----------|---------| +| `libraries/SrcWrapper/src/new.cpp` | PJRC.COM, LLC (Teensyduino) | [MIT](#mit-license) | +| `libraries/SrcWrapper/*/HardwareTimer.*` | Daniel Fekete (and STMicroelectronics) | [MIT](#mit-license) | +| `libraries/VirtIO/*/virtio*`, `libraries/VirtIO/*/VirtIOSerial.*` | Bumsik Kim | [MIT](#mit-license) | +| `cores/arduino/api/Udp.h` | Bjoern Hartmann | [MIT](#mit-license) | +| `cores/arduino/api/deprecated-avr-comp/avr/pgmspace.h` | Arduino LLC (based on Paul Stoffregen's work) | [MIT](#mit-license) | +| `cores/arduino/api` | Arduino LLC | [LGPLv2.1](#lgplv21) | +| `system/Middlewares/OpenAMP/open-amp` | Mentor Graphics Corporation and contributors | [BSD 3-Clause License](#bsd-3-clause-license) | +| `system/Middlewares/OpenAMP/libmetal` | Xilinx Inc. and contributors | [BSD 3-Clause License](#bsd-3-clause-license) | + +The following components are not part of this repository, they are downloaded +as Arduino tools packages (see `platform.txt`) and are licensed by Arm under the +[Apache License](#apache-license): + +* CMSIS (`CMSIS`) +* CMSIS-DSP (`CMSIS_DSP`), also used by `libraries/CMSIS_DSP` +* CMSIS-NN (`CMSIS_NN`) + ------------------------------------------------------------------------------- ## LGPLv2.1 GNU LESSER GENERAL PUBLIC LICENSE