Interactive whiteboards like Smartboards are becoming more and more common in classrooms and there are also quite a few linux users using them. As we do a lot of work with Ubuntu LTSP based fat clients, I needed to find a way to get the Smartboard software installed in the chroot image.

SMART Technologies provides their linux software only in autopackage files that require manual installation. Autopackage makes it possible to use a single installer package for many distributions, but at the same time it makes it difficult to automate the install especially in LTSP chroots. To overcome this problem I looked for a way to convert the autopackage installation to a debian package.

After some trial and error it looks like the easiest way to accomplish the task is to first do a local install of the SMART Product Drivers and SMART Notebook software and then create a debian package of the files in the file system. There are potential problems in this approach, but as long as the Ubuntu versions are the same, it seems to work nicely. To ease the pain in the future I created a small script that picks the files from the filesystem and creates a package under user’s home directory. The package size is currently around 650MB, so make sure that there’s more than twice that available under /home. I’ve done testing on this with clean installs of 32-bit Ubuntu 8.04 and 10.04 desktops.

The steps needed to create the debian package are:

  1. Register your Smartboard and download the linux software package from SMART Technologies
  2. Do a normal local install with all extras enabled
  3. Write the script below in a file and make it executable
  4. Run the script

The package is created under home directory and it can be installed in the chroot like any other package.

#!/bin/bash

set -e
TMPDIR=`mktemp -d`

files=( "/etc/xdg/SMART*" 
    "/etc/X11/Xsession.d/98smart*" 
    "/etc/udev/rules.d/60-SMART*" 
    "/opt/SMART*" 
    "/usr/share/desktop-directories/*smarttech*" 
    "/usr/share/mime/application/*smarttech*" 
    "/usr/share/mime/packages/*smarttech*" 
    "/usr/share/mimelnk/application/*smarttech*" 
)

for size in 16 22 32 48 128
do
  files=( "${files[@]}" "/usr/share/icons/hicolor/${size}x${size}/apps/SMART*" )
  files=( "${files[@]}" "/usr/share/icons/hicolor/${size}x${size}/mimetypes/*smarttech*" )
  files=( "${files[@]}" "/usr/share/pixmaps/hicolor/${size}x${size}/apps/SMART*" )
  files=( "${files[@]}" "/usr/share/pixmaps/hicolor/${size}x${size}/mimetypes/*smarttech*" )
done

for file in ${files[@]}
do
  echo "Copying ${file} ..."
  DIR=`dirname "${file}"`
  mkdir -p "${TMPDIR}/${DIR}"
  cp -a "${file}" "${TMPDIR}/${DIR}"
done

mkdir -p ${TMPDIR}/DEBIAN

cat > ${TMPDIR}/DEBIAN/control < EOF
Package: smartboard
Version: 10.2.324.0-0local1
Section: base
Priority: optional
Architecture: i386
Depends: libtiff4
Maintainer: Local
Description: SmartBoard software
EOF

fakeroot dpkg -b ${TMPDIR} ~/smartboard_10.2.324.0-0local1_i386.deb

I hope this helps others who want to use Smartboards with LTSP fat clients!

Veli-Matti Lintu