javastation
Krups Specification & Boot Sequence

Description
The Krups was an improvement over the older Mr.Coffee and featured a new funky ergonomic design. The name Krups derives from the likeness to the products of the coffee-machine makers of the same name. The main improvements are an audio in and the removal of the power supply fan (the PSU is now an external unit, which some may argue is a step backwards!).

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

Krups JavaStation
Processor MicroSPARC (FujitsuMB86904) 99.53 BogoMIPS
OpenBoot 3.11.9
Video IGA 1682 (2Mb VRAM)
Audio ?
Network Happy Meal (hme) sunhme
Serial 16550A

Boot Sequence

Here is the boot sequence for my Krups (OpenBoot 3.11.9):

     OpenBoot sends DHCPDISCOVER from 0.0.0.0 to 255.255.255.255 (broadcast).1
Get DHCPOFFER from boot server.2
OpenBoot sends DHCPREQUEST from 0.0.0.0 to 255.255.255.255 (broadcast).
Get DHCPACK from boot server.
Krups now sets its ip address.
OpenBoot sends a TFTP request for the file specified in the dhcp lease (hexip).
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.3
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 The JavaStation doesn't have an ip address yet!
2 Must be sent to Krups' ethernet address - OpenBoot will not accept a broadcast packet.
3 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 constraints on the DHCPOFFER and BOOTREPLY. Unmodified versions of ISC DHCP fail to send to the right ethernet address, thus the Krups ignores the packet and repeatedly sends DHCPDISCOVER packets. Weird Solutions' DHCP Turbo truncates its BOOTREPLY packet after the 255 (ff) byte of the options, and PROLL prints "BOOTP: Invalid record.".

Unlike Mr.Coffee, there is no need for a RARP server. With the Krups, DHCP is used initially, but once PROLL is up and running, BOOTP is used instead. 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.