Thanks to the good folks at VIA Technologies, we recently received an APC Android PC for evaluation. The device comes with a VIA 800MHz processor, 512MB of RAM, 2GB NAND flash RAM, VGA, HDMI, 4 x USB, audio in/out, 10/100 ethernet and a microSD card slot. All at a $49 list price and in a 170 x 85mm form factor (about 3.3 x 6.6 inches). It’s also capable of 720p resolution video.
We are currently evaluating its potential application as an Online Public Access Catalog (OPAC), said system needing only to provide a web browser running in fullscreen kiosk mode–nothing more. In order to provide a more robust set of features for the browser, we decided to install Mike Thompson’s bootable Raspbian Apricot image of Linux on a microSD card, which the device supports. While the operating system image is meant to fit on a 2GB SD card, we’re using an 8GB SD card, so I resized the partition after the image was installed in order to utilize the entire capacity of the card.
That version of Raspbian (Raspberry + Debian) comes with the Midori web browser which I and others found to crash all too easily, at least under this particular Raspbian OS. In particular, it would crash every time I accessed either our website or our catalog (obviously a deal-breaker right there). My first choice for a browser would have been Opera, as it has an extensive set of features geared for kiosk presentation. Unfortunately, I was unable to find a version of it that would run on Raspbian; however, I have since located a version of Chromium (the Linux version of the Google Chrome browser) that was compiled for the Raspbian OS and I was able to install it without any issues.
Chromium appears to be relatively stable, having crashed only when trying to access pages with a huge amount of content, primarily those “bottomless” pages that continually retrieve and display more content as you scroll to the bottom (as with the Google Chrome app store or some Facebook pages). There’s one display refresh anomaly in that the mouse pointer disappears at certain times, particularly when a page finishes rendering; however, it reappears when one moves the mouse—and it’s not limited to use of the browser, as it also occurs on the Mate X-windows desktop that’s bundled with this version of Raspbian.
The only Chromium extension that was installed is IdleReset 1.1.1, which resets the user session, clearing all cookies and returning to the homepage. Its idle reset timer is set to 90 seconds (as it is with our current OPACs using Opera’s built in idle reset feature).
Command line switches provide the other necessary features. For our purposes, Chromium is launched with the the following command:
/opt/google/chrome/chrome –-disable-ipv6 –-kiosk --proxy-pac-url=[address for proxy autoconfiguration script] [homepage]
The above launches Chromium without IPv6 support (so as to maximize performance in non-IPv6 networks), it enables fullscreen kiosk mode, it applies our proxy autoconfiguration script and it launches our homepage.
As for locking things down, autologin was enabled and the Mate X-Windows launch panel was stripped of as many menu selections as possible. In addition, once I had the Chromium settings configured appropriately, I copied the configuration files to a separate directory (basically, a repository of restorable safe settings). Finally, I wrote two scripts that are almost identical to each other. Both scripts basically do four things: 1) checks to see if the other script is running, and if so, kills it; 2) overwrites the Chromium configuration files with the “safe settings” config files; 3) launches Chromium with the appropriate command line switches; and 4) checks to see if Chromium is running, and if not, launches the other script. The first script, opac.sh, reads thusly (assuming that Chromium is run by user opac and that the backup directory is chromiumback in the user’s home directory):
# Before we do anything else, kill opac2.sh if it's running
pkill -15 opac2.sh
# Revert settings to known safe ones
cp -pRf /home/opac/chromiumback/* /home/opac/.config/chromium/
# Launch Chromium; disable IPv6, use kiosk mode, specify proxy script and open homepage
/opt/google/chrome/chrome –-disable-ipv6 –-kiosk --proxy-pac-url=[address for proxy autoconfiguration script] [homepage] # Check to see if user closed Chromium; if so, launch via the second script
ps -ef | grep -v grep | grep chrome
if [ $? -eq 1 ] then
The second script, opac2.sh, is identical to the script above, except that all references to opac2.sh as they appear above would be replaced with opac.sh. The use of the two scripts in this manner effectively provides a watchdog that ensures the browser is running in kiosk mode at all times.
I’m confident at this point that the APC would satisfy our needs for a very low cost, low power and small footprint OPAC system, especially if the Raspbian OS and compatible app development continues at the current pace. I’ve no doubt too that some performance tuning can be done to eke out better performance, which at this point is actually quite acceptable. The system board is now mounted in Mike Thompson’s clear acrylic snap-together case and it’s now prominently deployed as “Our New, Low Cost Experimental Online Catalog PC.” We’ll be sure to report on how well it performs in addition to what our patrons have to say about it.