Running Linux on a WYSE Winterm 3200LE

I recently acquired a free WYSE Winterm 3200LE. This neat little device is designed as a dedicated client for Windows Terminal Services (RDP) and Citrix ICA. The concept behind them is for businesses to run all of their applications on a central group of servers and have users log remotely onto a desktop session on these servers to access their applications and data.

The advantages with this type of set-up are centralised management and reduced hardware cost as users only need a small, inexpensive client device called a thin terminal instead of a fully functional desktop computer. There are also some drawbacks to such a set-up but we are starting to head outside the scope of this article.

WYSE are a major manufacturer of such thin terminals and have been for some time. The Winterm 3200LE is somewhat old now, sporting a the following hardware:

  • National Semiconductor Geode GX1 233MHz CPU
  • 16MB SDRAM (upgradable to 64MB by replacing the SODIMM)
  • National DP83815 ‘MacPHYTER’ 10/100Mbps NIC
  • 8MB onboard NAND flash
  • Cyrix 5530 ‘Kahlua’ AC’97 audio
  • 2 USB ports

The GX1 CPU is considered a low power equivalent to a Pentium MMX.

If you are lucky you should be able to pick a surplus Winterm up virtually free from IT vendors or big companies upgrading their equipment. They also often appear cheap on Trade Me and eBay. Even better are the HP/Compaq t5000-series terminals as they are an entirely standard x86 platform (not just based on one therefore no hacking required; just load up your favourite distro) and much faster than their Winterm counterparts.

Although slow by modern standards the 3200LE is very small, based on the standard x86 architecture and draws less than 15W of power making it ideal as an experimental embedded platform. The device comes preloaded with Windows CE 2.1 which is very limited in functionality if you intend to do anything other than run Windows remote desktop sessions in 256 colours. Getting Linux running on this device will render it much more useful and is quite easy to perform with a little hacking, so read on…

Inside a Winterm

Here’s a few pictures of the inside of the Winterm 3200LE showing the main PCB. The last photo shows the CPU with the heatsink removed for identification:

Winterm 3200LE PCB - topside Winterm 3200LE PCB - underside Winterm 3200LE PCB - underside with CPU heatsink removed

The compact flash slot is not actually for CF cards so inserting one will not achieve anything. Apparently it is possible to connect a SmartMedia card to this via a suitable adapter although I haven’t tried it myself. Pinout details can be found at SmartMedia card sockets are available from Jaycar and other decent electronics suppliers. You will need to gut a dead CF card to obtain a CF connector; these are not too difficult to come by nowdays.

Replacing the Firmware

The guys over at have put a lot of hard work into hacking Winterms and kindly provided some nice scripts, drivers and patches to do some of the crunchy work for us. They have managed to make a custom build of Debian work on a Winterm 3320SE, as well as Damn Small Linux using a customised boot loader.

This article specifically covers the 3200LE which is similar to a 3320SE but without any legacy ports or the PCMCIA slot. If you model is different then you are probably better off visiting and building a custom image that suits your device.

The instructions below will cover the minimum involved getting DSL to boot, and will hopefully provide some inspiration to try other distros. If I get some time I might post some tips on getting alternate distros to work.


The stuff you will need to perform the operation are:

  • A Winterm 3200LE (others will work but may require slightly different instructions)
  • Power supply, 12v >1.1A, does not need to be regulated
  • Customised firmware image with Linux boot loader - download here only if you have a 3200LE
  • Damn Small Linterm tarball - download from here
  • USB drive, at least 64MB
  • A RAM upgrade will help the Winterm run better, just use a standard laptop SODIMM for this

I’ve written this on the assumption you have a computer available running Linux. If don’t then you probably should as I’ve no idea if DSL will work off a FAT formatted drive, plus it’s more fun than Windows in the first place.

If you are totally new to Linux I’d suggest grabbing a copy of Kubuntu to get started. The installer CD is ‘live’ so you can boot into a fully functional copy of Kubuntu without harming the data on your hard disk if you just want to have a bit of a play.

What To Do

Extract the contents of you downloaded above and share the files using an FTP server.

Connect up the Winterm to your network, boot up the Winterm and make sure all appears OK.

Open the settings window and go to the FTP tab. Enter in the details of the FTP server containing linux.img and params.ini and start upgrading the firmware. You do not need to enter the file names, just the directory containing them.

Once complete the Winterm should reboot and you will notice a new splash screen. Ignore any errors at this stage as we haven’t connected the USB drive.

Back up any important data on your USB stick as we are about to erase its contents.

fdisk /dev/sda

Press o to create a blank partition table. Press n to begin creating a new partition, followed by p then 1, then Enter three times. This creates a new primary partition that fills the disk. Press w to write the changes and quit fdisk.

Use the version of mkfs.ext2 included with DSL to create an EXT2 file system on the USB stick. This prevents fsck tripping up when it encounters a newer filesystem version that it doesn’t support.

tar -x sbin/mkfs.ext2 -zvf DSLinterm.tar.gz
sbin/mkfs.ext2 /dev/sda1

Now unpack the contents of DSLinterm.tar.gz onto it.

mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
cd /mnt/usb
tar zxvf ~/downloads/DSLinterm.tar.gz

We need to modify the X configuration in DSL to get it to support a USB mouse and keyboard. Edit the etc/sysconfig/mouse file and replace all the entries from PS2 to USB. An example file is shown below.

FULLNAME="Generic USB Wheel Mouse"

If you wish to enable an SSH server to get access to the Winterm, simply add the following line:

echo /etc/init.d/ssh start >> opt/

Now we unmount the USB stick before unplugging it.

umount /dev/sda1

Ensure you wait for the light on the USB stick to stop flashing before unplugging it. If it doesn’t have a light you may notice that umount appears to stall for a while while it finishes writing from the cache. Make sure you wait for it to finished before unplugging the drive.

Plug the drive into the Winterm and boot it up. You should get into a Linux desktop in a few moments. If the mouse doesn’t work, press Ctrl-Alt-Backspace to kill X, then run, select the framebuffer option, then choose yes when asked if you have a USB mouse. Once complete you will need to reboot the Winterm otherwise X can be a bit unstable.

Remember that if you need root access, use sudo.


Unfortunately Winterm DSL is not perfect, so you will encounter the following issues that I am trying to fix. If you come up with a fix, please post a comment below and share it with the rest of the community!

  • The current kernel only supports up to 32MB RAM.
  • Sound does not work as there are no modules currently included for it.

The lack of memory in the Winterm rapidly becomes apparent as well, so maxing it out to 64MB is highly recommended. With 32MB RAM, opening the full-size version of one of the above images will often kill Firefox due to insufficient memory even with no other applications running.

I also noticed the Winterm does not like to power on (the LED stays amber and the power button does not respond) when a USB hub is connected. As the unit only has two USB ports and one is required for the USB drive, I use a low-cost PS/2 to USB adapter (this one, many others are available) to connect both a keyboard and mouse. This adapter features electronics to convert PS/2 signals to USB, unlike those adapters that often come free with your mouse. The original WYSE keyboard supplied with the Winterm has a built-in PS/2 mouse port so this also solves the above problem.

Other Notes

The bootloader I created is made using an original firmware image from WYSE and modified Bundle Tools. The mods made were basically to kill the annoying Matrix style skin and to get it to rip the correct BIOS file (ulc_code.ce) out of the WYSE supplied firmware image.

This entry was posted on Tuesday, March 20th, 2007 at 18:19 NZST and is filed under Projects & Experiments. It has been viewed 58518 times. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

WordPress database error: [Table 'marlwifi.wp_comments' doesn't exist]
SELECT * FROM wp_comments WHERE comment_post_ID = '82' AND comment_approved = '1' ORDER BY comment_date

Be the first to comment.

Have your say

Fields in bold are required. Email addresses are never published or distributed.

Some HTML code is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
URIs must be fully qualified (eg: and all tags must be properly closed.

Line breaks and paragraphs are automatically converted.

Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.