Table of Contents

SRM Console

The SRM console is the command line firmware that Digital (later Compaq and HP) shipped for Alpha systems running OpenVMS and Tru64 UNIX (earlier DEC OSF/1 and Digital UNIX). Linux, NetBSD, and OpenBSD also boot from it, as did FreeBSD until its Alpha port ended with the 6.x series, 1) and it is the preferred firmware for Linux (see Choosing firmware for Linux). The name refers to the Alpha System Reference Manual, the specification whose console architecture the firmware implements. 2) 3) Its command line interface resembles the console of Digital's VAX systems. 4)

Systems intended for Windows NT instead use the ARC or AlphaBIOS firmware. Some systems carry both consoles and can switch between them (see Switching to ARC or AlphaBIOS).

This page is a reference for the console's commands, variables, versions, and specification. Everyday use with Linux, including the serial console and boot commands, is covered in Using the SRM Console.

Console commands

Commands may be abbreviated if not ambiguous, and numbers are hexadecimal unless otherwise specified. help lists all commands. The everyday commands, such as show config, show device, show, set, and init, are described in Using the SRM Console: Everyday commands; the table below lists the others. Multiprocessor systems show the prompt P00>>> instead of >>>. 5) 6)

Command Purpose
boot Boot from a device, e.g. boot [-file <filename>] [-flags <flags>] [-protocols <protocol>] [-halt] [<device>]
examine, deposit Read and write memory and registers
arc, alphabios Start the ARC or AlphaBIOS firmware (see below)
fwupdate, lfu Update firmware (see below)
run bios Run an option ROM's BIOS setup utility, e.g. an Adaptec SCSI BIOS

Sources: 7) 8) 9) 10)

Later consoles have a Unix-like shell with pipes (show device | grep dk), output redirection, and & to run commands in the background. 11)

Environment variables

Variable Meaning
auto_action Action after power-up, error, or halt: halt (the default), boot, or restart
bootdef_dev Default boot device or list of devices
boot_file Default file to boot
boot_osflags Default boot flags; for Linux, these are passed to aboot and the kernel
boot_reset ON resets the system before booting
console graphics or serial
os_type Firmware to load at the next power cycle; the values vary by system (see below)
ewa0_mode Ethernet media type for the first DEC Tulip interface
ewa0_protocols Network boot protocol, mop or bootp

Sources: 12) 13) 14)

The console variable and setting up a serial console for Linux are described in Using the SRM Console: Serial console.

Device names

Device names have the form dka400.4.0.9.0. The first two letters are the driver, the third letter is the adapter (a for the first), and the number is the unit. For SCSI devices, the unit number is 100 times the SCSI ID. The remaining fields give the bus node, channel, PCI slot, and hose. 15) 16)

Prefix Device
dk SCSI disk or CD-ROM
dq IDE disk or CD-ROM
dr RAID set
dg Fibre Channel disk
dv Floppy drive
mk SCSI tape
pk, pq SCSI and IDE controllers
ew DEC Tulip Ethernet
ei Intel Ethernet
fw FDDI

Sources: 17) 18) 19)

Booting Linux

The console reads the boot block in the first sector of the disk, which gives the starting block and length of a contiguous primary bootstrap. It loads that image into memory and jumps to it. The console knows nothing about file systems. 20) For Linux, the bootstrap is normally aboot, which reads the kernel from an ext2, ext3, ext4, XFS, UFS, or ISO 9660 file system (see aboot: File systems) and supports network booting. 21) aboot needs a disk with a BSD disklabel and free space before the first partition, and receives boot_osflags or the -flags argument of boot as an /etc/aboot.conf entry number or as kernel arguments; see aboot: Booting.

The boot commands, the variables for booting unattended, and troubleshooting are described in Using the SRM Console: Booting Linux; preparing the disk is described in Installation.

Switching to ARC or AlphaBIOS

Updating firmware

Archived firmware images are listed in Firmware: Obtaining and updating firmware. The alphalinux/firmware repository holds these SRM images:

Board Directory SRM image
AlphaPC 164LX api/LX lx164srm.rom, with fwupdate.exe
AlphaPC 264DP api/DP pc264srm.rom; archive/5.8 holds a set of files for LFU from floppy, described in floppy_readme.txt
UP1000 api/UP1000 up1000_srm_5.6_beta, replacing AlphaBIOS (see ARC Firmware: Switching to SRM)
UP1100 api/UP1100 up1100_srm_A5.6-13, installed with lfu from floppy as described in its readme.1st
UP1500 api/UP1500 srmupdt.5.6-19.img, a floppy image for lfu, described in README.srm
UP2000 and UP2000+ api/UP2000, api/UP2000plus up2000_srm_5.8-81, older versions in archive
CS20 api/CS20 CS20_srm-5.8-81, and a CD image in CD-ROM

Sources: 48)

The update procedure from the SRM prompt is described in Using the SRM Console: Firmware versions.

Final versions

The SMMTABLE.TXT file on the V7.3 firmware CD (March 2007) lists the last SRM version for each system. 49)

System Last SRM version
DECpc AXP 150, DEC 2000 (Jensen) 2.2
DEC 3000 7.0
DEC 4000 4.0
DEC 7000, DEC 10000 5.0
AXPpci33 (Noname) 4.7
AlphaPC 164 5.5 (5.5-1 according to Jay Estabrook 50); see the AlphaPC 164 page)
AlphaPC 164LX 5.8
AlphaPC 164SX 5.8
AlphaStation 200, 250, 255 7.0-9
AlphaStation 400 7.2-1
AlphaStation 500, 600 7.2-2
AlphaStation 600A 5.6-114
Personal Workstation 7.2-1
AlphaServer 300, 400 7.0-9
AlphaServer 800 5.8-16
AlphaServer 1000 5.4-101 (4/xxx), 5.4-104 (5/xxx)
AlphaServer 1000A 5.7-83 (4/xxx), 5.7-80 (5/xxx)
AlphaServer 1200 6.0-4
AlphaServer 2000, 2100, 2100A 5.3
AlphaServer 4000, 4100 6.1-1
AlphaServer 8200, 8400 6.4
AlphaServer GS60, GS60E, GS140 6.6
XP1000 5.9-1
AlphaServer DS10, DS20, ES40 7.3-1
AlphaServer DS20L 6.6-10
AlphaServer DS15, DS25, ES45 7.3-2
AlphaServer GS80, GS160, GS320 7.3-1
AlphaServer ES47, ES80, GS1280 7.3-1

System support

OpenVMS and Tru64 UNIX boot only from the SRM console. 51) Systems designed only for Windows NT generally lack it:

Other notes on specific systems:

Known issues

Specification

The console is specified in Part III, "Console Interface Architecture", of the Alpha System Reference Manual. 83) Most of the manual was published as the Alpha Architecture Reference Manual; some of its appendices remained company confidential. 84) The specification requires the console to:

HWRPB

The console and the operating system share state through the Hardware Restart Parameter Block (HWRPB) and a set of environment variables. The console builds the HWRPB during initialization and maps it at virtual address 0x10000000 for the bootstrap. The HWRPB holds the system type and variation, page size, processor count, per-CPU data, memory cluster descriptors, and the location of the console callback routines. Its validation quadword is the ASCII string HWRPB. 86)

The Linux kernel does no CPU detection of its own; it reports what the console places in the HWRPB, so values in /proc/cpuinfo come directly from the firmware. 87) 88) The nr_processors field is not the number of CPUs actually present; the per-CPU slots must be checked. 89) MILO builds only as much of an HWRPB as Linux needs, which is why MILO systems report the CPU serial number Linux_is_Great!; the system serial number begins with MILO- (see MILO: HWRPB and rebooting). 90) 91)

Callbacks

The console provides callback routines, reached through a common DISPATCH procedure, that system software can use for terminal I/O (GETC, PUTS), generic device I/O (OPEN, READ, WRITE), and environment variables (GET_ENV, SET_ENV). 92) Bootstraps such as aboot use them to read the kernel from the boot device. 93) 94)

The Linux kernel uses the callbacks for:

PALcode

SRM provides the OSF/1 PALcode, which Linux uses. ARC and AlphaBIOS provide PALcode for Windows NT, which is why Linux needs MILO on those systems; the differences between the two are described in ARC Firmware: Windows NT and Linux. 100) 101)

Licensing

SRM was originally licensed with Digital UNIX or OpenVMS rather than with the hardware, so a system that had shipped with Windows NT had no license for it; 102) 103) 104) this was one reason MILO was written. 105) For Digital Semiconductor's own boards, the Evaluation Board Software Developer's Kit (EBSDK) provided an inexpensive license. 106) By 2000, Compaq offered SRM images for free download. 107) 108) 109)

Conflicting information

The following sources conflict with each other or with the account given above. They are listed here for further investigation.

Documentation


1) "HEADSUP: Alpha support is being retired in 7.0", John Baldwin, freebsd-alpha, 11 May 2006
9) "Re: 21140 NIC", Rich Payne, axp-list, 24 Apr 2000
10) "Re: XP1000 & MILO & SCSI", Peter Petrakis, axp-list, 24 Nov 2000
14) "Re: XP1000 installation", Rich Payne, axp-list, 20 Jul 1999
18) "Re: RH 7.1 installation on PWS 500a", Jay Estabrook, axp-list, 14 Feb 2002
19) "Re: SRM Console Options", Rich Payne, axp-list, 12 Jul 2000
21) README.md, aboot 2.0
23) "Re: Lost NT Boot Loader", Jay Estabrook, axp-list, 16 Jul 1998
24) "Re: SUCCESS! (was: INSTALL PROBLEMS)", Jay Estabrook, axp-list, 28 Oct 1998
25) "Re: UDB Firmware Prob", Maurice Hilarius, axp-list, 24 Oct 1996
26) "Jensen-HOWTO: First pass", Jim Paradis, axp-list, 15 Mar 1996
29) "RE: Dual booting PC164", Jay Estabrook, axp-list, 12 Dec 1996
33) "RE: Help: Corrupted UP2000+ won't boot anymore", Peter Petrakis, axp-list, 11 Jul 2001
35) "SUMMARY: Remote firmware update via LFU ?", Iain Barker, tru64-unix-managers, 2 Apr 2003
36) "[SUMMARY] AS1000 4/200 firmware upgrade problems", John Files, alpha-osf-managers, 4 Mar 1997
38) "Re: How to flash MILO? ( Not a faq )", Peter Rival, axp-list, 6 Oct 1999
41) "Re: How to flash MILO? ( Not a faq )", Peter Rival, axp-list, 6 Oct 1999
42) "Re: How do I update an AlphaBIOS PC164LX to SRM?", Jim. Shipman, axp-list, 16 Nov 1997
44) "Re: trying to make the SRM AlphaBIOS switch", Rich Payne, axp-list, 22 Feb 2000
45) "Re: Problems with old 164LX board", Rich Payne, axp-list, 10 Jun 2001
47) "Re: Alpha Firmware wonnt update from floppy, help!", Rich Payne, axp-list, 26 Nov 2001
49) SMMTABLE.TXT, Alpha Systems Firmware Update CD V7.3, 14 Mar 2007
50) "seeking SRM device support info...", Jay Estabrook, axp-list, 2 Apr 2004
52) "Re: SRM license issues", Jay Estabrook, axp-list, 6 Jan 1998
53) "Re: Milo booting other OSes?", Jay Estabrook, axp-list, 29 Oct 1997
54) "Re: DEC Celebris", Jay Estabrook, axp-list, 25 Nov 1996
55) "Re: AlphaBios vs SRM", Rich Payne, axp-list, 15 Sep 1999
57) "Re: questions on the PC164", David A Rusling, axp-list, 12 Jul 1996
58) "RE: UDB: SCSI on the motherboard? ARC error", Jay Estabrook, axp-list, 13 Jul 1996
59) "Re: Alpha-Boards", Jay Estabrook, axp-list, 19 Oct 1996
60) "Re: Linux running on AlphaStation 500/333?", Jay Estabrook, axp-list, 15 Aug 1996
61) "Re: dual boot (slightly off topic)", Rich Payne, axp-list, 9 Oct 1999
62) "Re: Benefits of Linux/Alpha over Linux/x86?", Rich Payne, axp-list, 23 Jun 2000
63) "Re: Nvidia Quadro in an Alpha Box", Rich Payne, axp-list, 13 Jun 2000
64) "Re: 2.40test10 working?", Rich Payne, axp-list, 16 Nov 2000
65) "Re: Linux-2.4.0-test2", Richard Henderson, axp-list, 24 Jun 2000
68) "Re: INIT errors on UDB at shutdown", David Mosberger-Tang, axp-list, 6 Jun 1996
69) "Re: Reboot doesn't reboot", Jay Estabrook, axp-list, 9 Apr 1997
70) "Re: PC164 SRM problem", Jay Estabrook, axp-list, 15 Oct 2001
71) "Re: PC164 SRM problem", Ivan Kokshaysky, axp-list, 16 Oct 2001
72) "Re: Graphic card for AS200 (PCI, ARC-Bios)", Jay Estabrook, axp-list, 17 Jul 2001
74) "Re: Alpha PC164, SRM, and Adaptec 2940UW", Jay Estabrook, axp-list, 11 Apr 2001
75) "Re: General questions about alphaserver 1200 (533AU2)", Jay Estabrook, debian-alpha, 9 Dec 2002
76) "Re: Q: Compaq, *BSD and 'Linux-only' AlphaBIOS (fwd)", Wilko Bulte, port-alpha, 4 Dec 1999
77) "Re: Override SRM card rejection", Reinhard Eigner, comp.os.linux.alpha, 10 Oct 2002
79) "Re: potato install-items", David Huggins-Daines, debian-alpha, 8 Apr 2000
80) "Re: AS2100 RAID (was: ES40 Install Problem...)", Earl Truss, axp-list, 17 Jul 2002
81) "RE: MoBo or Frimware Problem?", Peter Petrakis, axp-list, 25 Mar 2002
82) "SUMMARY: Re: Can system clock be changed at SRM prompt?", Shaun Racine, tru64-unix-managers, 18 Jun 2003
87) "Re: ev56 optimization -> illegal instruction", Richard Henderson, axp-list, 12 Mar 1998
88) "Re: [2.2.12] /proc/cpuinfo wrong on Alpha UP", Richard Henderson, axp-list, 29 Aug 1999
89) "Re: SMP problem....maybe ??", Jay Estabrook, axp-list, 8 Dec 1999
90) "Re: first linux/alpha questions", David A Rusling, axp-list, 4 Apr 1996
91) "Re: Linux_is_Great!", Jay Estabrook, axp-list, 15 Dec 1998
93) "Re: Milo Development", Jay Estabrook, axp-list, 1 Dec 1997
94) "Re: 7.1 boot problem on PC164LX using SRM 5.8-1", Richard Henderson, axp-list, 21 Jul 2001
95) "generic axp patch 10", Richard Henderson, axp-list, 14 Aug 1998
96) "Re: SRM & serial console & 2.4.20 & XP1000", Jay Estabrook, axp-list, 17 Feb 2003
97) "Alpha Core ISO Images", Jay Estabrook, axp-list, 30 Sep 2004
98) "Re: tbia() on DEC 3000 question", Richard Henderson, axp-list, 18 Aug 1999
99) "Re: access srm resources", Peter Petrakis, axp-list, 3 Apr 2001
100) "Re: Does DEC have a clue?", Jay Estabrook, axp-list, 21 Jan 1998
101) "Re: bootp with AlphaBIOS", Jay Estabrook, axp-list, 3 Nov 1997
102) "Re: questions on the PC164", David A Rusling, axp-list, 12 Jul 1996
103) "Alpha SRM console firmware for single board computers", Tom Blinn, alpha-osf-managers, 6 Jan 1998
104) "RE: Alpha1200/ SRM access", WaiSun Chia, axp-list, 16 Jul 1998
105) "Re: questions on the PC164", David A Rusling, axp-list, 12 Jul 1996
106) "Re: SRM license issues", Jay Estabrook, axp-list, 6 Jan 1998
107) "Re: PC164 Motherboards", Peter Petrakis, axp-list, 20 May 1999
108) "srm / ide", Bibek Sahu, axp-list, 27 Feb 2000
109) "Re: MILO upgrades don't work", Jeff Sturm, axp-list, 1 Jul 2000