9. About this FAQ

1. Hardware

The Corel Computer NetWinder Linux Computer is a high performance,
compact RISC based machine equipped with a variety of networking,
telephony, and multimedia peripherals.

Based on the Intel StrongARM processor, clocked at 275 MHZ, the
NetWinder uses the performance, and stability of the Linux Operating
System to deliver over 250 MIPS of power, while drawing only 10 watts
of power.

There are two basic hardware choices, a plastic case and a rack mount.
SCSI is available as an option on the rack mount. The OS (OfficeServer)
and TC (Thin Client) models have depopulated boards, meaning certain
hardware (such as video capture) is not normally included.

The NetWinder can be ordered with a variety of software options. The
DM (Developer Machine) is the basic image which includes most of a normal
RedHat distribution. The OS (OfficeServer) replaces the previous WS and GS
models and provides a pre-configured system for managing a small LAN,
providing firewall, network access, and file and print services. The TC
(Thin Client) offers a diskless workstation that can run Citrix or X windows
applications remotely.

There is also a newer, Transmeta-Crusoe based NetWinder called the 3100.
It boasted about 4x the performance at the same or lower power consumption,
and there was a PCMCIA expansion option. Unfortunately these units
never shipped in any volume before Rebel.com went under.

The original
netwinders had a very loud fan, and a badly designed fan opening that
led to whistling sounds. Later versions used rounded holes instead to
reduce the whistling sound. Rev6 ARM and all Crusoe models use a
larger, much quieter fan. On the Crusoe, the fan is internal (mounted
on the CPU), which makes it even quieter.

The fan cycles between two speeds, and can be quite loud at its higher speed. The command:

set_therm 50

sets the temperature at which the fan switches to high speed to
50 degrees C, reducing the time it spends in high speed mode. All new
versions of the software default to this level.

Standing tanding the NetWinder on end improves convective cooling,
reducing the need for high speed fan operation. And you should always
use the provided stand, so that the vents on the bottom of the unit are
free.

The Netwinder
incorporates a lot of functionality in a small (9.5"H x 6"D x 2"W )
box. It may be mounted either vertically in a stand, or laid flat. It
reportedly cools much better and more quietly in the vertical
orientation.

NetWinders are available in stand-alone plastic cases (the
"Desktop" model) as well as in a 1U rack mount with one or two separate
motherboards (the "Rackmount" model). Furthermore, the OfficeServer
product features a depopulated motherboard, without sound, IrDA, or
video capture.

Good Question. This was a surprise to some early purchasers of the
NetWinder.

Originally there was to be modem circuitry on the daughtercard.
However, it turned out that any modem operating at >14.4kps requires
hefty licensing fees because the modulation algorithms are patented.
It turned out to be considerably cheaper to buy an external modem,
rather than for us to include the modem components in the box. This
has to do with modem manufacturers having much higher volumes than
the NetWinder, therefore they can ammortize the licensing costs over
more units.

The serious downside to this is that you now must consume your only
serial port for an external modem if you need to connect to the net
or anywhere else via dialup. Perhaps future NetWinders will contain
USB interfaces so that the number of ports is not a problem.

Note: there is a second serial port on the '877 chip. Its signals are
available on headers in the middle of the motherboard. You need to add
a voltage level shifter (from 5V to 12V) chip, to get a functional
second serial port. Thanks to Dima Veselov, you can find more details at: http://lich.phys.spbu.ru/kab00m/projects/netwinder/index.shtml

On the Rackmount hardware, this chip is present and the second serial
port can be accessed on the front of the unit on a telco-style RJ-45
connector.

The NetWinder DM includes the NetWinder with keyboard, mouse, and stand.
Documentation includes a small (12 pages) leaflet describing some basic
information about the system, warranty, serial numbers, root password,
and contact information.

NetWinders are no longer available for sale, as Rebel.com no longer
exists. Bulk purchases of remaining inventory might be accepted
however, you should contact the receiver (KPMG) in that case.

The NetWinder takes a single SO-DIMM memory module up to 256MB in size.
However the NetWinder requires 32-bit wide memory, as opposed to the
more common 64-bit wide memory that is used on most laptops.

Memory can be bought from Netwinder Inc (see http://www.netwinder.net
for contact information). The part number for for 128MB for StrongARM
NetWinder is 381-12811, rumored price is $80US. They do not have any
256MB parts.

Erik Anderson (http://www.codepoet.org/ram/
for more info) see notes: Centon was the main RAM manufacturer for the
memory parts used in the Netwinder products. The Centon P/N for the
128MB part is CCRL128M/PRPS0, while the 256MB part is CCRL256M/PRPSO.
Note that as of March 2003 they apparently have no more inventory left.
Contact was Arlin Nielson at Centon Electronics, Inc., tel 800-836-1986
ext. 2015 - Hours: Mon-Fri 9am to 5pm PT.

Andrew notes: The SO-DIMM can't have a PLL on it either. This limits
you to the single height SO-DIMM, unless you are a hardware hacker.
Most double height SO-DIMMS are cheaper, but have a PLL.
The PLL helps with the longer traces on the bigger SO-DIMM, but it
gets totally messed up by the NetWinder's clock shaker
(an RF emissions limiting device).

Andy Coulthurst writes: I ordered a standard 256Mbyte 144 pin
laptop SODIMM from Crucial ( in the UK ) , having thought about how the
normal Netwinder memory is organised ( 32 instead of 64 bit ) and
taking acount of data being addressed using RAS/CAS , I came to the
conclusion that it was woth the risk spending 32 ukp on the upgrade.
And success ! I ended up with a 128Mbyte Netwinder DM. ( I think my
machine is a version 5 hardware ).

RalphS writes: Yes, this works, if you are daring you can try
normal 64-bit laptop SODIMM memory. I've done it successfully, but
this was never blessed by the hardware guys, and it could destroy your
winder, the memory, or both. You'll only get half the capacity of the
memory (eg. a 128MB module will show up as 64MB). If you are clever
with a soldering iron, you can lift the chip select lines from half of
the individual chips on the memory module, and wire them together to
create a second bank, to get the full device capacity. Not all SO-DIMM
modules can be modified in this way, and they all are different, so I
can't give you any more specific instructions.

Rick from hardware notes that: The key is MA12, which the the
Footbridge does provide. 64 and 128Mb SDRAMs didn't use A12, but 256Mb
devices do. We had to split up the CEx groups on stock modules into
32bit chunks. The extra CE lines were run to pins 70 and 72. pin 70
was later defined by JEDEC as A12, unfortunately some time after the SA
NW was designed.

Some more notes from Andrew: [From] page 4-3, table 4-2 "SDRAM Addresses" [of] ftp://ftp.netwinder.org/pub/netwinder/docs/intel/datashts/27811501.pdf
A12 is only used in mode 010. If you look at the previous page, A-2,
table 4-1 "Array Sizes", you will see mode 010 is used with some 8 MB,
16 MB, 32 MB, and 64 MB arrays, with the latter one being important.
This does NOT prevent us from using 256 MB, just have to use different
chips that use mode 100 though, which is what all NetWinders DIMM use.
Firmware doesn't even try mode 010.

The NetWinder is a low power computer that was designed to be left on
all of the time. Instead of having a battery to maintain the real time
clock when the power is off, there is a big capacitor. This will normally
maintain the time for a couple of days with the machine switched off.

You can set the clock with the 'date' program and then use the 'clock'
program to write the system date into the CMOS real time clock (in UTC
format):

date -s mm/dd/yy
date -s hh:mm
clock -w -u

Or, if you are connected to the Internet, you can get the time from one
of the public time servers:

rdate time.nist.gov
clock -w -u

On August 7th, Andrew Mileski warned that adjtime() only allows
forward time adjustments, which causes ntpdate to bomb out when the
clock needs to be stepped backward. He suggests this sequence to get
around the limitation if you are using ntpdate to set the clock:

date -s 980101
ntpdate www.netwinder.org
clock -wu

While the system is running, you can xntpd to keep your clock synchronised
with a public time server. www.netwinder.org is available as a server.

You shouldn't. If the configure script cannot determine the correct
system type, then the program you are trying to build is ancient. The
proper way to fix this is to modify config.guess and config.sub files
in the package you're trying to build. The most convenient way to
accomplish that is the following command:

libtoolize --copy --force

Other things to remember are the compiler flags -fPIC if you're
building libraries, and possibly -fsigned-char if the code expects
chars to be signed by default.

The NetWinder will operate with a 9VDC to 15VDC power supply capable of
supplying a peak power of 20W and a sustained power of 17W. The
outer sleeve of the connector is ground. Operating close to the
upper/lower voltage limits is not recomended.
(See Background below for details)
The RackMount unit needs more power than the desktop unit
due to 3.5inch hard drives drawing more power.

As of March 1999 (when Rebel.com took over the NetWinder division) all
units are being shipped with a 12VDC supply rated at 1.5A or more
(1.4 Amps continuous and 1.7A peak). North American units are shipped
with a "StrongWorld" brick that plugs directly
into a wall socket. European customers are getting a switching power
supply that operates on 110-240 VAC and 50-60 Hz.

If you are having problems (eg. smoke) with your power supply,
contact Rebel.com at <support@rebel.com>. (European customers who bought
units before March 1999 and received 9V, 2A supplies can continue to
use the supplies unless they experience power problems).

[Background: The DC input must not fall below 9VDC nor exceed 15VDC,
including ripple. The supplied power supplies are
designed to balance susceptability to input voltage tolerances and
NetWinder internal power dissipation. For the Rev5 NetWinders, the
internal power supply circuitry is optimized for 12V, which is why the
European supplies have been switched from 9 to 12V.]

You don't turn it off! The NetWinder is a network computer that is
designed to stay on all the time. (It consumes about the same power as
a couple of night lights.) If you must turn it off, pull out the power
cord.

The big orange button on the case generates an interrupt
(currently ignored), and when held depressed, causes a reset. (Note
that on some revisions of the board, you have to hold the switch down a long time to actually reset the machine. It require as long as 10 to 12 seconds on some boards.)

Alex Holden <alex@linuxhacker.org>
has written a "nwbutton" device driver which allows programmable action
to be taken when the orange button is pushed a certain number of times.
This driver has been included in the 2.0.35 kernel series (dated after
1998/Dec/10), and the default action is to gracefully reboot the
NetWinder when you click the button twice quickly.

This is a very frequently asked question on the mailing lists. The answer is itdepends.

For certain instruction mixes, the StrongARM processor used in the
NetWinder can be very fast. For example, its integer multiplication
operation is very fast. If the program fragment of interest fits in
the cache, the short instruction timing of the RISC processor becomes
your friend.

On general operations, the NetWinder can feel like a 180MHz to
200MHz Pentium. For floating point intensive operations, it will be
much slower since it does not include a hardware FPU. (Eric LaForest
and Stanislav Vardomskiy posted some benchmark results to the devel mailing list on 18 July 1998, which can be retrieved from the archives.)
On May 24th, Andrew Mileski reported that Distributed.net's RC5-64 client was running at 364.40 kkeys/sec on his NetWinder.

It should be noted that using different versions of the GCC compiler to compile something on different architectures is not
a good benchmarking tool. You end up with a comparison that tells you
more about the quality of the compiler or the amount of work that the
compiler must do to produce "good" code rather than actual machine
speed.

The BogoMIPS value computed by Linux during boot is
architecture dependent. On the ARM, it produces a number that is
approximately the processor clock speed in MHz.

Note that as of kernel-981029, the BoardRev that is reported is "adjusted" to try and compensate for the early manufacturing runs.

The last two digits indicate information about the system and
daughterboard configuration. At present, the only value there is FF.

You can also determine the revision from the serial number sticker. The part number
on the left includes 1.0 or 1.1 for Revision 4 or Revision 5 respectively.

Revision 3 was used for testing at Corel Computer Corporation.

Revision 4 is the first that was available within the general developer community.

Revision 5 is the latest version. The most obvious differences
from revision 4 include: (1) the ability to switch off the fan (not
just switch between low and high), (2) the fan opening has rounded
holes to reduce whistling, and (3) removal of the telecom/modem
interface. Revision 5 also includes a "clock shaker" circuit that
randomizes the main system clock enough to allow the NetWinder to
qualify as a FCC Class B Computing Device. Timer 0 is "shaken", so
Timer 3 is now the main stable clock. (Timer 3 is unused and does not
run on Rev 4 and earlier.)

Is there a way to disable the speaker without affecting the Stereo Line
output? Besides opening the case and unplugging the speaker. :)

Indeed there is. Recent versions of the sound driver have a "private"
register that can be used to control behaviour. The "mixer" command lets
you access the register. Type "mixer" with no arguments to see the
current settings. There will be a line "private..." at the end, if you
have it (otherwise kernel upgrade & mixer program update required).
Usage is a bit quirky, but to shut off the speaker you would say:

mixer -private=17

There are four bits you can twiddle. They are defined in arch/arm/drivers/sound/wa_vnc.c
in the kernel source code. Bit numbers are as follows:

To use them, you add together the numbers you want (in decimal) and then
pass that to the "mixer -private=..." call. Yes, it's a bit awkward, sorry
about that, hopefully somebody will make a nice GUI someday for it.

You can install pretty much any normal IDE hard disk drive in the
NetWinder. Some of the difficulties you might encounter include:

* Mounting hole patterns have changed over the years. All but
the earliest NetWinders use plastic adaptor strips to mount the hard
disk.

* Drives 8GB or larger only report 8GB size: you need to upgrate the NetWinder's firmware to recognize the full size

* Drives over 32GB have a similar problem, again a firmware update will take care of this.

* NetWinder seems "dead" with a larger drive plugged in but
works fine with original drive: you need a larger power supply, the new
drives take more power.

Other than this the only known incompatibility is the 3.5" IBM
Deskstar drives in a StrongARM rackmount configuration: there is a
reset latchup condition, for which we have no good solution. Avoid
using the Deskstar drive.

How to get the NetWinder software installed on a new hard
disk? The easiest way is with a 2.5" to 3.5" adapter, which you can
buy at most computer stores. Then you install the 2.5" drive in your
PC, partition and format the drive and install a DM or other disk
image. Alternatively you can use the NetWinders network boot
abilities.

[The following
information was provided by one of the former hardware engineers at
Rebel. It explains some of the issues with DMA transfers on the
"legacy" devices present on the NetWinder].

ISA Device DMA application

StrongARM based NetWinder ISA devices (Sound, Parallel, Serial
IrDA) are capable of operating in DMA mode, however, some usage rules
have to be followed to get around an undocumented "feature" of the
Winbond 83C553 ISA Bridge device. There are several existing errata
from Winbond regarding ISA and DMA, however, this particular item had
not been documented by them for some reason. The PCI arbiter within
the 553 generally follows all the rules of PCI 2.1, with one subtle
exception; ISA DMA cycles will not release the PCI bus for retries once
an ISA cycle is started, despite the PCI bus arbitration rule. This,
in itself, would not be a problem, as long as all the other devices on
the PCI bus (Disk, Ethernet,Video) "misbehaved" in the same manner,
which they do not, nor can they be programmed to. The behaviour exists
in all revisions of the 553, and even carried over into the more
advanced, pin compatible 554. It contradicts the published 553
datasheet descriptions of register bits that govern, and by functional
implication, should prevent the problem.

Here's an example of what happens during a Sound system DMA operation (this is how we discovered this problem):

For PCI DMA requests that read data from system memory, a PCI
outbound data buffer in the FootBridge exists to accommodate compliance
with the retry rule without stalling the core to wait for PCI
arbitration. This buffer has a 1msec timer on it that resets the PCI
bus if the outbound data is not taken by the device that requested it.
During DMA driven playback of wave files, there will be chance
occasions when an ISA DMA (read from memory) cycle by the sound chip is
granted during the retry cycles of another, concurrently running DMA
device. If this second device was awaiting a read cycle from memory,
the core would place its data in the outbound buffer first, along with
tags to ensure that the appropriate requesting device retrieves it.
When the ISA DMA cycle seizes the PCI bus at this time, it does not
release the bus for retries. The read data is stalled in the buffer
since the destined device cannot get access to the PCI bus, and the
system hangs until the 1msec buffer timer clears it all out. Not only
does the sound chip miss chunks of sound data over that period, the
other device loses the word that was stalled in the buffer.

There are several ways in software to avoid the data
corruption that occurs, all with various tradeoffs in system
performance. Developers that are experimenting with the sound,
Parallel port, or IrDA capability of the NetWinder should be aware of
this issue if ISA DMA cycles are enabled, and devise a workaround that
best matches their particular system performance needs.

If you don't have the rescue partition (eg. an older unit), fear
not. The Netwinder firmware (NeTTrom) can boot the system in a number
of different ways, including over the network. The latter works most
reliably over the 10BaseT (eth0) port.

NeTTrom can be told to use a different kernel file, such as
/boot/vmlinux.rescue (present on all disk images up to dm-3.1-15). Or
it can fetch the kernel via tftp over the network.

The default framebuffer is 1024x768. That's a little big for
standard timings. If you use the 640x480 fb, you'll have more success:

rm /dev/fb0current
ln -s /dev/fb0color640x480x16

One has to keep in mind, though, that there is a general tendency
to move away from a frambuffer device, and the new disk image (2.0)
includes Andrew Mileski's Accelerated X server that uses the on-board
video chip. With the new X server the way to get X to sync is to edit
the apropriate configuraion files.

Version 2.3.3 is the last (and perhaps final) version of NeTTrom. It
supports up to 256MB of RAM and hard disks over 30GB in size. This
version also knows how to deal with new ext2 filesystem options, so you
won't run into trouble if you mke2fs using new tools.

Important! If you are trying a version of NeTTrom >= 2.0.6
with a 2.0 kernel, you'll need a kernel dated greater than 990121.

And also note that if you are using booting a 2.2 kernel with
version 2.0.4 of the firmware, you will not be able to load nwflash.
You have to use a 2.0 kernel. (So as a general rule, it is best to
update the firmware first, then the kernel, and then the disk image.)
The only exception is if you upgrade "past" 2.0.6, in which case you
must make sure you have a kernel newer than 990121 available.

In DM-3.9 we are still using the same version of X. The reason is
because the cyberpro2000 video chip support is rather ugly, and hasn't
made it into the XFree sources. So to go to a newer version would
require a lot of work.

As far as we know nobody has tried building Xfree4. Don't bother trying unless they include support for the cyberpro20x0.

to your Apache 1.3.x httpd.conf file to make it listen to more
than one port will help. This introduces a select() call before the
accept() call that was causing problems in his earlier attempts. He
has documented this at http://netwinder.lerdorf.on.ca/

If you have a problem where a page (or image) seems to load 90% of the way and then pauses for a long
time before completing, the problem is with FIN_WAIT in the kernel
currently used for the NetWinder. The solutions include: using kernel
2.0.35, or disabling KeepAlive, or reducing the timeout from the
default 15 seconds to something much shorter (like 3 seconds).

There are many devices appearing that use a standard parallel port to
implement IDE-like communications. The paride drivers are available from http://www.torque.net/parport/paride.html Included in this family are a number of drivers including the pd driver with paride support for the Syquest drive and the pf driver with epat protocol used with external LS-120 drives.

(Note: In the 2.0.x kernels, you can load only one of pd.o (for paride), ppa.o (for Iomega parallel adapter support, like in the ZIP
drive), and lp.o (for parallel printers, what a novel use for a parallel printer port).)

There has been a change in the format of the UTMP and WTMP files in the
transition from libc5 to glibc. This can cause many utilities like finger, who, or w
to complain about the files being corrupt. Unfortunately, some of the
binaries provided in the NetWinder disk image expect one format and
some expect the other. When all of the distribution gets put together,
the format should stabilize on the newer UTMP/WTMP format.

For more cutting edge development (such as the latest RedHat rawhide
sources, or the 2.4 kernel) you'll need more recent toolchain.
Unfortunately things are a bit unorganized at the moment. The best
bet is to use the tools from the DM-3.9 disk image. Its a work in
progress.

Thus when you change kernels, only one link (/usr/src/linux)
needs to be adjusted, and the new headers will be used. If you
download any of the kernel-headers-2.x.y RPM packages and install them,
the /usr/src/linux symlink will be appropriately set for you.

However the glibc developers (rightly) argued that once glibc and
applications are compiled and installed on a system, the headers should
not change since this could cause binary API problems.

So the new strategy is that /usr/include/asm and
/usr/include/linux are now directories, owned by the glibc package.
These directories contain the kernel headers from whichever kernel was
used to build glibc. The downside of course is that you now have two
copies of the kernel headers.

To top things off, you are not supposed to build your kernel
in /usr/src/linux anymore, but rather somewhere private like your home
directory. Yes now we have three copies of the headers. And the
kernel build scripts still make reference to /usr/include.

This was only a problem on disk images before dm-3.1-15. As of this
disk iamge, everything is built cleanly in RPM format, and there should
be no issues with the RPM database.

If you have an older disk image we urge you to upgrade.

The internal RPM data format has changed a few times,
unfortunately. This generally makes it impossible to install newer RPM
packages on an older system. The general remedy is to upgrade the RPM
package (you must do this by fetching a tarball and compiling it).

Early versions of the NetWinder kernel used /dev/therm for the
temperature sensor and the fan control. To move more in line with the
growing Linux practice, this was changed to /dev/temperature in the ELF
kernels. /dev/temperature is assigned major device 10, minor device
131.

As of dm-3.1, partitioning your disk is the same as on a PC. You can use fdisk or any number of other related tools.

On the very old images, one must use pfdisk. You need to specify he
geometry (cylinders, heads, sectors) as the first step of using it. Beware
because pfdisk can not handle disks with more than 1023 cylinders, so if
you have a large disk, you need to create a geometry that has fewer
cylinders (and more heads). Andrew Mileski suggested using:

cyls = cyls / 2^N <= 1024
hds = hds * 2^N

If you have an existing NetWinder HDD, you can find the geometry used
with 'dmesg | grep PTBL' or 'hdparm -g /dev/hda'.
So to partition a disk, you might do:

(This is mentioned in the instruction pamphlet that Corel provides, but there are still questions about it...)

For you history buffs, vnc was the original name for the
NetWinder product. It stands for "video network computer", since the
product evolved from the earlier Corel video console (a
video-conferencing solution). However the name "vnc" was already
taken, and the marketing guys came up with NetWinder instead.

- do 'make menuconfig' and under the sound menu,
built sound support as a module
- run the "old sound config script"
- say "no" to everything but WaveArtist and OPL2/3 support
- if you want, enable /dev/audio and /dev/midi

The build the kernel as normal.

Note for Rev4 boards: some boards have the volume slider installed
backwards (manufacturing error). You can fix this in software by
loading the sound module with the parameter "reverse=1".

There is unfortunately
not a distributable version of Netscape available for the NetWinder.
There exists a beta version supplied by NetScape to Corel Computer for
evaluation purposes. This beta has a number of known bugs, and cannot
be distributed due to legal reasons. The CCC->rebel.com transition
and the netscape->AOL mergers have thrown a big wrench in the legal
process... it's unfortunate, but that's the way the cookie crumbles...

The default disk partitioning scheme has changed... with the new
firmware you'll need to juggle, to boot the old image... once the drive
is formatted and repartitioned, with the new image, you'll need to
"unjuggle" back.

You might have to program the SROM on the tulip (eth1, 10/100 port). If
the port won't work, then fetch "tulip_upgd-2.2" and
insmod it, then reboot, then the port will work again.

First, this is a bug in the dynamic linker. The ELF specification
allows non PIC code to be linked into a shared library. This
introduces relocations into the .text segment of the shared library.
The dynamic linker is expected to fix these up. We currently do not do
this. I'd have fixed it long ago if it was easy!

On ARM Linux, this particular bug is caused by branch
instructions in code that is not compiled position independent. It
introduces a PC24 reloc into the .text segment (the code) of the shared
library. Position independent code has no such relocs. The latest
dynamic linker will attempt to fix up these relocs, but at the moment
it is not able to do so in all cases. In order to understand why you
need to know a little about the branch instruction. On the ARM the
branch instruction is PC relative. That means when it is executed an
offset is added to the current PC. The branch offset is contained in
24 bits of the instruction. This means it can branch +-2^24 words from
the PC. However when trying to branch to a shared library routine, the
distance from the current PC to the start of the routine can exceed the
offset representable in 24 bits.

To get around this the address to branch to would have to be
moved into a register, then moved into the PC. In our case this is no
longer possible, the fix has to be done in the space of one
instruction, not two. In PIC code, the address to branch is set to a
PLT entry. The code in the PLT entry looks up the real function
address in the GOT, loads it and moves it into the PC.

The current ARM dynamic linker will attempt to fix up PC24
relocs in the .text segment of shared libraries. It is only moderately
successful however. The reason is the way symbol resolution is
accomplished in the dynamic linker. It is most easily described by
example. Consider a program p which uses two shared libraries,
libc.so.6 and libfoo.so. Lets say both program p, and libfoo.so call
printf in libc.so.6. Also assume libfoo calls sprintf but program p
doesn't. Let's also assume that the code calling printf and sprintf in
libfoo.so wasn't compiled PIC, so we have PC24 relocs that need fixing
up in libfoo.so. The dynamic linker when loading p, loads and resolves
p first, then libc.so.6, and then libfoo.so.

When loading libfoo.so, the dynamic linker will attempt to fix
up the PC24 relocs. It attempts to resolve the addresses of sprintf
and printf to bind to. The default address resolution code, returns
the address of sprintf in libc.so.6. For printf it is a little
different however. It will return the address of the PLT entry in the
program p for printf. Typically program p will load at 0x02000000 in
ARM Linux, and the shared libraries at 0x40000000 and above. Thus the
offset to printf is going to be too big to represent in 24 bits. The
offset of sprintf will likely be ok as well. It is theoretically
possible for a program to use a combination of shared libraries such
that a branch between them couldn't be represented but this is
unlikely. The program in question would have a large memory footprint.
The only one I can think of that would come close would be Mozilla.

Before anyone gets excited, all the behaviour I have described
here for address resolution is legal. What needs to be done is is to
write new resolution code which will not attempt to link to the PLT
entry in the program in this one special circumstance. I just haven't
got there yet.

One other thing of note regarding this problem is the
behaviour of the memory manager when the .text segment is written.
Shared libraries are designed to have the code shared among several
processes. Only the data must be kept separate. This means that a if
10 processes were using libfoo.so, the code would be in physical memory
once, and virtually mapped into all 10 processes If libfoo.so
requires fixups in the .text segment there will be 10 copies of the
code in physical memory. This is unavoidable as the fixup introduces an
offset into the instruction based on the virtual address.

On the dm-3.9-28 image if you type "startx" it will fail. The problem is that you must remove or rename "/dev/tv". Just do:

mv /dev/tv /dev/tv.old

and it should start up fine.

(Wondering how come something this obvious got missed? The
dm-3.9-28 image wasn't really meant to ship - we were getting reading
to release 4.0 but it never happened. So 3.9 went out as-is, with some
obvious things like 'startx' not having been noticed at the time).

All registered developers can receive Email via name@netwinder.org.
You should make sure that the .forward file in your home directory
on NetWinder.org always points to a working Email address.

You can also FTP web pages to your public_html subdirectory
(/users/n/name/public_html, where name is your registered developer
name, and n is the first letter of that name) and they will appear on
the web as http://www.netwinder.org/~name. By default, index.html is served when someone requests a directory.

You can change your password on netwinder.org by connecting with SSH
which will directly run the passwd command, allowing you to change your
FTP password.

To get the latest DM disk image if you already have a previous version of the uncompressed disk image tarball:

rsync -L --partial ftp.netwinder.org::images/dm.tar .

This will save you much download time, and you can repeat the
command as often as necessary if the download fails or you get
disconnected. ["dm.tar" and "dm.tar.gz" are symbolic links to the
current DM drive image, which also makes automated update downloads
simpler.]

The folks at Rebel.com are now maintaining a series of FTP indexes
and a search engine for the public files available on
ftp.NetWinder.Org. The indexes include separate sections
for documentation, RPMs/SRPMs, and miscellaneous files, as well
as a listing of what's new on the server.

Freetext searches of all the HTML pages on the site can also be performed.

There are a
number of discussion groups at netwinder.org. They are available both
as email lists and via a news server (news.netwinder.org). The current
list of discussion groups can be found at http://www.netwinder.org/mailman/listinfo.

Messages are automatically forwarded between the mailing list and
the corresponding newsgroup. So you can use either email or news, to
access the same information.

To subscribe to a list simply go to the above web page and
follow the instructions. You can use your mail client (or procmail, or
Exim filter file, etc.) to sort the mailing list messages based on the
Sender: header.

All of these lists are also available in digest form. This
means that you will receive a single email with the day's messages,
rather than individual messages. Digests can be selected when you
subscribe, or later on by editing your options through the web
interface.

Archives of past messages are also available. They can be
accessed through the web interface. We hope to have complete history
of messages eventally.

Ben Pfaff suggests the programmers docmentation at http://www.arm.com/
and in particular the ARM7TDMI data sheet. Chapter 3 includes the
programmer's model and Chapter 4 details the ARM instruction set.
Andrew Mileski suggested the ARM8 documentation, since it is the same
architecture (except it doesn't include an MMU).

NetWinder.Org has moved the main developer information channel from
the old mailing lists to newsgroups on their private server.

The NetWinder newsgroups are available on news.netwinder.org. They
consist of netwinder.advocacy, netwinder.announce, netwinder.bugtraq,
netwinder.devel, netwinder.features, and netwinder.general. There is
also a netwinder.test for test messages.

4. Background Information

The NetWinder line has been purchased by a new company called
NetWinder Inc. They are selling units through VARs such as GDB
Solutions and ProPlus (those are the ones I know of, there will
probably be others). The prices I've heard reported are as steep as
ever.

If you are looking for a cheap netwinder, you might be
lucky to find a used one. They appear on Ebay from time to time.
Also, Computer Recyclers in Ottawa has them once in a while, and will
sell them for cheap if you barter with them long enough.

Occasionally, individuals sell netwinders by posting their for sale announcement to the general mailing list.

On January 20th, 1999, Corel signed a letter of intent which gives them
a 25% equity stake in Hardware Canada Computing (HCC, http://www.hcc.ca/
) in exchange
for the NetWinder division. An undisclosed number of employees
will be transferred to HCC, with others returning to the main
Corel business.

Hardware Computing Canada (HCC) bought the NetWinder line from Corel in
January 1999, and a few months later they renamed the combined venture
to Rebel.com. The media made a big fuss over the rebel.com domain name
having cost $5,000,000, however the reality was that only a few
thousand were spent, with the balance to be paid when Rebel hit a
certain amount of revenue (which it never did).

On July 13, 2001 Rebel filed for bankruptcy. Things had been
pretty rough for the last six months, and the failure to form a
strategic partnership with Fuji/Xerox eventually killed the company.

During the Rebel.com time, OfficeServer product was developed
and three major versions of it were completed. OfficeServer combined
the features of WebServer and GroupServer.

Also, Rebel designed the NetWinder 3100, a new hardware model
based on the Transmeta Crusoe 5400 processor. Like its predecessors,
the 3100 exists in both a plastic desktop model (grey and blue
colours), and a metal rack-mount version with two units side-by-side.

The 3100 offers about three times the computing power, in the
same form factor, and using 50% less power than the earlier netwinders.
Unfortunately, only about 100 units were built before Rebel died, and
most of these went to reviewers or were used for demonstration
purposes.

5. Projects

A complete Debian chroot environment is now available that can be
easily installed into a directory on a NetWinder and run without
affecting the software that Rebel.com supplies. ftp://ftp.jimpick.com/pub/debian/arm/

Rod Steward has put together a completely RPM-based distribution
based on Redhat 6.0 and its security updates. It is based on
versioned glibc libraries, so it will break anything you've installed before. (It is probably best to install it on its own partition
until you are sure of your way around.) There is also a small tarball
available which can simplify initial installation of the titan-VI RPMs.

By far the best choice is openssl/openssh, which compile out-of-the-box on dm-3.1 and dm-3.9.

If you really want SSH, then the following tips may be helpful.

SSH 1.2x versions require a bit of work to operate on the NetWinder.

CFLAGS="-D_GNU_SOURCE" ./configure --disable-asm

Then edit config.h and comment out the line so it looks like this:

/* #define HAVE_OPENPTY 1 */

At very least, DM9 and DM12 require that you also comment out this line:

/* #define HAVE_UTMPX_H 1 */

Then just "make" and "make install".

Disabling compiler optimization is necessary or "make install" will endlessly loop trying to generate a prime for p.

For sshd, there are some problems with the pty support on the netwinder
because it uses a relatively new glibc and a relatively old kernel.
While this should be fixed in DM15, there have been reports to the
contrary, along with the suggestion to edit config.h to comment out
the line like this:

/* #define HAVE_DEV_PTS_AND_PTC 1 */

This solution also works on DM14, and OfficeServers which are based on
that release.

SSH 2.x versions are reported to compile and work out of the box on
the NetWinder. (But note that SSH 2 has a more restrictive license.)

At the Atlanta Linux Showcase, Corel showed a cluster of NetWinders that
have been removed from their cases and mounted in a stack. The
"master" NetWinder has a hard disk and can control the power supplies
of the "slaves." The slaves are set up to boot (using NeTTrom's DHCP)
from the master and run using an NFS filesystem. All of the systems
communicate over one Ethernet bus (and the master masquerades the
system to the outside world).

Raffaele Sena did a lot of work
getting Kaffe (Personal Java 1.1 compliant environment) to work on the
NetWinder very early on. He fed the changes necessary back to
Transvirtual, so you can now obtain an easy to 'make' package or
pre-compiled binaries as part of the main Kaffe distribution.

Due to
licensing restrictions with the Acorn floating point emulator, Corel
decided to write a free alternative. Scott Bambrough has long ago
completed the basic code, which has been included in the kernel for
some time. It is called NWFPE and you can find documetation about it
in the Documentation/arm/nwfpe directory in any recent kernel source
tree.

More recently, Phil Blundel and some others have been working to
try and inprove efficiency of the floating point emulator. I belive
this is being done primarily in the 2.4.x kernel series.

Open Motif, is a source code version of Motif®, available under a
public license, the effect of which allows Open Motif to be
distributed, royalty free, when the platform upon which it is shipped
is Open Source. There are also binaries available, but unfortunately
not for ARM.

Russ Herrold points out that there is a neat project that emulates ARM processors (and others). From the project homepage:

"QEMU is a FAST! processor emulator. By using dynamic translation it
achieves a reasonnable speed while being easy to port on new host CPUs.
QEMU has two operating modes:

- User mode emulation. In this mode, QEMU can launch Linux
processes compiled for one CPU on another CPU. Linux system calls are
converted because of endianness and 32/64 bit mismatches. Wine (Windows
emulation) and DOSEMU (DOS emulation) are the main targets for QEMU.

- Full system emulation. In this mode, QEMU emulates a full
system, including a processor and various peripherials. Currently, it
is only used to launch an x86 Linux kernel on an x86 Linux system. It
enables easier testing and debugging of system code. It can also be
used to provide virtual hosting of several virtual PC on a single
server.

As QEMU requires no host kernel patches to run, it is very safe and easy to use."

Lars Brinkhoff is in the process of adding ARM support into the Lisp compiler of SBCL. Details can be found at: http://www.sbcl.org/
This is still at a very early stage, so don't expect rapid progress.

7. Networking

Andrew Mileski explained on the general mailing list that the MAC address is based on the NetWinder serial number.

00:10:57:00:XX:XX 10baseT
00:10:57:C0:XX:XX 10/100baseT

where XXXX is the serial number in hex. This was originally going
to be the serial number that appears on the Corel printed label (and in
fact early Rev 4 machines do have such a serial number). It is now
referred to as the "board serial number" by 'cat /proc/cpuinfo'

On current machines, you can still find the NetWinder's MAC
address (and "board serial number") without turning it on by peering in
the slots on the bottom and reading the (decimal) serial number off the
white printed label that is attached to the motherboard.

Happily, the NetWinder supports PPP-over-Ethernet (PPPoE) connections right out of the box.

OfficeServer has everything already setup, you must just enter your
client name and password into the appropriate fields on the networking
page.

For Developer (DM) software, you must configure it manually.
The recommended approach depends on which kernel verison you are using.
For the 2.4.x kernel series, you can use the rp-pppoe package,
available from http://www.roaringpenguin.com. Pre-built binary RPM packages are available at ftp://ftp.netwinder.org/users/r/ralphs/,
you will want rp-pppoe-3.4-1.armv4l.rpm and possibly
ppp-2.4.1-3.armv4l.rpm. (These packages are for dm-3.1 image, to use
it on a dm-3.9 please recompile from the corresponding source RPM).

A: First get the rpm file for the user space tools. You can get the in
the directory ftp://ftp.netwinder.org/pub/netwinder/RPMS/os/2.0 and they are called pppoed-0.42-2.armv4l.rpm. Install the rpm file. Edit your
/etc/sysconfig/network-scripts/ifcfg-eth0 file to look like:

If you don't comment out that line, then there will be a conflict when
pppd starts and tries to load pppox.

Make your /etc/ppp/options.PPPoE file look like this (replacing
<user@yourdomain.com> with your id) (do not include the < > signs around your id):

-----------------------------------
#---- /etc/ppp/options.PPPoE --------------------
lock
local
nocrtscts
noauth
#be careful with mtu/mru if you are masquerading.
# look at Kal Lin's page at
# http://www.cs.toronto.edu/~kal/hse/resource.html
mru 1490
mtu 1490
#please make sure you have noaccomp for now
noaccomp
#the construct below is needed by sympatico
name "<user@yourdomain.com>"
#you might want to change defaultroute if you have more
#than one pppoe session
defaultroute
hide-password
sync
#it might be a good idea to uncoment the debug below
debug
#kdebug 7
#if you use the -R option to make it persistent
#then uncomment the next two lines below
lcp-echo-interval 240
lcp-echo-failure 3
nodetach
#add anything else you need as well

#------ END /etc/ppp/options.PPPoE

-----------------------------------------------

Also put your password in /etc/ppp/pap-secrets file (again, do not include the < > signs around your username).

Many ISPs are
using PPP-over-ethernet with their ADSL service offerings.
Fortunately, support for this is fairly straightforward under Linux.
OfficeServer already includes the necessary software; for DM images you
need to install some packages manually (see the FAQ entry 7.6 "xDSL
connections via PPPoE" for details).

One of the difficulties of PPPoE is that packet sizes are slightly
truncated. This is necessary since ethernet frames normally allow up
to 1500 bytes, however, since the PPP protocol is encapsulated inside,
a few bytes must be reserved for the PPP packet headers. As a result,
the maximum packet size drops slightly, to somewhere in the 1400 byte
range. The exact number of bytes depends on the implementation.

It is necessary to tell the netwinder the maximum packet size
(MTU) otherwise packets will get fragmented, leading to poor performace
and possibly no connectivity. This is done in the
/etc/ppp/options.PPPoE config file, look for "mtu" and "mru" and change
the values accordingly. Restart the network service after making the
change.

The NeTTrom, currently, uses a 2.0.3x kernel. When you build
mke2fs with a recent glibc and a 2.2 kernel, the default behaviour is
to use 2.2 options like sparse super blocks and filetypes which are not
compatible with 2.0.3x kernels.

This can be seen in the filesystem options section. Take a look
with something similar to "dumpe2fs /dev/hda1". mke2fs uses these new
defaults if running with a 2.2 kernel.

The problem comes from the fact that the current, NeTTrom does
not support the "filetype" option. The NeTTrom does support the sparse
option.

There are two solutions to this problem.

1) When formatting the partition, call mke2fs with the option
"-O sparse_super", or with "-O none". I recommend the first, though.

mke2fs -O sparse_super /dev/hda1

2) If you already have a formated partition and do not want to redo it, the following may work:

tune2fs -O ^filetype /dev/hda1
e2fsck -vy /dev/hda1

Don't forget to check the filesystem afterwards. Pass the -y
option to e2fsck... You may run into trouble if /dev/hda1 is a full
filesystem.

All version of OfficeServer have a bug that will cause RebelRemote (and
possibly some other services) to be stopped, once per week, when the
apache log files are rotated. This typically would happen Sunday night
at 4AM or shortly theafter. Log file rotation is a good thing since it
will prevent your hard disk from filling up with endless logs.

To work around the problem, after starting the RebelRemote service
in the GUI, just reboot your netwinder. That way, the service will be
started automatically (without you having used the GUI). And then it
should keep running even when log file rotation occurs.

The
OfficeServer normally uses pump to obtain a DHCP lease on high-speed
cable internet. While this used to work fine, it seems that certain
cable providers (particularly Rogers in Canada) need the client name
(cr-7XXXXXXa) in every packet. The easiest way to to this is to use a
different DHCP client program.

It is
possible to reset the root password (and thereafter, any other user
password) if you've got physical access to the NetWinder. The steps
are:

1) reboot the netwinder
2) during the boot-up, at the 5..4..3..2..1 prompt, press any key
3) enter the command "boot cmd=single" (without the quotation marks)
4) wait for the boot to complete, it will show a "#" prompt character
5) type "passwd" and enter a new root password
6) re-enter the password a second time
7) type "reboot"
8) allow the netwinder to boot up normally

Now you can log in as "root" with the password you just set. You can then change passwords for other users using the command:

passwd <username>

Note for OfficeServer: after changing the passwords this way, you
should run /etc/cron.hourly/htpasswd.sh to update the web and samba
passwords. Or you can wait one hour for it to happen automatically.

To completely reinstall the netwinder officeserver software from the
CDROM that came with your netwinder, follow these steps. This assumes
you are using a Windows PC. For more details and other options, please
see the Rescue-HOWTO, available on www.netwinder.org under the HOWTOs
link.

1) Do a backup of your web pages, config files, etc.
2) Shutdown and reboot the netwinder
3) Halt the boot sequence (5..4..3..2..1).
4) setenv kerndev /dev/hda4
5) setenv rootdev /dev/hda4
6) boot
7) netconfig (set up server for your network)
8) wipefs (when answering a question answer must be in upper case YES)
9) mountfs
10) smbserver
11) cd /mnt/hdroot
12) From the PC containing the recovery cdrom, go to the start menu,
then the run command and enter the IP of the server,
for example type \\10.1.1.1 into the "run" box
13) When a connection is made, copy the tar file to /mnt/hdroot
on the server (just drag'n'drop).
14) Back on the Netwinder, untar the file with the command
tar xpzvf tar_file
where 'tar_file' is the actual name of the file.
15) exit (the system will reboot)
16) Let the netwinder boot normally
17) Logon as root, run nwconfig, to configure networking
18) reboot
19) Restore backups

***This works best with a W98 or W95 system as the sharing host of the OfficeServer 2.0 disk.

We are
frequently asked if the NetWinder can scan incoming email for viruses.
It is a nice feature to have, unfortunately it is currently not
possible on the StrongARM netwinders. Here is an explanation:

The mail transfer agent on your netwinder can pull attachments out
of emails as they pass through. But, to decide if an attachment is a
virus or not, you must run some sort of code that knows about all the
viruses. Such code exists, from Macaffee and such, but only for x86
processors... the existing linux scanners all use the fact that one can
run x86 code natively even though is meant for windows, but this does
not work on a StrongARM since it does not understand x86 code...

So, we must either write a new tool to check for all possible viruses
(lots and lots of work, esp. to maintain it), or hope that a commercial
vendor will do so.

Some good news: with all the ARM-based PDAs (iPAQ and friends),
there is a good chance that one of the commercial companies will make
ARM compatible versions of their software, which would also be usable
on the NetWinder.

Occasionally folks have managed to damage the officeserver GUI by a
"chmod -R" or "chroot -R" command gone astray. To function properly,
the CGI scripts in /home/httpd/cgi-bin/netwinder must have correct
ownership and permissions on them. Some of these scripts are SETUID,
so that they will run as root when the webserver executes them.
Anytime you edit one of these scripts, it will lose the SETUID bit, and
you have to restore it manually.

Andrew Mileski came up with a fairly simple way to restore all the
permissions as they should be. It makes use of the fact that the
package manager ("rpm") keeps a database of all the files and their
permissions/ownerships. We can query this database and produce shell
commands that will set the proper permissions on each of the files.

You need to know the name of the package that contains the
officeserver code. It is called "officeserver" on older versions, and
"os" on newer ones. You can find out which applies on your system by
running this command:

rpm -qf /home/httpd/cgi-bin/netwinder

To restore ownerships of the files you can use this command. You
may have to substitute "os" for "officeserver" depending on the results
of the previous command.

Also, the final "-x" is optional. It will show you the command
being executed. Useful if you are getting errors and cannot figure out
why.

As an alterative to the above, some folks have apparently got a
copy of the officeserver RPM package on the CDROM that came with their
NetWinder. You can copy this RPM package to the netwinder and forciby
install it over top of the existing one. This should correct all the
permissions.

Short answer: You cannot. OfficeServer is a commercial product, and
contains some 3rd party commercial software. The rights belong to the
company that owns the NetWinder hardware rights (at time of writing,
that is NetWinder Inc.)

Longer answer: Netwinder.org is an independant entity, run by
volunteers on donated bandwidth. Our primary focus is to support
developers, and the occasional end-user problems. Being a commercial
product, OfficeServer is "uninteresting" from a development
perspective, and results of development could not (easily) be shared.
As a result, netwinder.org mostly ignores OfficeServer, other than a
bit of end-user support.

If you need a copy of OfficeServer, you have to obtain it from
the folks that own the technology. Note that every OfficeServer system
should come with a CDROM that includes the disk image. The image is
not available for download on netwinder.org or anywhere else.

Pleasedonotask for the disk images on our
mailing lists or newsgroups. If there are people sharing this
software, they do so illegally, and we donot want know
about it, since it would put us into a precarious legal situation as
former employees of Rebel. The company which hosts netwinder.org could
also be liable, as they provide us our bandwidth.

As an alternative to OfficeServer, we can offer our port of Redhat 9
(base-nw-9), to which you can easily add webmin (www.webmin.com) if you
like remote web administration features. If there is enough demand, we might make a disk image with webmin already setup.

This FAQ is maintained by <webmaster@netwinder.org>
with contributions from many developers. If you've got something you'd
like to see included in this FAQ, please submit it myself via email.
Please note that the FAQ is intended to provide answers to common
questions, not just the questions. If you need help with a
NetWinder-related issue, the appropriate forum for those questions are
the various newsgroups (netwinder.general or netwinder.devel).