Enclosure Services Reprogramming (SES)

Top  Previous  Next

This feature allows you almost full control of your SES enclosure and devices within it.  We will let you send low-level commands to do anything you want to do such as decrease the fan speed or turn off the power supplies.  Use this feature wisely. If you want to do something stupid like program all of the fans to get turned off and disable the thermal shutdown, SMARTMon-UX will let you submit those commands to your enclosure (which will probably be rejected as most SES engines will not let you do these things for obvious reasons).

 

This function is really for storage engineers, hardware designers, and other advanced users who would typically be very aware of how to directly program a SES enclosure, but require an application program that can facilitate this for them.  These users would typically be very familiar with the ANSI SES programming specification, as well as programming vendor-unique fields that would not normally be available without a non-disclosure agreement between the end-user and the enclosure manufacturer.

 

Usage:

./smartmon-ux -EP2ttnnwwxxyy [-EP2ttnnwwxxyy] device_name

 

Note, all numbers are two character hex digits, ranging from 0-9 or A-F.  You may also combine multiple commands on the same line. This is the preferred way to combine multiple commands as all of them will get executed at the same time.

tt - Element type.  Represents either an ANSI-defined element type code or a vendor-unique type code. See the table below for a cross-reference.
nn - Element number. This is the nth element of type tt. If you want to configure the overall settings for a specific element type, enter value FF for the element number. The first element number is always 00. So, if you wanted to address the first power supply, the beginning of the command option would be -EP20200
wwxxyy - These are the three bytes you want to send which correspond to byte offsets 1, 2, and 3in the CommonControl field of SES Page #2.

 

 

tt = element number (in hex) that you wish to control. Range is 0 to n, where n is the highest element number

-EP2ttnnwwxxyy Sends bytes ww,xx,yy to SES enclosure control page (#2) for element type tt number nn.  This function is covered in detail in the next chapter, Enclosure Services Reprogramming

 

 

ANSI-Defined SES Element Types and Description Table

Element Type Code (hex)

Description

00

Unspecified (Do not use it!!)

01

Device (i.e., something in a slot like disk drive or DAT tape)

02

Power Supply

03

Cooling (typically a fan)

04

Temperature Sensor

05

Door Lock

06

Audible Alarm

07

Enclosure Services Controller Electronics

08

SCC Controller Electronics

09

Nonvolatile Cache

0A

Invalid Operation Reason

0B

Uninterruptible Power Supply

0C

Display (LCD display or control panel)

0D

Key Pad Entry

0E

Enclosure

0F

SCSI Port/Transceiver

10

Language Element

11

Communication Port

12

Voltage Sensor

13

Current Sensor

14

SCSI Target Port

15

SCSI Initiator Port

16

Simple Sub-enclosure

17

Array Device

18 - 7F

Reserved

80 - FF

Vendor-specific type code

 

Example:

Below is a table from the ANSI SES programming specification which shows how one might package the bytes to control aspects of a device.  We will send a harmless command which will enable the fault light for a device in a particular slot. Every element type has a different 4-byte structure and options, so you should consult either the ANSI programming specification or your particular vendor's documentation.  Remember, an enclosure manufacturer is free to not support certain functions as well as add vendor-unique functionality.

 

Byte/Bit

7

6

5

4

3

2

1

0

0

Common Control (This is automatically set to zero)

1 (ww field)

Reserved

2 (xx field)

Active

Do Not Remove

Reserved

Request Insert

Request Remove

Request Identify

Reserved

3 (yy field)

Reserved

Request Fault

Device Off

Enable Bypass A

Enable Bypass B

Reserved

 

To enable the request fault light, we must set bit 5 in byte #3 (i.e., 20 hex), so the wwxxyy sequence must be 000020.

As we are controlling the device element, we must send a 01 to indicate a disk device.  For our example, we'll select the third device in the enclosure (corresponding to element # 2).

 

Put it all together, and you would send out -EP20102000020.

If we were to send out -EP20102000200, this will turn off the fault light, but turn on the identify light (assuming one exists).  Note that the fault light goes off because byte 3 (the yy field) has all zeros in it.  The SES enclosure will stay in whatever state you put it in, until either the enclosure decides to override that state or power is reset to the enclosure.  Everything is volatile.  (There may be some exceptions for vendor-unique SES elements).

 

If you wanted to instruct the device to both request fault and force the bypass "A" path, and turn on the identify LED, then send -EP20102000228.