Alpakka: A Creative Commons Game Controller

Input Labs’ mission is to produce open-source Creative Commons hardware and software for creating gaming controllers that can be adapted to anyone. Alpakka is their current take on a generic controller, looking similar to a modern Xbox or PlayStation controller but with quite a few differences. The 3D printed casing has a low-poly count, angular feel to it, but if you don’t like that you can tweak that in blender to just how you want it. Alpakka emulates a standard USB-attached keyboard, mouse, and Xinput gamepad in parallel so should just work out of the box for both Linux and Windows PC platforms. The firmware includes some built-in game profiles, which can be selected on the controller.

No special parts here, just 3D prints, a PCB and some nuts and bolts

The dual D-pads, augmented with an analog stick, is not an unusual arrangement, but what is a bit special is the inventive dual-gyro sensor arrangement –which when used in conjunction with a touch-sensitive pad — emulates a mouse input. Rest your thumb on the right-hand directional pad and the mouse moves, or else it stays fixed, kind of like lifting a mouse off the pad to re-center it.

The wired-only controller is based around a Raspberry Pi Pico, which has plenty of resources for this type of application giving a fast 250 Hz update rate. But to handle no fewer than nineteen button inputs, as well as a scroll wheel, directional switch, and that analog stick, the Pico doesn’t have enough I/O, needing a pair of NXP PCAL6416A I2C IO expanders to deal with it.

The PCB design is done with KiCAD, using a simple 3D printed stand to hold the PCB flat and the through-hole components in place while soldering. Other than a few QFN packages which might be a problem for some people, there is nothing tricky about hand-soldering this design.

We’ve been seeing custom game controllers as long as we’ve been hacking, here’s an interesting take on the mouse-integration theme. If you’re comfortable rolling the hardware side of things, but the firmware is a sticking point, then perhaps look no further than this neat RP2040 firmware project.

Thanks to [aamott] for the tip!

21 thoughts on “Alpakka: A Creative Commons Game Controller

  1. Great idea, and in my brief testing as I bulked out the case for my steamdeck with PCL (polymorph branded) to suit my giant hands a low poly finish is actually really good for comfort and grip! I didn’t go quite this far with the low poly but being full of little anglular bits actually seemed to give a feel of great grip as you shifted your hands around without any discomfort – at least in the shorter term. When the rubbery coating I applied afterwards has fulled cured I’ll have to give it a longer go and find out how well it really works.

    Though I think it is missing a trick to not use the Steamcontroller and now Steamdeck style trackpad things – can do so very much with those to make the inputs work the way the user wants – a button is just a button a stick just a stick, but a little processing and those trackpads can seamlessly be switched between trackball, trackpad, faux joystick, a button pad etc…

    1. I like those little pads as an optional input as well but I don’t think I like them as much as any one of the dedicated uses they emulate. They’re never quite as good for long uses and, for me, seem to fatigue my thumbs significantly more.

      1. Are you using them on the Deck or a steamcontroller? The ergonomics of them on Deck are pretty bad, actually rather awful when compared to controller, but still great to have ’em as they are so much more versatile.

        Can’t say I’ve had any particular fatigue using the steam controller ever, its still a bit on the small side for my hands, but the placement of the pads is so good there it remains nice. Where on the deck when I try to use them its horrible in short order. Seems a fair few folks agree too, somebody actually designed a 3d printed winglet type expanded thing to make the Steamdeck’s ergonomics more akin to the steam controller over the trackpads. With how much I liked the trackpad on the controller I was tempted to do the same – but getting great trackpad egronomics I figured would be spoiled by how bad doing so would make the ergonomics of ever other face button..

          1. One thing that really helps in making the Steam stuff feel better than most touch interfaces is the haptic feedback quality (still room for improvement there IMO, but it is good) and where the steam controller is concerned the ergonomics are so much better for the touch style interface. So yes I would really suggest giving it a go, probably hard to source now though – most folk that like the controller probably bought up all the stock they could find when it was discontinued, and won’t sell easily… (Yes I’m guilty of sitting on a spare myself)

            The only thing really ‘wrong’ with the Steamcontroller is that every time you want to play something new you probably end up drawn into the setup the controller mini-game… You can use the ‘standard’ profile you made for some other similar style of game, it is usually fine, but with the amount of sensitivity and gameplay differences, along with all the varied menu control shifts you tend to end up wanting to fiddle some more as it could be so much better!

            Will say the haptics and software polish required to really make such a thing shine does mean it will be more tricky to get that quality in this sort of opensource project, more hardware requirements for haptics at all and no doubt lots of software tweaking to make it feel so good, not to mention integrate a flexible configuration tool with all the software that might use the controller.

            But even without that polish I’d still rate it as worth putting into a general purpose controller – the versatility is just so worth it and having used the Steamcontroller d-pad implementation enough I’d say this layout with minor tweaks for ergonomics to suit (if needed) and double trackpads would actually feel very very similar to use for most people – can’t feel the edge of the buttons in quite the same on the trackpads, though I understand there are stickers that can help with that and at the same time if you try to click right in a d-pad mode it will feel like you clicked a button and right button will be output – actually more reliable than most actual genuine d-pad I have used in only outputting the direction you pressed…

  2. Love the project! Haveng such a computing power in a controller might allow for some weird customizations.

    I also wonder where they from, by the name of the controllers (Alpakka = Alpaca & Kapybara = Carpincho) could they be from Argentina?

  3. i love the idea, i just wish it was a product because i don’t want to spend a ton of time on it.

    i had a stratus controller that would lock up! it needed to be hard-rebooted monthly! it had an internal battery so the only way was to wait for it to run down to empty. i added a momentary-disconnect switch to it, which was great for a few months but i stupidly left exposed contacts on the outside of the device and i assume ESD was the cause of its sudden complete death. i’m not the kind of guy who is going to try to replace the tiny surface mount power supply chip sigh

    if the stratus had been open source, i would have repaired the crashing software instead! or, probably, someone else would have repaired it before i got there

    1. I know a guy who had a problem like that with a stock Sony PS4 controller. It would randomly stop communicating with the PS4. Also, it would not go to any sleep or low power mode. The only way to ‘fix’ it was to let it sit and run the battery down until it got low enough to force it to shut off. Then it could be recharged and it would work fine for a while, until it would do the same thing again.

      He tossed it and bought a new gamepad.

    1. OG Xbox is plausilble. The Xbox connector is a nonstandard USB plug and the protocol is a modified USB HID. It would require some firmware tweaks.

      The other gamepads you mentioned would need a totally new PCB and firmware.

  4. No option for swapping joystick and dpad location. For either left or right stick preferably both.

    Does NOT have dual sticks, the second ‘stick’ is an 8 way switch.

    I will wait to see if the buttons are any good.

    Got my hopes up, hope this grows into a viable option. Controllers seem simple, but even my Lenovo t480 has a crap mouse click for the trackpoint. (I’ve had x230/t530/t450/t460p/t550/p70/p50 and this is the second worse only to the t440 which had no buttons)

  5. I wonder if they have plans to replace the thumb stick from dual pots to a Hall effect solution, the current design will have drift problems in the future, just like any other controller.

  6. I looked at the code and it seems like sort of a variable weighting algorithm for Gyro aim but its light on explanation.

    My (albeit flawed understanding):

    I’ve done a bunch with the LSM6DSx series of 6DOF accel/gyro and I’ve read a fair share of papers. One specifically on merging 6 gyros, each on the face of a cube. In theory noise will go down by the sqrt of gyros, but that’s the same as samples (double sample rate and average does the same). The difference is that you have different independent devices, but also different bias characteristics and alignment issue that don’t play nice without calibration for the multiple axes.

    But the main one of two encountered in literature is axes alignment, and it doesn’t look like there is anything in the git hub repo for addressing this. Without this you’ll bleed some percentage of XYZ from gyro 1 but a different amount from gyro 2. So basically gyro 2 can bleed 2 – 3% of Y and Z into the X calculation but only 98% of X, thus nullifying any gain from doubling the price of until recently hard to find gyros.

    It’s and interesting design, not sure my hands would like the angular design. Understanding the gyro is why they eliminated a second joystick = mixed feelings. However kudos for not using I2C on the gyro’s. Those gyro’s can hit 3khz IIRC, and I2C can’t handle that. I had some success with driving gyro’s at very high speed for angular integration before, so this gives a nice pathway to more than 250hz. Some of the LSM’s also have FIFO buffers (though how they work depends on which model), so you can do fun things like buffer data and dump it all quickly lowering burden on processor for increasing data rate and averaging.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.