News and research

Progress report #21


8 March 2024  <- Previous


Wireless Alpakka

For the last months we have been researching (and developing) the wireless functionality on the Alpakka controller. Originally we decided to continue using the Raspberry Pi Pico, but moving to the Pico-W variant. Our initial work was to validate a potential BT solution, focusing on 4 key requirements:

Latency

Pico-W to Pico-W latency tests demostrated that, after some tuning, BT can achieve latencies down to 4 milliseconds. So in this regard BT had an acceptable performance for gaming.

Interoperability

One of the selling points of BT is that it works everywhere, unfortunately our tests have shown that even if you have a device that is following the BT specs, the results may be very different depending on which dongle is being used, which operating system, which drivers, etc. A workaround for this would be using a second Pico-W as a dongle, which would be inconvenient but acceptable, as most gamer PC peripherals use custom dongles (probably for the same reason).

Battery life

We only conducted a single test with a wireless Alpakka prototype, in which we played for 60 minutes, and a 1200 mAh battery went from 4.18V to 4.12V, this was not representative of how long the battery would last for real, as battery voltage drop is not linear, but gives us confidence that 1200 mAh should be enough for a few gaming sessions, even in the current state of the firmware without power-saving optimizations.

Consistency / Jitter

Unfortunately this is were the experiments with BT on the Pico-W failed to meet our requirements, after hundreds of hours trying, many tweaks, and even with the help of BlueKitchen devs, we were unable to get rid of latency spikes.

These spikes often went into 20+ milliseconds, with big spikes up to 60+ milliseconds, that completely ruined the gaming experience with regular lagging.

Pico-W to Pico-W setup with SPI time measurement
Alpakka prototype with Pico-W and battery connector

Moving forward

We decided to pause the research of a BT-based wireless Alpakka (at least temporally), and instead started to look into other options:

  • Experiment with the the WLAN 4 features of the Pico-W, which in theory can also achieve very low latencies, but may be more prone to network congestion.
  • Keep the normal Pico but introduce a dedicated RF transceiver chip, which would also require to design our own dongle from scratch.
  • A Complete redesign of the Alpakka, replacing Raspberry Pi RP2040 with either Espressif ESP32 or Nordic Semiconductors solutions. Which would require a significant amount of work, and dealing with backwards compatibility.
  • Prioritizing other work while Raspberry Pi Pico (and libraries) bring updates that improve the consistency and interoperability of the BT solution.
  • Prioritizing other work while a potential Raspberry Pico 2.0 arrives, with better wireless performance (we can only hope).

Scroll-wheel redesign

We have redesigned the scroll-wheel model, in order to make it more stable and reduce any "wobbling". While it still consists of three parts (wheel, core and holder), the axle around in both sides is now in the same piece. Additionally the core is now much easier to assemble and disassemble.

We also used this opportunity to experiment with Build123d, making this a proper CAD design, while also enabling us to review differences (and spot bugs) in new versions more easily.

Build123d model preview
Several iterations testing different ideas

The results can now be found in CAD prototypes repo and are currently being tested. If no further issues are found, we plan to gradually integrate Build123d models with our Blender designs, and potentially replace Blender as the main CAD solution in the long term.


- Marcos and Michael <3