Linux on Sun Netra AX1105

Author
echo '^Rk1a!U}`cX' | tr '!-op-~' '0-~!-/'
Last-modified

This page provides some information about this board and how to configure recent versions of Linux (>= 2.6.35.7) to run on it.


Why?

Some time ago, Demik gave me a bunch of UltraSparc TE2 1U chassis, each with two of those boards inside.

Just like every other machine I put my hands on, my first goal was to try a recent version of Linux on them. A few things went wrong, this is why I created this page.

Features

Quick summary of features that make these boards somewhat attractive.

Still unconvinced? You can overclock the CPU up to 750MHz (and it doesn't work)!
Just imagine you're reading this page 10 years ago, when these boards were also probably quite expensive.

Documentation

You don't need to read everything, but having them here will save you the trouble of finding them in case of need.

Netra™ AX1105-500 PLATFORM

A quick introduction to its features.

Netra™ AX1105 Platform Technical Reference and Installation Manual

This is simply the most useful document. It describes the various components, jumpers locations and OBP configuration. You definitely need to read this.

Platform Notes: The Sun GigabitEthernet Device Driver

Some information about the two sungem Ethernet controllers you can find on this board. Unfortunately, they're not gigabit.

OpenBoot™ 4.x Command Reference Manual

OBP 4.x manual. Worth reading.

UltraSPARC® IIe Processor - User's Manual

You should have one of those on your Netra AX1105.

Hardware issues

A list of hardware issues I encountered and solutions or workarounds where applicable. Most are more related to TE2 chassis.

Bad memory errors

Symptoms were random reboots and pages of numbers displayed instead of OBP. I had to test my four DIMMs individually with diag-switch? enabled to discover that two of them were bad.

Reset and PSU errors

When a single PSU is connected to two boards such as in the TE2 chassis, and you leave one of the boards in a hard reset state (with a jumper, or by pressing the reset button), if you reboot the other board from the OS, OBP or even manually with a hard reset, it will display the same random numbers pattern as when a memory error occurs.

While it's not supposed to occur spontaneously, it's still a bug. Working around this requires you to release the hard reset on the first board (it should start to boot) and do a hard reset on the second board.

Brittle temperature sensors

Don't bend them too much! I tried to straighten one which was already in a bad shape and it broke near the board surface.

Spiders and rust

This hardware issue seems to appear when you leave your machines in a humid garage for too long.

Dead power supply

Although a single board consumes less, it is recommended to use at least a 200W PSU. The TE2 chassis comes with a 300W 1U PSU for two boards and two hard disk drives. Considering the reduced airflow such a chassis provides, the PSU may be stressed a bit too much. A few of my machines came with dead PSUs.

No Ethernet link

Integrated controllers seem to be picky with what you're connecting them to. They weren't able to negotiate a link with the first cheap Connectland Ethernet switch I tried (the last time I had this problem was with 3com ISA boards). Fixed by using another noname Ethernet switch.

OBP

I assume that you know what OBP is. If not, read this. Below is a list of things you may find useful.

Console settings

As usual, ttya (on this board, the first serial port is located at the bottom) is the default system console, configured for 9600 baud by default, which is slow. 38400 is the maximum speed you can configure in OBP.
You surely want to do this.

ok printenv ttya-mode
ttya-mode =           9600,8,n,1,-
ok setenv ttya-mode 38400,8,n,1,-
ttya-mode =           38400,8,n,1,-
ok reset
Resetting ... 

Now, configure your terminal for a speed of 38400. Remember that boot diagnostics from diag-switch? will still require you to configure it for 9600 baud in order to see them.

Watchdog settings

Here are my settings:

watchdog-timeout      10                             63
watchdog-enable?      true                           false
watchdog-reboot?      true                           false

Meaning that every 10 minutes in OBP or in the OS (if it hasn't reconfigured the watchdog), it will spontaneously reboot. While you aren't forced to enable it in OBP, it is still useful to clear a stuck ok prompt on a remote system console.

In other words, do not enable the watchdog before you're done installing your OS and configuring the watchdog in it (and you should do so before running fsck, obviously).

The time base for watchdog-timeout is minutes by default. There doesn't seem to be an environment variable to change this in OBP, however you apparently can from your OS. Read this for possible values.

Network booting

Don't forget that you can netboot using DHCP. No more RARP and annoying setups. All you need are DHCP and TFTP servers.

ok boot net:dhcp,10.1.1.20,vmlinux.aout root=/dev/sda2
        ^^^      ^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^
        |        |         |            |
        |        |         |            optional arguments
        |        |         file to load, relative to TFTP root
        |        TFTP server address
        device alias for the first network interface (next to USB ports)
Current device aliases can be listed by typing devalias.
If the file you want to load isn't at the root of the TFTP server, use \\ paths separators instead of / which doesn't work.
ok boot net:dhcp,172.16.3.1,linux-2.6.35.7\\vmlinux.aout
Maximum image size is 10MiB. While it is enough for a single compressed kernel, you need to be careful if you put an initramfs inside.

It also appears that OBP prefers a.out images. Maybe because they are smaller. ELF images also work, but not as well. I use the elftoaout utility you can find here and there (after a rpm2tgz conversion).

USB booting

You can't, unless you write your own software package for OBP. Good luck.

CDROM booting

I didn't try it, but there's no reason why it wouldn't work. Probably easier than network booting if you have a parallel ATA CDROM drive around.

Linux

Patches

The following patches were made for Linux 2.6.35.7 but may work with newer versions.

init is never run

In this kernel version, a regression affects this board making it unable to complete the boot process. Using git bisect, I found the culprit and made a patch that reverts the entire commit.

Note: this is fixed since at least 2.6.37.

sungem Ethernet driver causes a kernel Oops

It happens when trying to ifconfig your interfaces, which is unfortunately quite common. Caused by what appears to be an int overflow and not checking for a possibly NULL pointer. Link.

Other issues that need addressing:

Is the hardware to blame? When sending data to only one interface at full speed, the other answers pings with a 60ms delay. Using both interfaces at full speed yields extremely poor performance. Same problem when accessing hard disk drives. Saturated bus?

As a bonus, this patch also allows setting MTU up to 1840 (works for me anyway) and increases TX and RX ring buffers sizes from 128 to 4096 bytes. Seems to mitigate the above issues a little.

No watchdog driver

Actually, there is one. Even two of them match the ALi M1535 found on these boards. However, one was only visible when configuring a kernel for x86, the other was shown as working on SPARC hardware (especially Netras) but didn't (actually a driver for the Ali M7101 PMU, working on x86-based Cobalt boards). This patch fixes this.

I2C bus doesn't work

i2c-ali1535 was created without SPARC platforms in mind. Some code was missing to use the correct memory address. While this patch fixes the problem, I have no idea whether it's how it should be done.

CPU frequency scaling

I don't have a patch for this. I don't know whether it's a hardware or a software issue. UltraSPARC IIe can change their frequency on the fly to consume less energy and Linux has a driver for it. If you enable CONFIG_CPU_FREQ and CONFIG_US2E_FREQ, you will be able to modify the CPU speed. However it immediately triggers a watchdog reset and you'll see your machine booting at half the frequency (250MHz) and crashing soon after. Do not enable this in your configuration.

Configuration

Now that your kernel is all patched up, you can configure it. Here's a sample .config file for it, with all the options described below enabled. Note that this configuration doesn't support loadable kernel modules.

CONFIG_SPARC64_PAGE_SIZE_8KB
64KB pages don't work on this hardware, it won't boot.
CONFIG_PCI
Seems obvious, but the description for this option in menuconfig is Support for PCI and PS/2 keyboard/mouse which may lead you to think that you'll only disable unused PS/2 devices. Fools.
CONFIG_SUN_OPENPROMFS
Always useful to have the PROM contents readable and modifiable under Linux. Grants access to a few invisible variables in OBP.
CONFIG_PARPORT
CONFIG_PARPORT_PC
CONFIG_PARPORT_PC_FIFO
CONFIG_PARPORT_PC_SUPERIO
CONFIG_PARPORT_1284
Enables parallel port. Linux won't detect ECP nor EPP modes, even though they are supported. Adequate driver options may be needed.
CONFIG_MISC_DEVICES
CONFIG_EEPROM_LEGACY
I2C driver for memory modules found on the I2C bus.
CONFIG_ATA
CONFIG_ATA_SFF
CONFIG_ATA_BMDMA
CONFIG_PATA_ALI
Support for PATA interfaces with the newer drivers.
CONFIG_NETDEVICES
CONFIG_SUNGEM
Support for the two Ethernet interfaces. Be sure to apply my patch.
CONFIG_SERIAL_SUNSU
CONFIG_SERIAL_SUNSU_CONSOLE
Support for serial ports and system console.
CONFIG_I2C
CONFIG_I2C_CHARDEV
CONFIG_I2C_ALI1535
I2C bus support. Don't forget my patch.
CONFIG_HWMON
CONFIG_SENSORS_W83781D
Support for voltages, temperatures and fans probes on the I2C bus.
CONFIG_THERMAL
CONFIG_THERMAL_HWMON
Generic sensors driver for userspace.
CONFIG_WATCHDOG
CONFIG_ALIM1535_WDT
Watchdog driver. You need to apply my patch for this option to appear.
CONFIG_USB_SUPPORT
CONFIG_USB
CONFIG_USB_OHCI_HCD
USB support.
CONFIG_RTC_CLASS
CONFIG_RTC_DRV_M48T59
RTC driver. Enabled by default and cannot be disabled.