petrockblog / ControlBlockService2

This is the driver for the ControlBlock re.v 2.X, a power switch and input/output/gameapd gadget for the Raspberry Pi

Home Page:https://controlblock.petrockblock.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot reliably drive 2 NES Advantage joysticks, but regular NES controllers are fine

hyperbolist opened this issue · comments

ControlBlockService2 from commit c9d0ab3
RetroPie 4.1

I have this strange situation where I can use 2 regular NES controllers fine, but cannot get NES Advantage joysticks to reliably work.

Unplugging a NES controller, and plugging in a NES Advantage stick will 90% of the time stop any controller from working until rebooting the system. But 10% of the time it'll work fine. Right before it breaks everything, it seems like a lot of button presses are happening.

Booting with the NES Advantage sticks plugged in almost never works. But 5% of the time they'll boot up fine.

When the NES Advantage sticks are working, no amount of jiggling my wires or connections will cause them to fail. So I don't believe it is a wiring or contact issue.

None of these reliability problems exist for the regular NES controllers.

A failed state for the NES Advantage sticks includes not lighting up the buttons when they're pressed. When a NES Advantage stick is working, the little lights under the turbo dials always light up when the buttons are pressed. If those lights are working by the time the ES logo appears, then the stick will be working fine.

I suspect is has something to do with powering the sticks vs powering the controllers. Or maybe in detecting whether anything is plugged in. Maybe the NES Advantage sticks follow a mildly different communications protocol. I don't know. Grasping.

jstest /dev/input/js0 doesn't show any activity for the NES Advantage sticks when they're in that "no lights" mode. Regular NES Controllers always work with the jstest, unless the NES Advantage stick has caused the "nothing is going to work now" problem.

Maybe the driver crashes? Would there be crash logs anywhere?

How should I proceed with troubleshooting this?

Thanks.

I am afraid that the NES Advantage is not supported yet. Until now, I did not have that joystick. But I just ordered it ;-) When it arrives I can take a deeper look into it. The NES Advantage seems special with its Turbo mode and player 1 and 2 switching capabilities.

Does changing the turbo modes make any differences?

Changing turbo didn't have any affect. Flipping the 1/2 switch will reliably produce a short random burst of button presses, it seems like it's similar to plugging the device in.

Thanks for looking into this!

Could it have something to do with the NES Advantage expecting 5v but only getting 3.3v?

I've stumbled across this and this which make it seem like it is well known that the NES Advantage on 3.3v will not behave properly.

At the bottom of the first link is a reference to 4-channel I2C-safe Bi-directional Logic Level Converter - BSS138 from Adafruit, which sounds like exactly what I need.

I imagine I just stick one of these between each of the NES controller ports and the ControlBlock? Seems too good to be true.

That might be a reason. My Advantage arrived yesterday, but I did not find the time to dig deeper into this yet.
But: You do not need any additional component for supplying 5V to the NES controller. You could use the pins 2 or 4 of the ControlBlock as power supply pins with 5V, see

That was it! Both sticks are working perfectly now. Thanks!