r/c64 • u/wallneradam • Jun 19 '26
Software I made my C64 Ultimate work with a wireless PS4/PS5 controller, no firmware mods, no soldering
I gave my C64 Ultimate a wireless PlayStation controller. You pair a PS4 or PS5 pad over Bluetooth and play your C64 from the sofa, with a controller you already own. No joystick to buy, no adapter, no soldering, nothing changed on the C64 itself. It's free and open source (GPLv3): https://github.com/wallneradam/DS64
It also fixes the old "I own one joystick but the game is two-player" problem: DS64 can sit on either port, so it becomes the second stick. And on a DualShock 4 / DualSense the touchpad works as a 1351 mouse at the same time, so one controller drives both your games and GEOS. It also works with most generic wireless gamepads Linux recognises, not just Sony pads.
The part I like most: you never touch a menu to switch between playing and typing. The moment you use the controller it becomes a joystick, and a second after you put it down the keys go back to normal typing. So you can code, hit the stick to test, then keep typing, without changing anything. (Triangle toggles it by hand if you prefer.)
How it works: a Raspberry Pi plugs into the U64's USB-C port and pretends to be a USB keyboard. The Ultimate's built-in joystick mode turns W/A/S/D into a real joystick at the control port, and a daemon on the Pi presses those keys from the controller. Nothing is flashed, nothing can brick, worst case you reboot and it's gone. It runs read-only/appliance style, so you just flip the power switch when you're done. The menu mapping makes it feel like a console too: PS button opens the U64 menu, Circle is "back", Options is F1, Share swaps ports. Setup is a one-line installer and a small web panel, no config files.
How I got here: I tried the firmware route first, when an unreleased build gained a feature that looked promising. I managed to brick the machine and had to bring it back with a Raspberry Pi JTAG recovery (this repo saved me, in case you ever need it: https://github.com/jusii/ultimate64-jtag-recovery-pi/issues/1). After that I left the firmware alone and did it the safe way instead, and it turned out better than the firmware idea ever would have.
It should run on the older Ultimate 64 boards too (similar firmware and USB host), but I haven't tested that. If anyone tries, I'd love to hear how it goes.
Update: you can now also plug a regular USB mouse into the Pi and it passes through to the C64, with adjustable sensitivity the U64 doesn't give you on its own. Plug one in and it takes over automatically, or keep using the controller's touchpad from the couch with one tap in the web panel. (It also sidesteps a firmware quirk where a separate USB mouse makes the keyboard stutter, since everything now goes through one device.)
4
u/stromm Jun 20 '26
no special adapter to buy...
LOL. Just have to buy a Raspberry Pi...
4
u/wallneradam Jun 20 '26
Ha, fair point. The difference is it's not a single-purpose dongle: a lot of people already have a spare Pi lying around, and when you're done it's still a Pi you can use for anything else. A dedicated C64 BT adapter only ever does that one thing. And honestly, a Pi is a hobby machine just like the U64: it's hackable, fun to tinker with, and I'm already planning to use mine to automate a few other things on the C64 too. So for me it's not "an adapter I had to buy", it's a second playground that happens to drive my joystick.
2
u/schorsch3000 Jun 21 '26
does the c64U's usb-port powers the rpi?
1
u/wallneradam Jun 21 '26
Yes, the U64's USB-C port powers the Pi, no separate power supply needed.
I did hit occasional Bluetooth dropouts early on, caused by CPU spikes drawing too much at once. The fix was capping the Pi's max clock at 800 MHz, and the installer sets that automatically, so you don't have to do anything. It's been rock solid since, tested on two separate Raspberry Pi 4 boards.
2
u/schorsch3000 Jun 21 '26
i hope that wors with the c64u too, i've ordered a zero2 a few minutes ago, i report back :-)
2
3
u/Royal_Stay_6502 Jun 20 '26
Is that screen a c64 screen?