-
Nightly Development Pre-Release
released this
2026-02-16 23:03:01 +08:00 | 23 commits to development since this releaseThis is a nightly development automatic build.
Downloads
-
Nightly Stable Pre-Release
released this
2026-02-07 21:32:31 +08:00 | 0 commits to master since this releaseThis is a nightly stable automatic build.
Downloads
-
Version 6.4 Stable
released this
2026-02-02 03:35:41 +08:00 | 3 commits to master since this releaseThis release introduces new USB VID/PID official descriptors and bug fixes.
New
- Added RTC set/get support, including RTC association with credentials.
- Added vendor commands via CCID.
- Introduced new USB descriptors allocated to PicoKeys.
- Added Rescue support for RP2040.
Enhancements
- Reorganized project tree and build layout, including ESP32 restructuring.
- Added sanity checks to prevent handling of oversized packets.
- Upgraded to the new firmware/layout structure.
- Migrated and cleaned up RTC handling across the codebase.
- Added weak init callback.
- Added PHY marker for RP2040 to preserve serial number in BOOTSEL.
- Added 8K binding partition for RP2350.
Fixed
- Fixed CCID maximum packet length handling and interface naming.
- Fixed SHA-256 alternative implementation.
- Fixed LED default parameters on Pimoroni boards.
- Fixed incorrect or incomplete interface string handling when not all interfaces are enabled.
Changed
- Updated to new VID:PID assigned to Pico HSM.
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v6.2...v6.4
Downloads
-
Version 6.2 Stable
released this
2026-01-06 06:55:46 +08:00 | 9 commits to master since this releaseThis is a minor release focused on improving compatibility with PicoKey App, along with several important bug fixes and small behavioral changes.
New
- Improved compatibility with PicoKey App, enabling more reliable device detection and interaction.
Enhancements
- Improved overall robustness of applet handling and device enumeration.
- Minor internal adjustments to better align with current host-side tooling expectations.
Bug Fixes
- Fixed an issue where the Pimoroni LED was not behaving correctly.
- Fixed a bug in applet selection that could lead to incorrect or inconsistent applet activation.
- Fixed an issue with the MSOS/BOS USB descriptor that could cause host-side compatibility problems.
Changed
- The press button functionality is now disabled by default to avoid unintended behavior.
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v6.0...v6.2
Downloads
-
Version 6.0 Stable
released this
2025-12-04 03:12:56 +08:00 | 30 commits to master since this releaseThis is a major release that brings support to PicoKey App, adds support to freshly new RP2354 MCU, adds enhancements to rescue interface and bug fixes.
New
- Add reboot bootsel command
- Add read secure boot status
- Add support for reading memory status
- Add support for PHY read
- Add support for RP2354
- Add set of secure functions to derive keys using OTP and pico_serial
- Add pico_serial_hash as 32-byte unique source
- Add OTP chaff to avoid PVC attacks
- Add hash functions feeding from OTP
- Add dummy LED driver for unsupported boards
- Add support for LED driver in PHY
- Add app_exists() to check if an AID is loaded
- Add ESPICOHSMCA00002 to docs
- Add autobuild for RP2350
- Flash size determined dynamically instead of at build time
Enhancements
- Upgrade to mbedtls v3.6.5
- Upgrade tinycbor to 0.6.1
- ESP32 optimization
- NK compatibility improvements
- Add compatibility for non-pico boards
- Upgrade to Pico SDK v2.2.0
Bug Fixes
- Fix on AID selection with shorter AIDs
- Fix key generation for RP2040
- Fix bug in FIDO+OpenPGP+CCID mixed use
- Fix VIDPID PHY read
- Add casts to fix warnings
- Fix Windows build
- Add Windows compatibility
- Add strlcpy when necessary
- Add const to OTP functions
- Migrate keys to another OTP page to mitigate PVC attack
- Fix OTP programming alignment
- Fix uint16 endianness in chained RAPDU
- Fix crash when response buffer is not 16-bit aligned
- Fix interface descriptor when HID is disabled
- Fix phy_data idVendor/idProduct when unset
- Fix conditional builds for non-pico platforms
- Fix HID processing only for CTAP_HID
- Fix version setup for non-pico platforms
- Fix non-pico build (several occurrences)
- Fix descriptor logic when interfaces are disabled
- Remove leftover 64-byte packet-size workaround
- Fix test case with newer OpenSSL
- Fixed MSOS/BOS descriptor
Changed
- Do not use secboot in PHY
- Relicense project under AGPLv3 + add Enterprise/Commercial license
- Remove 64-byte packet multiple tweak (handled by USB stack)
- Merge PR #108 (ESP32 optimization)
- Merge PR #102 (BIP32 operations)
- Update sdkconfig.defaults
What's Changed
- implement bip32 operations in pico-hsm-tool by @eliasnaur in https://github.com/polhenarejos/pico-hsm/pull/102
- ESP32 Optimization by @MageDelfador in https://github.com/polhenarejos/pico-hsm/pull/108
New Contributors
- @eliasnaur made their first contribution in https://github.com/polhenarejos/pico-hsm/pull/102
- @MageDelfador made their first contribution in https://github.com/polhenarejos/pico-hsm/pull/108
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v5.6...v6.0
Downloads
-
Version 5.6 Stable
released this
2025-04-11 02:18:35 +08:00 | 66 commits to master since this releaseThis release includes major improvements for ESP32/ESP32-S3, dynamic USB descriptor generation, improved PHY configuration, and enhancements around EdDSA, emulation, and LED behavior.
New
- USB descriptors are now created dynamically.
- Added support to enable/disable each USB interface independently based on PHY parameters.
- Added PHY option to enable specific curves (managed from the app side).
- Added
get led modecommand. - Added support for slot selection.
- Added Git auto-pull on branch switch.
- Added EDDSA support as a conditional build.
- Added K1 curve for general authentication and emulation mode.
Enhancements
- Restore LED mode after button press.
- Use TLV format for PHY serialization/unserialization.
- Define MCU for emulation builds.
- Always build CCID if defined.
- Sign release builds.
- Only pin to core in ESP32-S3 (multicore optimization).
- Build EDDSA tests and cyw43 driver for RP2350.
- Upgrade TinyUSB for ESP32.
- Upgrade mbedTLS to v3.6.3 and fix git submodules.
- Improve LED support for ESP32 and ESP32-S3.
- Improve LED commissioned values.
Bug Fixes
- Fix
neparameter when using secure messaging protocol. - Return "not found" for 0x85 and 0x86 commands to avoid unintended auth paths (#81, #84).
- Fix ESP32 build and dynamic USB interface issues.
- Fix emulation build compatibility.
- Fix LED driver build for Pimoroni boards.
- Fix autobuild process.
Full Changelog: Compare v5.4...v5.6
Downloads
-
Version 5.4 Stable
released this
2025-02-20 02:20:27 +08:00 | 119 commits to master since this releaseThis release brings some enhancements and bugfixes.
New
- Added an option to keep LED steady.
- Added support for ESP32-S2.
- Added fastest clock (200 MHz) for RP2040.
- Added support for the following boards: sparkfun_iotnode_lorawan_rp2350, waveshare_pico_cam_a, waveshare_rp2040_ble, waveshare_rp2040_eth, waveshare_rp2040_geek, waveshare_rp2040_matrix, waveshare_rp2040_pizero, waveshare_rp2040_power_management_hat_b, waveshare_rp2040_tiny, waveshare_rp2040_touch_lcd_1.28, waveshare_rp2350_eth, waveshare_rp2350_geek, waveshare_rp2350_lcd_0.96, waveshare_rp2350_lcd_1.28, waveshare_rp2350_one, waveshare_rp2350_plus_4mb, waveshare_rp2350_plus_16mb, waveshare_rp2350_tiny, waveshare_rp2350_touch_lcd_1.28, waveshare_rp2350_zero
Enhancements
- Led blink limits.
- Led driver is taken on build.
- Upgrade to Pico SDK 2.1.1.
Bug Fixes
- Fix multiple CCID displayed interfaces in older PCSC versions and Linux.
- Fix USB keyboard descriptor in Windows.
- Fix potential stack overflow on serializing PHY.
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v5.2...v5.4
Downloads
-
Version 5.2 Stable
released this
2025-01-15 19:17:29 +08:00 | 129 commits to master since this releaseThis is maintenance release.
New
- Added support for rollback versions in boards with RP2350 MCU.
- Added support for SET_DATA_RET_AND_CLOCK CCID command.
- Added support for variable timeout push button press.
- Added support for variable USB product name.
- Added flash memory statistics.
- Added reboot command.
- Added support for displaying flash memory statistics via pico-hsm-tool.
Enhancements
- Increased ESP32 stack size.
- Added support for TinyUSB 0.17 in ESP32 boards.
- Packed structures for less footprint.
- Set ESP32 stack size depending on the number of enabled interfaces.
- Update CCID descriptor to reflect the max USB packet size.
- Reduce data partition to 2K starting at the half of the flash.
- Compute flash memory bounds depending on the partition if available.
- Use customizable LED PIO number in WS2812, Pico and Cyw43 leds.
- Accept MKEK mask only if secure lock is enabled.
- Only allow initialize if secure lock is disabled or has MKEK mask.
Bug fixes
- Fix build for Pico SDK 2.1.0.
- Fix disable secure authentication via pico-hsm-tool.
- Fix stack overflow when unlocking the device.
- DEV options are persistent, since they affect MKEK which is in turn persistent.
- Fix MKEK masking order.
- Fix TX/RX buffers to align them with USB buffers and avoid overflows.
- Fix MKEK storing on devices with OTP_1 available (ESP32 and RP2350).
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v5.0...v5.2
Downloads
-
Version 5.0 Stable
released this
2024-11-13 02:26:06 +08:00 | 163 commits to master since this releaseThis is a major release that brings multiple improvements. Support for OTP for RP2350 and ESP32-S3 MCUs is added, which is used to store the MKEK for further security. It also enables Secure Boot and Secure Lock optionally. It also brings the new Pico Commissioner to initialize and configure the Pico HSM without external tools, just directly through the browser.
New
- Add command to enable secure boot and secure lock via rescue.
- Add function to enable secure boot and secure lock.
- Add macro to make checks.
- Add product and mcu to info in rescue mode.
- Add DEV key to OTP.
- Add rescue app to communicate via webUSB.
- Add OTP read raw.
- Add flags to enable secure boot and secure boot lock via firmware on boot.
- Add parse phy byte string.
- Add new led module to use colors whenever possible.
- Add support for led dimming and max brightness.
- Add support for LED management.
- Add optional bootkey index param for secure_boot.
- Add support for OTP raw read/write.
- Add secure_boot enable.
- Add SHA256_ALT to use SHA256 hardware in RP2350 (other boards use mbedtls).
- Add nightly builds workflow.
- Add parse and set binary version.
- Add signature and copy_to_ram if supported.
- Add OTP extra command to read/write OTP without bootmode.
- Add OTP command to Pico HSM Tool.
Enhancements
- Refactor PHY to support more flexible and scalable architecture.
- Upgrade MbedTLS 3.6.2.
- Use non-guarded OTP reads to avoid bus faults.
- Use the correct shifting value in LED mode.
- Use sha256 hardware if available.
- Use internal TRNG of Pico.
- Specify led driver for each board.
- Fix USB descriptor in case only HID is enabled.
- Update Dockerfile with latest versions.
- Upgrade codeaction to v3.
- Autobuild ESP32.
- Upgrade upload-artifact.
Changes
- Rename CCID_ codes to PICOKEY_.
- Do not request dev cert when performing tests.
- Do not use pico patcher script anymore.
- Merge pull request #5 from benallard/led.
- Merge branch 'development'.
- Update README.
- Increase number of hosted apps to 8.
- Added ESP32 OTP support.
- Use macros in extras.
- Fix sc-hsm test.
- Use BOOTKEY instead of reading json.
Bugfixes
- Fix secure otp build for non RP2350.
- Fix PHY missing headers.
- Fix ESP32 build with WCID.
- Fix version header.
- Fix float casting, otherwise it is always 0.
- Fix HID report descriptors.
- Fix usb initialization for emulation.
- Fix PHY for LED neopixel.
- Fix indent getting version.
- Fix ESP32 GPIO led number.
- Fix BOOT press with RP2350.
- Fix OTP write length check.
- Fix OTP data check size.
- Fix emulation alignment.
- Fix header in Linux. Fixes #63.
- Fix build for WS2812 boards.
- Fix build for boards with WS2812.
- Fix nightly build for master branch.
- Fix length and headers.
- Fix LED blink when ON/OFF.
- Fix maxPower and dwProtocols (recover T=0).
- Fix version header.
- Fix USB descriptor in case only HID is enabled.
- Fix initialization and terminal certificate generation.
- Fix artifacts version.
- Fix sc-hsm test.
What's Changed
- Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows by @dependabot in https://github.com/polhenarejos/pico-hsm/pull/52
New Contributors
- @dependabot made their first contribution in https://github.com/polhenarejos/pico-hsm/pull/52
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v4.2...v5.0
Downloads
-
Version 4.2 Stable
released this
2024-09-02 18:05:04 +08:00 | 231 commits to master since this releaseThis is a release which solves some bugs and adds enhancements.
New
- Add support to RP2350 MCU.
- Add support to multiple boards with RP2350.
Enhancements
- Add EF.DIR list AID.
- Emulation uses pthread thread synchronization for a reliable integration.
- CCID interface is better thread synchronized.
- Upgrade to Pico SDK 2.0.
Changes
- Rewritten CCID interface to minimize the number of memcpy's. Now, it uses a single internal buffer, which speeds notably the overall performance.
- RP2350 boards use partitions to prevent data space be overwritten by firmware.
- Emulation does not use crt_dbrg since it is not reliable.
- Increased VENDOR_TX buffer.
Bugfixes
- Fix Windows compatibility.
- Fix EF.DIR selection.
- Fix READ BINARY permission.
- Fix potential infinite loop when bad ASN1 is processed.
- Fix idVendor, idProduct allocation for Pico Patcher.
- Fix memory boundary check.
- Fix non-freed context.
- Fix AES key generation with
pico-hsm-tool. - Fix TinyUSB vendor interface numbering.
- Fix thread cancellation in ESP32.
- Fix CCID writes if they are multiple of 64 bytes.
Full Changelog: https://github.com/polhenarejos/pico-hsm/compare/v4.0...v4.2
Downloads