VMD Remote is a App for Android-powered devices that allows remote control of a VMD session.


  • VMD 1.9.2 beta or later.
  • An Android device running Android 4.0.3 or higher
  • Wi-Fi. Ideally you will be connected to the same 'subnet' as the VMD server computer that you are wanting to control. If the two are far-removed, network-wise, from each other, your experience may be sub-optimal.


  • If you are on an Android device that has access to the Google Play Store, just go to The Market Page For The VMD Remote Control App and install. This is the preferred way to install the app. You will automatically have access to the latest version.
  • If you are on a device that doesn't have access to the Google Play Store:
    • Make sure that your Android device is configured to allow third party applications. On the Kindle Fire, for instance, you need to click on the Settings Wheel at the top right corner of the home screen, then click on More and then click on Device. From the Device menu, make sure that the option to Allow Installation of Applications is ON. On other devices, on the home screen, go to Settings | Applications and make sure that "Unknown sources" is checked/enabled to allow the installation of non-Market applications.
    • Download and install the application. VMDMobile-release.apk is the current app file.
  • Before running the application, make sure that you have Wi-Fi turned on and that you are properly connected to a Wi-Fi network.

Running and using the App:

On the VMD desktop/laptop computer:

  • Run VMD.
  • From the Extensions menu, you can go to Visualizations | Remote Control to bring up a window where you can configure the session. (Note: If you are on a later version of Windows or have other firewall software installed, you might get a warning about network access. You will need to allow access for the plugin to work properly) The highlighted user in the 'User In Control' list is the only user who can remote control the session. You can select a different user to be in control if you wish.

    Alternatively, there is a text command, mobile, that you use to mobile-enable VMD. If you just type 'mobile' into the console you will be presented with usage instructions:

    vmd > mobile
    mobile usage:
    mobile mode <mode>
       modes: off, move, animate, tracker, user
    mobile port <incoming network port number>
    mobile get  <mode/port/clientList>
    mobile set activeClient NickName IP
    Mode descriptions:
    • off: configure VMD to not accept incoming connections.
    • move: The android device will allow you to rotate, translate, and scale your molecular view. This is the default when you open the plugin window.
    • animate: The android device will act as a 'scrub' to move through a trajectory.
    • tracker: The android device will act as tracker.
    • user: Can be used, in conjunction with a user script, to do whatever you can imagine and write the code for.

    By default, VMD will listen on port 3141. If you need to change this, you can do so.

    get can be used to retrieve, for use in a script, the currently set mode, port, and list of clients that are connected.

You can set the current user in control by calling set activeClient like:

  mobile set activeClient "Kindle Fire" ""
where the name (Kindle Fire) and IP ( match the nickname and IP given for a specific user via the mobile get clientList command.

Want to automatically be able to connect to your VMD session without needing to remember to go the Extension menu every time? Just add:

  mobile mode move
to your VMD startup script.
On the Android device:
  • Launch the app.
  • If this is the first time running, you will first be asked what VMD server you wish to connect to. You need to 'Add A New Server...' and give the fully-qualified domain name of the machine running VMD (it can be a numeric IP address or a domain name). If you are not sure about the name of the VMD server, the plugin window on the desktop will give a possible IP address that you can try. What will end up working really depends on how the various routers and firewalls are configured for your location. While not likely needed, you can also change the port numbers that the connections between the mobile device and the VMD server utilize.
  • Go to Menu | Settings and set Nickname to a descriptive 16 character (or less) name for your device. The Nickname will show up in the VMD mobile plugin window.
On the main screen, the color of the area behind the buttons tells the current connection status:
  • Red - The app is not connected to a VMD desktop. In technical terms, the app has not received any network traffic from a running VMD. It is technically possible, depending on firewall settings, that the app is sucessfully sending information TO the VMD desktop, but isn't seeing anything back.
  • Yellow - The app is connected to a VMD desktop, but is not currently in control of the VMD session.
  • Green - The app is connected to a VMD desktop, and is currently in control of the VMD session.

If you have the VMD server plugin configured to move mode:

  • Pressing a finger on the Android screen and then moving from that spot will cause the molecular system to start rotating in that direction. The farther you move from the initial spot, the faster the rotation.
  • Pinch to zoom in and out.
  • If you touch two fingers to the screen (right next to each other; touching) and drag both fingers in a direction, you will translate the system.
  • If you touch two fingers to the screen and rotate both of them clockwise or counterclockwise, the system will similarly rotate (can be combined with pinch to zoom).

If you have the VMD server plugin configured to translate mode:

  • If you apply a finger to the Android screen and scrub/move to the right, you will increase the trajectory frame you are viewing. Scrubbing/moving to the left will decrease the trajectory frame you are viewing.

Android App Menu options:

  • Take Snapshot - This will take a snapshot image of the current VMD OpenGL screen and download it to your device. The snapshot image will show up in a tab that you can select from the top of the screen.

    Once you have the image on the mobile screen you can pinch to zoom and drag the viewport around. Remember that this is just a static image. No rotating! You can, however, choose to share the image. By pressing the 'share' button you can use any app on your mobile device that supports JPEG images. This will typically include, at a minimum, your email program and any social media sites that you might have an app for.

  • Reset VMD View - The equivalent of pressing the equals ('=') key from within VMD. If you somehow manage to 'lose' the molecule, this is handy.
  • Stop/Start Sending Touchpad - A toggle that will allow you to send or stop sending information about pressing the touchpad. The App starts in a mode of 'send'.
  • Select New Server - If you wish to change the server you are connected to, this will bring up the screen to choose a previously used or new server.
  • Choose Buttons - Configure which button set you wish to see on the screen. The Default button set is Aux-0 through Aux-3. But, other button configurations can be downloaded from the VMD server. See the section below on Button Configuration for more information.
  • Settings - Configure Nickname, Sensitivities, and other settings.
    • Nickname - A descriptive 16 character (or less) name for your device. The Nickname will show up in the VMD mobile plugin window. If you do not set a Nickname, VMD will show a default name (Anonymous User) for your device.
    • Sensitivity - Mobile devices send information to the server at different rates depending on their speed.

    You can turn on additional debugging statements that will show on the second line of the main display, and you choose whether or not you wish to see the VMD remote message in the background of the touchpad area.

Button Configuration:

The buttons at the top of the screen can be configured with VMD on the desktop via scripting. There are four default buttons: 0, 1, 2, and 3. Lets say you have created a TCL script, called button1Pressed that you wanted to be called whenever Button 1 (called Aux-1 in the mobile window) is pressed. Typing the following into the console will do this:

proc button1Pressed { } {
  puts "The Aux-1 button was pressed"

user add key Aux-1 { button1Pressed }
This script will then be called each time that Button 1 is pressed (and would print the above text to the VMD console). Similarly, you can add a script for Aux-0 or Aux-2, or Aux-3.

A more useful way to use the buttons is to create a button group for your desired activity.

To do this you add desired button commands to the group using 'addButton' and then you push the new buttons out to the mobile device by using 'sendButtonConfiguration'.

# -------------------------------------------------------------------------
proc ::remote::configureRepresentations {} {
   addButton Representations CPK { mol modstyle 0 0 CPK } 1
   addButton Representations VDW { mol modstyle 0 0 VDW } 1
   addButton Representations NewCar { mol modstyle 0 0 NewCartoon } 1
   addButton Representations NewRib { mol modstyle 0 0 NewRibbons } 1
   addButton Representations QuickSurf { mol modstyle 0 0 QuickSurf } 1

# -------------------------------------------------------------------------
proc ::remote::configurePlugins {} {

   # No spaces in names! for now

   # view change renderer
   addButton ViewChangeRenderer Prev { ::VCR::goto_prev } 1
   addButton ViewChangeRenderer Prev0.5 { ::VCR::goto_prev 0.5 } 1
   addButton ViewChangeRenderer Next { ::VCR::goto_next } 1
   addButton ViewChangeRenderer Next0.5 { ::VCR::goto_next 0.5 } 1

   # view master
   addButton ViewMaster Prev { ::ViewMaster::do_restore_prev } 1
   addButton ViewMaster Next { ::ViewMaster::do_restore_next } 1
   addButton ViewMaster SaveView { ::ViewMaster::do_save } 1


# ----------------------
If you wish to run these procedures to load these button groups you could type the following into the VMD console:
Once you have pushed the new button configurations to the mobile device, on the device itself you can go to the menu and choose the button group that you wish to see on the screen.