• Home
  • Products
      • Back
      • Sports Bars
          • Back
          • Control System
          • Sports Bar Info
              • Back
              • Packages
              • Project Process
              • Competition
              • Video Integration
              • Audio Integration
          • Audio Streamer
      • Residential
          • Back
          • Home Automation
      • Digital Signage
          • Back
          • Overview
          • Mosaic Video Wall
      • Drivers
      • Installations
      • SmartRemote
          • Back
          • Introduction
      • Products
      • SmartScreen
      • RV / Marine
          • Back
          • Shelly Relays - RV Slide Control
  • Shop
  • Support
      • Back
      • Documentation
          • Back
          • Downloads
      • Dealers
      • Forum
      • Contact Us
  • About
  • Login
 

Product Documentation

Documentation
Hardware
SmartRemote1
SmartRemote Screen Protector1
myServer 5 Update1
Business Related Info
About Us6
Allonis Hardware and Support1
Become an Integrator1
Copyright notices and licenses for Open Source Software1
License Transfers1
Payment Options and other Ordering FAQ1
Privacy policy1
Streaming TV for my Bar / Restaurant1
System Licensing1
Getting Started
Common Tasks
Audio / Video Integration for Audio1
Audio / Video Integration for Video1
Remote Programming - How it Works1
File Storage FAQ1
Music Streamers1
myButton: Play an audio file upon pressing a Panic button1
Sending SMS messages from myServer1
Television Control1
Troubleshooting
Network Management1
Networking FAQ1
Setting a Static IP address1
Networking - Connect to a Device Default IP address1
Accessing myServer from the Internet1
myServer 6 Router1
myFirewall Installation1
Network Switches1
Network 24 and 48 Port 10G L3 Managed Switch (Rack)1
Network Security - myFirewall21
Network Security - myFirewall41
WiFi Router Configuration1
QR Code support via myServer 61
VLAN Network Setup1
VLAN Allonis L3 Switch Network Setup1
VLAN Support on myServer 6 Controllers - Raspberry Pi41
myServer 6
myServer Setup
Installation1
myServer Startup2
myServer Configuration1
myServer Configuration - 21
Sports Bar Project Process1
myServer 6 Controller Installation1
Adding Rooms to myServer1
Adding Lighting1
myServer 6 - Master Image Installation1
Find.myServer.fyi1
Flashing Pi CM4 using the IO Board1
Migrating to myServer 6 From Previous Versions1
MultiZone Audio Design - Commercial1
myServer 6 Installation on Mint OS1
myServer 6 Installation on Windows OS1
myServer 6 USB Installation1
Networking Basics1
Creating a Bootable Image on SDMicro and USB1
myServer Virtual Environment Installation1
myServer 6 Automation Events1
myServer 6 Command Syntax1
Macros - Naming Convention1
myServer Backup and Restore1
Core System Capabilities1
MQTT
Broker
Certificate
Discovery
Testing your Setup
Logging
myServer 6 Hardware
myServer 6 1.5U Rack Mount Hardware1
myServer 6 Shelf Mount1
myServer Features1
How To
User Interface Scene Transitions1
Advanced Configuration
Authentication
Remote Access
Master Image Updates1
3rd Party Automation System Integration
Home Automation Overview1
HomeAssistant Gateway Driver1
Homeseer Driver Installation1
Node Red - Installation1
Why Automate your Home or Business1
QSC Core Driver1
Applets
TVListings App1
Weather App Installation1
Drivers1
Amplifiers
Audio Matrix
AES67 Audio IP Networking Overview1
Allen and Heath Audio Matrix Driver1
Atlas Atmosphere Audio Driver1
AVPro ACMax24A Audio Matrix1
BSS-100 Driver1
DBX - Driver1
DBX640 - Driver1
MonoPrice Blackbird Driver1
MRC88 Audio Matrix Driver1
QSC Audio Driver1
RTIADx Audio Driver1
Russound Rio Driver1
Russound RNET Audio Driver1
Wiring: Connecting RCA audio jacks to Phoenix Connectors1
DSP444 AES67 Audio over IP Driver1
DSP4428 AES67 Audio over IP Driver1
Audio Video Receivers
Anthem AVR Driver1
Denon Driver1
Integra AV Receiver Driver1
Marantz AudioVideo Receiver Driver1
Onkyo AVR Driver1
Blinds
Lutron Blinds1
Somfy RS485 Blinds1
Somfy Synergy UAI+ Blinds1
Somfy Z-Wave Blinds1
TRO.Y Blinds Controller Driver1
Bond Bridge - Shades1
Camera
BlueIris Camera NVR1
Hikvision IP PTZ Camera Setup1
IP Camera Integration1
IP Camera PTZ Driver1
Lumens Camera Driver1
Ubiquiti IP Camera Setup1
Samsung NVR Driver1
Armcrest IP Cameras1
IPCamera Wyze Integration1
Contact / Motion Sensor
Control Device
Harmony Hub Driver1
MyQ Garage Door Opener1
Tablet Power Solutions1
Infrared Control1
UPS Monitor Driver1
UPS myServer Pi Driver1
VideoStorm irUSB1
Elgato Stream Deck1
Shotbox Driver1
Ratgdo Garage Door Control1
Energy
AccuEnergy Driver1
Fan
Bond Bridge - Fans
Intercom
Keypad
Lighting
DMX Lighting1
Lutron Caseta Driver1
Lutron Driver1
Phillips Hue Driver1
Lighting Sim Driver1
Powerline DMX Pool Lighting1
Shelly Automation Device Driver1
Media Player
AndroidTV Driver1
AppleTV control1
Blu100 Driver1
BluRay Player IR Control1
Cable TV - IR1
DLNA Media Player Driver Installation1
Emby Media Server Configuration1
eStream4K Device Using IR1
FireTV 4K Installation1
HEOS Driver1
Kodi Application1
Live Streamer Driver1
MediaMTX Streaming Media Driver1
MediaPlayer Audio Amp1
myAudioPlayer1
myMediaPlayer1
Oppo Blu-Ray Player Driver1
Roku Player Control1
Streaming Media Hardware Comparison1
Sony X1000 BluRay Driver1
Tivo Player Driver1
Sonos Driver1
Zidoo Media Players1
Media Service1
Streaming Music for Commercial Implementations1
TuneIn Application
Pool
Jandy Pools1
Projector
Optoma Projector Driver1
PJLink Driver1
BenQ Projector Driver1
Mitsubishi Projector Driver1
NEC Projector Driver1
Sony Projector
Vivitek Projector Driver1
JVC Projector Driver1
Sony VPL Projector Driver1
JVC LX-NZ30 Projector Driver1
Receiver
Relay
Digital Loggers1
Dingtian Relay Driver1
Electronic Salon GPIO Relay1
iMatic Relay Driver1
Satellite
DirecTV Driver1
Dish Network Driver1
Security System
DSC Security System Driver1
ELK Driver Installation and Use1
Security Simulator Driver1
Honeywell Security1
Outdoor Grill Integration
Traeger Grill Integration
Green Mountain Grill Driver
Sensor
1-Wire Temperature Sensor1
GPS Receiver Driver1
Water Tank Level Sensing1
Television / Monitor
Controlling TVs via CEC1
Generic TVIR2
HiSense TV Control1
NoHassle TV Driver1
Insignia TV Control1
LG TV Driver1
LGWebOS Driver1
Samsung BET Driver1
Samsung Signage TV Driver1
Samsung Tizen TV Driver1
Samsung TV Driver1
Sony TV Driver1
Sharp TV Driver1
Sunbrite TV Driver1
Viewsonic TV Driver1
PJLink Driver1
TCL TV Driver1
Peerless TV Driver1
Vizio TV Driver1
Thermostat
Climate Simulator1
EcoBee Thermostat1
Venstar Thermostat Driver1
Tuner
Video Matrix
Video Wall Control1
AVPro QuadView Driver1
AVPro Video Matrix2
ANeuVideo Driver1
Brightlink Video Switcher1
Factor A8 Matrix Switch Driver1
HDTV HDBaseT Driver1
HDTV Video over IP Driver1
AVOIP 4K Driver1
HDMI 36x36 Video Matrix1
HDMI Matrix Basics1
HDTV HDBitT Driver1
HDTV Quad Driver1
Just Add Power Driver1
Knox Video Switcher Driver1
MOiP Video Matrix Driver1
Shinybow Video Driver1
Connectivity Technologies
CAN Driver1
Connecting Bluetooth Devices to a Windows PC1
Controlling a Water Valve via Tasmota Relay1
DMX
DMX - PKNight Art-Net controller setup1
Art-Net DMX Driver1
GenericGPIO Relay Driver1
Generic Modbus Driver1
Generic Serial Driver1
GlobalCache Driver1
IFTTT Configuration1
Infrared Control2
Matter1
MQTT Use1
OBD/VIC Driver1
OLA Service Monitor1
Raspberry BLE Device Driver1
Relays - IP controlled1
Sainsmart IP Relay Driver1
Serial to Net for Pi Installation1
Sonoff Devices1
Tasmota1
UPB Lighting Driver1
Waveshare GPIO Relay Driver1
Zigbee Driver1
Z-Wave JSUI Driver1
ZWay Raz Driver1
ESP32 Projects
ESP32 Doorbell Camera
ESP32 - Rotary Encoder1
User Interfaces
myDesigner 6
myDesigner 61
myDesigner 6 Installation1
myDesigner 6 Useage1
Administrator Template1
Modern
Modern Template - Phones1
Modern Template - Tablets1
Moonlight
Moonlight Template Strategy1
Moonlight - SmartRemote1
Moonlight - SmartPhone1
Moonlight - Tablet1
Sheer Template
Sheer Template - Phones1
Sheer Template - Tablets1
SportsBar
SportsBar - Tablet1
SportsBar - SmartPhone1
TV Placement1
Browser Compatibility1
Adding Grafana Charting into your UI1
Device Networking1
iPort Surface Mounts1
Setting up a Tablet for myServer 6 Templates1
Setting up an iPad / iPhone for system access1
Tools and Helpers
Developer Tools
Driver Examples

AndroidTV Driver

Welcome to the AndroidTV driver for myServer 6.

AndroidTV is a highly popular media management content player.  Now, you can add a user interface within your myServer system where you can launch AndroidTV installed apps like Kodi, Plex or Netflix.

The AndroidTV driver is very flexible.  It works with most AndroidTV based media devices, like the FireTV stick.  You can choose which player you would like to launch.  Control the AndroidTV transport controls. And of course the user interface is completely configurable using myDesigner!

New is the ability to control an AndroidTV box to act just like a DirecTV / CableTV box remote control.  Use the sample androidtv.html webpage to try it.  The driver supports the keycodes defined here https://developer.android.com/reference/android/view/KeyEvent#constants

Since the SmartRemote handheld remote control uses AndroidOS, you can use the AndroidTV Driver to find and communicate with the remote control.  You can have myServer put the SmartRemote asleep (and black out the display) using the AV|324~SendKey~SLEEP command.  Perfect for Home Theater usage.

Big Feature:  As the AndroidTV boxes support "CEC" control, you can control a CEC compatible TV functions (Power, volume, input source etc) without need for the dumb TV to be connected directly to myServer (traditionally via serial, IR or TCPIP).  Simplifies the setup significantly.  Just plug a FireTV stick into the TV, connect FireTV to WiFi, and control the TV via myServer events and user interfaces.

How it Works:

myServer 6 connects to the AndroidTV device via ethernet (wired or WiFi).  myServer then looks up the coverart from our Internet sources. Since myServer also support many physical remote controls, the user can also use an integrated remote for the transport functions - even if the AndroidTV stick is not in the same room - even over the Internet!

 System Requirements:

  • myServer v6
  • Android OS device on same network as myServer 6
    • FireTV (running AndroidTV OS) stick installed and on same network as myServer controller.
    • Kodi (v17), Plex or Netflix application running on the AndroidTV stick.
    • Nvidia Shield
    • SmartRemote

App Installation:

  1. Shutdown myServer 6.
  2. Download and run the AndroidTV driver installer from Software Updater on the primary myServer 6 PC.
  3. Restart myServer 6.

Device types supported

Note: use these specific device type names when configuring your devices in the AndroidTV driver.  Once that device is assigned a Room, myServer will then create the correct associated device activation macro for that device type.

  • chromecast
  • firetv
  • shieldtv
  • signage (for Allonis's Digital Signage application)
  • smartremote
  • touchscreen
  • tivostream
  • tv
  • xaiomi

 

The Player number has to be a number (ie: 1-10).

The device must be assigned a room.  Not "Unknown" or "Whole House" for the macros to be auto created.

The Discovery command will attempt to find applicable devices and determine what type of device it is and add it automatically.

 

FireTV installation (example):

  1. Unpack FireTV4K Max stick and accessories
  2. Install batteries in FireTV handheld remote
  3. Plug FireTV HDMI into HDMI monitor
  4. Best is to use an ethernet adapter to FireTV Power connection and not use Wifi for reliability (optional hardware purchase)
  5. Boot the FireTV stick
  6. Click FireTV remote.  Click the Play / Pause button when advised.
  7. Select your Language / Market
  8. Wifi will search for your Wifi Access Point (if no ethernet connection)
  9. Select your Wifi access point and add your Wifi Password
  10. The FireTV stick will then download and install software updates from FireTV Amazon server (not myServer).  Do not disconnect from power during this upgrade.
  11. FireTV stick will reboot with latest OS installed.  Will make another check for Updates and install.
  12. You will be asked to either Login or create an account.  If you choose to Login, you will be provided an Activation Code to be used on amazon.com/code
  13. Once you register your device with your Amazon account via the website, the FireTV stick will try to login to your account.
  14. Allow the system to register the device to your account.
  15. You will be asked if you want to add your historic apps / settings.
  16. You will be asked if you want to enable Parental Controls.
  17. You will be asked what TV you are using.  If you are using myServer 6 to control your TV directly, then the FireTV doesn't need to "know" what type of TV you are using it with.
  18. After your TV choice you might be asked to check volume support by clicking volume up / down.  If you accept that this is working, the setup should then be complete. 

 

FireTV ADB Configuration:

  1. Ensure AndroidTV stick is on same network as myServer 6.
  2. Click on the My FireTV settings within the AndroidTV Settings menu
  3. Click on About AndroidTV about 10 times in a row.  This will enable Developer menu.  This only needs to be done once on the device.
  4. Click on Developer Options.  Click on Enable ADB.  Save. 
  5. You might need to enter a PIN to enter Developer Mode depending on the hardware.  try 3694.
  6. Restart AndroidTV stick to ensure your settings are in effect.

 

Nvidia Shield ADB Configuration:
Enable debugging
 

1. Goto Settings on the Shield.

2. Go across to About in Device.

3. Go down to Build and click on it 10 times until it says you are in development mode.
 
ADB over USB
 
1. Make sure you have performed the above steps "Enable debugging"
2. Goto Settings
3. Go Across to Developer options
4. Go down to Debugging
5. Toggle USB debugging to On
 
ADB over Network
 
1. Make sure you have performed the above steps "Enable debugging"
2. Make sure you have performed the above steps "ADB over USB"
3. Toggle Network debugging to On
When On, you should see a message "Enabled in (mac address IP address)"
 
Restart myServer
In a few seconds, you should see an acceptance request on the Shield screen.  Accept to allow the ADB communications from myServer (saved).

 

App Configuration:

  1. Configure your chosen app (Kodi, Plex, Netflix) as per that apps documentation

 

AndroidTV Driver Commands:

Use Command Builder to see the current supported commands and their syntax.

The driver natively knows how to launch  Kodi, Tablo, Games, YouTube and Prime Video. Additionally it supports a custom launch command that will let you integrate any new app you find in the future. (However, if it is an app with wide appeal still tell us about it)

To use the custom launcher the command looks like

AV|<<id>>~Launch~<<app name>>

e.g.

AV|12~Launch~monkey -p com.google.android.youtube.tv 1

notice you do not need to include the "adb shell" bits.

 

 To turn off the Screen saver (like for Digital Signage) run the DisableSleep command on the connected AndroidTV device.

 

Some Tidbits:

The AndroidTV driver uses "ADB" (Android Development Bridge).  You can read more here: https://developer.android.com/studio/command-line/adb

This allows ability to control the Android application running on the AndroidTV stick.  It also allows control of a CEC compatible device (like the TV).

Long Press command is supported.

You can also use ADB to install / uninstall an application (like Kodi or myUI.apk) remotely on the AndroidTV device (like a FireTV stick).  Note there is also a Install Digital Signage...this is software that installs to a FireTV 4K stick that enables Allonis's myDigitalSignage system.

ADB is downloadable here: https://developer.android.com/sdk/index.html

Note that ADB is already installed on myServer with the AndroidTV installation.  myUI and Kodi.apk and DigitalSignage are already installed to the myServer\downloads\apk directory.  Don't move these files directly into the downloads directory.  Keep them in the apk directory.

  1. On the myServer PC, shutdown myServer.  This is because only one instance of ADB can be connected to a device at one time.
  2. Download to the myServer\adb\files directory the app you would like to install. (note: for FireTV stick - download the 32bit Android version of the wanted app)
  3. Restart the AndroidTV box to clear any prior ADB sessions.
  4. Ensure ADB is enabled in the Android About Developer's menu
  5. From the myServer PC, open an Administrator's Command Prompt.
  6. cd c:\Program Files (x86)\Allonis\myServer\ADB
  7. type: adb connect <<IP address of the AndroidTV device>>   Sometimes you have to do this twice... 
  8. type: .\adb install <<path to apk file>>  example:  .\adb install files\kodi-18.0-Leia_rc5.2-armeabi-v7a.apk
  9. Your apk file should install on the AndroidTV device.  In a few minutes it should say "Success"
  10. Once your app is installed, you can do a "adb disconnect" to have the AndroidTV box release the Command Prompt device connection.
  11. Start myServer.
  12. Restart the AndroidTV device. You likely will be asked on the AndroidTV box if you want to enable ADB on XXXX device.  Select Always and Yes.  This should be re-enabling the connection to myServer's ADB instance.
  13. You can also "adb uninstall <<application name>>"  When you are ADB connected to the device.
  14. You can also do a "adb devices" command to see what devices are currently connected to your Command Prompt device (not the AndroidTV device).

 

For easy remote management of the AndroidTV box, try using Teamviewer Host app: https://www.teamviewer.com/en/download/mobile-apps/

You can install Teamviewer host initially via ADB (see above) and then connect via your desktop PC via TeamViewer.

CEC remote control:

Here is how things connect:  myServer running AndroidTV driver <> Ethernet <> Wifi Access Point <> WiFi <> FireTV stick <> HDMI cable <> Dumb CEC compatible TV

CEC compatible functions:

const int KEY_TV_ANTENNA_CABLE = 242;
const int KEY_TV_AUDIO_DESCRIPTION = 252;
const int KEY_TV_AUDIO_DESCRIPTION_MIX_DOWN = 254;
const int KEY_TV_AUDIO_DESCRIPTION_MIX_UP = 253;
const int KEY_TV_CONTENTS_MENU = 256;
const int KEY_TV_DATA_SERVICE = 230;
const int KEY_TV_INPUT = 178;
const int KEY_TV_INPUT_COMPONENT_1 = 249;
const int KEY_TV_INPUT_COMPONENT_2 = 250;
const int KEY_TV_INPUT_COMPOSITE_1 = 247;
const int KEY_TV_INPUT_COMPOSITE_2 = 248;
const int KEY_TV_INPUT_HDMI_1 = 243;
const int KEY_TV_INPUT_HDMI_2 = 244;
const int KEY_TV_INPUT_HDMI_3 = 245;
const int KEY_TV_INPUT_HDMI_4 = 246;
const int KEY_TV_INPUT_VGA_1 = 251;
const int KEY_TV_MEDIA_CONTEXT_MENU = 257;
const int KEY_TV_NETWORK = 241;
const int KEY_TV_NUMBER_ENTRY = 234;
const int KEY_TV_POWER = 177;
const int KEY_TV_RADIO_SERVICE = 232;
const int KEY_TV_SATELLITE = 237;
const int KEY_TV_SATELLITE_BS = 238;
const int KEY_TV_SATELLITE_CS = 239;
const int KEY_TV_SATELLITE_SERVICE = 240;
const int KEY_TV_TELETEXT = 233;
const int KEY_TV_TERRESTRIAL_ANALOG = 235;
const int KEY_TV_TERRESTRIAL_DIGITAL = 236;
const int KEY_TV_TIMER_PROGRAMMING = 258;
const int KEY_TV_ZOOM_MODE = 255;

 Example of CEC command:  AV|75~CEC~Power~Off

You can now install the myServer Kodi Application to play a movie.  Click HERE

 

 

 Connectivity via ADB

Confirm your device is connected ADB via USB:

ADB Devices

You should see the device(s)

If you run  adb shell ls /sdcard/ 

You should see the USB connected devices directory to confirm connection.

Ensure your device is also connected to the ethernet network:

sudo nmap -p- 192.168.1.41    Checks if any ports are open.  ADB default is 5555.  SmartRemote and SmartSwitch are on 55055

 adb tcpip 5555    If connected via a USB cable, sends ADB via ethernet over port 5555

adb connect 192.168.1.44:5555    Connects the computer to the ADB device via IP.

 You should be able to disconnect the USB cable and still issue ADB commands.

Documentation below is in process and not to be used (yet)

 

ADB Command Cheat Sheet

 

adb help // List all comands
   
  == Adb Server
  adb kill-server
  adb start-server
   
  == Adb Reboot
  adb reboot
  adb reboot recovery
  adb reboot-bootloader
  adb root //restarts adb with root permissions
   
  == Shell
  adb shell // Open or run commands in a terminal on the host Android device.
   
  == Devices
  adb usb
  adb devices //show devices attached
  adb devices -l //devices (product/model)
  adb connect ip_address_of_device
   
  == Get device android version
  adb shell getprop ro.build.version.release
   
  == LogCat
  adb logcat
  adb logcat -c // clear // The parameter -c will clear the current logs on the device.
  adb logcat -d > [path_to_file] // Save the logcat output to a file on the local system.
  adb bugreport > [path_to_file] // Will dump the whole device information like dumpstate, dumpsys and logcat output.
   
  == Files
  adb push [source] [destination] // Copy files from your computer to your phone.
  adb pull [device file location] [local file location] // Copy files from your phone to your computer.
   
  == App install
  adb -e install path/to/app.apk
   
  -d - directs command to the only connected USB device...
  -e - directs command to the only running emulator...
  -s <serial number> ...
  -p <product name or path> ...
  The flag you decide to use has to come before the actual adb command:
   
  adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X install -r com.myAppPackage // Install the given app on all connected devices.
   
  == Uninstalling app from device
  adb uninstall com.myAppPackage
  adb uninstall <app .apk name>
  adb uninstall -k <app .apk name> -> "Uninstall .apk withour deleting data"
   
  adb shell pm uninstall com.example.MyApp
  adb shell pm clear [package] // Deletes all data associated with a package.
   
  adb devices | tail -n +2 | cut -sf 1 | xargs -IX adb -s X uninstall com.myAppPackage //Uninstall the given app from all connected devices
   
  == Update app
  adb install -r yourApp.apk // -r means re-install the app and keep its data on the device.
  adb install –k <.apk file path on computer>
   
  == Home button
  adb shell am start -W -c android.intent.category.HOME -a android.intent.action.MAIN
   
  == Activity Manager
  adb shell am start -a android.intent.action.VIEW
  adb shell am broadcast -a 'my_action'
   
  adb shell am start -a android.intent.action.CALL -d tel:+972527300294 // Make a call
   
  // Open send sms screen with phone number and the message:
  adb shell am start -a android.intent.action.SENDTO -d sms:+972527300294 --es sms_body "Test --ez exit_on_sent false
   
  // Reset permissions
  adb shell pm reset-permissions -p your.app.package
  adb shell pm grant [packageName] [ Permission] // Grant a permission to an app.
  adb shell pm revoke [packageName] [ Permission] // Revoke a permission from an app.
   
   
  // Emulate device
  adb shell wm size 2048x1536
  adb shell wm density 288
  // And reset to default
  adb shell wm size reset
  adb shell wm density reset
   
  == Print text
  adb shell input text 'Wow, it so cool feature'
   
  == Screenshot
  adb shell screencap -p /sdcard/screenshot.png
   
  $ adb shell
  shell@ $ screencap /sdcard/screen.png
  shell@ $ exit
  $ adb pull /sdcard/screen.png
   
  ---
  adb shell screenrecord /sdcard/NotAbleToLogin.mp4
   
  $ adb shell
  shell@ $ screenrecord --verbose /sdcard/demo.mp4
  (press Control + C to stop)
  shell@ $ exit
  $ adb pull /sdcard/demo.mp4
   
  == Key event
  adb shell input keyevent 3 // Home btn
  adb shell input keyevent 4 // Back btn
  adb shell input keyevent 5 // Call
  adb shell input keyevent 6 // End call
  adb shell input keyevent 26 // Turn Android device ON and OFF. It will toggle device to on/off status.
  adb shell input keyevent 27 // Camera
  adb shell input keyevent 64 // Open browser
  adb shell input keyevent 66 // Enter
  adb shell input keyevent 67 // Delete (backspace)
  adb shell input keyevent 207 // Contacts
  adb shell input keyevent 220 / 221 // Brightness down/up
  adb shell input keyevent 277 / 278 /279 // Cut/Copy/Paste
   
  0 --> "KEYCODE_0"
  1 --> "KEYCODE_SOFT_LEFT"
  2 --> "KEYCODE_SOFT_RIGHT"
  3 --> "KEYCODE_HOME"
  4 --> "KEYCODE_BACK"
  5 --> "KEYCODE_CALL"
  6 --> "KEYCODE_ENDCALL"
  7 --> "KEYCODE_0"
  8 --> "KEYCODE_1"
  9 --> "KEYCODE_2"
  10 --> "KEYCODE_3"
  11 --> "KEYCODE_4"
  12 --> "KEYCODE_5"
  13 --> "KEYCODE_6"
  14 --> "KEYCODE_7"
  15 --> "KEYCODE_8"
  16 --> "KEYCODE_9"
  17 --> "KEYCODE_STAR"
  18 --> "KEYCODE_POUND"
  19 --> "KEYCODE_DPAD_UP"
  20 --> "KEYCODE_DPAD_DOWN"
  21 --> "KEYCODE_DPAD_LEFT"
  22 --> "KEYCODE_DPAD_RIGHT"
  23 --> "KEYCODE_DPAD_CENTER"
  24 --> "KEYCODE_VOLUME_UP"
  25 --> "KEYCODE_VOLUME_DOWN"
  26 --> "KEYCODE_POWER"
  27 --> "KEYCODE_CAMERA"
  28 --> "KEYCODE_CLEAR"
  29 --> "KEYCODE_A"
  30 --> "KEYCODE_B"
  31 --> "KEYCODE_C"
  32 --> "KEYCODE_D"
  33 --> "KEYCODE_E"
  34 --> "KEYCODE_F"
  35 --> "KEYCODE_G"
  36 --> "KEYCODE_H"
  37 --> "KEYCODE_I"
  38 --> "KEYCODE_J"
  39 --> "KEYCODE_K"
  40 --> "KEYCODE_L"
  41 --> "KEYCODE_M"
  42 --> "KEYCODE_N"
  43 --> "KEYCODE_O"
  44 --> "KEYCODE_P"
  45 --> "KEYCODE_Q"
  46 --> "KEYCODE_R"
  47 --> "KEYCODE_S"
  48 --> "KEYCODE_T"
  49 --> "KEYCODE_U"
  50 --> "KEYCODE_V"
  51 --> "KEYCODE_W"
  52 --> "KEYCODE_X"
  53 --> "KEYCODE_Y"
  54 --> "KEYCODE_Z"
  55 --> "KEYCODE_COMMA"
  56 --> "KEYCODE_PERIOD"
  57 --> "KEYCODE_ALT_LEFT"
  58 --> "KEYCODE_ALT_RIGHT"
  59 --> "KEYCODE_SHIFT_LEFT"
  60 --> "KEYCODE_SHIFT_RIGHT"
  61 --> "KEYCODE_TAB"
  62 --> "KEYCODE_SPACE"
  63 --> "KEYCODE_SYM"
  64 --> "KEYCODE_EXPLORER"
  65 --> "KEYCODE_ENVELOPE"
  66 --> "KEYCODE_ENTER"
  67 --> "KEYCODE_DEL"
  68 --> "KEYCODE_GRAVE"
  69 --> "KEYCODE_MINUS"
  70 --> "KEYCODE_EQUALS"
  71 --> "KEYCODE_LEFT_BRACKET"
  72 --> "KEYCODE_RIGHT_BRACKET"
  73 --> "KEYCODE_BACKSLASH"
  74 --> "KEYCODE_SEMICOLON"
  75 --> "KEYCODE_APOSTROPHE"
  76 --> "KEYCODE_SLASH"
  77 --> "KEYCODE_AT"
  78 --> "KEYCODE_NUM"
  79 --> "KEYCODE_HEADSETHOOK"
  80 --> "KEYCODE_FOCUS"
  81 --> "KEYCODE_PLUS"
  82 --> "KEYCODE_MENU"
  83 --> "KEYCODE_NOTIFICATION"
  84 --> "KEYCODE_SEARCH"
  85 --> "KEYCODE_MEDIA_PLAY_PAUSE"
  86 --> "KEYCODE_MEDIA_STOP"
  87 --> "KEYCODE_MEDIA_NEXT"
  88 --> "KEYCODE_MEDIA_PREVIOUS"
  89 --> "KEYCODE_MEDIA_REWIND"
  90 --> "KEYCODE_MEDIA_FAST_FORWARD"
  91 --> "KEYCODE_MUTE"
  92 --> "KEYCODE_PAGE_UP"
  93 --> "KEYCODE_PAGE_DOWN"
  94 --> "KEYCODE_PICTSYMBOLS"
  ...
  122 --> "KEYCODE_MOVE_HOME"
  123 --> "KEYCODE_MOVE_END"
  // https://developer.android.com/reference/android/view/KeyEvent.html
   
   
  == ShPref
  # replace org.example.app with your application id
   
  # Add a value to default shared preferences.
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key key_name --es value "hello world!"'
   
  # Remove a value to default shared preferences.
  adb shell 'am broadcast -a org.example.app.sp.REMOVE --es key key_name'
   
  # Clear all default shared preferences.
  adb shell 'am broadcast -a org.example.app.sp.CLEAR --es key key_name'
   
  # It's also possible to specify shared preferences file.
  adb shell 'am broadcast -a org.example.app.sp.PUT --es name Game --es key level --ei value 10'
   
  # Data types
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key string --es value "hello world!"'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key boolean --ez value true'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key float --ef value 3.14159'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key int --ei value 2015'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key long --el value 9223372036854775807'
   
  # Restart application process after making changes
  adb shell 'am broadcast -a org.example.app.sp.CLEAR --ez restart true'
   
  == Monkey
  adb shell monkey -p com.myAppPackage -v 10000 -s 100 // monkey tool is generating 10.000 random events on the real device
   
  == Paths
  /data/data/<package>/databases (app databases)
  /data/data/<package>/shared_prefs/ (shared preferences)
  /data/app (apk installed by user)
  /system/app (pre-installed APK files)
  /mmt/asec (encrypted apps) (App2SD)
  /mmt/emmc (internal SD Card)
  /mmt/adcard (external/Internal SD Card)
  /mmt/adcard/external_sd (external SD Card)
   
  adb shell ls (list directory contents)
  adb shell ls -s (print size of each file)
  adb shell ls -R (list subdirectories recursively)
   
  == Device onformation
  adb get-statе (print device state)
  adb get-serialno (get the serial number)
  adb shell dumpsys iphonesybinfo (get the IMEI)
  adb shell netstat (list TCP connectivity)
  adb shell pwd (print current working directory)
  adb shell dumpsys battery (battery status)
  adb shell pm list features (list phone features)
  adb shell service list (list all services)
  adb shell dumpsys activity <package>/<activity> (activity info)
  adb shell ps (print process status)
  adb shell wm size (displays the current screen resolution)
  dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' (print current app's opened activity)
   
  == Package info
  adb shell list packages (list package names)
  adb shell list packages -r (list package name + path to apks)
  adb shell list packages -3 (list third party package names)
  adb shell list packages -s (list only system packages)
  adb shell list packages -u (list package names + uninstalled)
  adb shell dumpsys package packages (list info on all apps)
  adb shell dump <name> (list info on one package)
  adb shell path <package> (path to the apk file)
   
  ==Configure Settings Commands
  adb shell dumpsys battery set level <n> (change the level from 0 to 100)
  adb shell dumpsys battery set status<n> (change the level to unknown, charging, discharging, not charging or full)
  adb shell dumpsys battery reset (reset the battery)
  adb shell dumpsys battery set usb <n> (change the status of USB connection. ON or OFF)
  adb shell wm size WxH (sets the resolution to WxH)
   
   
  == Device Related Commands
  adb reboot-recovery (reboot device into recovery mode)
  adb reboot fastboot (reboot device into recovery mode)
  adb shell screencap -p "/path/to/screenshot.png" (capture screenshot)
  adb shell screenrecord "/path/to/record.mp4" (record device screen)
  adb backup -apk -all -f backup.ab (backup settings and apps)
  adb backup -apk -shared -all -f backup.ab (backup settings, apps and shared storage)
  adb backup -apk -nosystem -all -f backup.ab (backup only non-system apps)
  adb restore backup.ab (restore a previous backup)
  adb shell am start|startservice|broadcast <INTENT>[<COMPONENT>]
  -a <ACTION> e.g. android.intent.action.VIEW
  -c <CATEGORY> e.g. android.intent.category.LAUNCHER (start activity intent)
   
  adb shell am start -a android.intent.action.VIEW -d URL (open URL)
  adb shell am start -t image/* -a android.intent.action.VIEW (opens gallery)
   
  == Logs
  adb logcat [options] [filter] [filter] (view device log)
  adb bugreport (print bug reports)
   
  == Other
  adb backup // Create a full backup of your phone and save to the computer.
  adb restore // Restore a backup to your phone.
  adb sideload // Push and flash custom ROMs and zips from your computer.
   
  fastboot devices
  // Check connection and get basic information about devices connected to the computer.
  // This is essentially the same command as adb devices from earlier.
  //However, it works in the bootloader, which ADB does not. Handy for ensuring that you have properly established a connection.
   
   
  --------------------------------------------------------------------------------
  Shared Preferences
   
  # replace org.example.app with your application id
   
  # Add a value to default shared preferences.
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key key_name --es value "hello world!"'
   
  # Remove a value to default shared preferences.
  adb shell 'am broadcast -a org.example.app.sp.REMOVE --es key key_name'
   
  # Clear all default shared preferences.
  adb shell 'am broadcast -a org.example.app.sp.CLEAR --es key key_name'
   
  # It's also possible to specify shared preferences file.
  adb shell 'am broadcast -a org.example.app.sp.PUT --es name Game --es key level --ei value 10'
   
  # Data types
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key string --es value "hello world!"'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key boolean --ez value true'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key float --ef value 3.14159'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key int --ei value 2015'
  adb shell 'am broadcast -a org.example.app.sp.PUT --es key long --el value 9223372036854775807'
   
  # Restart application process after making changes
  adb shell 'am broadcast -a org.example.app.sp.CLEAR --ez restart true'
  --------------------------------------------------------------------------------
   
  === Few bash snippets ===
  @Source (https://jonfhancock.com/bash-your-way-to-better-android-development-1169bc3e0424)
   
  === Using tail -n
  //Use tail to remove the first line. Actually two lines. The first one is just a newline. The second is “List of devices attached.”
  $ adb devices | tail -n +2
   
  === Using cut -sf
  // Cut the last word and any white space off the end of each line.
  $ adb devices | tail -n +2 | cut -sf -1
   
  === Using xargs -I
  // Given the -I option, xargs will perform an action for each line of text that we feed into it.
  // We can give the line a variable name to use in commands that xargs can execute.
  $ adb devices | tail -n +2 | cut -sf -1 | xargs -I X echo X aw yiss
   
  === Three options below together
  // Will print android version of all connected devices
  adb devices | tail -n +2 | cut -sf -1 | xargs -I X adb -s X shell getprop ro.build.version.release
   
  === Using alias
  -- Example 1
  alias tellMeMore=echo
  tellMeMore "hi there"
  Output => hi there
  -- Example 2
  // Define alias
  alias apkinstall="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1"
  // And you can use it later
  apkinstall ~/Downloads/MyAppRelease.apk // Install an apk on all devices
  -- Example 3
  alias rmapp="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X uninstall $1"
  rmapp com.example.myapp // Uninstall a package from all devices
  -- Example 4
  alias clearapp="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell pm clear $1"
  clearapp com.example.myapp // Clear data on all devices (leave installed)
  -- Example 5
  alias startintent="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell am start $1"
  startintent https://twitter.com/JonFHancock // Launch a deep link on all devices
   
   
  Setting up your .bash_profile
  Finally, to make this all reusable even after rebooting your computer (aliases only last through the current session), we have to add these to your .bash_profile. You might or might not already have a .bash_profile, so let’s make sure we append to it rather than overwriting it. Just open a terminal, and run the following command
   
  touch .bash_profile && open .bash_profile
   
  This will create it if it doesn’t already exist, and open it in a text editor either way. Now just copy and paste all of the aliases into it, save, and close.
   
  alias startintent="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell am start $1"
  alias apkinstall="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X install -r $1"
  alias rmapp="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X uninstall $1"
  alias clearapp="adb devices | tail -n +2 | cut -sf 1 | xargs -I X adb -s X shell pm clear $1"
   
   
  ===============================================================
  Sources:
  - Internet
  - https://www.automatetheplanet.com/adb-cheat-sheet/

 

Known Issues

Discovery: Uses Ping to see if a devices is live on that IP.  If alive, then uses nmap to discover open ports that might be used by ADB.  nmap doesn't traverse multiple networks.  So if device is a Wifi device, then it might not be discoverable via the ethernet network.

If there are multiple NIC on the myServer 6 controller, discovery will attempt to find ADB devices on all networks.

If the network is very slow, Discovery might not wait long enough for a reply to find the device.  This can be changed, but then Discovery will take signficantly longer to scan all networks.  Recommendation is to fix slow network problems or manually add the device.

Need to add full command line to top of command builder list for ease of use.

Have to restart myServer for new ADB added device to display in the PowerTesting UI.

 3/15/2023:  Driver update: Refactoring done to the code and we are seeing about a 100ms decrease in response times to commands with this update.

 4/12/2024:

Test:

Download this arm64 version from  github.com/lzhiyong/android-sdk-tools/re...s-static-aarch64.zip .
Unzip this to the /usr/lib/android-sdk/platform-tools folder replacing the files that are there. You'll need sudo for this.

wget  github.com/lzhiyong/android-sdk-tools/re...s-static-aarch64.zip
unzip android-sdk-tools-static-aarch64.zip
sudo cp platform-tools/* /usr/lib/android-sdk/platform-tools

Then ADB pair should work.

On the Android device make sure you enable Wireless debugging and click on ."Pair device with pairing code"
Note the IP Address & Port shown in the Pair with device dialog.

From the myServer controller's terminal window issue the command
adb pair ip Address and port from above.
for example: adb pair 192.168.0.124:45361

When prompted to "Enter pairing code" type in the pairing code as displayed on the Android device.
You should get a "Successfully paired to" message displaying a pairing guid like [guid=adb-R5CRC3LT5RK-jtXDDE]

Now from the Android driver in the Dashboard you will need to manually add a new AndroidTV device.
Select AddDevice from the command builder:

Make sure to select IP Port 0, and set the MAC Address field to the value of the quid from above. Your command should look something like.
AndroidTV|AddDevice~New ATV~192.168.0.124~0~AndroidTV~0~~adb-R5CRC3LT5RK-jtXDDE~Unknown

Execute the command to add the device.

When the AndroidTV device is using port 0 that will trigger additional logic in the driver to automatically go out and find the current adb port on the device and use that.
Once it finds the port it will connect to it.

Now, our experience with my Samsung phone is that each time the phone is restarted it will not automatically enabled wireless adb debugging. You'll have to remember to go back in and re-enable when your Android device restarts. Also, another added feature is that it will assign a new adb port every time it gets enabled. The driver has logic in it to catch the old port becoming invalid and going out and finding the new one.

This has been working fine here using my Samsung Galaxy phone as the test device.

Once it is connected then all the normal adb commands will work.

Lots of steps but the bulk of them only need to happen once.

4/20/2025: Updated myServer master image put wrong version of Android ADB as part of the build.  To fix, remove: Allonis/application/platform tools/ADB  Delete the ADB folder and contents.

 

Contact Us

We are always open for a quick chat! Give us a call or email us any time and we will respond shortly.

  (248)918-0123
  info@allonis.com