Question: My goal is to be able to type a one word command and get a screenshot from a rooted Nexus One attached by USB.

So far, I can get the framebuffer which I believe is a `32bit xRGB888` raw image by pulling it like this:

```
adb pull /dev/graphics/fb0 fb0

```

From there though, I'm having a hard time getting it converted to a png. I'm trying with ffmpeg like this:

```
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb8888 -s 480x800 -i fb0 -f image2 -vcodec png image.png

```

That creates a lovely purple image that has parts that vaguely resemble the screen, but it's by no means a clean screenshot.

Answer: 
A vastly easier solution for ICS is to use the following from the command line

```
adb shell /system/bin/screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png screenshot.png

```

This'll save the screenshot.png file in the current directory.

Tested on a Samsung Galaxy SII & SII running 4.0.3.
Using my HTC Hero (and hence adjusting from 480x800 to 320x480), this works if I use rgb565 instead of 8888:

```
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565 -s 320x480 -i fb0 -f image2 -vcodec png image.png

```