Logo

Wyse SX0 Firmware 

BIOS

The DEL key gets you into the BIOS. I didn't find it the easiest BIOS to get into on one of the models I have. On that one you need to press and hold the DEL key before powering the unit up, or try when powering it down. You'll end up in a Green BIOS Screen with very little that you can change.

If it hasn't been changed the default BIOS password is Fireport

You can set the date and time and change the boot order. The BIOS will try three separate boot items in order (options 1, 2, 3). Each of these can be set to one of USB, PXE, IDE and NONE.

Having put USB first in line I found the SX0 would happily boot Linux from a USB pen drive. Previously I'd successfully booted Linux from a hard drive that I'd plugged in to the IDE connector.

I've recently had problems with the USB booting - the SX0 (S10) was ignoring the USB pen drive and booting it's internal operating system. A sort-of-reliable way I could get to work was:

  • Power up without the USB drive in place.
  • On the second higher-pitched beep (signifies booting internal system?) switch off.
  • Insert USB drive and power up again.

Firmware

The four models run different firmware:

ModelOperating System
S10WTOS (Wyse ThinOS)
S30Windows CE
S50Linux
S90Windows XPe

The S90 is running Windows XPe SP1. With mine I could log in to it using the default XPe username/password of Administrator/Administrator.

In all but the later model S10 the BIOS is stored in a 2Mbit (256KB) LPC flash chip (SST 49LF020). With the later model S10 the operating system (WTOS) is combined with the BIOS in the 16Mbit (2MB) BIOS chip (SST 49LF016). ie WTOS is less than 1.75MB in size.

I did wonder about updating an S10 - apparently easy to do via an FTP server and a suitably crafted wnos.ini file. However it looks as though updated WTOS firmware files are not available unless you subscribe to Wyse's Support service. (If you know different please let me know).

"A Wyse Device Bundled License is automatically included with the purchase of a Wyse ThinOS or Xenith client. The Device Bundled License provides you with software upgrades (distributed via the Wyse Self-Service Portal) for 90 days after product purchase

You must first register your company and your products in order to gain access to the software. After 90 days, a Software Maintenance is required to continue to have access to the software upgrades."

Poor man's S10 Firmware Upgrade

WARNING: This describes an approach I took starting from a position of almost total ignorance. It could easily turn your S10 into a non-functional brick. Proceed at your own risk.

[In August 2014 I received an email from Jeff Kremer who used the DOS version of flashrom running on freedos to upgrade his S10. He followed the guide at http://goebelmeier.de/bootstick/ [Now dead link?] to setup a bootable USB stick].

As firmware upgrades are not freely available I did wonder if it was possible to copy the firmware from one S10 to another. The obvious way of doing this is using the Linux flashrom application. - Boot Tiny Core from USB on the most modern S10. Copy the flash on that to a file on the pen drive. Move it across to an older S10 and boot Linux again. This time use flashrom to write the captured flash image to the flash on the new S10. Simple enough?

Unfortunately flashrom is not one of the Tiny Core pre-packaged apps. What I ended up doing was installing libpci.tcz from the App store and copying over the flashrom binary from my Fedora installation. This appeared to work. Running flashrom without any parameters results in:

root@box:/mnt/sda/flashrom# ./flashrom
flashrom v0.9.4-r1412 on Linux 3.0.3-tinycore (i586), built with libpci 3.1.7,
   GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
sh: /usr/sbin/dmidecode: not found
dmidecode execution unsuccessful - continuing without DMI info
Found chipset "AMD CS5536". Enabling flash write... Error while opening /dev/cpu/0/msr: No such file or directory
Did you run 'modprobe msr'?
FAILED!
This chipset supports the following protocols: Non-SPI.
Found SST flash chip "SST49LF016C" (2048 kB, FWH) at physical address 0xffe00000.
===
This flash part has status UNTESTED for operations: ERASE WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom@flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
No operations were specified.
root@box:/mnt/sda/flashrom#

Ok it looks like flashrom has found the flash memory and thinks it can access it.

My most recent S10 (Manufactured Feb 2008) reports that it is running version 6.1.0.07 of WTOS and has BIOS 1.14. I have an older one manufactured in March 2007 that reports that it is running WTOS version 5.1.028 and also has BIOS 1.14.

Phase 1. Boot Tiny Core on my most recent S10 and copy the flash image to a disk file:

root@box:/mnt/sda/flashrom# ./flashrom -r S10_feb_2008.img
flashrom v0.9.4-r1412 on Linux 3.0.3-tinycore (i586), built with libpci 3.1.7,
   GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
sh: /usr/sbin/dmidecode: not found
dmidecode execution unsuccessful - continuing without DMI info
Found chipset "AMD CS5536". Enabling flash write... Error while opening /dev/cpu/0/msr: No such file or directory
Did you run 'modprobe msr'?
FAILED!
This chipset supports the following protocols: Non-SPI.
Found SST flash chip "SST49LF016C" (2048 kB, FWH) at physical address 0xffe00000.
===
This flash part has status UNTESTED for operations: ERASE WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom@flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
Reading flash... done.
root@box:/mnt/sda/flashrom#

Ok, we now have the file: S10_feb_2008.img saved on the pen drive. Move on to Phase 2.

Shut down Tiny Core and transfer the pen drive across to the older S10. Boot Tiny Core. Before doing anything else take a copy of the existing ROM: ./flashrom -r S10_mar_2007.img

Next I took a deep breath and.....

root@box:/mnt/sda/flashrom# ./flashrom -w S10_feb_2008.img
flashrom v0.9.4-r1412 on Linux 3.0.3-tinycore (i586), built with libpci 3.1.7,
   GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
sh: /usr/sbin/dmidecode: not found
dmidecode execution unsuccessful - continuing without DMI info
Found chipset "AMD CS5536". Enabling flash write... Error while opening /dev/cpu/0/msr: No such file or directory
Did you run 'modprobe msr'?
FAILED!
This chipset supports the following protocols: Non-SPI.
Found SST flash chip "SST49LF016C" (2048 kB, FWH) at physical address 0xffe00000.
===
This flash part has status UNTESTED for operations: ERASE WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom@flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
Flash image seems to be a legacy BIOS. Disabling coreboot-related checks.
Reading old flash chip contents... done.
Erasing and writing flash chip... ERASE FAILED at 0x001fe000! Expected=0xff, Read=0x00,
   failed byte count from 0x001fe000-0x001fefff: 0xff0
ERASE FAILED!
Reading current flash chip contents... done. ERASE FAILED at 0x001fc000! Expected=0xff, Read=0x60,
   failed byte count from 0x001fc000-0x001fffff: 0x3f3f
ERASE FAILED!
FAILED!
Uh oh. Erase/write failed. Checking if anything changed.
Your flash chip is in an unknown state.
Get help on IRC at irc.freenode.net (channel #flashrom) or
mail flashrom@flashrom.org with FAILED: your board name in the subject line!
-------------------------------------------------------------------------------
DO NOT REBOOT OR POWEROFF!
root@box:/mnt/sda/flashrom#

Disaster? Do I now have an S10 brick? First heed the warning: DO NOT REBOOT OR POWEROFF!.

After I little thought I decided that maybe Wyse have some sort of ultimate bootstrap loader on the system that is overlaying the last part of the flash, or maybe some unit specific data like the serial number. (Note: A guess of mine that may be wrong). I had a copy of the original full ROM and so could write that back (hopefully) if necessary. However I decided to continue in my quest and resorted to the flashrom manual. There I found - as I expected - an easy work-around.

You can create a simple text file that describes how the flash chip is partitioned. You can then use command line parameters to tell flashrom to only operate on specific areas of the flash. Based on the earlier error message which gave an address range where the erase failed I created a simple two-line text file called S10.layout:

root@box:/mnt/sda/flashrom# cat S10.layout
00000000:001fbfff normal
001fc000:001fffff rom
root@box:/mnt/sda/flashrom#

After that it was just a matter of telling flashrom to flash the first bit of the ROM and not the last bit using the '-l <layout file>' and '-i <image name>' command line switches:

root@box:/mnt/sda/flashrom# ./flashrom -l S10.layout -i normal -w S10_feb_2008.img
flashrom v0.9.4-r1412 on Linux 3.0.3-tinycore (i586), built with libpci 3.1.7,
   GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
flashrom is free software, get the source code at http://www.flashrom.org

Looking for "normal"... found.
Calibrating delay loop... OK.
sh: /usr/sbin/dmidecode: not found
dmidecode execution unsuccessful - continuing without DMI info
Found chipset "AMD CS5536". Enabling flash write... Error while opening /dev/cpu/0/msr: No such file or directory
Did you run 'modprobe msr'?
FAILED!
This chipset supports the following protocols: Non-SPI.
Found SST flash chip "SST49LF016C" (2048 kB, FWH) at physical address 0xffe00000.
===
This flash part has status UNTESTED for operations: ERASE WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom@flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
Flash image seems to be a legacy BIOS. Disabling coreboot-related checks.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
root@box:/mnt/sda/flashrom#

This time it looks like we were successful! Takes deep breath, removes pen drive and reboots.....

The standard firmware is running! Looking in the "General" tab under "System Information" I can see that it is now running firmware v 6.1.0.07. The serial number is still correct so maybe that is part of the information that was stored in the protected area of the flash address space.

So there you have it - a possible way of upgrading the S10 firmware. It worked for me in my one attempt. How reliable this is as an approach I have no idea. You have been warned.

Later on I did install dmidecode from the Tiny Core Apps library and moved the binary from its installed location of /usr/local/sbin to where flashrom was looking for it (/usr/sbin). This time, when I ran flashrom, I got the interesting output of:

root@box:/mnt/sda/flashrom# ./flashrom
flashrom v0.9.4-r1412 on Linux 3.0.3-tinycore (i586), built with libpci 3.1.7,
   GCC 4.5.1 20100924 (Red Hat 4.5.1-4), little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OK.
========================================================================
WARNING! You may be running flashrom on an unsupported laptop. We could
not detect this for sure because your vendor has not setup the SMBIOS
tables correctly. You can enforce execution by adding
'-p internal:laptop=force_I_want_a_brick' to the command line, but
please read the following warning if you are not sure.

Laptops, notebooks and netbooks are difficult to support and we
recommend to use the vendor flashing utility. The embedded controller
(EC) in these machines often interacts badly with flashing.
See http://www.flashrom.org/Laptops for details.

If flash is shared with the EC, erase is guaranteed to brick your laptop
and write may brick your laptop.
Read and probe may irritate your EC and cause fan failure, backlight
failure and sudden poweroff.
You have been warned.
========================================================================
Aborting.
root@box:/mnt/sda/flashrom#

 


Any comments? email me.    Last update October 2011