===== Preparation ===== You will need a chumby, one usb-stick with at least 75 Mb of free space and ext2/3 formatting. Since the chumby mounts the USB-Stick in /mnt/usb, this is done the same way when building. :!: Warning :!: This software only works with chumby software version 1.0.7 or higher ===== Arm Toolchain ===== Install the arm crosscompiler toolchain as described here: {{http://wiki.chumby.com/mediawiki/index.php/GNU_Toolchain}} ==== Troubleshooting ==== With Ubuntu 12.04 LTS I got 'No such file or directory' messages when executing the gcc. After installing ia32-libs as suggested by {{http://io-repo.blogspot.de/2011/09/problem-with-codesourcery-tools-arm.html}} everything worked fine. ===== TSlib ===== Library used to get data from the touchscreen. Get it from github: git clone https://github.com/kergoth/tslib.git run autogen ./autogen.sh then configure & make & make install to copy the files ./configure --prefix=/mnt/usb --host=arm-linux make make install ===== Qt ===== Download Qt from {{http://trolltech.com/developer/downloads/qtopia/coregpl}}, install it to a custom folder. Make sure to install the sources! :!: In order to use the api of mysmartgrid you need openssl. See section "openssl" for further information. :!: cd QtSDK/QtSources// ./configure -embedded arm -pch -prefix /mnt/usb -qt-kbd-linuxinput -qt-mouse-tslib -L/mnt/usb/lib -I/mnt/usb/include -nomake examples -nomake demos make make install ===== Demo ===== We are using this demo: {{http://www.jespersaur.com/drupal/images/fckeditor_upload_pictureflow-chumby_1_0.tar.gz}} Unpack & cd, then: /mnt/usb/bin/qmake make mkdir /mnt/usb/test cp pictureflow *jpg /mnt/usb/test touch /mnt/usb/start_sshd Create a file /mnt/usb/chumby.env with the following content: export TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_PLUGINDIR=/mnt/usb/lib/ts #export TSLIB_CONSOLEDEVICE=/dev/ttyS0 export TSLIB_CONFFILE=/mnt/usb/etc/ts.conf export TSLIB_CALIBFILE=/mnt/usb/etc/pointercal export LD_LIBRARY_PATH=/lib:/mnt/usb/lib export POINTERCAL_FILE=/mnt/usb/etc/pointercal export QWS_DISPLAY=LinuxFb:/dev/fb0:mmWidth113:mmHeight85 export QWS_MOUSE_PROTO=tslib:/dev/input/event1 #export QWS_KEYBOARD=LinuxInput:/dev/input/event0 Edit /mnt/usb/etc/ts.conf: # Uncomment if you wish to use the linux input layer event interface module_raw input module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear === Running Demo === - ssh to chumby - cd /mnt/usb - stop_control_panel - source ./chumby.env - run /mnt/usb/bin/ts_calibrate - to test calibration: /mnt/usb/bin/ts_test - run /mnt/usb/test/pictureflow -qws & (note the &, application will crash otherwise) ===== Controlpanel source ===== git clone https://github.com/mysmartgrid/chumby-controlpanel.git ===== Libraries needed for controlpanel ===== ==== libiw ==== Download [[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz]] copy iwlib.h to /mnt/usb/include/iwlib.h and wireless.22.h to /mnt/usb/include/wireless.h copy /usr/lib/libiw.so.29 to /mnt/usb/lib/libiw.so.29 and create a symlink/copy /mnt/usb/lib/libiw.so ==== alsalib ==== Download [[http://files.chumby.com/source/falconwing/build2370/alsa-lib_1.0.10.orig.tar.gz]] configure: ./configure --prefix=/opt/arm-2008q3 --datadir /mnt/usb/share --libdir /mnt/usb/lib/alsa-lib --host=arm-linux host_alias=arm-linux copy sound and all header files in include/ to /mnt/usb/include/alsa/ copy /usr/lib/libasound.so and /usr/lib/libasound.so.2 to /mnt/usb/lib/ ==== Bluetune, Atomix and Neptune ==== Bluetune is used to play media such as mp3-files, webradio, etc. It is included in the chumby software but needs to be available for compiling and linking. Download [[http://files.chumby.com/source/ironforge/build733/BlueTune-1-3-1-32-chumby-1.6.0.tar.gz]] and compile it according to the supplied manual. For me the following patches helped: --- bt-ref/BlueTune/Build/Targets/arm-chumby-linux/Config.scons 2008-07-14 21:19:53.000000000 +0200 +++ BlueTune-1-3-1-32-chumby-1.6.0/BlueTune/Build/Targets/arm-chumby-linux/Config.scons 2012-11-23 20:45:10.601406637 +0100 @@ -1,7 +1,7 @@ -GCC_ARM_OPTIONS='-mcpu=arm9e -mtune=arm9e' -LoadTool('gcc-generic', env, gcc_cross_prefix='arm-linux', gcc_extra_options=GCC_ARM_OPTIONS) +GCC_ARM_OPTIONS='-I/usr/arm-2008q3/include -L/usr/arm-2008q3/lib -mcpu=arm9e -mtune=arm9e' +LoadTool('gcc-generic', env, gcc_cross_prefix='arm-none-linux-gnueabi', gcc_extra_options=GCC_ARM_OPTIONS) env['BLT_RELAXED_ENV'] = env.Copy() -LoadTool('gcc-generic', env['BLT_RELAXED_ENV'], gcc_cross_prefix = 'arm-linux', gcc_extra_options=GCC_ARM_OPTIONS, gcc_relaxed_warnings=True) +LoadTool('gcc-generic', env['BLT_RELAXED_ENV'], gcc_cross_prefix = 'arm-none-linux-gnueabi', gcc_extra_options=GCC_ARM_OPTIONS, gcc_relaxed_warnings=True) env['BLT_CPU_CONFIG_NO_FLOAT'] = True env['ATX_SYSTEM_SOURCES']={'System/StdC':'*.c', 'System/Bsd':'*.c', 'System/Posix':'*.c'} --- bt-ref/Makefile 2008-03-26 21:45:27.000000000 +0100 +++ BlueTune-1-3-1-32-chumby-1.6.0/Makefile 2012-11-23 20:49:07.561462806 +0100 @@ -15,7 +15,7 @@ # BlueTune uses its own funny identifier for arm-linux BTTARGET=$(TARGET) -ifeq ($(TARGET),arm-linux) +ifeq ($(TARGET),arm-none-linux-gnueabi) BTTARGET=arm-chumby-linux endif BTBUILD=$(BUILD) @@ -34,7 +34,7 @@ EXEDIR=../output/$(TARGETDIR)/$(BUILD)/bin LIBDIR=../output/$(TARGETDIR)/$(BUILD)/lib -INCDIR=../include/all/all +INCDIR=../output/${TARGETDIR}/${BUILD}/include OUTPUT_EXES= OUTPUT_LIBS= To tell cmake where to find the header and library files set the environment variables BLUETUNE_HOME, ATOMIX_HOME and NEPTUNE_HOME. ==== QJson ==== Compile and install QJson with git clone https://github.com/flavio/qjson.git cd qjson TOOLCHAIN_PREFIX=/usr/arm-2008q3 cmake -DCMAKE_TOOLCHAIN_FILE=../chumby-controlpanel/modules/Toolchain-arm.cmake -DCMAKE_INSTALL_PREFIX=/usr/arm-2008q3 CMakeLists.txt sudo make install where CMAKE_TOOLCHAIN_FILE should be set to the toolchain file of the chumby-controlpanel, TOOLCHAIN_PREFIX and CMAKE_INSTALL_PREFIX is the location of your arm-toolchain. Further information regarding QJson can be found at http://qjson.sourceforge.net/ ==== Openssl ==== In order to enable ssl support in Qt you need the openssl libraries for arm. http://wiki.chumby.com/index.php/Web_Browser#build_openssl contains instructions on building openssl. Append -openssl to the configure line of qt to force openssl support.