Acer C110 beamer under Linux.
Antonio Ospite ( a2 ) has done some USB snooping to work out the commands and data for the C110 and written the libam7xxx library and some applications to run the device under Linux.
http://ao2.it/en/blog/2012/01/18/usb-projectors-linux-and-libam7xxx
http://ao2.it/en/blog/2012/01/18/usb-projectors-linux-and-libam7xxx
The Acer C110 is a USB pocket-sized LED beamer which is pleasantly bright ( 50 lumens ). It will run automatically under Windows XP and up, but I use Linux and this is my log of getting it working under Xubuntu 12.04.
So far I have got 'picoproj' to build and display a JPEG picture, albeit with a strangely-coloured frame around it.
To get the minimum working, I added/removed/modified stuff to make the build ignore the Doxygen, man, FFMPEG and XBC parts.
The next step would be to build the Am7xxx-play programme to show videos; this mostly involves the build being able to find the XCB components, which is probably best done by writing a .pc file for it, once I've worked out how.
What I really want it for is to show my laptop screen, possibly using back-lit projection so I can sit nearer the display.
---------------------------------------------------------------------------------------------------------
Rough-and-ready log...
getting picoproj to build.
================================================================================================
-- no cmake:
--------------------------------------------------------------------
install cmake.
================================================================================================
-- I probably also installed some FFMPEG, libav and libsw stuff using Synaptic here.
-- When I installed Xubuntu, I ticked the boxes for 3rd-party drivers for Flash, MP3 etc.
This may have helped a bit here.
================================================================================================
$ cd build
$ cmake ../
CMake Error at CMakeLists.txt:21 (include):
include could not find load file:
MaintenanceTools
-- checking for module 'xcb'
-- package 'xcb' not found
-- Could NOT find XCB (missing: LIBXCB_INCLUDE_DIR LIBXCB_LIBRARIES)
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FFMPEG_LIBSWSCALE_LIBRARIES
linked by target "am7xxx-play" in directory /home/roly/src/libam7xxx-0.1.2/examples
LIBUSB_1_INCLUDE_DIR
used as include directory in directory /home/roly/src/libam7xxx-0.1.2/src
LIBUSB_1_LIBRARY
linked by target "am7xxx" in directory /home/roly/src/libam7xxx-0.1.2/src
linked by target "am7xxx-static" in directory /home/roly/src/libam7xxx-0.1.2/src
LIBXCB_LIBRARIES (ADVANCED)
linked by target "am7xxx-play" in directory /home/roly/src/libam7xxx-0.1.2/examples
-- Configuring incomplete, errors occurred!
--------------------------------------------------------------------
--> MaintenanceTools error: commented-out /CMakeLists.txt/#include (MaintenanceTools)
================================================================================================
$ cmake ../
-- checking for module 'xcb'
-- package 'xcb' not found
-- Could NOT find XCB (missing: LIBXCB_INCLUDE_DIR LIBXCB_LIBRARIES)
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FFMPEG_LIBSWSCALE_LIBRARIES
linked by target "am7xxx-play" in directory /home/roly/src/libam7xxx-0.1.2/examples
LIBUSB_1_INCLUDE_DIR
used as include directory in directory /home/roly/src/libam7xxx-0.1.2/src
LIBUSB_1_LIBRARY
linked by target "am7xxx" in directory /home/roly/src/libam7xxx-0.1.2/src
linked by target "am7xxx-static" in directory /home/roly/src/libam7xxx-0.1.2/src
LIBXCB_LIBRARIES (ADVANCED)
linked by target "am7xxx-play" in directory /home/roly/src/libam7xxx-0.1.2/examples
-- Configuring incomplete, errors occurred!
--------------------------------------------------------------------
-- lib is here: /usr/lib/i386-linux-gnu/libxcb.so.1
-- include is here: /usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/xcbc.h
-- fail: tried: cmake ../ -DLIBXCB_INCLUDE_DIR=/usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/
-DLIBXCB_LIBRARIES=/usr/lib/i386-linux-gnu/
================================================================================================
$ cmake ../ -DLIBXCB_INCLUDE_DIR=/usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/xcbc.h -DLIBXCB_LIBRARIES=/usr/lib/i386-linux-gnu
-- checking for module 'xcb'
-- package 'xcb' not found
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FFMPEG_LIBSWSCALE_LIBRARIES
linked by target "am7xxx-play" in directory /home/roly/src/libam7xxx-0.1.2/examples
LIBUSB_1_INCLUDE_DIR
used as include directory in directory /home/roly/src/libam7xxx-0.1.2/src
LIBUSB_1_LIBRARY
linked by target "am7xxx" in directory /home/roly/src/libam7xxx-0.1.2/src
linked by target "am7xxx-static" in directory /home/roly/src/libam7xxx-0.1.2/src
-- Configuring incomplete, errors occurred!
--------------------------------------------------------------------
-- Doxygen error: commented out /CMakeLists.txt/# add_subdirectory(doc)
================================================================================================
$ cmake ../ -DLIBXCB_INCLUDE_DIR=/usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/ -DLIBXCB_LIBRARIES=/usr/lib/i386-linux-gnu/
-- checking for module 'xcb'
-- package 'xcb' not found
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FFMPEG_LIBSWSCALE_LIBRARIES
linked by target "am7xxx-play" in directory /home/roly/src/libam7xxx-0.1.2/examples
LIBUSB_1_INCLUDE_DIR
used as include directory in directory /home/roly/src/libam7xxx-0.1.2/src
LIBUSB_1_LIBRARY
linked by target "am7xxx" in directory /home/roly/src/libam7xxx-0.1.2/src
linked by target "am7xxx-static" in directory /home/roly/src/libam7xxx-0.1.2/src
-- Configuring incomplete, errors occurred!
--------------------------------------------------------------------
-- xcb is needed in /examples/CMakeLists.txt/find_package(XCB)
-- LIBXCB_INCLUDE_DIRS is needed there.
--> commented out everything below "Build a more complete example" , leaving
only picoproj.
================================================================================================
$ cmake ../ -DLIBXCB_INCLUDE_DIR=/usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/ -DLIBXCB_LIBRARIES=/usr/lib/i386-linux-gnu/
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LIBUSB_1_INCLUDE_DIR
used as include directory in directory /home/roly/src/libam7xxx-0.1.2/src
LIBUSB_1_LIBRARY
linked by target "am7xxx" in directory /home/roly/src/libam7xxx-0.1.2/src
linked by target "am7xxx-static" in directory /home/roly/src/libam7xxx-0.1.2/src
-- Configuring incomplete, errors occurred!
--------------------------------------------------------------------
-- LIBUSB_1_INCLUDE_DIRS: is in /src/CMakeLists.txt/include_directories(${LIBUSB_1_INCLUDE_DIRS})
--> installed libusb-1.0-0-dev.
includes a .pc file !
================================================================================================
$ cmake ../ -DLIBXCB_INCLUDE_DIR=/usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/ -DLIBXCB_LIBRARIES=/usr/lib/i386-linux-gnu/
-- Found libusb-1.0:
-- - Includes: /usr/include/libusb-1.0
-- - Libraries: /usr/lib/i386-linux-gnu/libusb-1.0.so
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
LIBXCB_INCLUDE_DIR
LIBXCB_LIBRARIES
-- Build files have been written to: /home/roly/src/libam7xxx-0.1.2/build
--------------------------------------------------------------------
--> left out: -DLIBXCB_INCLUDE_DIR=/usr/src/linux-headers-3.2.0-27-generic/include/config/crypto/
-DLIBXCB_LIBRARIES=/usr/lib/i386-linux-gnu/
================================================================================================
$ cmake ../
-- Found libusb-1.0:
-- - Includes: /usr/include/libusb-1.0
-- - Libraries: /usr/lib/i386-linux-gnu/libusb-1.0.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/roly/src/libam7xxx-0.1.2/build
--------------------------------------------------------------------
Yayy !
-- make: OK
-- libs in /build/lib
-- picoproj in /build/bin
-- have to invoke with "./picoproj -f FILE "
--------------------------------------------------------------------
$ ./picoproj -h
usage: ./picoproj [OPTIONS]
OPTIONS:
-f <filename> the image file to upload
-F <format> the image format to use (default is JPEG)
SUPPORTED FORMATS:
1 - JPEG
2 - NV12
-l <log level> the verbosity level of libam7xxx output (0-5)
-p <power level> power level of device, between 0 (off) and 4 (maximum)
WARNING: Level 2 and greater require the master AND
the slave connector to be plugged in.
-W <image width> the width of the image to upload
-H <image height> the height of the image to upload
-h this help message
EXAMPLE OF USE:
./picoproj -f file.jpg -F 1 -l 5 -W 800 -H 480
-------------------------------------------------------------------
-- -p 0 = off
-- -p 1 = norm
-- -p 2 didn't work
--------------------------------------------------------------------