The main driver for v2 was getting the Whistling Birds ready for preassembled kit production. Since the original release, I have been collecting feedback from DIY builders and making small iterative improvements. That feedback helped, but preparing kits for customers who are much less likely to want to open the unit back up and troubleshoot it forced a deeper review of the design, fit, finish, and manufacturability.
v2 is the result of that review. On the hardware side, the focus was a cleaner gearbox, better fit and finish, lower friction, stronger snap-fit behavior, and geometry that prints more consistently. On the software side, the focus was improved usability and personalization so the module feels easier to operate and easier to tailor to the owner.
Looking for the build docs? The full build guide, assembly instructions, operations guide, and support docs are available here: Whistling Birds Guide Landing Page.
Model changes
The biggest physical change in v2 is the gearbox and front-module system. The entire assembly was reviewed from the perspective of repeatable production, cleaner installation, and long-term reliability. The goal was not to change what the prop is supposed to do, but to rebuild the parts that were creating friction during printing, fitting, assembly, and service.
Nearly every printed part was touched. The only parts that were left unchanged are the inner and middle LED housings/covers (the magnet-bearing pieces) and the short push arms. Everything else was rebuilt from the ground up around better geometry, better fit, and more reliable assembly behavior.
Better fit, finish, and print quality across the gearbox
A large part of the v2 effort was improving how the gearbox prints and how the finished parts come together. The geometry was rebuilt to reduce ugly edge conditions, improve how surfaces resolve in print, and produce cleaner-fitting parts with less post-print cleanup. That matters for DIY builders, but it matters even more when building finished kits that need to look and feel production-ready out of the box.
Power button moved to the side
The power button is now on the side of the unit instead of the top face. That makes it easier to press intentionally, less likely to get bumped during handling, and easier to access once the module is installed in a gauntlet.
Case covers and snap closures
The surrounding covers were rebuilt with the housing update. The wire cover, MCU cover, and battery cover were all adjusted so the parts seat more cleanly, close with less fiddling, and hold with a more reliable snap fit. This is the kind of change that looks minor in a diff, but it matters immediately when assembling units repeatedly or opening them for service.
Lower friction geartrain and easier front-module attachment
The moving parts also got cleanup. One of the bigger mechanical issues in v1 was servo drag against the drive axle, so v2 reworks the geometry to reduce friction and smooth out the motion path. At the same time, the outer LED row attachment was redesigned along with the long push arm to make front-module assembly much faster. The inner and middle rows still connect with magnets as usual. The outer row now hooks onto the redesigned push arm with one finger, then snaps into place by pushing it forward and down. To remove it, arm the unit and pull the outer LED row back toward the gearbox to unhook it.
Nozzle mount and retaining clip were reworked for installation
The mounting interface inside the gauntlet also got a major cleanup. The nozzle mount and rear retaining clip now make the module easier to position, easier to remove, and easier to reinstall without fighting the older clip-based front connection. This was a major part of making the system more practical both for repeatable kit assembly and for owners who may still need occasional service access.
Firmware changes
The firmware changes in v2 are focused on usability and personalization. The goal was to make the prop easier to operate, easier to configure, and easier to tailor to the owner without losing the feel of the original behavior. This release also updates the default gear timing values because the revised model changes the effective size relationship between the servo gear and the drive gear.
Servo timing defaults were updated for the revised gears
The v2 software adjusts the default _SERVO_ANGLES values to match the revised servo-gear and drive-gear geometry in the updated hardware. If you are building the new printed parts, use the new firmware defaults as-is.
| Position | v1 default | v2 default |
|---|---|---|
| 0 — retracted | 0° | 0° |
| 1 — row 1 | 50° | 70° |
| 2 — row 2 | 100° | 120° |
| 3 — row 3 | 150° | 180° |
If you want the new firmware features without upgrading the hardware, back up your current _SERVO_ANGLES before updating. After the new files are copied over, restore those values into the new config.py so your existing mechanism keeps its known-good travel.
Config menu changed from double-tap to long hold
The config menu now opens with a long magnet hold while disarmed instead of the older double-tap gesture. That makes menu entry more deliberate and cuts down on accidental triggers from movement during normal handling.
Battery status is the default menu entry
The first thing shown when the config menu opens is now the battery view. That gives quick access to the current charge state without making you step through other items first, which is more useful in real operation than landing on a generic entry state.
Firing mode became a first-class setting
Firing behavior is now configured through two independent settings in the config menu: Firing Mode and Salvo Size. That makes the current behavior visible and adjustable without relying on gesture-only logic.
Firing Mode controls whether and how firing is triggered:
- Off. The unit arms normally and the LEDs activate, but firing gestures do nothing. Good for arming up, walking around, and getting photos without risk of accidentally firing.
- Tilt (default). Tilt the wrist left or right to fire. Tilt up or down while armed to cycle through salvo sizes.
- Shake. A sharp wrist shake fires the weapon. Tilt left or right to cycle salvo sizes — left/right is used here instead of up/down because a shake motion is more likely to accidentally register as an up/down tilt, so the salvo control uses the other axis to stay out of the way.
Salvo Size controls how many darts fire per trigger. The available sizes are:
- 0 — Row by row. Darts fire from each row in sequence rather than all at once.
- 1 — Single dart. One dart fires per trigger.
- 4 — Small salvo. Four darts fire in sequence — the same burst seen in The Mandalorian Season 1, Episode 2.
- 12 — Full salvo. All twelve darts fire.
Idle animations were added
Armed idle behavior now includes selectable idle animations. That gives the prop a cleaner standby presentation and makes it easier to choose the look you want without changing the core firing behavior.
Ongoing cleanup for battery life
As always, the firmware work also includes cleanup aimed at squeezing more useful runtime out of a very small battery-powered device. Some of that comes from explicit behavior changes, and some of it comes from incremental housekeeping in how the controller and LEDs behave when the prop is not actively firing.
Upgrading from v1
If your v1 build is working correctly, you do not need to rebuild it immediately. The v2 changes focus on usability, serviceability, and cleaner behavior rather than changing the core concept of the module.
If you are planning a rebuild, the biggest differences to expect are the updated gearbox geometry, the side-mounted power button, the stronger snap-fit behavior across the covers, the lower-friction mechanism cleanup, the easier front-module attachment, the revised servo/drive gear relationship, and the firmware usability updates.
If you are only taking the software update, back up your current config.py first and make a note of your current _SERVO_ANGLES. The firmware update process is documented on the Software and Configuration page and covers the correct sequence: back up your config, delete the existing files from CIRCUITPY, and copy the new release files over cleanly.
0 comments