Kelly Koehn - 4/2/2007
Updated: 1/12/2008
Note: I have not worked on this project for some time and probably won't again as I don't have these units anymore. If you would like to donate a machine for more testing send me an e-mail.
Objective: Install Linux on a WYSE Winterm and create a functioning DHCP server
The Winterm that I have is a fairly small unit. The specs are as follows:
Internals:
- Cyrix MediaGX/Geode 233MHz CPU with 16KB cache
- 32MB RAM (4MB Video Memory, 28MB System Memory) -- soldered onboard
- 16MB Flash NAND Memory
- Cyrix 5530 Chipset
- Cyrix 5530 Kahlua Audio Card
- Cyrix 5530 Kahlua Video Card (4MB) - 1280x1024x32 max
- National Semiconductor DP8381 10/100 Ethernet Controller
- Compaq ZFMicro Chipset USB Controller
- National Semiconductor SCx200 Watchdog Timer
Note: There is another unit that comes with 16MB RAM and 8MB flash. This requires a different bootloader or it WILL brick your unit! (I learned the hard way) Please load up your unit in CE and verify your specs before reflashing. If you brick your unit, scroll down to find instructions how to recover it.
External Ports:
- (1) 12 volt barrel connector, Barrel pos. / Pole neg. > 1A, unregulated
- (1) RJ-45 Ethernet
- (2) USB 1.0 Connectors
- (1) 15-pin D-sub VGA Connector
- (1) Audio out
- (1) Audio in (line-in?)
Inactive Ports:
There are two other ports that seem to be inactive inside the system. There
is a CompactFlash port on the board but that appears to be inactive. According
to some other sites it is a memory expansion port for storing data. The other
port is an SO-DIMM slot right above the soldered onboard memory. I have put
a 32MB PC66 and 64MB PC100 DIMM in there and neither register on the system.
It may be disabled somewhere or some kind of expansion port.
Getting the system to boot Linux:
Obviously the unit was designed to only run Windows CE 2.12 so you can't just
replace a hard drive or simply tell it to boot off of USB. The unit boots
off of an ATMEL boot ROM that is socketed on the board. You will need to
update the unit's firmware so it will start a Linux bootloader on top of the
CE infrastructure. To do this is very simple. All you will need is an FTP
location to place the firmware image and a console into the Winterm.
- Turn on the Winterm and go into the Setup for the unit.
- Download the firmware image (16MB Flash ONLY!): wyse.zip. Unpack this on your computer and copy the included files to your FTP server.
- In the Winterm, go to the Update Firmware tab and point it to your FTP location. It will update and then reboot.
Your Winterm will now attempt to boot from the USB key everytime it starts up.
Now we need to prepare a USB key to hold our image.
Note: If your unit just hangs at the Tux screen, you have bricked your unit! You will need to follow these steps in order to re-flash your unit with the standard CE image. You can also use this process to bring your unit back to 'factory defaults' in the event you want to get rid of it.
- Download Microsoft JavaVM: msjavavm503802.exe (Sun VM will *not* work!)
- Dowload your appropriate firmware image:
- 16MB Flash: u44122wye.exe
- 8MB Flash (RDP): u44122rdp-wye.exe
- 8MB Flash (ICA): u44122ica-wye.exe
Which version should I get? Well get the one that matches your existing configuration. If you have an 8MB version and you try to flash the 16MB version you will receive an error during the NetXFer process stating "ERROR: There is not enough flash to complete this operation." Just download the 8MB version and try again. Note that the 8MB versions are split into Microsoft RDP and Citrix ICA versions.
- Download the NetXfer program: NetXfer.zip
- Create a directory in the root of your hard drive called "Netxfer"
- Unpack NetXfer.zip to this directory. We'll assume you copied everything to C:\Netxfer for the rest of the tutorial.
- Double-click on your respective firmware file that you downloaded. You will be prompted to unpack it somewhere. You can unpack it to your desktop by typing '.\u44122' in the 'Unzip to folder:' textbox. This will create a folder called 'u44122' on your desktop, assuming you downloaded it to your desktop.
- Assuming you used the 'u44122' name, go into this folder. You will find a folder called 441-223230. If you downloaded the 8MB version you will have either 'ica' or 'rdp' after the numbers. Open this folder.
- You will find two files. One will be PARAMS.INI and the other will vary depending on your firmware: U441224C.wye - 16MB, U441224F.wye - 8MB. Copy these two files to C:\Netxfer.
- Install Microsoft JavaVM by double-clicking on 'msjavavm503802.exe'. Go through it's prompts and do not restart when it prompts you as it is not necessary. The Sun JavaVM will not work and will give several errors if you attempt to use it. Thanks to oldversion.com for hosting that file. After installing you may have a Windows Update pop up... this is a security update. Go ahead and run it as it won't hurt anything but just don't restart when it asks.
- Print out these instructions... or keep your browser open as we will need to change your computer's network configuration.
- Change your computer's IP address to 10.0.0.1 with a subnet of 255.255.255.0. Do NOT set a gateway address. To speed up the 'setting' stage you can add 1.1.1.1 as the DNS so Windows will not hang attempting to set a null value. If you are already statically assigned on your network you can just add a secondary IP address. This will not work with DHCP enabled.
- Open up a Command Prompt and type in 'cd \netxfer' to go to the NetXfer directory.
- Type in the following in the command prompt: mkutc.bat U441224C.wye (or whatever your firmware image name is)
- You will see a conversion program appear. If you see 'Conversion Complete.' you are almost in business. It should then load NetXfer. If you see errors at this point you did not install the Microsoft JavaVM like instructed. Go back and try again.
- Make sure your Wyse box has been unplugged. You must have a USB keyboard plugged in at this point (it does not have PS/2 ports). Make sure your other peripherals are unplugged (USB drive, mouse, etc).
- Read the following steps in full before performing. Failure to do something will result in having to do it over.
- Plug in your Wyse terminal.
- As soon as you plug it in, press and hold the Power button and 'P' key on the keyboard for 5 seconds. You will see 'NETXFER' on the screen. This is setting the unit up for flashing mode.
- At 5 seconds, release the power button. You will see your client reset again. You will see 'NETXFER' flash on the screen once it initializes. This will load the ROM and prepare it for flashing.
- When the system initializes it will display NETXFER on the screen along with the system's MAC address. It will then proceed to upload the new flash to the unit. If it sits at 'Contacting Server' then you either a) are not running NetXfer on your computer or B) have a DHCP server enabled somewhere on your network.
- At this point it will copy the flash to the unit and unpack it. Once it is unpacked it will reboot. You should also see 'Finished file' on your NetXfer session. Upon reboot the system will show you the WYSE white screen and bring you up to a Setup Wizard. Note that you will not have a mouse so you must use the keyboard.
- Hit 'Next' on the introduction page or you can let it auto-configure. If you let it auto-configure, skip the next five or so steps.
- You can select to use DHCP or static. Choose DHCP and hit 'Next'.
- Select your desired screen resolution. Make sure it is as least 800x600 for ease of use. Be sure to change the Color Pallette to 65535 colors. Hit 'Next'.
- Select 'No' on a local printer and hit 'Next'.
- Click 'Finish'
- You will be required to restart your WYSE. Click 'Restart'.
- The WYSE will come back up to the Connection Manager. You have now reflashed your unit. It may pop up a message about not being able to obtain DHCP because your DHCP server is still offline. Re-enable your DHCP server to resolve this.
Downloading your image:
I have made a custom
image that is about 104MB or there is a standard DSL (DamnSmallLinux) image
custom made for the Winterms. I have made several changes to my image to fix
some bugs and customize it for the 3200LE. I have also configured my image
to not load X-Windows, enabled SSH, and also have made it a headless
DHCP server (my intended purpose for the box).
Select your image that you would like and download it:
- My Customized Version - No X, all extra apps removed, sshd enabled, dhcpd installed, static or dhcp network
- DSL Basic Version - X based, all apps installed, designed for DHCP, no remote login
Extract the contents of either file into a directory on your Linux box. You
can do this on Windows but it is a lot more work (since Windows doesn't
natively support EXT2 FS). Go ahead and plug in your USB drive into your
Linux box and you will see it installed. Some distributions will automount
the USB drive somewhere. If yours does not then you can type 'dmesg' and you
will see what it called the device. Typically it will be called '/dev/sda'.
First we will need to prepare the drive for use. Typically flash drives come
with a FAT or FAT32 system on them for Windows. Linux will read this out of
the box but the Winterm image isn't looking for this and will *not* boot
from it. We need to remove that file system and create an EXT2 file system
in its place. Keep in mind that this will remove ALL data from your flash
drive!!! Once again, ALL DATA WILL BE REMOVED AND UNRECOVERABLE!
Once you have your flash drive found go ahead and load fdisk to
partition the system. Type the following command:
fdisk /dev/sda
Note: If your distribution automounts USB drives, you will need to unmount it first!
If you want to see the existing partitions you can press the 'p' key to print
out the partition list. Otherwise just press 'd' to delete the partition.
Now we need to press 'n' to create a new partition. Press 'p' to create a
primary partition and select '1' as the partition number. You will want to
select '1' as the default sector and then just hit enter on the ending sector.
This will use all of the flash drive by default. Once you have done this you
need to set the partitions file system type by pressing 't'. You will be asked
for the type, type in '83' for the Linux EXT2 system. Now press 'w' to write.
It will write the FAT and then you will be returned to the console. Your
flash drive may write for a little bit if it is a slower model -- just wait
until it completes.
Now we need to format the drive with our EXT2 file system. Type the following
command to create the file system:
mke2fs /dev/sda1
This will begin 'formatting' the flash drive and you will be returned to the
console prompt when it is completed. This should only take a few seconds.
Once the formatting is complete we will be ready to copy files to the drive.
First we will need to mount the drive so you can write files to it. Type
the following at the prompt to mount the drive:
mount /dev/sda1 /mnt
Most systems have a /mnt directory for this specific purpose. If yours does not
then create a directory or use an existing empty directory to mount to. Change
to the /mnt directory and untar the archive to the drive. For our example I
will assume you are using my customized image and your files are stored in the
'winterm' subdirectory under the root directory.
cd /mnt
tar -zxvf ~/winterm/winterm.tar.gz
You will see a series of files fly by and files will begin writing to your
flash drive. Please be patient as this will take several minutes for the buffer
on your flash drive to empty. Do not pull out the drive until the light stops
flashing otherwise file errors will occur! Once the flashing has stopped you
can unmount your flash drive and then remove it by typing:
umount /mnt
Insert your flash drive into your Winterm and turn the power on. The system
will initialize itself and when the orange light turns off it will be ready.
Simply press the power button and the power light will turn green. You will
see the WYSE logo appear with Tux on it and it will begin searching for the
USB key. Shortly after Linux will begin booting and you will be at a console.
Caveats with the standard install:
Here are some things that I ran across while writing up this document. If you
decide to use the standard DSL installation you will more than likely end
up with a file system 'crash' at the beginning of the first boot. I'm not sure
why but this happened to me almost everytime, resulting in a readonly file
system. This seemed to be caused by fsck being an old version and not
supporting something in the EXT2 standard. By commenting out the initial
'fsck' commands in /etc/init.d/checkroot.sh and /etc/init.d/checkfs.sh I was able to get a successful boot. It will however show an error about the file system being uncleanly mounted but it is silent about it. If you attempt to run fsck on the USB drive it will corrupt all data... I learned this the hard way!
The network will always attempt to search for DHCP even if you modify the configuration. In order to get it to stop this and use the /etc/network/interfaces
configuration you will need to modify /etc/init.d/knoppix-autoconfig and
comment out the line that reads 'pump -i $DEVICE >/dev/null....'. I just put
the command 'ifup eth0' in there to bring up the ethernet device manually.
If you don't do this and you modify the interfaces file it will cause the
ethernet device (eth0) to fail when it comes up and you will always have to
do an ifdown/ifup command -- not good for a headless system!
One final thing to note is that X by default will look for a PS/2 mouse. After
several hours of thinking I had bad drivers I learned that I had to setup
X again and tell it to look for a USB mouse. Just run the 'xsetup.sh' script
and when it asks about a USB mouse just select Yes. Be sure and select the
Xfbvid or whatever it is called... it is a the Framebuffer device, NOT the
VESA device. You will need to restart the box after this or X will give you
errors.
Well I hope this helps some people out... these are great little solid-state
devices that not only are cheap... but quite reliable! Enjoy!
Special thanks to these two sites. Without them this wouldn't be possible!
http://winterm.gaast.net
http://www.marlwifi.org.nz/projects/winterm