Input broken (Fire TV)

Hi, I know this has been mentioned a few times but I’ve found I can’t get any input to work in games on my Fire TV (either with autoconfig or even after manually configuring bindings). Going through a logcat, I found that RetroArch is blowing up in its native input stuff when it tries accessing getVendorId() in InputDevice (following is a very brief snippet with autoconfig enabled):

I/RetroArch(15796): device name: Mad Catz Micro C.T.R.L.R W/System.err(15796): java.lang.NoSuchMethodError: no method with name=‘getVendorId’ signature=’()I’ in class Landroid/view/InputDevice; W/System.err(15796): at dalvik.system.NativeStart.run(Native Method) E/RetroArch(15796): Could not look up device name or IDs.

It seems that this (and getProductId() that Retroarch will want to use after getVendorId()) were added in KitKat (4.4) and the FireTV is running Fire OS 3.0 (which is a fork of JB / 4.2.2), hence those methods don’t exist. It would seem that right now RA is only 4.4+ compatible. :wink: I don’t know if that’s by design but if not it would seem that until Amazon rebases the FireTV to Fire OS 4 or higher (which is a fork of 4.4.2 and should include these methods) that RA won’t play nice with it as a result…

So Kitkat is to blame for this crap. This part could be reverted in a new build to finally fix that stupid issue on FireTV.

Maybe a special JellyBean branch for RetroArch should be created with that part removed to fix the key bindings.

Edit:Actually,you probably could just nullify that part for Android versions below Kitkat while still leaving it intact for Kitkat and newer.

Probably more correct is that it’s JellyBean that’s to blame for the omission and KitKat fixed it. What you mention may work and may even already be there since I noticed in my quick look at the Android input code in GitHub that there already is an alternative input branch for older (pre-JB?) versions of Android. It could be that it should just be used for versions < 4.4 instead of whatever the cutoff currently is. :wink:

I just side-loaded RetroArch on my FireTV last night and am having the same problem: No controller I use with work in-game. I’d prefer to use the FireTV controller, but can use a few other bluetooth models. Is there any work around to the issue? Can I just use an older build of retro arch? Thanks for the help.

Now that I’ve traced down what’s going on, hopefully it’ll be fixed sometime in the next few days by one of the devs (in which case a nightly build would fix it from that point forward). In my looking around, I found that none of the current Android autoconfiguration files currently use input_vid or input_pid even, so the lookup must be getting done solely by input device name. That being the case, the alternate branch that’s specific for 2.3 (which only differs by not even trying to query for vendor_id or product_id) would probably work fine for any version < 4.4.

I’m almost curious enough to set up a build / dev environment to try this out for myself but for now hopefully just posting the cause of the issue here will get one of the devs to take note and hopefully fix it in short order. :slight_smile: For testing purposes (if one doesn’t mind installing an alternate older Android rom on any device they may have), I believe the issue will manifest on any version of Android < 4.4, other than Gingerbread (2.3), which the RA input code treats as a special case.

I officially opened an issue against libretro/RetroArch in GitHub for this to give this better visibility. :slight_smile:

It is such a shame that we’ve had to wait this long for a viable solution for input issues,especially since the framearate seemed a lot smoother in one game I opened. It even appears to surpass other emulator apps with an extremely smooth framerate.

Got a request I want to place in the proper area,but I’ll ask here too… Can we have key bindings added for rewind and fastforward on the main app input settings? It is really frustrating to not have direct access for rewind so it could be used like it is on GenPlusDroid as a mappable key. Also,all SNES and GBA emulator apps lack proper “braid style” rewind support,despite the capability. :frowning:

The “main” app is what causes the problems and inconcistencies with other platforms so actually it may be phased out soon Rewind is too heavy for most smartphones btw, it’s savestate and it does work on most cores that support serialization though

Try this: http://blog.andressm.org/retroarch-android-gamepad-configuration/

Let me know

FWIW pad input works fine for me on newer devices (nVidia Shield Portable - currently based on KitKat, with a Lollipop update apparently coming soon, and a Nexus 5 phone, already on Lollipop). Overlay might work on older versions of Android as well but the only one I have is my Fire TV, and that of course has no touch controls. :wink: I haven’t investigated the manual binding in RGUI issues you noted with config not saving properly but I’ll take your word for it. :stuck_out_tongue:

I have no issues rewinding on this weak FireTV. (old and buggy/slower Qualcomm driver [email protected] version) If it had the latest drivers,everything would run a lot smoother.

The latest high-end Qualcomm processors actually no longer have the overheating problem seen in previous models. Smartphones have been becoming MUCH stronger lately alongside tablets,so rewind should work perfectly on those. DON’T remove the most attractive feature of RetroArch.

Savestates are inferior to rewinding because you can accidentally save instead of load,then completely lose out on a long process in a more difficult and unforgiving game.

Edit:It tried to double post when I only clicked once and waited patiently.

It seems that the input problems are fixed. The nighties as of the 26th work for me.

I can also confirm it is finally fixed,but only if I set bindings,and then enable autoconfig. Somehow it got linked together,genius!

I tested some gameplay of Donkey Kong Country,and it is really smooth.

[QUOTE=retroben;19141]I can also confirm it is finally fixed,but only if I set bindings,and then enable autoconfig. Somehow it got linked together,genius!

I tested some gameplay of Donkey Kong Country,and it is really smooth.[/QUOTE]

Hey man. Can you clarify what you mean by setting bindings AND enabling autoconfig? Thanks

You need to have autoconfig turned ON and do manual binding in the in-game RGUI menu. It’s unintuitive, but that’s how it works.

In android autoconfig also makes it “autodetect” the input device, so it’s needed even if you remap your pad

I went into the main options to bind my controls through P1 custom bindings,then I started the game and realized it did not work. On a whim,I decided to go back to the main options to enablle autoconfig after I already set controller bindings which greys out when autoconfig is enabled. After starting the game again,I could control it in the same way I did on the Play Store 1.0.0.2 version.

The fix is a little hacky instead of using a proper fix. What we could use is a master menu for every action setting listed and bindable so we can set analog on keyboards and things like rewind and fast forward,as well as core specific ones like N64’s C-Buttons.

And we could also use primary interface bindings as a seperate thing so every core can be controlled in the same exact way instead of using game oriented controls for navigating,which kept giving me issues in 1.0.0.2 because I would suddenly lose the ability to navigate the RGUI,hence why I am forced to leave on virtual retropad to control it when bindings decided to fail.

Don’t set stuff up in the android menu, it’s broken and we want to kill it. If you want bindings per core, enable per-core configs, and if you’re using a gamepad, you can always use the immerse overlay to be able to regain control in the event of a pad disconnection.

But I like that menu,I think it is unfinished is all. If there is a way to universally allow keyboard inputs by importing it from the PC version,someone please make it possible. This way,ANY keyboard would work out of the box on an OTG-wired Android device (you can hook to an HDTV) without needing to do much else. Maybe someone nice enough could add an option,or even make a side-app with customizable keyboard mappings to get perfect controls for use of someone like myself stuck without access to gamepads. (unfair personal restiction reasons/sad “if I had a laptop…” scenarios)

My bt keyboard works fine.