T-20 EVO

this small project was aimed at installing linux on T-20 computer. since originali it has been provided with Window$ NTe ('e' stands for 'embedded') it was useless for me.

during my researches on how others have done it i found many pages. some especially usefull are listed below:

below i'll describe in short how it can be done along with some problems i've spotted. for full description of basics see pages mentioned before.


Compaq T-20 EVO is a thin-client that operates without any moving parts. there are many configurations available. you can get more information about it on Karl's home page.

configuration that i have is 128/96 (128MB RAM + 96MB of flash). it has 300MHz PC-compatible CPU by National Semiconductors.

by default T-20 has:

  • 4 USB 1.1 ports
  • VGA monitor output
  • sound card (headphones output and microphone input)
  • 100Mbit ethernet card
  • 5V DC power supply (up to 20W, usually operating at about 10W)


it's dimmentions are proximately: 5cm span, 19cm width and 21cm height. t20_evo_img_front.jpg t20_evo_img_side.jpg

some basics concepts

since internal flash cannot be used as regular r/w disk, it has been decided to only place kernel and initrd for booting there. the real filesystem that is to be booted should be placed on external USB-attached disk. to make it even more flexible, there is possibility to leave script of predefined name (namely '/t20_preboot' with at least 555 mode set) on this disk's root directory and it will be executed before booting from it. since any executable is allowed in here you have high flexability to do whatever you want without requirement of re-flashing the device, which is problematic and time consuming.

how to run linux

i've decided not to write much about flashing procedure, which is already described well. instead i'll concentrate a little on initrd solution i have used + give you hints about some nonobvious problems you might spot.

how does it work

after T-20 have done some basic tests (POST?) it begins system boot procedure. this is where booloader should be installed (in this case we use grub). then the kernel is boot. at this moment there is no way to access external disk, therefore kernel must be flashed on device's EEPROM. to allow booting from different disk we use initrd. from the point when initrd is run there is no magick – everything goes as on regular PC.

preparing image and flashing

at this moment it is assumed you have already prepared grub and both stages files (see links for more information how to do this).

lets start with kernel – there are no special requirements about it. i took 2.6.x series since WiFi driver i planned to use required it. in general you can choose any 2.6.x and 2.4.x kernel for sure (maybe even older?). i configured my kernel with modules support so that i'll be able to add new functionality easily. do not forget that to change kernel you'll need to go through whole procedure of image generation and flashing! you should compile into kernel only things that you will require for sure.

i took 2.6.18 kernel and configured it this way.

prepared initrd script is available here. you'll need to install your modules in initrd_evoT20/lib/modules/ by your self (the ones you've compiled). to make initrd from this dir type:

mkcramfs initrd_evoT20 initrd

to make flashing easier i've prepared also some very simple scripts for starting and stopping required services. dhcpd configuration is also present in config scripts.

note that TFTP servers differs slightly. i've went through few before i finally found the one that works with my T-20, namely “HPA's tftp server” (package name is ftpd-hpa, under Debian Linux). others worked well until ~32MB of data were sent to device. than it suddenly stopped and device rebooted. probably other TFTP would work fine in versions with smaller flash, but in my case i had to pass 96MB and this happened to be a problem. :/

preparing root filesystem

at this point you should have T20 already flashed and kernel should boot.

there are man ways to prepare filesystem, since there are not additional requirements for content. you could just format your USB drive to, for example ext3 filesystem and simply copy necessary files yourself.

but to make it as simple and error-proof as possible the best would be to plug in USB drive, reboot computer and begin installation procedure of linux distribution of your choice choosing USB disk as root partition. :)

now simply plugging your disk to T-20 and rebooting should cause it to boot from newly created partition! :)


known problems

although procedure of installation linux is long it's not always the end. there are still some problems you might spot.

no keyboard on start

when booting there is no USB keyboard module loaded, so there is no way to operate on bootloader parameters. they have to be simply hardcoded into its configuration. there is not much you can do about it. the first stage you can use your keyboard is after kernel will start and detect USB host and then enumerate and run keyboard module.

sound device conflict

first problem i've spotted after installation of linux was sound device conflicting and sometimes crashing. it happened that sound card had conflict with other peripheral. it helped to load sound card with the following line:

modprobe sb io=0x220 irq=7 mpu_io=0x300

ethernet driver spaming syslog

ethernet card on T-20 uses 'natsemi' kernel driver. it happened to have a bug in kernel driver, that causes it to spam syslog with messages (see http://muzso.hu/node/3870). a friend of mine found it as a problem, since after few weeks syslog didn't left any free space left on disk!

fortunately the cure is simple – you need to take a look into kernel source, namely natsemi.c file and look for function named 'netdev_timer'. there is a following code:

if (!netif_queue_stopped(dev)) {
  // ...
} else {
  // ...

the condition should be exactly opposite and look like this:

if (netif_queue_stopped(dev)) {
  // ...
} else {
  // ...


this shity logo of M$ should be finally removed from image during bootup! :)

prjs/t-20_evo/t-20_evo.txt · Last modified: 2021/06/15 20:09 by
Back to top
Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0