# UNO R4 WiFi firmware: LGPL relink packages and corresponding source

## Notice: the served UNO R4 firmware uses the LGPL-licensed Arduino core library

Every `arduino-unor4wifi-*.bin` image served beside this folder is statically
linked with ArduinoCore-renesas 1.6.0, in Breadboard's port of its UNO R4 WiFi
variant to Renesas FSP 5.3.0 (BSD-3-Clause; adopted 2026-10-01, replacing the
core's FSP 4.0.0). Parts of that core are licensed under the
**GNU Lesser General Public License, version 2.1 or (at your option) any later
version** ("the Library"). Breadboard distributes these images under terms that
permit you to modify the work for your own use and to reverse engineer it for
debugging such modifications. Each package below contains the LGPL text, the
prominent notice, every other applicable licence, and everything needed to
relink its image with a modified Library.

## Relink packages (one per served image)

| Served image | Package | Bytes | SHA-256 |
|---|---|---:|---|
| [`arduino-unor4wifi-blink.bin`](../arduino-unor4wifi-blink.bin) | [`arduino-unor4wifi-blink-relink.zip`](arduino-unor4wifi-blink-relink.zip) | 352586 | `44fc5d8bd1c1905ab5e0ff0269c155975bc7a96b20aba9772dec248606dd1cf1` |
| [`arduino-unor4wifi-matrix-heart.bin`](../arduino-unor4wifi-matrix-heart.bin) | [`arduino-unor4wifi-matrix-heart-relink.zip`](arduino-unor4wifi-matrix-heart-relink.zip) | 354562 | `40f83d353f2943758a3ba8342f451fedcee6db1f562fd4ea922b03361802f225` |
| [`arduino-unor4wifi-matrix-scroll.bin`](../arduino-unor4wifi-matrix-scroll.bin) | [`arduino-unor4wifi-matrix-scroll-relink.zip`](arduino-unor4wifi-matrix-scroll-relink.zip) | 380666 | `d65f1a3136424bc76772ef38b436b37fbd4fee16afeae3408b187ebdf05ce6b8` |
| [`arduino-unor4wifi-sd-spi.bin`](../arduino-unor4wifi-sd-spi.bin) | [`arduino-unor4wifi-sd-spi-relink.zip`](arduino-unor4wifi-sd-spi-relink.zip) | 447272 | `182e27e19780e92ea9f3d8d45f5c02b2e878b4c76e5a718c60d8bbb2dfa78af9` |
| [`arduino-unor4wifi-serial1.bin`](../arduino-unor4wifi-serial1.bin) | [`arduino-unor4wifi-serial1-relink.zip`](arduino-unor4wifi-serial1-relink.zip) | 353236 | `ff6014c3eed36bac49c26ce7b9647440d8e8c137977420d72ff1ce9f35f5fa19` |
| [`arduino-unor4wifi-irq-tone.bin`](../arduino-unor4wifi-irq-tone.bin) | [`arduino-unor4wifi-irq-tone-relink.zip`](arduino-unor4wifi-irq-tone-relink.zip) | 353381 | `22d0c47e154f38e7ccdbe43a5007854e29fdb8a1dff09548845d5aa322e5281f` |
| [`arduino-unor4wifi-i2c-oled.bin`](../arduino-unor4wifi-i2c-oled.bin) | [`arduino-unor4wifi-i2c-oled-relink.zip`](arduino-unor4wifi-i2c-oled-relink.zip) | 360707 | `4e76cc96a257974e8e2d1d849141adcd06e10759e356ffc0caaf9b3545b313bf` |
| [`arduino-unor4wifi-wifi-scan.bin`](../arduino-unor4wifi-wifi-scan.bin) | [`arduino-unor4wifi-wifi-scan-relink.zip`](arduino-unor4wifi-wifi-scan-relink.zip) | 393855 | `2625eed1eeed4780d23afbc86b65e53699200aa669e2eab06745aaf12baa7b92` |
| [`arduino-unor4wifi-blink-gallery.bin`](../arduino-unor4wifi-blink-gallery.bin) | [`arduino-unor4wifi-blink-gallery-relink.zip`](arduino-unor4wifi-blink-gallery-relink.zip) | 353113 | `3f5774694d4c7fe12365e85448d61e1bcf4db701733315a3ef200401d60c7613` |
| [`arduino-unor4wifi-analog-wave.bin`](../arduino-unor4wifi-analog-wave.bin) | [`arduino-unor4wifi-analog-wave-relink.zip`](arduino-unor4wifi-analog-wave-relink.zip) | 353522 | `97898efad3068c8bb428149d3a2bc420df41ad00fbef1bccd59ab72f4f7ee6e8` |
| [`arduino-unor4wifi-wifi-ap-server.bin`](../arduino-unor4wifi-wifi-ap-server.bin) | [`arduino-unor4wifi-wifi-ap-server-relink.zip`](arduino-unor4wifi-wifi-ap-server-relink.zip) | 396554 | `0caf5af1f705f1d53a3c231fda47eb5fdcde7e49fbee3e321102adefb9cf88e3` |
| [`arduino-unor4wifi-wifi-ap-client.bin`](../arduino-unor4wifi-wifi-ap-client.bin) | [`arduino-unor4wifi-wifi-ap-client-relink.zip`](arduino-unor4wifi-wifi-ap-client-relink.zip) | 393915 | `bd251b4504a099a572d478898f014d2289cf633d9dfe841ed98500fc3a447161` |
| [`arduino-unor4wifi-usb-keyboard-mouse.bin`](../arduino-unor4wifi-usb-keyboard-mouse.bin) | [`arduino-unor4wifi-usb-keyboard-mouse-relink.zip`](arduino-unor4wifi-usb-keyboard-mouse-relink.zip) | 458466 | `31d7ecf09aef62f6625299f8346dc8f08618dadd67d4a47a853a14a936f23ca8` |
| [`arduino-unor4wifi-http-gallery.bin`](../arduino-unor4wifi-http-gallery.bin) | [`arduino-unor4wifi-http-gallery-relink.zip`](arduino-unor4wifi-http-gallery-relink.zip) | 394606 | `858a6055aea52ebf08b698a2653df630bff978ca070882ab68906f8042f384fa` |

Each package holds the stripped link inputs, `relink.sh` (the exact recorded
link and `objcopy` commands), the compile line of every translation unit,
tool/core versions and hashes, the sketch source and all notices. With GNU Arm
Embedded 7-2017-q4-major and the macOS archive's target libraries (each
package README explains why), `ARM_GCC_BIN=…/bin sh relink.sh` reproduces the
served image byte for byte; Breadboard's CI checks this on Linux for every
package.

## Corresponding source (same place as the firmware)

| File | Bytes | SHA-256 | Generated from |
|---|---:|---|---|
| [`ArduinoCore-renesas-1.6.0-fsp53-source.zip`](ArduinoCore-renesas-1.6.0-fsp53-source.zip) | 3845851 | `da3235e93f960b82cbee2a959963e702b989a028e955de5ae17d541bf4fa91b2` | http://downloads.arduino.cc/cores/staging/ArduinoCore-renesas_uno-1.6.0.tar.bz2 (SHA-256 `71aa5d81f9455dbc2e8977b594963494e41466a8ed439a841b9d029b4aa31c8b`) |
| [`Keyboard-1.0.7-Mouse-1.0.1-source.zip`](Keyboard-1.0.7-Mouse-1.0.1-source.zip) | 60251 | `5aee80d46f7f1791e4f3ad6603b24995b8b75af39a42ba39d4ebda10193c06f8` | https://downloads.arduino.cc/libraries/github.com/arduino-libraries/Keyboard-1.0.7.zip (SHA-256 `66a599d1469e1f27def13521ca8b67edd71e7039c94773c28c60143ba3ae0f64`); https://downloads.arduino.cc/libraries/github.com/arduino-libraries/Mouse-1.0.1.zip (SHA-256 `feb363a5431d06535612403344740330988452bdca41609d8f19d4811f25d976`) |
| [`ArduinoGraphics-1.1.5.zip`](ArduinoGraphics-1.1.5.zip) | 55891 | `23ba86a75b898ed59221459fccce84ddc3d031cbe8b5b81c15b8e43fc1f4c8fa` | https://downloads.arduino.cc/libraries/github.com/arduino-libraries/ArduinoGraphics-1.1.5.zip (SHA-256 `23ba86a75b898ed59221459fccce84ddc3d031cbe8b5b81c15b8e43fc1f4c8fa`) |
| [`SdFat-2.3.0-source.zip`](SdFat-2.3.0-source.zip) | 286520 | `5a8c5a8947942846bd72b8d5a0faf667f3a29c631a82c4795c5b4e273e2a961c` | https://downloads.arduino.cc/libraries/github.com/greiman/SdFat-2.3.0.zip (SHA-256 `44337637960a3fe3d02377fae13d2f5a288197515361ac7f31c9f3d1f3bd579d`) |

The Keyboard/Mouse bundle contains the unchanged vendored source files,
examples and library metadata, plus their per-file licence manifest and notices.
It omits upstream `README.adoc` and `keywords.txt` and the fixture's
`.gitattributes`; every compiled source and included header is present.
The HID image's package also
contains the corrected MIT USB driver, variant mux and HID source files;
overlay these `core-changes/` onto the core source bundle before compiling.

The ArduinoGraphics archive is the unchanged official release (MPL-2.0, used by
`matrix-scroll`). The SdFat bundle contains unchanged upstream files. The core
bundle is the official core archive with the UNO R4 WiFi variant staged for
FSP 5.3.0; it holds every file the package compile lines read, including the
BSD-3-Clause FSP headers. Each bundle's `BREADBOARD-SOURCE-BUNDLE.md` lists
every changed and omitted file, with hashes and reasons.

## Licence texts

The texts every package carries are also served here, in [`LICENSES/`](LICENSES/):
[LGPL-2.1](LICENSES/LGPL-2.1.txt), [LGPL-3.0](LICENSES/LGPL-3.0.txt) and [GPL-3.0](LICENSES/GPL-3.0.txt) (Keyboard layouts), [ArduinoCore-renesas MIT](LICENSES/ArduinoCore-renesas-MIT.txt),
[CmBacktrace MIT](LICENSES/cm_backtrace-MIT.txt), [Apache-2.0](LICENSES/Apache-2.0.txt) (CMSIS),
[Renesas FSP 5.3.0 licence](LICENSES/Renesas-FSP-5.3.0-LICENSE.md) (renesas/fsp `LICENSE.md`; the
images use only its BSD-3-Clause components), [GNU Arm Embedded 7-2017q4 notices](LICENSES/GNU-Arm-Embedded-Toolchain-7-2017q4.txt)
(GPL-3.0 with the GCC Runtime Library Exception 3.1, newlib), [SdFat MIT](LICENSES/SdFat-MIT.txt) and
[ArduinoGraphics MPL-2.0](LICENSES/ArduinoGraphics-MPL-2.0.txt). Each package's
`LICENSES/SOURCE-NOTICES.txt` reproduces every notice found in its compiled sources.

`manifest.json` records the same identities in machine-readable form.
