Making the ViewSonic Tablet PC Run Linux
A few months ago, I was talking to the owner of a locally run ISP, Mutual Data Services, and he mentioned he had purchased a ViewSonic Tablet PC some months before. He planned to use it at his various wireless access points to do maintenance on his equipment. It came with Windows 98, and he was not impressed. As he puts it:
Imagine our frustration that the tablet we paid big bucks for crashed as a daily occurrence. The manufacturer refused to allow us to return it, saying the operating system is the problem. We would do a restore, and it would run for a day and then crash again. We gave up on using it as designed and thought maybe Linux would work and save the tablet from the junk box.
I offered to take the system and put Linux on it. The first thing I did was Google to see if I could find any information on installing Linux on this hardware, but I found nothing. So I thought it might be useful to other owners of this model to write this article. If others ran into the same situation that Mutual Data Services did, several of these systems may be lying around and gathering dust.
I start by explaining what extra equipment I needed to acquire even to attempt the installation, what system settings had to be tweaked and which features work on this hardware. Then, I discuss what software was installed to make this system useful for my friend's desired tasks.
The system itself is a ViewSonic ViewPad 1000 (Figure 1). It has 256MB of RAM, a 20GB hard drive, a wireless infrared keyboard with integrated pointing device and a touchscreen. The built-in video is an SiS630 chipset video device, which can support the screen at 800x600 resolution and 16-bit color depth. For networking, it has an SiS900 10/100 wired Ethernet port and a Harris Prism Wavelan chipset 802.11 Ethernet radio. We are able to expand the system by way of two USB connectors, a PCMCIA slot and a single serial port. Sound input and output jacks also are provided, as are built-in speakers attached to an SiS PCI audio device, a docking connector, a built-in Winmodem and a webcam.
Figure 1. The ViewSonice ViewPad 1000
I am not very fond of the included wireless infrared keyboard, so I used a USB keyboard and mouse for input. The ISP prefers SMC wireless Ethernet devices, so we eventually are going to install an SMC2532W-B EliteConnect wireless adapter for use, rather than the built-in Wavelan radio. In addition, we have no need for the Winmodem, serial port, webcam or docking port (we do not have a docking station to test it with), so I did not configure them.
In addition to the hardware on the system itself, I added the USB keyboard and mouse mentioned above, plus an external USB optical drive for installing the system. The system does not boot from a USB CD-ROM device, so we have the option of booting either from the network or from an external USB floppy drive. We had access to the external floppy, so we went that route.
I chose SuSE 9.0 for the installation system. It has built-in profile management; comes with an installation DVD, which saves some disk swapping; and I already was familiar with it.
For the installation we needed to create a boot floppy and module floppies. For this particular system we needed only the modules1 (for USB drivers) and modules4 (for PCMCIA drivers and filesystems) disks. These images are found in the /boot directory on the installation DVD. The README file in that directory contains instructions for creating the disks from those images.
The first thing to do is plug in all the USB peripherals. I put the external floppy drive on one USB port and the keyboard, mouse and DVD-ROM on the other. Next, I needed to configure the BIOS for USB floppy boot, because the default is to boot first from the internal hard drive. At power-up, pressing the Del key took me to the BIOS configuration utility (either the USB or wireless keyboard for this).
From the BIOS configuration screen, I selected Advanced CMOS Setup and then stepped down to the Boot Device section (Figure 2). For the 1st Boot Device, I choose USB Floppy, and for 2nd Boot Device, I choose IDE-0 (Figure 3). This is the same way in which most PCs with a floppy are configured by default.
Figure 2. Configuring the Boot Device
Figure 3. The Second Boot Device
After changing those settings, I pressed Esc to go back to the main CMOS menu. From there, F10 allowed me to save the settings and exit. On exit, the system restarts, so I made sure the floppy drive and optical drives were plugged into the system with the boot floppy and installation CD in them.
At the boot screen, I selected Installation, and the kernel was loaded from the floppy. It took a couple of minutes to complete, but a progress bar showed feedback. When prompted for module disk #1, I ejected the boot floppy, inserted module disk #1, pressed Enter and waited another couple of minutes, watching the progress meter.
The initial boot process then completed, and when the install detected the PCMCIA chipset it requested modules disk #4. I ejected the current disk, inserted the modules #4 disk and pressed Enter. Loading from this disk took about only 30 seconds, at which point the install continued.
Leave most of the defaults on the installation configuration screen: New Install, automatic partitioning, English keyboard, USB Mouse and so on. I initially was concerned the IR keyboard and pointer controls would not be recognized at installation time by the system, because they were wireless infrared--that is why the USB keyboard and mouse were on hand. The ViewSonic keyboard and pointer were seen by the system as regular PS/2-style input devices, however, so there was no problem. Because I prefer the feel of my USB keyboard and prefer a mouse to the pointer controls on the keyboard, I plugged them in. The install was able to use them with no problem. At the installation packages screen, I added full GNOME, the Network/Server group, the C/C++ compiler and tools and any other packages needed to fulfill dependencies. I also set the timezone and set the hardware clock to UTC.
After these alterations, I accepted the changes and confirmed that I wanted the installation to start. I had an external DVD drive, so there was only one installation DVD. At this point, I went to bed and let the install run into the night.
The next morning the installation process was up to the Enter a root password stage. I gave it a password twice, and it went on to the network configuration. I had it connected to the LAN for initial installation, so I selected eth0 to be configured with DHCP. Then came a problem with the network hardware setup.
I had a cable plugged into the Ethernet port on one end and a Netgear FVS318 port on the other, but the lights on the devices did not indicate an electronic connection. Suspecting a bad cable, I replaced it--no luck. Suspecting a problem with the Tablet's Ethernets port, I tried a different hub. I plugged the Ethernet cable into an old 10Mbps NDC SOHOware Hub that I had lying around. That connection worked, so I plugged a cable from the SOHO's daisy chain port to the Netgear, and all was well.
Near the end of installation, I was presented with a dialog to check for on-line updates, which I did so as to bring the system up to date. I configured it as a Stand-Alone Machine rather than a server, so the install required the creation of a normal user. I did this even though the user probably will run as root most of the time. When I come to the Hardware Configuration section, I accepted all the defaults for hardware that the install detected.
The system then rebooted. The first time it came back up, the USB keyboard and mouse were not detected, which was strange. Another reboot seemed to fix the problem, and I have not had trouble with them since. Other than this oddity, everything else we were concerned with works. X is up and running, sound comes out of the built-in speakers when I start KDE, the on-board Ethernet is working, the built-in wireless chipset is detected and identified and even the touchscreen works. I also found that the orientation of the screen can be changed easily with SaX2 (Figure 4). This might be a useful feature, because this computer has feet on two adjacent sides.
Figure 4. Changing the Screen Orientation
A few more items needed to be addressed before this tablet really was usable for the ISP. The first issue was the PCMCIA wireless LAN card. As it is a fairly popular PCMCIA device, I expected it could be plugged into a running system and be detected. Reality turned out not to be quite that easy. When I plugged the card in, no messages appeared in /var/log/messages and it was not seen by the system. Perhaps a setting could be tweaked somewhere, but I thought I first would try having the card inserted into the machine for a warm-reboot. That seemed to work just fine. Incidentally, the system correctly would handle ejecting the card, but not its reinsertion. But as long as it was present at boot, there were no problems with it.
Mutual Data Service's software requests were quite simple. All they really needed (so far) were Ethereal, the graphical network traffic analyzer; kismet, an 802.11 wireless network traffic sniffer; and xmms, the extensible media player. Xmms and Ethereal were installed with the basic install, and kismet was installed from DVD by using YaST.
The last task is making it quick and simple to change network profiles, a task that SuSE makes easy. The System Configuration Profile Management (SCPM) module, accessed through YaST, allows the system administrator to change the network location of the system with a few mouse clicks.
To use SCPM you first need to start YaST, which requires the root password. Select Profile Manager from the System group to open a new window for SCPM (Figure 5). SCPM is not enabled when it first is installed. Figure 6 shows our final configuration, in which you can see the General Setup section and the Options... button. Selecting the Options... button brings up the SCPM options window (Figure 7). SCPM can be activated by selecting the Enabled button near the top of the screen and then the OK button in the lower right.
Figure 5. A Window for SCPM
Figure 6. Final Configuration
Figure 7. SCPM Options Window
To use SCPM, you must configure the network settings and then save them into a profile. New profiles can be created simply by changing settings and storing them in that profile.
This is the process I used to create our set of profiles:
1. Open the YaST SCPM module on one desktop and the YaST Network cards configuration window on another (Figure 8).
Figure 8. Windows for YaST SCPM and Network Cards
2. Select the Add button on the SCPM screen to open the dialog for creating a new profile (Figure 9). Make the profile from the current system configuration and check the make the new configuration active box. Select the OK button.
Figure 9. Creating a New Profile
3. The Special profile settings screen should appear (Figure 10), where you can enter a name for the new profile and a short description. This screen also allows specifying pre- and post-start and stop scripts, which provide amazing flexibility when changing profiles. I was doing basic network settings changes, so these scripts are not needed.
Figure 10. Special Profile Settings
4. Going back to the YaST Network cards configuration screen, I made the changes I wanted in this profile. In this case, I disabled the RJ-45 network connection and configured the SMC wlan0 device. Select Finish on network changes to close that window. I now have the system configured the way I want the current profile to be stored, but the profile is not yet stored.
5. Now go back to the main SCPM page and Add a new profile. (It might seem like a step is missing here, but it is not.) When the new profile dialog comes up, it can be created either from the current system configuration or from another profile. If created from the current system configuration, do not make it the active profile. Select the OK button, enter a name and description for the new profile and commit the changes.
6. Back at the main SCPM window, select the newly created profile and click the Switch to... button. The changes to the network configuration made in step 4 are be seen by SCPM as modified from the current profile (not the one created in step 5), so I was asked if I wanted to save those changes to the current profile before unloading it (Figure 11). The default is to save the changes (note the X next to the network resource group), so I chose OK and the changes were saved to the current profile, the affected subsystems were stopped (networking in our case), the new profile from step 5 was made active/current and the stopped subsystems were restarted.
Figure 11. Saving the Current Profile
7. The system now has the newly created profile active. I now needed to go back to step 4 and make changes to the current profile before creating another new one and saving the current.
As an added ease-of-use feature, I set root's KDE environment to have two desktops, one for SCPM and one for everything else. As long as YaST is running on the SCPM desktop when root logs out, YaST automatically starts up and goes to the correct desktop at the next login.
We now have Linux running on this machine that previously was unusable. Installation was much more straightforward than I initially expected, which is a testament to the current state of Linux development. The biggest hurdles were using the external floppy drive to boot from floppy the first time and working around the networking connection issue. If one was lacking an external floppy drive, I would guess a network bootable image could be created instead. However, with USB floppy drives available for about $30(US), it might not be worth the effort to create the net-bootable install image.
When this article was written, the TabletPC still was with me and had not been used in the field. Perhaps I will have the chance in a few months to write an addendum to relate how well the system performs in the field. I am optimistic that what was nearly a $1,300 boat anchor running Windows 98 is now a highly reliable network maintenance system. Perhaps I should have named the system phoenix.