HOW-TO use a PicoPix on GNU/Linux
=================================

Philips/SagemCom pico projectors, like for instance the PicoPix 2055, usually
have a WVGA (854 x 480 pixels) native resolution, however they can be used to
project other resolutions if the software rescales the image.

First, update your system and download the free libam7xxx library and the
related programs.

On Debian and Ubuntu systems this can be done with the following commands:

  sudo apt-get update
  sudo apt-get install libam7xxx0.1-bin

Plug your PicoPix into one or two USB slots of your personal computer
(sometimes the second USB port is needed to ensure that the PicoPix has enough
power).

Wait for Philips logo to appear.

After the logo has disappeared, execute the following command in a terminal:

  am7xxx-play -f x11grab -i :0.0

The video projection is on.

You can have two simple scripts to execute and terminate the program from
a graphical interface.

PicoPix-START.sh:

  #!/bin/sh
  am7xxx-play -f x11grab -i :0.0 -p 1 -z 0


PicoPix-STOP.sh:

  #!/bin/sh
  killall am7xxx-play
  am7xxx-play -f x11grab -i :0.0 -p 0 -z 1 &
  sleep 1
  killall am7xxx-play


Save the shell scripts from above in files, and give the execute permissions
to the owner (or user group) via the command line  or via the graphical
interface
(http://sourcedigit.com/20111-how-to-run-a-shell-file-in-ubuntu-run-sh-file-in-ubuntu/).
You will then be able to execute the file by double-clicking on it.

If you want to specify a particular resolution you can pass it as a command
line option:

  am7xxx-play -f x11grab -i :0.0 -o video_size=1280x768

When doing so you may notice that your PicoPix does not fully displays the
content of your desktop screen, which can be truncated at the bottom and at
the right. This is because of the WXGA (1280 x 768 pixels) resolution may be
different from your personal computer screen resolution. It is therefore
necessary to modify —temporarily— your personal computer screen resolution to
wanted resolution.

Take the following script:

  #!/bin/sh

  WIDTH=1280
  HEIGHT=768

  OUTPUT="LVDS-1" # See 'xrandr --listmonitors'

  xrandr --newmode $(gtf ${WIDTH} ${HEIGHT} 60 | sed -ne 's/"//g;s/ Modeline //p')
  xrandr --addmode ${OUTPUT} ${WIDTH}x${HEIGHT}_60.00
  xrandr --output ${OUTPUT} --mode ${WIDTH}x${HEIGHT}_60.00
  sleep 1
  am7xxx-play -f x11grab -i :0.0 -p 1 -z 0 -o video_size=${WIDTH}x${HEIGHT}

Note:

In the example above, the personal computer screen is identified as "LVDS-1".
Maybe your computer screen has a different identifier. In this case, you will
have to replace "LVDS-1" with the correct identifier: open your terminal,
type "xrandr" and the terminal will list and describe your different screen
devices (more about xrandr utility here:
http://pkg-xorg.alioth.debian.org/howto/use-xrandr.html).

Also, in order to give back your computer screen its original resolution, you
should create a PicoPix-STOP.sh script like the following:

  #!/bin/sh

  ORIGINAL_WIDTH=1600
  ORIGINAL_HEIGHT=900

  OUTPUT="LVDS-1" # See 'xrandr --listmonitors'

  killall am7xxx-play
  am7xxx-play -f x11grab -i :0.0 -p 0 -z 1 &
  sleep 1
  killall am7xxx-play
  xrandr --output ${OUTPUT} --mode ${ORIGINAL_WIDTH}x${ORIGINAL_HEIGHT}

Note:

In the example above, the original screen resolution is 1600x900 pixels. You
have to change this value and put your screen resolution value which you can
know via xrandr. Same for LVDS-1.

Once your video projection is over, you can execute the PicoPix-STOP.sh script
so that your computer screen returns to its original state.

You can then unplug the projector.

That's all folks!

This text is licensed under WTFPL. See http://www.wtfpl.net/ for more informations.
