javastation
Mr.Coffee Specification & Boot Sequence

Description
Mr.Coffee is one of the earliest JavaStations and is recoognisable by its distinctive compact rectangular shape. It is actually based on a Sun drive case, though the plastic is a different colour and the rear has holes for the usual PC-style connectors. The name also derives from a coffee-machine manufacturer of the same name.

Specification
The basic spec. for the machine is as follows:

Mr.Coffee JavaStation
Processor MicroSPARC 99.53 BogoMIPS
OpenBoot 2.30
Video tcx
Audio cs4231a
Network Lance (le) sunlance
Serial 16550A

Boot Sequence
Here is the boot sequence for my Mr.Coffee (OpenBoot 2.30):

     OpenBoot sends RARP who-is ethernet_addr (broadcast).
Get RARP reply ethernet_addr is ip_addr from boot server.
Krups now sets its ip address.
OpenBoot sends a TFTP request for a filename derived from the ip address (hexip.SUN4M).
Get file from boot server (this is the PROLL image).
OpenBoot starts PROLL.
PROLL sends BOOTREQUEST from 0.0.0.0 to 255.255.255.255 (broadcast).
Get BOOTREPLY from boot server.1
PROLL now sets its ip address.
PROLL sends a TFTP request for hexip.PROL.
Get file from boot server (this is the linux kernel image).
PROLL starts Linux.
(Optional) Linux sends BOOTREQUEST and gets a BOOTREPLY with its ip address.

1 This must be at least 300 bytes long and must either contain no options, or RFC1048 options terminated by a 255 (ff) byte. It can however be sent to the broadcast ethernet address.

Note the constraint on BOOTREPLY. Weird Solutions' DHCP Turbo truncates its BOOTREPLY packet after the 255 (ff) byte of the options, and PROLL prints "BOOTP: Invalid record.".

Mr.Coffee differs from the Krups in that it uses a RARP server to find its ip address initally, but once PROLL is up and running, BOOTP is used instead, in the same way that it is with PROLL on the Krups. It should be noted that the filename of the boot image is not contained within the RARP reply - it is derived from the ip address given to the JavaStation, with ".SUN4M" appended. The RARP daemon will usually check for the existence of such a file on the boot server before responding however.

Most DHCP servers support both DHCP and BOOTP (DHCP is an extension of BOOTP). Notice how there is no way to pass the ip address from OpenBoot to PROLL, or from PROLL to Linux.