Sun Ray thin client

The Sun Ray 1 is a stateless thin client produced by Sun. It communicates with a proprietory server running on Solaris. The protocol in not documented but a substantial portion of it has been reverse engineered by Paul Evans based on some observations from Markus Kuhn.

Notes

As yet I have not produced any documentation or distributable code but for the benefit of others I have included some notes I have made during my use of the Sun Ray. This information is provided in good faith but with no warranty of correctness or applicability for any purpose

General

The Sun Ray has a rated power consumption of 30W, this means that it can get away with not having a fan. The result is a perfectly silent computer which is quite a change compared to your average desktop PC with 3 or 4 fans.

Power up sequence

On powerup the Sun Ray performs some kind of Power-on Self-Test (indicated by the hour glass icon with one bar underneath it). This takes about 1 second after which it sends out two almost identical RARP requests, with a 0.5 second pause between them, requesting it's own IP address. If there is no reply, after 0.01 seconds it sends out a DHCP request, then pauses for 2 seconds before repeating. It then pauses for 4, 8, 16 then 32 seconds before repeating. It then continues to repeat DHCP requests at 32 second intervals until it gets a valid response.

While the Sun Ray is waiting for a DHCP offer it displays the hourglass icon with two bars underneath and it will not respond to the keyboard, mouse or smart card reader. This means that when the server disconnects it could have to wait up to 32 seconds before getting a reply. Perhaps a reset switch would be a good feature which would put the Sun Ray back in the fast DHCP request mode (Control+Sleep does not work until it has been given a DHCP offer)?

The Sun Ray Server running on Solaris has an odd DHCP allocation sequence. The Sun Ray sends out a DHCP Discover, but the server takes about 2.75 seconds to respond. However by then the Sun Ray has sent out another request 2 seconds after the first. It seems that the Sun Ray only responds to a DHCP request with the the Transaction ID equal to the last one it sent, probably because it only has one slot for pending DCHP requests. For this reason the first DCHP offer is ignored by the Sun Ray. The Server does not respond to the second DHCP request, perhaps since it thinks that the request has been serviced by the response to the first request. Then, 4 seconds (6 seconds since the first DHCP request) later the Sun Ray sends out a request which the Server replies to immediately. Perhaps this is a feature or perhaps it simply takes the Sun DHCP server a long time to allocate an IP address the first time, but it is buffered for any further requests. Both offers give the same IP address to the client.

See Paul Evans' notes for details of the custom DHCP fields. One addition is that an option providing a router address must be included (otherwise the Sun Ray ignores the DHCP offer), however I am not yet sure how the Sun Ray uses this information.