Python class for controlling and querying Nvidia Shield over a network
Python 3.6 or higher with python-adb installed
Install Python
Download and install Python from here
Install python-adb
pip install adb
Nvidia Shield in Developer Mode with Network Debugging turned on
Turn on developer mode
Settings → About → Build (click Build 7 times - "You are now a developer" message will pop up)
Turn on Network debugging
Settings → Developer Options → Network debugging
The DNS name (recommended) or IP address and the debug port of your Nvidia Shield
Get the DNS name
The DNS name is usually just the Device name of your Shield. Unless you have changed it, it is SHIELD.
The device name is found at Settings → About → Device name
Get the IP address and debug port
Settings → Developer Options → Network debugging
When you select this option the IP address and port will be shown
Public and private adb keys
adb connect SHIELD:5555 # use the DNS name (or IP address) and Port from the previous step
A message will pop up on your Shield asking you to confirm the connection.
Files
adbkey
and adbkey.pub
will be added to the .android
directory of your home folder Linux/Mac: ~/.android
Windows: /users/<username>/.android
Copy these two files to the directory containing nvidia.py
import nvidia
device = nvidia.shield( 'SHIELD:5555' ) # device name (or IP address) and port
if device.get_power() == 'Asleep':
device.press( 'power' ) # wake the Shield
device.press( 'home' ) # press the home button
device.launch( 'hbo' ) # launch HBO Now app
device.get_current_app()
# -------> ('com.zynga.boggle', 'com.zynga.scramble.ui.game.ScrambleGameActivity', None)
device.add_app( 'boggle', 'com.zynga.boggle' )
device.launch( 'boggle' )
device.get_current_app()
# -------> ('com.zynga.boggle', 'com.zynga.scramble.ui.game.ScrambleGameActivity', 'boggle')
nvidia.shield
has the following methods:
press( button )
button is one of: power, sleep, wake, home, back, search, up, down, left, right, center, volume up, volume down, rewind, ff, play/pause, previous, next
launch( app )
app is one of: hbo, prime, music, youtube, ted, games, hulu, netflix, youtubetv, disney, twitch, plex, kodi, cbs, pbs, amazonmusic, spotify, pandora
or any app added with add_app()
get_power()
Returns the current power state, usually Awake or Asleep
get_current_app()
Returns a tuple containing the package name, activity, and app pretty name of the current app
Note: If the app is not a known app the app pretty name will be None
. See launch() for a list of known apps.
get_packages()
Returns a list of the package names of all installed apps
add_app( app, package )
app is a string to be used in subsequent calls to launch
package is the package name of the app, e.g. com.hbo.hbonow
Note: You can get the current app's package name with get_current_app()
or a list of package names with get_packages()
type( text )
Type text into the current app or text field.
Note: This presently only works in the top-level search, not in any apps, so it is of very limited use.
Questions, feedback, bug reports, and feature requests are all welcome.