IBM Netvista N2200 8363Linux on IBM Netvista 8363


1.- The Netvista 8363 presentation

The Netvista 8363 also refered as N2200 is a thin client made and sold by IBM between 1999 and 2001. It was designed to operate as a Windows Terminal with Windows CE 3.1 or a Linux based Terminal X. It was declined in 3 versions: the EXX, TXX  and WXX series. The EXX and WXX have an Ethernet 10/100 network interface while the TXX series have a Token Ring interface. The difference between the EXX and WXX series is that the WXX is shipped with a 16MB compact flash card with MS Windows CE 3.1 installed.

The interesting points of the Netvista 2200 are that theese thin clients are nearly a standard PC architecture (at the BIOS near), that they are small ( l x L x H = 3.6 cm x 28 cm x 20 cm ). They are low power consummer (max 3A under 12V ) and total silents.

Theese PC are now discontinuated but you can buy it for about 20€.

Netvista 8363 N2200 mainboardNetvista 8363 signaletic schield


Hardware inspection

The Netvista 8363 have 32 MB soldered RAM and a socket for 100Mhz clocked SDRAM (also refered as PC100) that accept a module of up to 256MB so that you can have a system with 288 MB RAM.

Now, we will take a look at the processor, reading /proc/cpuinfo :
processor	: 0
vendor_id : CyrixInstead
cpu family : 5
model : 7
model name : Cyrix MediaGXtm MMXtm Enhanced
stepping : 4
cpu MHz : 233.867
cache size : 16 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu tsc msr cx8 cmov mmx cxmmx
bogomips : 466.94

Here, we can see that the processor is an i586 (cpu_family: 5) from Cyrix clocked at 233 Mhz. Unfortunatly it haves only 16 KB cache. It honors a Floating Point Unit (even if the Cyrix FPU was not very reputed) and the MMX instructions set.

Then we will look at the installed PCI devices (all the PCI hardware are soldered on the main board thus not removable/interchangeable ) reading in /proc/pci :

PCI devices found:
Bus 0, device 0, function 0:
Host bridge: Cyrix Corporation PCI Master (rev 0).
Bus 0, device 14, function 0:
Ethernet controller: Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet (rev 2).
IRQ 10.
Master Capable. Latency=64. Min Gnt=52.Max Lat=11.
I/O at 0xc000 [0xc0ff].
Non-prefetchable 32 bit memory at 0x44801000 [0x44801fff].
Bus 0, device 18, function 0:
ISA bridge: Cyrix Corporation 5530 Legacy [Kahlua] (rev 0).
Bus 0, device 18, function 1:
Bridge: Cyrix Corporation 5530 SMI [Kahlua] (rev 0).
Non-prefetchable 32 bit memory at 0x40012000 [0x400120ff].
Bus 0, device 18, function 2:
IDE interface: Cyrix Corporation 5530 IDE [Kahlua] (rev 0).
I/O at 0xfc00 [0xfc0f].
Bus 0, device 18, function 3:
Multimedia audio controller: Cyrix Corporation 5530 Audio [Kahlua] (rev 0).
Non-prefetchable 32 bit memory at 0x40011000 [0x4001107f].
Bus 0, device 18, function 4:
VGA compatible controller: Cyrix Corporation 5530 Video [Kahlua] (rev 0).
Non-prefetchable 32 bit memory at 0x40800000 [0x40ffffff].
Bus 0, device 19, function 0:
USB Controller: Compaq Computer Corporation ZFMicro Chipset USB (rev 6).
IRQ 11.
Master Capable. Latency=64. Max Lat=80.
Non-prefetchable 32 bit memory at 0x44800000 [0x44800fff].

We can notice that the Netvista embbed one IDE controler, one SiS 900 10/100 Ethernet Controler, One Compaq USB host controler, one Cyrix integrated Video Adaptater and one Cyrix integrated SoundCard.

  • The IDE controler is handled without problem by the default linux IDE driver. It permit to use a Compact Flash card as first IDE drive (/dev/hda device under linux) ( see the section about compatibles Compact Flash Cards)
  • The SiS 900 network chipset is full supported by the sis900 linux driver. It permit the Netvista to be connected to an Ethernet 10 or 100 Mbit network.
  • The USB host controler is full supported by the linux usb-ohci driver. You can plug any USB devices such as  keyboard, mouse, usb-storage devices, usb-serial converter... that comply to the USB 1.0 standard. Note that the Netvista as only 2 USB ports so that you need an USB hub if you plan to use more than 2 USB devices.
  • The Video Adapter will be handled by the VESA driver (unfortunatly this chipset don't support text modes). The screen resolution must be choosen at boot time ( TOCHECK we can't hotswitch the screen resolution due to a linux VESA driver limitation ?). It embbeds 3MB of video memmory so that you can set up a resolution of 1024x768 in 16bit per pixel (64K colors) or 1280x1024 in paletised 256 colors. Unfortunately it doesn't support 24bpp colors. Another limitation is that this controler doesn't support VGA text mode.
  • The integrated sound chip is supported by the xxx OSS driver for the 2.4 kernel TODO ALSA 2.6. It provide one stereo 16 bits 44.1Khz audio line out and a microphone audio input with 3.5mm jacks connectors.
Note:
The Netvista have no Clock (RTC). That is no problem when you use it as a terminal but will be a problem when you use it as a standard PC. 2 possibilities are: asking the user during the initilisation for the current date / time or better (if the Netvista is connected to a network) using an automatic clock synchronisation service like NTP.


2. - The Netvista 8363 Firmwares

Even if the Netvista 8363 is near to be a standard PC, it doesn't come with a true standard PC BIOS. It comes with a firmware developped by IBM specifically designed for terminals. The differences are for exemple that you can't set  the date/time but instead of that you can select the keyboard layout and the screen resolution...

Before we go further we must say that there are different version of the firmware. -TODO retrieve version history but links seems to be too old and broken - I was able to boot linux after having upgraded to the latest firmware ( NS boot version: BL072902 released by IBM in July 2002 ).
Netvista 8363 BIOS firmware

Updating the Firmware

In order to update the firmware, you can download the latest firmware from IBM: bflash.2200,  (this is a local link as the IBM link look broken since IBM has sold its Personal Computer branch to Lenovo) Then 2 possibilities are available: flashing via network with the TFTP protocol or flashing from the Compact Flash Card.

  • To update via the network configure a server with a TFTP service (atftp works good) with the command #apt-get install atftpd under Debian then copy the bflash.2200 file inthe tftp root directory (use to be /srv/tftpboot by default). Then in the Netvista "BIOS", .... TODO (I haven't the old BIOS any more)
  • To update from the Compact Flash Card, copy the bflash.2200 file to the root of your Compact Flash first partition (must be primary and FAT (12?) or EXT2 ) . then in the Netvista "BIOS",  ... TODO ( I haven't the old BIOS any more)

In the following, we will talk about the Netvista with the latest firmware.

Also, this firmware permit us to boot linux from the compact flash or via the network. Unfortunately both methods have drawbacks but they work:

Booting the kernel from the Compact Flash

Booting a kernel from the Compact Flash card will be easy but not very fast. The bios won't start any bootloader as Lilo or Grub but will instead act as a bootloader: The firmware will look in the first primary partition  ( this partition must be of type EXT2 or FAT (12?) ) for the file /kernel.2x000. than will copy this file in memmory and execute it. Unfortunately the kernel image format can't be bzip2 compressed ( the standard ) but must be an uncompressed kernel image. That is the reason we will use  make vmlinux instead of make bzImage when we will compile the kernel in the next section. As a result we can't select a kernel image a boot time (as the file is staticly determinated in firmware ) and the loading can last a bit depending on the reading speed of your Compact Flash Card. ( with the livered 16 MB sandisk, the kernel loading process last 8 seconds for a 2.9 MB kernel image) 

Booting the kernel via the Network

The lastest firmware dosen't have any PXE implementation ( so Linux will not be bootable via a PXE scheme with pxelinux or pxegrub ) but the IBM firmware support DHCP to configure the IP address --- TODO : is the kernel image location only static or can be configurated  via DHCP ? - at boot time as well as TFTP qnd NFS (version 2 ?) in order to download the kernel image from the server and boot it.

Plus and cons

   + That heisst dass we don't need a bootloader like lilo or grub
    - That we cn't use a bootloader lioke lilo or grub ( shade )
  

The new firmware won't look for a boot sector as standard PC BIOSes but look for a kernel.2x00 file in the first partition of the conpact flash. Supported partitions/filesystems seems to be linux second extends Filesystem (ext2) or windows fat 16 / fat 32.

Conclusion about the firmware

The boot process last a bit and its interface has limitations (static images locations) but will do its job as well as IDE as network bootloader. To spare time it would be nice to hack then install linuxbios, openbios or u-boot as replacement for the IBM firmware. But without VGA text mode and an onboard soldered firmware chip, the hacking task would be hard to achieve.



3.- Installing Linux

The first thing we must ask us about is : Why would we install linux on a such machine ?  Your reason may be one of theese:

  • In order to use the Netvista 8363 as a low cost, small and low power consumption server that can serve HTTP service with Perl and/or PHP.
  • To use it as a terminal (X terminal, rdekstop, vnc, textual terminal with ssh...)
  • To use it as a modest desktop machine to browse internet, ear music... up to play old or simple games ( quake 1, works great for exemple)


We will describe 4 linux installations for the N2200:

  1. Linux / uClibc based desktop operating system
  2. Linux / uClibc based server operating system
  3. Linux as a diskless operating system for desktop (TODO)
  4. Linux based X terminal with LTSP (TODO)

The Netvista as a normal PC under Linux:

You need a compatible Compact Flash Card (the size depend on what you want to install but 512 MB will be enought in most cases).

Kernel Compilation

- kernel 2.4 branch
- gcc 3.3


Get the 2.4.32 kernel at kernel.org and extract it
$ wget http://kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.bz2
$ tar jxvf linux-2.4.32.tar.bz2
$ cd linux-2.4.32

Get the fixed address cmdline patch by IBM : cmdline.patch and apply it to the kernel:
$ wget netvista-cmdline.patch
$ patch -p1 < netvista-cmdline.patch

Configure the kernel:
$ make menuconfig
As the Netvista has a static devices/peripherals set ( exception made of the USB peripherals) we propose here to build a static kernel with the only needed drivers.

1.- In the main section "Code maturity level options" check "Prompt for development and/or incomplete code/drivers"

2.- In the main section "Loadable module support" we will simply uncheck "Enable loadable module support".

3.- In the main section "Processor type and features" we will select "586/K5/5x86/6x86/6x86MX" as processor family enqble the "MTRR support" and disable all the rest:
Kernel Linux Processor configuration for Netvista 8363 N2200

4.- In main section "General setup", select "Networking support", "PCI support", "PCI device name database", "Support for hot-pluggable devices", "System V IPC", "Sysctl support", "ELF" as "Kernel core (/proc/kcore) format", "Kernel support for a.out binaries", "Kernel support for ELF binaries", "Kernel support for MISC binaries" and "Power Management support".

5.- In main section "Memory Technology Devices (MTD)" simply disable "Memory Technology Device (MTD) support"

6.- In main section "Parallel port support" disable "Parallel port support"

7.- in main section "Plug and Play configuration" select "Plug and Play support"

8.- in main section "Block devices" disable everything

9.- in main section "Multi-device support (RAID and LVM)" disable everything

10.- in main section "Networking options", select "Packet socket", "Unix domain sockets", "TCP/IP networking" and disable everything else.

11.- in main section "Telephony Support", disable everything

12.- in main section "ATA/IDE/MFM/RLL support", enable "ATA/IDE/MFM/RLL support".
Then in subsection "IDE, ATA and ATAPI Block devices", enable  " Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support", "Include IDE/ATA-2 DISK support", "Generic PCI IDE Chipset Support", "Sharing PCI IDE interrupts support", "Generic PCI bus-master DMA support" and "Use PCI DMA by default when available".

13.- in main section "SCSI support", enable "SCSI support"  ( CHECK needed for USB sticks ? )

14.- in main section "Fusion MPT device support", disable everything

15.- in main section "I2O device support", disable everything

16.- in main section "Network device support", enable "Network device support" then in the "Ethernet (10 or 100Mbit)" subsection, enable "SiS 900/7016 PCI Fast Ethernet Adapter support"

17.- in main section "Amateur Radio support", disable everything

18.- in main section "IrDA (infrared) support", disable everything

19.- in main section "ISDN subsystem", disable everything

20.- in main section "Old CD-ROM drivers (not SCSI, not IDE)", disable everything

... TODO

21.- in main section "Input core support"

22.- in main section "Character devices"

23.- in main section "Multimedia devices"

24.- in main section "File systems"

25.- in main section "Console drivers"

26.- in main section "Sound"

27.- in main section "USB support"

28.- in main section "Bluetooth support"

29.- in main section "Kernel hacking"

30.- in main section "Cryptographic options"

31.- in main section "Library routines"

Your kernel is now configured.

You can also download this kernel configuration file or use the automated script to build your kernel.

Compile the kernel:
$ make dep
$ make vmlinux

cp vmlinux kernel.2x00


There is also a script that automatise this process:

uClibc environement


The Netvista as a Diskless PC under Linux:



The Netvista as a Linux based X Terminal with LTSP:

1.- Kernel compilation
2.- LTSP Linux Terminal Server Project


4.- Resultats, usability

As linux based X terminal, there is no problem as the hardware was designed for this kind of use. The only regret is that the screen bit depth is limited 16 bits. The CPU is nearly not used

Console tools OK
HTTP server with lighthttp and PHP5 Ok but
Graphical use
IceWM ok
Dillo ok
Firefox ?

Boot times:


5.- References

  1. IBM Netvista type 8363 support page - broken
  2. uClibc - http://uclibc.org
  3. uClibc++ - http://cxx.uclibc.org
  4. Scratchbox - http://www.scratchbox.org
  5. Linux Terminal Server Project - http://ltsp.org
  6. Author HomePage - http://jeanchristophe.duber.free.fr


Last edited the 9

Valid XHTML 1.0 Strict Valid CSS!