User Tools

Site Tools


software:firmware:srm

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

  • On systems with both consoles in flash, set os_type nt followed by init or a power cycle starts ARC or AlphaBIOS; set os_type unix (or osf or vms, depending on the system) returns to SRM. 22) 23) 24) 25) On the Jensen, the command is set os nt. 26) On the AlphaServer 800, SRM starts first and then loads AlphaBIOS, unless the Halt button is in. 27)
  • alphabios (or arc) starts AlphaBIOS from flash for one session, without changing os_type. 28) On the AlphaPC 164, which has only one firmware in flash, arc instead loads the ARC firmware image from a FAT floppy. 29)
  • Switching from ARC or AlphaBIOS to SRM is described in ARC Firmware: Switching to SRM.
  • The AlphaPC 164, 164LX, and 164SX hold only one firmware in flash, so switching requires reflashing (see below). 30)

Updating firmware

  • Firmware CD: Digital distributed firmware for all its systems on the Alpha Systems Firmware Update CD, e.g. part number QY-003AA-A8. 31) Booting the CD (e.g. boot dqa0) runs the Loadable Firmware Update utility (LFU). At its UPD> prompt, list shows the current and available versions and update * updates all firmware. 32) update srm updates only the console firmware. 33) The CD version is not the same as the console version; for example, the V7.3 CD carries SRM V6.1-1 for the AlphaServer 4100. 34)
  • From disk: LFU can read a copy of the firmware CD written to any SCSI disk, e.g. dkb300, not just a CD-ROM, which lets a machine without a CD drive be updated remotely. 35) A single image can also be named explicitly, as in update srm -path iso9660:[ALPHA1000]MKSRMROM.EXE/dka400 for the AlphaServer 1000. 36)
  • Floppy: newer consoles run LFU from floppy with the lfu command. On the Digital Semiconductor motherboards, fwupdate loads fwupdate.exe from a FAT floppy together with the ROM image. 37) 38) SRM versions before 4.4-1 lack the fwupdate command. 39)
  • From AlphaBIOS: on the AlphaPC 164LX and 164SX, SRM is installed with AlphaBIOS's "Upgrade AlphaBIOS" option, using a floppy with fwupdate.exe and the SRM ROM image (e.g. sx164srm.rom). This overwrites AlphaBIOS. 40) 41) To go back, AlphaBIOS is flashed from SRM the same way. 42)
  • Recovery: most Digital Semiconductor motherboards (all but the AlphaPC 64) have a fail-safe booter for recovering from corrupted firmware. 43) On the AlphaPC 164LX it is enabled with jumper CF7; it only loads firmware from floppy, which must then be flashed. 44) 45) Some AlphaServers have a fail-safe loader instead, e.g. jumper J22 on the ES40. 46)
  • Firmware should be updated after a cold power-up rather than after an operating system shutdown. 47)

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:

  • The Alpha XL series has no SRM. 52) 53) 54)
  • The Deskstation Ruffian (AlphaPC 164UX) has only its own ARCSBIOS firmware. 55)
  • The 21164-P1 and 21164-P2 processors, which Digital sold for Windows NT systems, must run with the Windows NT superpage bits set, 56) and SRM does not run on them. 57)

Other notes on specific systems:

  • The Multia (UDB) starts SRM first, which runs its diagnostics and then normally loads ARC. 58)
  • The AlphaPC 164 and AlphaStation 500 have only enough flash for SRM or ARC, not both. 59) 60)
  • Alpha Processor, Inc. released SRM consoles for the UP2000, based on the DP264 (DS20) SRM, and for the UP1000, based on V5.6. Tru64 UNIX is not supported on either. 61) 62) 63) The UP1000 SRM does not work on the UP1100. 64)

Known issues

  • Kernels for the GS80, GS160, GS320, Titan, and Marvel: the SRM console on the Wildfire (GS80, GS160, and GS320), Titan, and Marvel systems occupies more low memory than on older systems, 65) so a kernel for them must be built without CONFIG_ALPHA_LEGACY_START_ADDRESS, which make defconfig enables (see Kernel). 66) 67)
  • Returning to SRM: SRM expects the machine to be in the state it left it in. Linux moves the virtual page table and reassigns PCI resources, so after halting Linux the console may report machine checks or leave the screen blank. 68) 69) 70) Linux restores the PCI window mappings for Tsunami systems but not for older ones. 71)
  • Video cards: SRM initializes VGA cards with an x86 BIOS emulator, whose version determines which cards work. 72) nVidia TNT2 cards need V5.8, and ATI Radeon cards need V5.9. 73)
  • SCSI boot devices: SRM can only boot from controllers it has drivers for. Booting from Adaptec controllers requires V5.8 on the AlphaPC 164LX and 164SX and V5.9 on the DS10, DS20, ES40, and XP1000. 74) On older systems, QLogic ISP1020 and ISP1040 controllers are supported but ISP1080 and later are not. 75)
  • Rejected PCI cards on the Personal Workstation: because of the Pyxis DMA bug, SRM on the Miata accepts only known-good cards in its two 64-bit PCI slots and refuses to boot with anything else there, while ARC and AlphaBIOS on the same machine do not enforce this. 76) The check is overridden with set pci_device_override, given a device and vendor ID, or with -1 to disable it entirely. 77) Overriding it is only safe for cards that do not use DMA; see Other Hardware.
  • Keyboards: some keyboards that work with AlphaBIOS are not recognized by SRM; after an AlphaPC 164SX was switched to SRM, its console did not respond until the keyboard was replaced. 78)
  • Time-of-year clock: the year in the clock is stored relative to an epoch that depends on the firmware and operating system: 1900 for OpenVMS, 1952 for Tru64 UNIX, 2000 on newer SRM versions, and 1980 for ARC and AlphaBIOS. The Linux RTC driver detects the epoch at boot. 79) 80) The epoch cannot be changed, which matters when another operating system on the same machine uses a different one. 81) The time should be set from the operating system rather than from the SRM prompt. 82)

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:

  • initialize, test, and prepare the hardware,
  • bootstrap system software,
  • control each processor in a multiprocessor system when no operating system is running,
  • provide services to system software that simplify access to the hardware, and
  • let a console operator monitor and control the system. 85)

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:

  • srmcons, a console driver that shows kernel messages early in boot, which is mainly useful for debugging. 95) 96) On the AlphaServer ES47, ES80, and GS1280, console=srm is required to use the "serial" console. 97)
  • srm_printk, which cannot be used once the kernel has replaced the console's page tables. 98)
  • reading and writing SRM environment variables. 99)

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
software/firmware/srm.txt · Last modified: by 127.0.0.1