Tuesday, July 6, 2010

Nexus One Support in Ubuntu 10.04

I recently purchased the Nexus One from Google. It is quite an amazing phone and I've been really happy with it. I've taken interest in developing for the Android platform now that I have one. Luckily Google has provided a very good resource for Android app development at http://developer.android.com/.

Today I was working on allowing me to upload my applications onto my Nexus One so that I could test the software on a real device. Well I ran into an issue after following Google's tutorial on how to do it located here. I run Ubuntu 10.04 on my main development machine and so I followed the instructs for how to do it for Linux. Well when I got to the end of the tutorial when it tells you to test your the setup with the following command:
adb devices

I got the following output:

List of devices attached

???????????? no permissions

It turns out that Google's instructions have not been updated so reflect how to get the Nexus One to work under Linux. Well after a bit of research I came across the following blog post that explained it. Basically the list of USB Vendor IDs does not have listed the proper value for the Nexus One. I had selected to use HTC's Vendor ID ("0bb4") being that the Nexus One is actually produced by HTC, however that is incorrect. Instead you need to use the Vendor ID of "18d1". So the following line should be in /etc/udev/rules.d/51-android.rules

SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"

NOTE: Be sure not to capitalize the D in 18d1, doing this will cause this solution not to work.

Now that you have added that line to the file, you will simply need to restart udev. With the Nexus One unplugged from your system run this command:

sudo service udev restart

Now you can plug in your Nexus One and run:

adb devices

You should see something like this:

List of devices attached

???????????????? device

I hope this helps and post below if you need any further help.