Pepper Pad 2

Linux-based UMPC / Tablet from 2005

Pepper Pad 2, freshly unboxed showing an early boot screen while sitting on my work desk, circa 2005.

About

The Pepper Pad 2 is a Linux-based Tablet/UMPC released in 2005. Developed and marketed by Pepper, Inc in Massachussets, it borrows much of its architecture from the Intel 2700G "Carbonado" or the earlier "Mainstone II" development boards.

The device was designed for semi-rugged usage: big rubber end caps protected the left and right edges of the case, along with a rubber screen bezel and gaskets around the speakers for some splash-resistance. Centered in the case is an 8.4" 800x600 colour backlit screen with resistive touch. On either side are thumbboard keyboards, with a modified split QWERTY layout. The left side also has directional arrows, and the right side a large scroll wheel. Stereo speakers are near the lower edge of the case, with a microphone at the top-left.

Rubber covers at each corner of the case can be lifted to reveal a single USB 1.1 port, an SD card slot, microphone input and headphone output jacks, composite audio and video output via a TRRS jack, and power input. On the back, an integrated metal stand can be swung out to hold the unit at about a 45° angle.

More technical details are available on eLinux (I happened to write that page)

Hacking the Pad

After Pepper, Inc stopped being a going concern (they were acquired by Canonical) I've tried on and off to update the Pad 2's operating system to something more modern. I had downloaded all of the source code that Pepper had distributed to comply with the GPL, including kernel patches up to the last version they upgraded to, 2.6.13.4.

I've always wanted to get a more modern version of Linux running on the Pad 2, but there are a number of hurdles to getting that:

ARM OABI to EABI

It's easy to build things at first, since RPMs for Montavista Linux shipped on disk. Install gcc and your other regular tools and off you go... except that those tools are ancient (GCC 3.3.1 and glibc 2.3.2), and squarely focused on the older ABI.

A real problem for upgrading any software on the Pad's hacked-together Linux is that all of it was built using the original/old ARM/GNU C Application Binary Interface, or OABI. Just after the Pad 2 was launched, a new embedded ABI or EABI was introduced, and quickly adopted by Linux and the GNU C Library. A lot of software from just a few years after the Pad 2 stopped getting updates simply won't build on that version of GCC.

Okay, so, we can use a more recent GCC cross-compiler that supports EABI to build software, right? Except that the Linux kernel also needs to support EABI, and the first version of the Linux kernel to support EABI was 2.6.16 - a few patch versions later than last version of the Pad 2's kernel.

Also, Pepper's patches to the Linux kernel come to 17k lines. Entire drivers that were never mainlined and a lot more. And they're stuck on version 2.6.13.4.

So the order of operations actually has to be, at a minimum:

  1. Acquire or build a cross-compile toolchain for armv5te and EABI that will build a 2.6 series Linux kernel (so, old, but not too old)
  2. Port the kernel patches forward to version 2.6.16
    • and fix any incompatibilities of course
  3. Compile a kernel, maybe one that supports both EABI and OABI
  4. If the new kernel boots, and it will load OABI binaries, then it should init just fine.
  5. OTHERWISE, also build a new root disk with EABI binaries

This quickly turns into Linux From Scratchâ„¢.

... and a binary-only kernel driver

Oh, and there's one more problem. The Pad 2 shipped with a driver, pvrdrv.ko for the 2700G5 graphics chip that supported some graphics acceleration. No source for this driver is known to exist, and it's built for OABI, of course, so it will not load into a later EABI based kernel. So my new kernel will probably also have to disable the 2700G (or put it into passthrough?) and use the XScale's LCD driver and framebuffer.

Hardware

Inside, an Intel XScale PXA270 (ARMv5 architecture) application processor at 624MHz provided the CPU and most I/O functionality built in, along with the Intel 2700G5 GPU with video acceleration and OpenGL ES and its own VRAM, 256MB of system RAM, a 20GB disk, Bluetooth, Wi-Fi, and IrDA/TVIR connectivity. Two internal lithium-ion batteries provide a total of 3.6Ah of capacity.

Software

The Pad 2's UI was known as Pepper Keeper, written in Java. The Keeper made extensive use of JRex, which embedded the Gecko web engine from Firefox 1.5 into Java applications. The Keeper had a number of built-in applications: a web browser, notes, music library and player, video library and player, TV remote (using the Pad's built-in IR blaster), eBook reader, and a few others. Applications for the Pepper Pad were written as extensions of the Keeper, either in Java or in XUL+JavaScript. The Keeper could also run software written for the Macromedia Flash browser plug-in. Video playback was provided by a customized mplayer binary.

The base operating system was Montavista Linux CEE and Pro version 3.1.1 with patches and additional packages. The main interface, "Pepper Keeper", was written in Java and used an embedded Firefox 1.5 engine (JRex) for web browsing and running applications written in XUL and JavaScript.

Since Pepper Keeper was written in Java, it could also be downloaded and run on desktop computers running Windows and MacOS. Data could easily be moved between the Pad's Keeper and that on a desktop computer; in this manner, media files could be loaded onto the Pepper Pad, and data created on the Pad could be backed up.

Story

Sometime in the year 2004, I learned about an upcoming Linux-based "tablet" computer, called the Pepper Pad. And I got really really excited about it, bought one and started hacking on it.

For about a year or two I used it and started hacking around on it. It was pre-eminently hackable: pressing Ctrl-Shift-1 launched a terminal window running as root. And since an entire copy of Montavista Linux Pro RPMs were sitting on the disk, I soon installed a development environment and started building Linux software on it so I could run what I wanted to there. I even adapted a few XUL applications for the Keeper. That stuff is still on my old site here

After I stopped using my Pad for surfing the web from my couch, I actually used one as a mini web server for a number of years, within my house. Why not?