When you turn on the system power, OBDiag runs automatically if any of the following conditions apply:
The diag-switch? OpenBoot PROM variable is set to true.
You hold down the keyboard's Stop and D keys as you power on the system. The systems's ok prompt will appear.
In the event of an automatic system reset, POST diagnostics run under the following condition:
The OpenBoot PROM variable diag-switch? is set to true.
You can also run OBDiag in an interactive mode and select which tests you want to perform. The following procedure describes how to run OBDiag interactively from the system ok prompt.
Perform this procedure with the power on and the keyswitch in the Power-On/Off position.
With the keyswitch in the Power-On/Off position, press the Break key on your alphanumeric terminal keyboard, or enter the Stop-a sequence on a Sun keyboard.
To enter the Stop-a sequence, press the Stop key and the a key simultaneously. The ok prompt is displayed.
(Optional) Select a diagnostic level.
Three different levels of diagnostic testing are available for OBDiag; see "7.7 How to Set the Diagnostic Level for POST and OBDiag".
At the ok prompt type:
ok setenv diag-switch? true diag-switch? = true |
At the ok prompt, type:
ok obdiag |
The OBDiag menu is displayed.
The OBDiag menu is built dynamically each time you run the obdiag command. The exact number and order of menu items in the example might not match the menu items on your system.
OBDiag Menu 0 ..... PCI/Cheerio 1 ..... EBUS DMA/TCR Registers 2 ..... Ethernet 3 ..... Keyboard 4 ..... Mouse 5 ..... Parallel Port 6 ..... Serial Port A 7 ..... Serial Port B 8 ..... NVRAM 9 ..... Audio 10 ..... SCSI 11 ..... All Above 12 ..... Quit 13 ..... Display this Menu 14 ..... Toggle script-debug 15 ..... Enable External Loopback Tests 16 ..... Disable External Loopback Tests Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
At the OBDiag menu prompt, type 14 to select toggle script-debug.
Selecting toggle script-debug enables verbose test message displays.
At the Enter prompt, type the appropriate test number.
The OBDiag tests are described in the following sections:
The OBDiag Audio test is not available for this system.
The PCI/Cheerio test performs the following diagnostics.
Test |
Function |
---|---|
vendor_ID_test |
Verifies that the U2P ASIC vendor ID is 108e. |
device_ID_test |
Verifies that the U2P ASIC device ID is 1000. |
mixmode_read |
Verifies that the PCI configuration space is accessible as half-word bytes by reading the EBus2 vendor ID address. |
e2_class_test |
Verifies the address class code. Address class codes include bridge device (0 x B, 0 x 6), other bridge device (0 x A and 0 x 80), and programmable interface (0 x 9 and 0 x 0). |
status_reg_walk1 |
Performs walk-one test on status register with mask 0 x 280 (U2P ASIC is accepting fast back-to-back transactions, DEVSEL timing is 0 x 1). |
line_size_walk1 |
Performs tests a through e. |
latency_walk1 |
Performs walk-one test on latency timer. |
line_walk1 |
Performs walk-one test on interrupt line. |
pin_test |
Verifies that the interrupt pin is logic-level high (1) after reset. |
The following example shows the PCI/Cheerio diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 0 Test vendor_ID_test device_ID_test mixmode_read e2_class_test status_reg_walk1 line_size_walk1 latency_walk1 line_walk1 pin_test SUBTEST='pin_test' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The EBus DMA/TCR registers diagnostic performs the following tests.
Test |
Function |
---|---|
DMA_reg_test |
Performs a walking ones bit test for control status register, address register, and byte count register of each channel. Verifies that the control status register is set properly. |
DMA_func_test |
Validates the DMA capabilities and FIFOs. Test is executed in a DMA diagnostic loopback mode. Initializes the data of transmitting memory with its address, performs a DMA read and write, and verifies that the data received is correct. Repeats for four channels. |
The following example shows the EBus DMA/TCR registers diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 1 TEST='all_dma/ebus_test' SUBTEST='dma_reg_test' SUBTEST='dma_func_test' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The Ethernet diagnostic performs the following tests.
Test |
Function |
---|---|
my_channel_reset |
Resets the Ethernet channel. |
hme_reg_test |
Performs walk-one on the following registers set: global register 1, global register 2, bmac xif register, bmac tx register, and the mif register. |
MAC_internal_loopback_test |
Performs Ethernet channel engine internal loopback. |
10_mb_xcvr_loopback_test |
Enables the 10BASE-T data present at the transmit MII data inputs to be routed back to the receive MII data outputs. |
100_mb_phy_loopback_test |
Enables MII transmit data to be routed to the MII receive data path. |
100_mb_twister_loopback_test |
Forces the twisted-pair transceiver into loopback mode. |
The following example shows the Ethernet diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 2 TEST='ethernet_test' SUBTEST='my_channel_reset' SUBTEST='hme_reg_test' SUBTEST='global_reg1_test' SUBTEST='global_reg2_test' SUBTEST='bmac_xif_reg_test' SUBTEST='bmac_tx_reg_test' SUBTEST='mif_reg_test' SUBTEST='mac_internal_loopback_test' SUBTEST='10mb_xcvr_loopback_test' SUBTEST='100mb_phy_loopback_test' Enter (0-12 tests, 13 -Quit, 14 -Menu) ===> |
The keyboard diagnostic consists of an external and an internal loopback. The external loopback requires a passive loopback connector. The internal loopback verifies the keyboard port by transmitting and receiving 128 characters.
The following example shows the keyboard diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 3 TEST='keyboard_test' SUBTEST='internal_loopback' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The mouse diagnostic performs a keyboard-to-mouse loopback.
The following example shows the mouse diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 4 TEST='mouse_test' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The parallel port diagnostic performs the following tests.
Test |
Function |
---|---|
sio_passive_lb |
Sets up the Super I/O configuration register to enable extended/compatible parallel port select, then does a write 0, walk one, write 0 x ff to the data register. It verifies the results by reading the status register. |
dma_read |
Enables ECP mode and ECP DMA configuration, and FIFO test mode. Transfers 16 bytes of data from memory to the parallel port device and then verifies the data is in FIFO device. |
The following example shows the parallel port diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 5 TEST='parallel_port_test' SUBTEST='dma_read' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The serial port A diagnostic invokes the uart_loopback test, which transmits and receives 128 characters and checks the transaction validity. The following baud rates are tested in asynchronous mode: 460800, 307200, 230400, 153600, 76800, 57600, 38400, 19200, 9600, 4800, 2400, and 800.
The following example shows the serial port A output message when serial port A is being used for the tip connection.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 6 TEST='uarta_test' `UART A in use as console - Test not run.' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The following example shows the serial port A diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 7 TEST='uartb_test' BAUDRATE='1200' BAUDRATE='1800' BAUDRATE='2400' BAUDRATE='4800' BAUDRATE='9600' BAUDRATE='19200' BAUDRATE='38400' BAUDRATE='57600' BAUDRATE='76800' BAUDRATE='115200' BAUDRATE='153600' BAUDRATE='230400' BAUDRATE='307200' BAUDRATE='460800' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The serial port B diagnostic is identical to the serial port A diagnostic.
The following example shows the serial port B diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 7 TEST='uartb_test' BAUDRATE='1200' BAUDRATE='1800' BAUDRATE='2400' BAUDRATE='4800' BAUDRATE='9600' BAUDRATE='19200' BAUDRATE='38400' BAUDRATE='57600' BAUDRATE='76800' BAUDRATE='115200' BAUDRATE='153600' BAUDRATE='230400' BAUDRATE='307200' BAUDRATE='460800' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The NVRAM diagnostic verifies the NVRAM operation by performing a write and read to the NVRAM.
The following example shows the NVRAM diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 8 TEST='nvram_test' SUBTEST='write/read_patterns' SUBTEST='write/read_inverted_patterns' Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> |
The audio diagnostic is not included for this system.
The SCSI diagnostic validates both the SCSI chip and the SCSI bus subsystem.
The following example shows the SCSI diagnostic output message.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 10 TEST='selftest' Enter (0-12 tests, 13 -Quit, 14 -Menu) ===> |
The all above diagnostic validates the system.
The following example shows the all above diagnostic output message.
The all above diagnostic stalls if the tip line is installed on serial port A or serial port B.
Enter (0-11 tests, 12 -Quit, 13 -Menu) ===> 11 TEST='all_pci/cheerio_test' SUBTEST='vendor_id_test' SUBTEST='device_id_test' SUBTEST='mixmode_read' SUBTEST='e2_class_test' SUBTEST='status_reg_walk1' SUBTEST='line_size_walk1' SUBTEST='latency_walk1' SUBTEST='line_walk1' SUBTEST='pin_test' TEST='all_dma/ebus_test' SUBTEST='dma_reg_test' SUBTEST='dma_func_test' TEST='ethernet_test' SUBTEST='my_channel_reset' SUBTEST='hme_reg_test' SUBTEST='global_reg1_test' SUBTEST='global_reg2_test' SUBTEST='bmac_xif_reg_test' SUBTEST='bmac_tx_reg_test' SUBTEST='mif_reg_test' SUBTEST='mac_internal_loopback_test' SUBTEST='10mb_xcvr_loopback_test' SUBTEST='100mb_phy_loopback_test' TEST='keyboard_test' SUBTEST='internal_loopback' TEST='mouse_test' SUBTEST='mouse_loopback' ###OBDIAG_MFG_START### TEST='mouse_test' STATUS='FAILED' SUBTEST='mouse_loopback' ERRORS='1 ` TTF='456 ` SPEED='450.04 MHz' PASSES='1 ` MESSAGE='Error: Timeout receiving a character' TEST='floppy_test' SUBTEST='floppy_id0_read_test' TEST='parallel_port_test' SUBTEST='dma_read' TEST='uarta_test' `UART A in use as console - Test not run.' TEST='uartb_test' BAUDRATE='1200' BAUDRATE='1800' BAUDRATE='2400' BAUDRATE='4800' BAUDRATE='9600' BAUDRATE='19200' BAUDRATE='38400' BAUDRATE='57600' BAUDRATE='76800' BAUDRATE='115200' BAUDRATE='153600' BAUDRATE='230400' BAUDRATE='307200' BAUDRATE='460800' TEST='nvram_test' SUBTEST='write/read_patterns' SUBTEST='write/read_inverted_patterns' TEST='audio_test' SUBTEST='cs4231_test' Codec_ID='8a' Version_ID='a0' SUBTEST='external_lpbk' External Audio Test not run: Please set the mfg-mode to sys-ext. ###OBDIAG_MFG_START### TEST='audio_test' STATUS='FAILED' SUBTEST='external_lpbk' ERRORS='1 ` TTF='468 ` SPEED='450.04 MHz' PASSES='1 ` MESSAGE='Error: internal_loopback TBD' TEST='selftest' Enter (0-12 tests, 13 -Quit, 14 -Menu) ===> |