Skip to content

Releases: earlephilhower/arduino-pico

Release 5.2.1 - Hot Fix for 5.2.0

25 Sep 09:29
Compare
Choose a tag to compare

Overview

Hot Fix for 5.2.0 which had an issue with noInterrupts/interrupts.

Medium-sized update which adds the capability of adding and removing USB devices on-the-fly. Sketches with only Keyboard or Mouse and no Serial are now possible. Also allows forcing the USB product ID from within a sketch, removing the need to set defines or create one-off variants.

NOTE: With this change, devices don't register on the USB port until you ::begin them. Make sure you call Keyboard.begin(), etc. as appropriate in your setup if you're not doing so already.

Lots of very pedantic warnings cleared up, minor SerialPIO/SoftwareSerial bugfix, and unidirectional SPI support rolled in.

USB

  • Move statics into SerialUSB object (#3150)
  • Support dynamic USB reconfiguration (#3139)

Memory Savings

  • Only allocate MFIFO queue in multicore, 32B saved (#3149)
  • Bitmask for IRQ stack, save ~112B RAM (#3148)
  • Restore missing irqStackTop decrement (#3153)

SerialPIO/SoftwareSerial/SPI/PWMAudio

  • Fix SerialPIO::available during wraparound (#3143)
  • Allow SPI to disable RX or TX pins (#3141)
  • Fix PWMAudio speed when over/underclocking (#3135)

Libraries

  • Update Adafruit TinyUSB to 3.7.2 (#3147)

New Boards

  • Add Soldered NULA RP2350 board (#3138)
  • Fix SERIAL_HOWMANY for Waveshare boards (#3151)

Extra-pedantic Warnings

  • Remove unneeded includes SerialPIO (#3130)
  • Run CI with add'l warning -Wdouble-promotion (#3128)
  • Remove unneeded includes from SerialUART (#3129)
  • Double promotion warning fix. (#3127)
  • Fix double promotion warnings. (#3126)

Release 5.2.0 - Dynamic add/remove USB, cleanups

23 Sep 23:47
Compare
Choose a tag to compare

Overview

Medium-sized update which adds the capability of adding and removing USB devices on-the-fly. Sketches with only Keyboard or Mouse and no Serial are now possible. Also allows forcing the USB product ID from within a sketch, removing the need to set defines or create one-off variants.

NOTE: With this change, devices don't register on the USB port until you ::begin them. Make sure you call Keyboard.begin(), etc. as appropriate in your setup if you're not doing so already.

Lots of very pedantic warnings cleared up, minor SerialPIO/SoftwareSerial bugfix, and unidirectional SPI support rolled in.

USB

  • Move statics into SerialUSB object (#3150)
  • Support dynamic USB reconfiguration (#3139)

Memory Savings

  • Only allocate MFIFO queue in multicore, 32B saved (#3149)
  • Bitmask for IRQ stack, save ~112B RAM (#3148)

SerialPIO/SoftwareSerial/SPI/PWMAudio

  • Fix SerialPIO::available during wraparound (#3143)
  • Allow SPI to disable RX or TX pins (#3141)
  • Fix PWMAudio speed when over/underclocking (#3135)

Libraries

  • Update Adafruit TinyUSB to 3.7.2 (#3147)

New Boards

  • Add Soldered NULA RP2350 board (#3138)

Extra-pedantic Warnings

  • Remove unneeded includes SerialPIO (#3130)
  • Run CI with add'l warning -Wdouble-promotion (#3128)
  • Remove unneeded includes from SerialUART (#3129)
  • Double promotion warning fix. (#3127)
  • Fix double promotion warnings. (#3126)

Release 5.1.0 - USB, I2S bidir, PSRAM overclocking, and FreeRTOS memory savings

10 Sep 19:30
Compare
Choose a tag to compare

Overview

Big update for FreeRTOS users who don't need LWIP, because it now should not link in LWIP code or allocate LWIP memory unless your code actually does do LWIP calls. RP2350 PSRAM timing code has been updated to work better with overclocked devices (useful for the Adafruit libraries). Bidirectional I2S (INPUT_PULLUP) now outputs on the proper edge fixing setup/hold timing issues.

FreeRTOS

  • Only start LWIP thread on FreeRTOS if needed (#3121)

I2S

  • Missing I2S.setDIN/setDOUT keyword hilighting (#3119)
  • Rewrite I2S bidirectional support (#3117)

USB

  • Build USB descriptor from data structures, not code (#3107)

Infrastructure

  • Replace PSRAM setup w/MicroPython's for overclock (#3102)
  • Build RP2350-ARM with -O3 (#3124)
  • Fix warning for FatFS lfn size (#3122)

New Boards

  • Add RP2350 PiZero (#3110)

Release 5.0.0 - FreeRTOS + WiFi support and audio available/write fixes

25 Aug 18:49
Compare
Choose a tag to compare

Overview

This release allows multiple FreeRTOS tasks to perform WiFi/Ethernet ops in parallel. It moves FreeRTOS from a library to the core itself, and adds a single LWIP task which handles all wrapped LWIP calls. This means core 0 and core 1 and multiple tasks can use WiFiClient/WiFiServers.

To use FreeRTOS you noiw need to use a new menu item or a new define in platform.ini, as documented in the RTD. Bluetooth is also supported

For bare-metal, this is a moderate release focusing on bug fixes in the audio libraries. Now available/availableForWrite/write/read should always return the number of bytes, not 32-bit frames. Previously sometimes you got bytes, sometimes you got 32b frames, depending on the device and call. Apps which worked around this will need to undo those workarounds.

USB VID:PID will now always change depending on the peripherals exposed. Before it would sometimes change or not because it would set an individual bit in the PID per device. If that bit was already a 1 then there would be no VID change. Now, the USB PID will have be XOR'd, ensuring it changes. For Windows this may require some Zadig work, but Linux and Mac should not see an end user difference.

Bare metal (no OS) is still the default and fully supported.

FreeRTOS + WiFi/BT

  • BREAKING: FreeRTOS as a define, allow full multithread/core TCP/IP (#3063)
  • Make LWIP task priority configurable, document (#3100)
  • Make LWIP debug also collect stats (#3099)
  • Only make an EtherPoll task if we need to poll (#3098)
  • Support Bluetooth under FreeRTOS (#3095)
  • Move cyw43_driver override to SDKOverrides (#3093)
  • Clean up unused FreeRTOS arch init code/vars (#3092)
  • Clean up LWIP header, fix missing listen_backlog

USB PID:VID Update

  • BREAKING: USB PID will vary depending on devices (#3091)

Audio I/O read/written/available bytes fixes

  • BREAKING: PWMAudio availableForWrite report bytes (#3090)
  • Fix I2S::read/write(buffer, cnt) to return bytes (#3086)

Libraries and Examples

  • Update to SdFat 2.3.1 (#3077)
  • Rescan if first scan fails in HIDMaster examples (#3089)

New Boards

  • Added GeeekPi RP2040 Plus (#3085)

Release 4.7.1 - SDK 2.2.0 build hotfix for LWIP

11 Aug 17:16
Compare
Choose a tag to compare

Overview

Hotfix for a missing interrupt disable call in the LWIP headers, leading to possible race conditions.

Networking

  • Fix LWIP defines, remove dup'd includes (#3065)

Boards

  • Support the Pimoroni Explorer board. (#3067)

Peripherals

  • Handle SPISlave with no output data ever written (#3069)
  • Clean up ignored-qualifier warnings in ABM (#3071)

Release 4.7.0 - SDK 2.2.0, slimmed down LWIP, cleaned up Platform.IO builds

07 Aug 20:52
Compare
Choose a tag to compare

Overview

Update to the latest Pico-SDK 2.2.0 release and clean up and rationalizes the Platform.IO infrastructure.

SDK 2.2.0 "kitchen sink" update

  • Update to Pico-SDK 2.2.0 release, remove multi-lib LWIP, clean up CMake, clean up P.IO build hardcoded defines (#3049)
  • Add LIB_PICO_MULTICORE to libpico build
    Fixes #3058 and behavior of async_context in multicore apps
  • Update and clean up the libpico CMakefile and common platform_def.txt. Use platform_def files for p.io builds
    Use a common text file that GCC and P.IO can parse to set defines for the build, ensuring Arduino and P.IO stay in sync.
  • Link to config include files, don't copy, where possible to keep things sane.
  • Re-enable BOOT2.S compiles in libpico (no change to .S outputs)

Libraries

  • Update LittleFS to latest release 2.11.1
  • Build LWIP at app compile time, no need for multi
    We needed about 6 copies of the LWIP/BT library for each CPU when the LWIP library was built as part of the SDK libpico.
    Remove LWIP from the SDK builds and replace it with the actual LWIP source (linked via #include) so we can adjust for IPv4/IPv6/32K/16K at runtime. Shrinks download and install size of a release significantly. Still needs separate LWIP-BT library because the CYW43 driver is different when BT is enabled.

Networking

  • HTTPClient allow "Transfer-Encoding: identity"
  • Update Mozilla CCADB URL in CertStore example
  • Update TZ.h from ESP8266 repo

Boards

  • Update I2S for Fruit Jam (#3056)
  • Update Adafruit Fruit Jam pin names (#3053)
  • Fix olimex XL/XXL RP2350A redefinition

Release 4.6.1 - HTTPClient and minor updates

24 Jul 17:44
Compare
Choose a tag to compare

Overview

Fixes issues with the HTTPClient under transfer-encoding: chunked connections.

Libraries

  • Rewrite HTTPClient chunked transfer-encoding (#3034)
  • Update to Adafruit TinyUSB 3.7.1 (#3047)
  • Make default SerialBT FIFO 1K (#3032)
  • Fix PWMAudio crash when no CB installed (#3012)
  • Remove duplicated code from SPISlave (#3007)

Boards

  • Add Waveshare RP2350 Zero (#3035)
  • Add DVI pin mapping to Pimoroni Pico Plus 2W (#3027)
  • Add DVI pin mapping to Pimoroni Pico Plus 2 (#3026)
  • Remove incorrect definition on BTT SKR Pico (#3020)
  • Remove dead Waveshare RR2040 Plus 16/4M JSON files (#3017)
  • Refactor Waveshare RP2040 Plus with flash size menu (#3016)

Release 4.6.0 - GCC 14.3, Newlib 4.5, updated SDK, new boards

20 Jun 01:44
Compare
Choose a tag to compare

Overview

Upgrade to the latest GCC 14.3 compiler and Newlib 4.5. Latest pico-sdk develop branch with important Pico2 floating point function fixes.

If using git be sure to git update --init --recursive and to tools/get.py to get the new SDK-needed libraries and the toolchain.

Toolchain, SDK, and libraries

  • Update to GCC 14.3, Newlib 4.5.0 (#2975)

New and updated boards

  • Add BigTreeTech SKR-Pico (#2988)
  • Add Waveshare RP2350 Plus (#3000)
  • Add Waveshare RP2350 LCD 0.96 (#2997)
  • Add support for W6300-EVB-Pico and W6300-EVB-Pico2 boards (#2999)
  • Add SDIO PIN definitions for Adafruit Metro RP2040 (#2989)

Platform.IO

  • Fix JLink device names for RP2350 in PIO boards (#3001)
  • Cleanly install PlatformIO platform from scratch (#2982)
  • Mark all boards as picosdk compatible in PlatformIO board definition (#2980)

Networking, Bluetooth, and misc.

  • Clear any existing IP before sending a DHCP request (#2979)
  • Send DHCP request on ::begin even if lease exists (#2977)
  • Fix BSTstackLib service UUID reporting to client (#2968)
  • Verify ADCInput buffer sizes legal for 3 and 4 inputs (#2996)

Release 4.5.4 - Important ADCInput fix, misc other updates

22 May 15:25
Compare
Choose a tag to compare

Overview

Minor update with an important ADCInput fix, IDE OTA interface chagnes, and general infrastructure updates.

ADC

  • Fix ADCInput masking (#2937)

OTA

  • Make Arduino IDE ask for OTA password (#2938)

Infrastructure

  • Added 'TwoWire::setBufferSize()' to Wire library (#2962)
  • Add PSRAM option for Adafruit Metro RP2350 (#2961)
  • Panic on stack protector crash instead of exit (#2955)
  • Fixed generic PIN_LED and SPI0 Pin assignment on WIZnet W55RP20-EVB-Pico. (#2956)
  • Add PICO_RP2350 target platform definition to compile (#2939)

Release 4.5.3 - SoftwareSerial and SPI fixes

02 May 16:04
Compare
Choose a tag to compare

Overview

Important update if you're a SoftwareSerial or SerialPIO user for much improved reception performance. Otherwise, just minor bug fixes

SoftwareSerial/SerialPIO

  • Optimize parity calculations in SerialPIO (#2932) (#2933)
  • Rewrite SerialPIO receive path, ensure proper edge (#2929)

Peripherals

  • Fix RP2350B SPI RX pin list (#2931)
  • Fix rp2040.getCycleCount() from core1 (#2915)
  • Add pin definitions for I2C1 on Cytron IRIV (#2916)
  • Generate PWMAudio pacer frequencies for 176/276MHz (#2913)

Miscellaneous

  • Add PIO.h header verification to CI (#2911)
  • Update LittleFS and Adafruit USB libraries (#2919)