Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android USB debugging in VirtualBox

Tags:

I am trying to get mono for android (aka monodroid) working within a windows 7 virtual machine on virtualbox but I am having issues with the adb connection to my phone. When I run "adb devices" to list the devices present it show up no problem, but when I attempt to run an "adb install", logcat, or push it hangs. Currently there is a bug in virtualbox which applies to this but I was hoping someone more knowledgeable than myself would have a workaround.

https://www.virtualbox.org/ticket/6620

Of coarse non of this would be an issue if Xamarin released a linux port of their product or if I got familiar with Java, but I suppose those are slightly different issues.

like image 289
Brian Avatar asked Sep 18 '12 13:09

Brian


People also ask

How do I connect my phone to my VirtualBox?

Ensure that your VM has a USB controller added in its hardware configuration, and that Virtualbox Guest Additions are installed in the VM. Once you've done this, you'll see a USB icon at the bottom of your VM's window. Click on that, then select your Android device to give control of it to the VM.

How do I connect my Android to a virtual machine?

Select VM > Removable Devices and select your mobile device. Alternatively, you can select the device from the corner of the VM window. A USB connectivity dialog box is displayed. Click OK to continue.

Can I run Android on Oracle VirtualBox?

Launch the VMTo start installing Android, just select the VM and then click start. You may be asked to “Select a start-up disk”, if so, select the Android ISO. The next screen will show boot options, to install Android to the VM you need to scroll down and select the “Installation” option.


2 Answers

Brian, one workaround you might consider is to make your VM host an ADB host as well. Then you can just connect your VM client to it over TCP / IP. Here's the general idea for that setup:

  1. Install the Android SDK on the host machine. You should only require the platform-tools package which includes adb.
  2. Don't allow your VM client to take ownership of the Android device, so disable any VirtualBox USB filter rules you have and it also wouldn't hurt to then detach and reattach the device.
  3. From your VM client, run adb kill-server. Make it a tskill adb for certainty. If you have any running instances of Eclipse, you'll want to shut those down first because it'll actually launch adb in the background. Don't skip this step.
  4. From the host, execute adb devices. If all goes well (and it should), you'll see your device listed. It should look something like this (note the port number and sorry for the mangling):

    * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached 015d2994ed200409    device 

At this point, your host should have an ADB server running at port 5037. You can check this from the VM client by running telnet 10.0.2.2 5037, where 10.0.2.2 is the default IP for VirtualBox hosts and 5037 is the default ADB port noted above.

  1. Now you must either forward the ports from your host to your VM client, or otherwise connect ADB directly to your host IP:port. If you're like me, you'll find the ADBHOST and ANDROID_ADB_SERVER_PORT variables to be poorly documented and easy to screw up. For this reason, consider simple port fowarding over ssh (maybe via Cygwin) like so from the VM client:

    autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2 
  2. Finally, run adb devices from your VM client. If you see "daemon not running," it means your port fowarding is screwed up. Otherwise you should see your device and be able to logcat all day. One noteworthy point is that you won't have an adb daemon running on your VM client, except for when you're actually using the debug bridge, of course.

I've used a similar mechanism for debugging devices over the network that are connected to remote machines and it worked well.

like image 51
Stephen Niedzielski Avatar answered Sep 22 '22 15:09

Stephen Niedzielski


Not sure what has changed in VirtualBox since the question was posted, but selecting the usb device from VirtualBox menu Devices -> USB -> DeviceName worked seamlessly. I am working on VirtualBox 5.1.2 r108956.

like image 27
FUD Avatar answered Sep 24 '22 15:09

FUD