Once [Hide-key] saw the likes of the banana and corn macro pads, they knew they had to throw their hat in this strange and wonderful ring. Some family members suggested a sunflower, and off they went looking for inspiring images, finally settling on a more iconic and less realistic design which we think is quite beautiful.
This lovely little macro pad has seven keys hiding under those petals, with the eighth major petal concealing a XIAO RP2040 microcontroller. The rest of the major petals actuate a low-profile Kailh choc in — what else? — brown. Don’t worry, the middle isn’t a wasteland — there’s a low-profile rotary encoder underneath. Part of the reason this flower looks so great is that [Hide-key] started with SLA prints, but the paint choices are aces as well. If you’d like to grow your own sunflower, everything about this garden is open-source.
Oh yes, we totally covered the banana and the banana split, though we must have missed out on the corn. We hear that when you try it with butter, everything changes.
Ever want to play with an FPGA, but don’t have the hardware? Now, if you have one of those ever-abundant Pi Picos, you can start playing with Verilog without getting an FPGA board. The FakePGA project by [tvlad1234], based on the Verilator toolkit, provides you with a way to compile Verilog into C++ for the RP2040. FakePGA even integrates RP2040 GPIOs so that they work as digital pins for the simulated GPIOs, making it a significant step up from computer-aided FPGA code simulation
[tvlad1234] provides instructions for setting this up with Linux – Windows, though untested, could theoretically run this through WSL. Maximum clock speed is 5KHz – not much, but way better than not having any hardware to test with. Everything you’d want is in the GitHub repo – setup instructions, Verilog code requirements, and a few configuration caveats to keep in mind.
We cover a lot of projects where FPGAs are used to emulate hardware of various kinds, from ISA cards to an entire Game Boy. CPU emulation on FPGAs is basically the norm — it’s just something easy to do with the kind of power that an FPGA provides. Having emulation in the opposite direction is unusual, though, we’ve seen FPGAs being emulated with FPGAs, so perhaps it was inevitable after all. Of course, if you have neither a Pico nor an FPGA, there’s always browser based emulators.
Folks from [Adafruit] are showing off a neat hack – USB host on RP2040, using the now-famous PIO peripheral. [Adafruit] builds a lot of RP2040 boards, and naturally, you gotta test them before you ship them to customers. They’ve been using very specific Teensies for that, and at some point, those became unobtainium. Based on the work of [sekigon-gonnoc] and with help of [Thach], they’ve made their TinyUSB library support bitbanging of USB over PIO, and successfully ported their test jig firmware to it!
The base Pico-PIO-USB repo by [sekigon-gonnoc] shows a pretty impressive state of affairs – with low-speed and full-speed USB host and full-speed USB device modes supported, and quite a few examples to get you started. [Adafruit]’s work integrates this code into their TinyUSB stack, specifically focusing on MST (mass storage) features – as this is what you need to program a RP2040. Of course, they also provide a mass storage example to boot!
Test jigs are pretty important to have when making multiple pieces of a board, and with RP2040 supporting more and more interfaces thanks to PIO, it sounds like the perfect chip for your next production testing-intended PCB. With the jig brains taken care of, you’ll want to look into building no less important mechanical part, and we’ve covered quite a few ways to sort that out – here’s an OpenSCAD script that generates lasercutting files out of KiCad boards, or a jig built out of scrap copperclad FR4, and a pretty extensive tutorial on making your own lasercuttable jigs, to boot.
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.
The graphics are simple, but with a compelling low-poly style.
The game engine itself is built to run on the Pimoroni PicoSystem, which is essentially a handheld gaming platform built around the RP2040 chip. The engine takes advantage of the multi-core nature of the RP2040, using the second core as a dedicated rasterizer to keep frames pumping out.
The basic game [Bernhard] built in the engine features 50 NPC characters and 50 further zombies, all running at the same time. Specs are impressive, with the engine’s included game simulating a “world” of 120 x 120 meters in size. As a maximum limit, the engine can handle a 2.56 x 2.56 km world, thanks to the use of 8-bit integers for directional data. However, limited storage space would make it difficult to achieve such a large world in practice.
We don’t get to see much of the gameplay in the YouTube video, but the quality of the graphics is impressive for such a cheap microcontroller. It seems within the bounds of possibility that an actual open-world game could be practical on the PicoSystem if only enough storage were available. Video after the break.
A modchip is a small PCB that mounts directly on a larger board, tapping into points on that board to make it do something it wasn’t meant to do. We’ve typically seen modchips used with gaming consoles of yore, bypassing DRM protections in a way that a software hacks couldn’t quite do. As software complexity and therefore attack surface increased on newer consoles, software hacks have taken the stage. However, on more integrated pieces of hardware, we’ll still want to return to the old methods – and that’s what this modchip-based hack of a Starlink terminal brings us.
[Lennert Wouters]’ team has been poking and prodding at the Starlink User Terminal, trying to get root access, and needed to bypass the ARM Trusted Firmware boot-time integrity checks. The terminal’s PCB is satellite-dish-sized, so things like laser fault injection are hard to set up – hence, they went the voltage injection route. Much poking and prodding later, they developed a way to reliably glitch the CPU into verifying a faulty firmware, and got to a root shell – the journey described in a BlackHat talk embedded below. Continue reading “A Modchip To Root Starlink User Terminals Through Voltage Glitching”→
We feature a large number of game console mods here, because enhancing the experience of using a classic machine often involves some really clever work. But here’s one that’s a bit different, instead of upgrading his Game Boy Advance, [Wenting Zhang] has downgraded it from a colour screen to a monochrome LCD. Take a look at the video below the break.
One might ask why this would be necessary, given that there are plenty of backlit colour LCD upgrades already for the GBA, but perhaps people who played the original might understand that it’s about improving the viewability over the rather poor-quality colour LCD original.
Interesting too is the choice of display controller. Where it might be expected to find an FPGA, instead there’s an PR2040. He goes into detail about its programming, and we hope it might inspire any others looking at screen transplants. Meanwhile if the name [Wenting Zhang] means anything to you, it should be for his other work with mono LCDs.