Releases: wntrblm/Castor_and_Pollux
February 10th, 2024
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2024.2.10-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2024.2.10 (release) on 02/11/2024 03:09 UTC with gcc 13.2.1 by [email protected]
- Debug:
2024.2.10 (debug) on 02/11/2024 03:09 UTC with gcc 13.2.1 by [email protected]
Changes from 2023.9.11
Firmware:
- Fixed an issue with fix16 rounding causing pitch glitches
User guide:
- Added errata about ramp table swap
Setting editor:
- Added ability to swap ramp calibration tables
- Fixed restore calibration functionality
Factory testing:
- Fixed ADC channel used for CV calibration
- Removed channel swap for SysEx set frequency command
Meta:
- Updated GitHub Actions for both docs and firmware
- Fixed .clang-format to work with later versions of clang-format
- Fixed formatting
September 11th, 2023
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2023.9.11-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2023.9.11 (release) on 09/11/2023 22:35 UTC with gcc 12.2.1 by [email protected]
- Debug:
2023.9.11 (debug) on 09/11/2023 22:35 UTC with gcc 12.2.1 by [email protected]
Changes from 2023.4.22
Firmware:
- Fixed a bug for C&PI where the pulse width CV was inverted, leading to some unexpected behavior.
Settings editor:
- Added a hidden option to enable monitor mode to help with troubleshooting.
- Updated minimum supported firmware version.
Factory:
- Fixed castor pitch range check in monitor.py
- Updated monitor script to note sweep tests
- Small tweaks to factory setup scripts needed during initial C&PII programming
User guide:
- Fixed small typo
April 22nd, 2023
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2023.4.22-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2023.4.22 (release) on 04/22/2023 16:19 UTC with gcc 12.2.1 by [email protected]
- Debug:
2023.4.22 (debug) on 04/22/2023 16:19 UTC with gcc 12.2.1 by [email protected]
Changes from 2022.07.6
This release coincides with the release of Castor & Pollux II, a major hardware revision. Both Castor & Pollux I and II run the same firmware, so owners of existing I modules have access to all the new firmware features added for II.
This new firmware contains a significant number of changes, with the most notable new features being:
- New LFO PWM mode, which routes the internal LFO to each oscillator's pulse width
- New LFO FM mode, which routes the internal LFO to each oscillator's frequency
- Revised Hard sync mode, which makes it easier to access metallic and glitchy sounds
- Revised pitch behaviors, with Castor's pitch knob able to sweep through the entire oscillator range in quantized steps
- Entirely new manual
Below is the full changelog for those interested.
Factory:
- Update factory scripts to support v2 board and hubble lens
- Calibrate zero volt threshold
- Fix calculation of pitch offset
- Fixup clock calibration script
- Add clock calibration
- Save clock calibration locally
- Update monitor script with new monitor message
Hardware:
- Add copper fills to front and back, swap usb header for solder wire pads
- Added versions strapping pins
- Added vbus power
- Filled out regulator thermal calculations
- Add expander
- Remove unused / old footprints
- Revising part numbers
- Update mainboard pcb files to kicad 7
- Update mainboard schematic files to kicad 7
- Add new hubble lens board guide
- Add freecad backup files to .gitignore
- Rename testkit-adapter to hubble-lens
- Remove unused progboard, panel
- Remove jackboard
- Switch ext header to a 2x5 1.27mm pitch IDC header
- Audit bom, replace some parts with alts
- Switch audio filter caps to 0603
- Normalize component values
- Reannotate schematic
- Fix button footprint
- Add ESD protection for inputs
- Pull power traces onto one layer
- Widen ground vias
- Swap ext connector for a vertical one
- Update stackup settings
- Add usb notch, pcb specifications
- Add interposer board
- Add expander and hubble lens
- Update mechanical design for hubble lens
- Wire an ADC pin to 3v3 for self-calibration
- Change R22-R24 value to 100k, mark as optional
- Update some labels, fix some fields, re-do fancytext
- Remove legacy pro file
- Update 3d model for jst header
- Spruce up some labels
- Add alt usb header
- Update schematic PDF
- Use winterbloom footprints for C, R, and L
- Minor tweaks to power schematic's layout
- Fixup the last few funky symbols
- Fixup schematic fields
- Add rating field to schematic
- Add fancy labels
- Remove old rescue lib from sym-lib-table
- Remove unused 3dmodels
- Remove legacy kicad files
- Ignore kicad_prl files
- Fix sercom pads for dotstar SI
- Note correct waveform outputs for TCC
- Updated jack footprints so they have f.fab markings
User guide:
- Revise entire guide for C&P II
- Add new illustrations
- Add new kit build photos
- Remove old build guide photos
- Add build guide for C&P II
- Fix broken image
- Shrinkify images
- Add version differences section
- Add vale configuration
- Fix a few minor copy issues
- Fix grammar issues
Settings editor:
- Add ability to re-calibrate tuning
- Settings editor now shows the hardware revision and the tuning utility uses the correct cv range for c&pi and c&pii
- Fix lfo waveform 2 shape control
- Small tweaks to settings editor ui
Firmware:
- Implement new pitch behaviors and oscillator modes
- Adjust ADC configuration to bump effective sample rate from 1.5 khz to 5 khz
- Add gem_config_common and organize config under src/config/
- Rename some configuration variables
- Add pin-based hardware revision determination
- Fixup configure script for tests
- When testing, print more detailed message when a f16 assertion fails
- Adjust adc input range for C&PII
- Account for differences in ADC input inversion between hardware revisions
- Configuration fixes for C&PI boards
- Give pulse width a more sensible range, add LFO knob deadzone
- Increase the FM deadzone to avoid FM still being applied even when the knob is fully CCW
- Add led configuration for C&PI
- Fix ADC channel order
- Fix systeminit() and TCC initialization
- Put gem_mcp4728 update into RAM
- Place i2c_write into RAM
- Add led indications for pitch adjustments
- Make animations for each mode distinct
- Pass tweaking state in gem_led_animation
- Add hardware revision to get_serial_number sysex command
- Revise monitor update message
- Improve mode switch animation and idle animation, use lfo value to control sparkle rate
- Refactoring and preparing for modal interface
- Overhaul main.c and implement better tweak overlay controls
- Add enable_zero_detection and enable_quantization settings
- Add oscillator.pitch_behavior for easier inspection of pitch behavior
- Rename gemmonitorupdate.lfo_intensity to lfo_gain
- Remove gem_mode_flag_tweak
- Keep track of the waveform amplitude in wntr_periodic_waveform
- Add osc8m_freq setting
- Pull monitor logic into monitor_task_
- Update libwinter
July 6th, 2022
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2022.07.6-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2022.07.6 (release) on 07/06/2022 04:09 UTC with gcc 10.3.1 by [email protected]
- Debug:
2022.07.6 (debug) on 07/06/2022 04:09 UTC with gcc 10.3.1 by [email protected]
Changes from 2021.09.20
This release fixes a significant bug in the pulse width behavior. If you've noticed that Castor & Pollux's pulse waveform sounds "glitchy" or "steppy" when changing the pulse width, this fixes that! Modulating the pulse width should now be smooooooooooth. If you liked the old behavior, don't fret! You can use the settings editor to switch between smooth and classic. This should also fix the occasional hiccup that can sometimes be heard when change pitch with a sharp envelope.
Meta:
- Update user guide publishing script to match the other modules
- Update license to reflect the license for the panel
User guide:
- Link to assembled and kit product pages
- Fix some grammar issues (#27)
- Tweak some styles for dark mode
- Update to latest theme and winterjs
- Be less strict about the midi port name for the settings editor. fixes #21
- Add pulse width behavior settings
- Fix typos in "cv smoothing" settings description (#23)
Firmware:
- Fix pwm and pitch "stepping" behavior
- Add firmware support for pulse width bitmasking
- Small update to format strings in wntr_midi_core
- Fix bug in teeth where dirty data at the end of the destination buffer would cause invalid sysex messages
Hardware:
- Add basic panel without winterbloom branding
- Add laser designs for Hubble lens' pin holder, board guide, and pressure plate
Factory:
- Don't print report if not all steps are run
- Move ramp calibration to the end
- Change hubble leds during factory setup
- Fancier printing
- Rework all factory scripts to work with Hubble
- Speed up ADC calibration process
- Don't unnecessarily reset hardware between setup steps
- Add factory support for pulse width bitmask
September 20th, 2021
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.09.20-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.09.20 (release) on 09/20/2021 22:39 UTC with gcc 10.3.1 by [email protected]
- Debug:
2021.09.20 (debug) on 09/20/2021 22:39 UTC with gcc 10.3.1 by [email protected]
Changes from 2021.09.18
Firmware:
- Fix unused variable warning when using debug_printf
- Print sysex commands in debug mode
- Change 'set dac' sysex command to set all four channels at once instead of just one at a time
Factory:
- Only output the serial number and firmware version once
- Update to use midi device singletons
- Update factory scripts to use new set dac command
Hardware:
- Prepare testkit adapter for manufacturing
September 18th, 2021
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.09.18-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.09.18 (release) on 09/18/2021 15:30 UTC with gcc 10.3.1 by [email protected]
- Debug:
2021.09.18 (debug) on 09/18/2021 15:29 UTC with gcc 10.3.1 by [email protected]
Changes from 2021.08.31
Firmware:
- Add support for mcp4728 devices with different addresses, since we used the a0 variant for rounds 1 & 2 and the a4 variant for round 3
User guide:
- Re-draw lfo waveshape when loading settings from device
- Fix firmware date check in settings editor.
Hardware:
- Add basic testkit adapter board
Factory:
- Save full adc/afe measurement data
August 31st, 2021
This is a feature & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.08.31-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.08.31 (release) on 08/31/2021 21:26 UTC with gcc 10.3.1 by [email protected]
- Debug:
2021.08.31 (debug) on 08/31/2021 21:26 UTC with gcc 10.3.1 by [email protected]
Changes from 2021.06.10
New features:
- Advanced internal LFO configuration with multiple waveshapes.
User guide:
- Update settings editor for new lfo features
- Add note about no-clean flux
- Fix now-broken github links
- Fix incorrect path in github action
- Fix bad version for mkdocs-include-markdown-plugin in requirements.txt
- Configure github actions to publish docs on each commit to main
- Add interactive imagemap for inputs and outputs; re-work svgmap to be more generic
- Update mkdocs external link plugin
- Make settings editor be more resilient to webmidi quirks around sysex messages.
- Fix display of outdated version info.
Firmware:
- Add advanced lfo support.
- Apply patch to tinyusb to prevent usb enumeration race condition
- Update tinyusb to 2b5bad73, remove unused tinyusb files
Hardware:
- Remove unused project-specific footprint library from the jackboard
- Remove unneeded parts on the jackboard
- Export mainboard pdf in black & white to avoid kicad color issues
- Mark version 4 of the mainboard
- Assign new mpns for mainboard bom
Factory:
- Update gem_settings.py to match current settings
- Remove unused reset_knob_ranges.py script
- Print the build id when the firmware is updated by monitor
- Add --force-update option to monitor
- Bell once done with factory setup
Other:
- Fix link in releasing script
- Update waveshape link to waveshapes (#19)
June 10th, 2021
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
It also includes a new feature - the ability to set the base CV offset (basically, the note at 0V
) in the settings editor.
👉 Most users should download gemini-firmware-2021.06.10-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.06.10 (release) on 06/10/2021 22:20 UTC with gcc 10.2.1 by [email protected]
- Debug:
2021.06.10 (debug) on 06/10/2021 22:20 UTC with gcc 10.2.1 by [email protected]
Changes from 2021.04.21
Firmware:
- Add base cv offset setting
- Apply base cv offset setting to both oscillators
- Add method to upgrade older settings data
- Fix bug in libwinter's sysex handling where not calling
tud_task
would lead to an incorrect sysex timeout - Add struct access for the software calibration fuses, move it into libwinter
- Update firmware to work with latest libwinter
- Remove chunking of sysex commands
- Remove unused constant
User guide:
- Update MSRP to $279
- Add kit build instructions
- Add form controls for base cv offset setting
- Fix audio playback on Safari 14.1+
- Update to new styles, re-layout the settings editor
- Check for new firmware versions when using the settings editor
- Check for firmware versions too old to use with the editor
- Remove chunking of settings sysex commands
- Fix open source hardware link
- Fix teeny typo
Hardware:
- Add CE and WEEE logos to mainboard
- Add files to laser cut a jig for the programming board
Factory scripts:
- Remove chunking of settings sysex commands
- Enable using a gamepad for adjusting ramp calibration
- Guess DAC code using the slope of previous codes during ramp calibration
- Auto-update firmware when using the monitor
Other:
- Correct Tag-Connect product link in contributor guide
April 21st, 2021
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.04.21-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.04.21 (release) on 04/21/2021 18:59 UTC with gcc 10.2.1 by [email protected]
- Debug:
2021.04.21 (debug) on 04/21/2021 18:59 UTC with gcc 10.2.1 by [email protected]
Changes from 2021.04.20
Firmware:
- Use the brown-out detector to ensure a stable operating voltage before running
- Remove unneeded change to NVM configuration from gem_nvm_init, as its done in reset_handler
- Update 48 MHz DFLL fine step to match datasheet recommendations
Hardware:
- Added values & datasheet for pots in schematic (#13)
April 20th, 2021
This is a critical bugfix release for Castor & Pollux's firmware, Gemini ♊️.
NOTE: We have released a newer version with additional safeguards, download here
YOU SHOULD INSTALL THIS VERSION OR NEWER AS SOON AS POSSIBLE. It fixes a bug that can brick your module (more details below).
👉 Most users should download gemini-firmware-2021.04.20-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2
files can be installed using the firmware upgrade instructions in the user's guide. - The
elf
files and are for testing & debugging and can be programmed using an appropriate debug probe. - The
release
builds are built without debugging information. - The
debug
builds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.04.20 (release) on 04/21/2021 03:36 UTC with gcc 10.2.1 by [email protected]
- Debug:
2021.04.20 (debug) on 04/21/2021 03:36 UTC with gcc 10.2.1 by [email protected]
Changes from 2021.03.9
User_guide:
- Add burn-in testing information
- Use winterjs for the settings editor.
Firmware:
- Check bootloader write protection fuses during initialization
- Remove tests for libwinter's midi core and bezier, as they're now in the libwinter repository
User guide:
- Fix typo
- Add warranty information
- Fix broken anchor link (#12)
Factory:
- Small tweaks to the monitor and calibration scripts.
Other:
- Create funding.yml
Detailed explanation of critical bug
Castor & Pollux actually has two separate programs on it: a small bootloader and the firmware (this repository). The bootloader is the Adafruit uf2-samdx1. The bootloader has two roles: make it easy to upgrade the firmware over USB and provide a failsafe in the event of a bad firmware upgrade.
In order to be a proper failsafe, the bootloader's code needs to be protected in case there's a bug in the firmware that could lead to corruption. Castor & Pollux's microcontroller has a feature for this called bootloader protection. It's a persistent setting that prevents any writes to the bootloader's code unless a very specific sequence is used.
We had been working under the assumption that the bootloader would enable this setting automatically and that we wouldn't need to enable it manually. However, we were mistaken; the bootloader only enables this setting in two very specific circumstances that wouldn't usually occur during normal operation. This means that bootloader protection is disabled and it's possible to corrupt the bootloader.
We have observed bootloader corruption on at least three modules. While this corruption won't harm the module's hardware, it will soft brick the module and the only way to repair it is to restore the bootloader using a hardware programmer/debugger.