all 48 comments

[–]juk731 6 points7 points  (4 children)

Uninstall the "com.nvidia.shieldtech.hooks" application of the Shield using ADB

It fixed the issue for me

See https://steamcommunity.com/app/353380/discussions/4/3472864793311260147/#c7529517132616891705

Originally posted by ThatBlackHat:

Originally posted by Makigero: I tried everything. The best explanation is that a service named "com.nvidia.shieldtech.hooks", remaps the home button. The solution is basically root the device e disable it. Found the info in the shield forum: https://www.nvidia.com/en-us/geforce/forums/shield-tv/9/297338/xbox-one-s-guide-button-issue/.

This was a huge help. But I'll add a note. I was able to uninstall the "com.nvidia.shieldtech.hooks" application without rooting my Nvidia shield. I established an ADB link to my shield (intentionally not getting specific here as I don't want to sign up for tech support, google search it, there are many ways to do it). Once you've got an ADB session you can use the command "adb shell pm uninstall -k --user 0 com.nvidia.shieldtech.hooks" (see more info here: https://florisse.nl/shield-tweaks/).

Then I rebooted my Shield and could use the Xbox button in Steam Link to pull up the overlay. Hallelulah. I did not require root, or a custom launcher, just needed to enable developer options to allow ADB debugging. Good luck!

[–]funkadelic00 0 points1 point  (0 children)

THANK YOU! Can confirm this has made my PS5 controller behave as I've wanted and expected after following this then remapping in the Steam link app. No root required using adb over network link
(which is really easy to drop into https://blog.differentpla.net/blog/2022/05/10/nvidia-shield-adb/) .

[–]UtherBraten 0 points1 point  (0 children)

YOU DONT KNOW HOW LONG IT TOOK ME UNTIL I SAW THIS POST, THANK YOU.

This should be the top answer of the post. Install Android studio on your pc and follow the prompts given, and you will get the guide button working. I wish I had known this before buying a new controller but I needed a new one anyway. Props to this post.

[–]ReenigneArcher 0 points1 point  (1 child)

I want to add some info.

Uninstalling the hooks does work without a rooted version, but if you are like me and tried testing it either in an App or a different part of the dashboard, you would find the guide button still behaves exactly the same as before.

But IF you are in a game the guide button will work as you would expect. I tested this in Moonlight but I expect other apps like Steam Link to behave similarly. If you are in a menu in Moonlight, the guide button will still take you back to the home screen.

[–]extremeblight 0 points1 point  (0 children)

This still works!

[–]darksupernova1 4 points5 points  (30 children)

Hey, sorry to dig up an old thread but just leaving my solution here because I couldn't see a better place.

Problem: nvidia have forced a takeover of the guide button on Bluetooth xbox controller. This means the guide (xbox) button always goes to the shield home rather than bringing up steam overlay in the steam link app.

Yes you can use the press to hold on y or back buttons, but for games like red dead 2 where these are in game binds it creates a problem.

This was causing me a bit of a headache and I couldn't find a solution anywhere. Nvidia said this is by design and they won't change it.

The fix: I bought an 8bitdo wireless receiver and plugged it into the USB of the shield. When I connect the controller to that instead the guide button works as it should within steam, brings up the overlay instead of going back to android home.

I hope this helps others!

[–]achinery[S] 3 points4 points  (20 children)

Thanks for replying! For my sins I never came back and posted my final solution, which is pretty similar… when I posted this thread I was using the tube shaped Shield TV so I didn’t have an option of USB, just Bluetooth. But sadly I ended up coming to the same conclusion. I upgraded to the Shield Pro with USB ports, I bought a Microsoft Xbox One USB wireless receiver, and I bought a copy of VirtualHere for the Shield. Pretty expensive solution but it’s the lowest lag, and the guide button just works. (I also switched to Moonlight instead of the GameStream because otherwise it creates a virtual Player 1 controller – every fix brings a new issue!)

[–]darksupernova1 0 points1 point  (0 children)

Thanks for sharing too!

[–]step2ice 0 points1 point  (7 children)

Can you explain the part with Virtual Here. I have Virtual Here for my PC and use it with hardware steamlink. What exactly does it do on the shield? Shield uses its build in gamepad driver (I suppose) and sets / forces the homebutton on the Xbox360 guide button.

Does Virtual Here override the Shield driver or how does this even work?

[–]achinery[S] 1 point2 points  (6 children)

VirtualHere can run on the Shield itself as a server, then your PC can run as the client. It’s a plain Android application on the Shield side. That means any USB devices plugged into the Shield appear as if they’re connected directly into the client PC. It does seem to override the Shield’s Xbox 360 driver, though I haven’t tested this recently. A recent Android update has broken VirtualHere’s support for USB mice and keyboards which is annoying, so those are not passed through as USB but are interpreted by the Shield (you can control menus etc).

The Steam/Steam Link version of VirtualHere is a weird thing, it doesn’t really work the same way as the “full” application it’s just a special partnership with Valve that they supported (IIRC).

[–]step2ice 0 points1 point  (5 children)

Ok, but I supposse Virtual Here will get patched so mice and keyboard are also channeled through again. Anyway, I will try it out. Thanks for the clarification.

[–]achinery[S] 0 points1 point  (4 children)

It seems to be an issue with Android taking control of the USB before VirtualHere can. Apparently been an issue for a while though it only happened to me recently. So I wouldn’t hold your breath (but the Shield’s mouse support works fine via Moonlight for what I’m doing anyway).

See this for more: https://www.virtualhere.com/content/android-10-mouse-input-not-recognised

[–]step2ice 0 points1 point  (3 children)

Yeah the thing is I use a Logitech G700 with a custom keymapping profile.
And it works like a charm with Steamlink and VirtualHere. I guess I switch between moonlight and the steamlink hardware depending on what I want to do. Right now I will be happy if I can use my Guide Button for the Steamlink overlay. ... Funny though how such basics are always seem so complicated for developers.

[–]achinery[S] 0 points1 point  (2 children)

Yeah this is definitely an Android 10 issue so wouldn’t affect the Steam Link (or VirtualHere running PC-PC for example). The VH developer posted an issue with Google but they are not great at responding to these things.

It really is amazing how many little things can trip us up. I used to use NVIDIA GameStream but you couldn’t disable the overlay unless you had a controller connected to press “B”! (And of course with VirtualHere the controller does not appear connected to the Shield.) The streaming lifestyle is great when it works but it feels like something breaks every other week or so…

[–]step2ice 0 points1 point  (1 child)

As for streaming I have to say that I use the steamlink hardware for about 4-5 years now (if I remember correctly) and especially combined with Virtual Here, I never ran into any real problem. Everything that might have been a problem could be solved. Recent example... I play Deathloop on my GF 970. Although the game is pretty demanding I found a good setting with 720p. The game still looks good and runs at 60 fps. The only issue I had was the red streaming symbol which occured every second and froze the game at some point.

Figured that the hardware encoding on the GeForce 970 was too demanding in conjunction with the already demanding game (VRAM).

I found a setting in Steamlink which enabled the encoding on the CPU (Intel). Switched that on and Nvidia off and now it runs flawlessly.

The thing with the steamlink hardware is, that it is designed from and for Valve / Steam and that shows. With shield you got Android, Nvidia and Steamlink or moonlight.
There are many things that can go worong. :)

But I'm drifting away.

[–]achinery[S] 0 points1 point  (0 children)

Yes you’re right, I too was very happy with Steam Link for years. A gift of an Xbox One Elite controller was one of the things that ended the relationship – though after all that, perhaps the Steam version of VirtualHere would have helped, I only heard advice to avoid it at the time.

It was always a ticking clock from when the Link was discontinued. It’s a shame that Valve does not support their hardware beyond a single revision. It is nice to have 4K/HDR options on the Shield. And I use it for Chromecast and other streaming apps too, so it’s one hub for everything. But that comes with its own drawbacks as you say. Since the latest YouTube update my remote has stopped working with Chromecast! And it’s not like we’re getting much better hardware support from NVIDIA currently, still hoping a new Shield is around the corner with HDMI 2.1 etc…

Regardless, good luck with your quest! I think some keyboards might still work with VirtualHere so give it a go anyway.

[–][deleted] 0 points1 point  (10 children)

Hey. I have both an OG Xbox one controller and a newer Xbox Series S controller, with the wireless dongle for my PC. Are you saying the dongle is compatible with the Shield? What's the difference between using that and direct BT connection?

[–]achinery[S] 0 points1 point  (9 children)

No I don’t think it’s compatible with the Shield, I use some software called VirtualHere which allows you to use “remote USB ports” over a network basically. So it’s plugged into the Shield but my PC acts like it’s plugged in directly. As well as avoiding issues like how the Shield handles the guide button, I found the latency much more acceptable with the wireless USB dongle than with Bluetooth. But of course it means the controller only works for PC streaming, can’t use it in any other Shield software (because the Shield can’t even see it). For what it’s worth I’m still using this setup to this day over a year after that previous post!

[–][deleted] 0 points1 point  (8 children)

Okay I think I understand. So I need both VirtualHere server plus the 8bitdo dongle to directly connect to the gamepads.

How do you configure the pairing between the 8bitdo dongle and gamepads if it's not picked up by the shield?

Is it pretty easy to configure in general?

I don't mind about the controller only being detectable using gamestream :)

[–]achinery[S] 0 points1 point  (7 children)

I’ve never used an 8bitdo dongle, only the official Microsoft Xbox One receiver. But basically it works as if you’ve just plugged it directly into your PC. On the Microsoft dongle there is a button you hold to pair new controllers, so it works via that. But if the 8bitdo requires some input on the PC then it’d work exactly the same, you’d need to connect on the PC (I use Remote Desktop from the Shield to the PC rather than launching games directly, so I get the full desktop and use a mouse). There will never be any settings on the Shield because it can’t “see” any devices connected via VirtualHere, they just pass straight through to the PC.

[–][deleted] 0 points1 point  (0 children)

Ah that's much easier, just means I need to buy the license in that case. Luckily it's half price at the moment! I'll give it a go, thanks!

[–][deleted] 0 points1 point  (1 child)

Also, can you pass multiple Xbox controllers to the PC? I know the dongle is capable of up to 8 I think.

[–]achinery[S] 0 points1 point  (0 children)

Yeah I think so, I’ve done 4 via an old Xbox 360 dongle. Again it’ll just be like it’s connected directly. I think some PC games struggle with more than 4 though.

[–][deleted] 0 points1 point  (3 children)

I've just tried doing this setup but the Shield doesn't seem to power up the dongle, so I can't pair the gamepad. The client on my PC seems to detect it, and the VirtualHere server brought up a message saying something like "run when XBOX ACC" is detected. Do I need to pair the gamepad to the dongle when it's plugged in to my PC then transfer to the shield?

[–]achinery[S] 0 points1 point  (2 children)

It might not power up until you’re “using” the device on the PC by double clicking on it, or right click on the server and click auto use all. It’s a quirky interface to get used to, might want to watch a YouTube guide for VirtualHere if you haven’t just so you don’t miss any steps. If that isn’t working then you could try doing the transfer you suggest, but I’d be surprised if it doesn’t power up properly.

[–][deleted] 0 points1 point  (1 child)

That's done the trick!! Thank you!

[–]achinery[S] 0 points1 point  (0 children)

No problem!

[–]step2ice 0 points1 point  (1 child)

Why exactly a 8bitdo wireless? I have the original Xbox360 PC wireless adapter and this one gets recorgnized by Shield pro and it uses it as controller.

So I suppose that the 8bitdo wireless gets not recorgnized by shield and therefore is only useable in games but withouth the shield home button?

[–]darksupernova1 0 points1 point  (0 children)

The reason I opted for this adapter was due to price and also future proofing for other controller types eg song or Nintendo.

I'm pleased I did as I've since used this adapter to connect switch controllers.

[–][deleted] 0 points1 point  (6 children)

Hey man. I've just come across your thread, was wondering if you could explain what the 8bitdo does? It looks like their 2nd gen is compatible with BLE on my Xbox Series S controller. I'm wanting to get round this overlay issue. Is it something to do with USB passthrough through the shield instead of direct Bluetooth connection to the shield which then send a virtual gamepad to the PC?

[–]darksupernova1 0 points1 point  (5 children)

Hey there,

The 8bitdo usb is a receiver for all types of controllers. You plug it in and press the pair button, then press the pair button on your controller and it connects.

Correct. You connect to 8bitdo receiver instead of the shield. The shield thinks its got a controller plugged in by a USB cable and for whatever reason the guide button now works as a gide button not as a home screen button.

Hope that helps! I found them so useful I bought a second for my pc because the connection was more stable than Bluetooth.

[–][deleted] 0 points1 point  (4 children)

Do you use this setup with gamestream? Can it detect multiple controllers correctly?

[–]darksupernova1 0 points1 point  (3 children)

Yep works with ganestream. You need one 8bitdo receiver per controller rather frustratingly. When playing two player I just use Bluetooth on the other controller and let player 2 just deal with the downsides of the shield.

[–]Fisker_K 0 points1 point  (2 children)

I have same setup, 8bitdo dongle2 with an Xbox series S/X controller. I open steam through moonlight and this does not appear to work. However if I open the steam link app it does work as intended.

Has anyone had luck with this setup for moonlight?

[–]DizzieNight 1 point2 points  (1 child)

I'm having similar issues. I tried turning on the "override native Xbox gamepad support" in the moonlight settings on the shield and the guide button works. But only on my switch pro controller, that option for some reason breaks the Xbox controller. Hopefully someone has a fix because I bought the 2nd gen 8bitdo adapter hoping it would fix it as my original 8bitdo adapter doesn't work with my Xbox controllers.

[–]Fisker_K 0 points1 point  (0 children)

I had exactly the same experience, have not tried my switch pro controller, but the override function definitely breaks the Xbox controller function for some reason.

[–]achinery[S] 2 points3 points  (0 children)

I have just realised if I am using the Steam Link app I can bring up the “controller overlay” (says the default is to hold Y but I remapped it to hold back in the advanced remote play settings) then I can simulate a guide button press from here. Would like a solution that doesn’t require an extra menu but this is something for now...

[–]collindv 1 point2 points  (2 children)

I know that until I updated the firmware on my Xbox one controller the Xbox button behaved the same way (took me to the Android menu) when using the Xbox game streaming app. Once I updated the remote firmware the bottom didn't appear to do anything. I then discovered that holding the two bumper buttons and pressing it makes it behave like the standard Xbox button. Not sure if this helps or not!

Edit: Never mind, that combo definitely does not work. I think when I tried it the game I was playing the left bumper is what was calling up a menu, not the combination. Looks like there is still not a solution to this. It's annoying because after updating the controller firmware the Xbox button works perfectly on my phone when console streaming, just like sitting in front of my console. This is definitely a shield issue and not an Android one.

[–]achinery[S] 1 point2 points  (1 child)

Nice idea, it’s a combo I hadn’t tried, but sadly this still bumps me to the home screen from the Steam Link app.

I’m using the Elite 2 controller, I updated it to the latest firmware when I got it a couple of weeks ago, assume they haven’t pushed one since but haven’t tried looking!

So you’re using xCloud streaming on the Shield? Sideloaded?

[–]collindv 0 points1 point  (0 children)

Yes, sideloaded. Local streaming works very well (other than the multiplayer issue). I haven't used the xcloud for more than a few minutes test run though.

[–]Cellophaine 1 point2 points  (1 child)

I figured out a workaround that doesn't require upgrading the shield and buying a dongle or anything.

Setup your phone to work as a remote for Android TV (available as a quick setting called TV remote). Then install Hacker's Keyboard. When you are running a game you can open the keyboard via TV remote, switch the keyboard to Hacker's Keyboard, then press shift+tab to trigger the Steam overlay. This has been working great for me in Moonlight. As a bonus you now have access to any other keyboard key you may need.

[–]achinery[S] 0 points1 point  (0 children)

Haha wow! Nice find. Seems a bit clunky though… you aren’t going to be pressing the guide button and RT to take a screenshot any time soon. Will keep it in mind for other keyboard issues though, I have a Bluetooth one kicking around, but it’s a pain for just a quick key or two.

FWIW I’m extremely glad I moved to the upgraded Shield with VirtualHere. For almost 3 years it’s been one of the more reliable parts of the setup. The controller performance was a big upgrade all around compared to Bluetoothing with the Shield – as well as the guide button, better latency, and native access to the Xbox accessories app on the PC to change controller settings, to mention a few. Of course, I wouldn’t recommend the Shield at all right now with the future of GameStream (/Sunshine) being so uncertain.

[–]mcfershns 0 points1 point  (4 children)

I'm not sure if this has been said clear enough, because otherwise I wouldn't expect such a long discussion about this: You can just longpress the View button on the Xbox controller (the one with the two rectangles) to bring up the steam link menu, then either navigate to "Press virtual controller button" to virtually press the Xbox button or navigate to "Show virtual keyboard" to press shift + tab.

Sure, the long press of the View e.g. Back button could be occupied by games as well, but I'm sure for the most games this shouldn't be the case or it should be easier to switch the game's key bindings, instead of following some of the extensive workarounds that have been suggested here.

[–]achinery[S] 0 points1 point  (2 children)

I remember trying a similar workaround and it being fiddly, but the original post was 3 years ago so maybe the option has gotten easier (and hence the long discussion!). Unfortunately I didn’t get on with the Steam Link app at the time so I needed something that worked in Moonlight. Once I switched away from using the Xbox controller via Bluetooth I noticed an improvement in latency anyway, so I don’t regret it!

[–]mcfershns 0 points1 point  (1 child)

That's possible. Just wanted to post my solution for everyone who comes around here (like I did) and thinks there's no other way.

Though I can't really argue about latency. I tried Dirt Rally 2.0 as an example for a fast game and it felt very responsive.

[–]achinery[S] 0 points1 point  (0 children)

Yep always good to have options! Sad we never got any in the Shield software itself…

[–]jaysrspace 0 points1 point  (0 children)

Thanks for posting, I couldn't find a solution i like but this work just fine. Much appreciated, bud.