.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ledctl 8" .TH ledctl 8 "February 2018" "LEDCTL Version 0.90" "Intel(R) Enclosure LED Control Application" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" ledctl \- Intel(R) LED control application for a storage enclosures. .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBledctl\fR [\fI\s-1OPTIONS\s0\fR] \fIpattern_name\fR=\fIlist_of_devices\fR ... .SH "DESCRIPTION" .IX Header "DESCRIPTION" The ledctl is an user space application designed to control LEDs associated with each slot in an enclosure or a drive bay. The LEDs of devices listed in \fIlist_of_devices\fR are set to the given pattern \fIpattern_name\fR and all other LEDs are turned off. User must have root privileges to use this application. .PP There are two types of systems: 2\-LEDs systems (Activity \s-1LED,\s0 Status \s-1LED\s0) and 3\-LEDs systems (Activity \s-1LED,\s0 Locate \s-1LED,\s0 Fail \s-1LED\s0). The ledctl application uses \s-1SGPIO\s0 and \s-1SES\-2\s0 protocol to control LEDs. The program implements \s-1IBPI\s0 patterns of \s-1SFF\-8489\s0 specification for \s-1SGPIO.\s0 Please note some enclosures do not stick close to \s-1SFF\-8489\s0 specification. It might happen that enclosure's processor will accept an \s-1IBPI\s0 pattern but it will blink the LEDs at variance with \s-1SFF\-8489\s0 specification or it has limited number of patterns supported. .PP \&\s-1LED\s0 management (\s-1AHCI\s0) and SAF-TE protocols are not supported. .PP The ledctl application has been verified to work with Intel(R) storage controllers (i.e. Intel(R) \s-1AHCI\s0 controller and Intel(R) \s-1SAS\s0 controller). The application might work with storage controllers of other vendors (especially \s-1SCSI/SAS\s0 controllers). However, storage controllers of other vendors have not been tested. .PP The ledmon application has the highest priority when accessing LEDs. It means that some patterns set by ledctl may have no effect if ledmon is running (except Locate pattern). .PP The ledctl application is a part of Intel(R) Enclosure \s-1LED\s0 Utilities. .SS "Pattern Names" .IX Subsection "Pattern Names" The ledctl application accepts the following names for \fIpattern_name\fR argument according to \s-1SFF\-8489\s0 specification. .IP "\fBlocate\fR" 8 .IX Item "locate" Turns Locate \s-1LED\s0 associated with the given device(s) or empty slot(s) on. .IP "\fBlocate_off\fR" 8 .IX Item "locate_off" Turns only Locate \s-1LED\s0 off. .IP "\fBnormal\fR" 8 .IX Item "normal" Turns Status \s-1LED,\s0 Failure \s-1LED\s0 and Locate \s-1LED\s0 off. .IP "\fBoff\fR" 8 .IX Item "off" Turns only Status \s-1LED\s0 and Failure \s-1LED\s0 off. .IP "\fBica\fR or \fBdegraded\fR" 8 .IX Item "ica or degraded" Visualizes \*(L"In a Critical Array\*(R" pattern. .IP "\fBrebuild\fR" 8 .IX Item "rebuild" Visualizes \*(L"Rebuild\*(R" pattern. .IP "\fBifa\fR or \fBfailed_array\fR" 8 .IX Item "ifa or failed_array" Visualizes \*(L"In a Failed Array\*(R" pattern. .IP "\fBhotspare\fR" 8 .IX Item "hotspare" Visualizes \*(L"Hotspare\*(R" pattern. .IP "\fBpfa\fR" 8 .IX Item "pfa" Visualizes \*(L"Predicted Failure Analysis\*(R" pattern. .IP "\fBfailure\fR or \fBdisk_failed\fR" 8 .IX Item "failure or disk_failed" Visualizes \*(L"Failure\*(R" pattern. .IP "\fBses_abort\fR" 8 .IX Item "ses_abort" \&\s-1SES\-2 R/R ABORD\s0 .IP "\fBses_rebuild\fR" 8 .IX Item "ses_rebuild" \&\s-1SES\-2 REBUILD/REMAP\s0 .IP "\fBses_ifa\fR" 8 .IX Item "ses_ifa" \&\s-1SES\-2 IN FAILED ARRAY\s0 .IP "\fBses_ica\fR" 8 .IX Item "ses_ica" \&\s-1SES\-2 IN CRIT ARRAY\s0 .IP "\fBses_cons_check\fR" 8 .IX Item "ses_cons_check" \&\s-1SES\-2 CONS CHECK\s0 .IP "\fBses_hotspare\fR" 8 .IX Item "ses_hotspare" \&\s-1SES\-2 HOT SPARE\s0 .IP "\fBses_rsvd_dev\fR" 8 .IX Item "ses_rsvd_dev" \&\s-1SES\-2 RSVD DEVICE\s0 .IP "\fBses_ok\fR" 8 .IX Item "ses_ok" \&\s-1SES\-2 OK\s0 .IP "\fBses_ident\fR" 8 .IX Item "ses_ident" \&\s-1SES\-2 IDENT\s0 .IP "\fBses_rm\fR" 8 .IX Item "ses_rm" \&\s-1SES\-2 REMOVE\s0 .IP "\fBses_insert\fR" 8 .IX Item "ses_insert" \&\s-1SES\-2 INSERT\s0 .IP "\fBses_missing\fR" 8 .IX Item "ses_missing" \&\s-1SES\-2 MISSING\s0 .IP "\fBses_dnr\fR" 8 .IX Item "ses_dnr" \&\s-1SES\-2 DO NOT REMOVE\s0 .IP "\fBses_active\fR" 8 .IX Item "ses_active" \&\s-1SES\-2 ACTIVE\s0 .IP "\fBses_enable_bb\fR" 8 .IX Item "ses_enable_bb" \&\s-1SES\-2 ENABLE BYP B\s0 .IP "\fBses_enable_ba\fR" 8 .IX Item "ses_enable_ba" \&\s-1SES\-2 ENABLE BYP A\s0 .IP "\fBses_devoff\fR" 8 .IX Item "ses_devoff" \&\s-1SES\-2 DEVICE OFF\s0 .IP "\fBses_fault\fR" 8 .IX Item "ses_fault" \&\s-1SES\-2 FAULT\s0 .IP "\fBses_prdfail\fR" 8 .IX Item "ses_prdfail" \&\s-1SES\-2 PRDFAIL\s0 .SS "Patterns Translation" .IX Subsection "Patterns Translation" When non \s-1SES\-2\s0 pattern is send to device in enclosure automatic translation is being done. .IP "\fBlocate\fR" 8 .IX Item "locate" \&\fIlocate\fR is translated to \fIses_ident\fR .IP "\fBlocate_off\fR" 8 .IX Item "locate_off" \&\fIlocate_off\fR is translated to \fI~ses_ident\fR .IP "\fBnormal\fR or \fBoff\fR" 8 .IX Item "normal or off" \&\fInormal\fR or \fIoff\fR is translated to \fIses_ok\fR .IP "\fBica\fR or \fBdegraded\fR" 8 .IX Item "ica or degraded" \&\fIica\fR or \fIdegraded\fR is translated to \fIses_ica\fR .IP "\fBrebuild\fR" 8 .IX Item "rebuild" \&\fIrebuild\fR is translated to \fIses_rebuild\fR .IP "\fBifa\fR or \fBfailed_array\fR" 8 .IX Item "ifa or failed_array" \&\fIifa\fR or \fIfailed_array\fR is translated to \fIses_ifa\fR .IP "\fBhotspare\fR" 8 .IX Item "hotspare" \&\fIhotspare\fR is translated to \fIses_hotspare\fR .IP "\fBpfa\fR" 8 .IX Item "pfa" \&\fIpfa\fR is translated to \fIses_prdfail\fR .IP "\fBfailure\fR or \fBdisk_failed\fR" 8 .IX Item "failure or disk_failed" \&\fIfailure\fR or \fIdisk_failed\fR is translated to \fIses_fault\fR .SS "List of Devices" .IX Subsection "List of Devices" The application accepts a list of devices in two formats. The first format is a list with comma separated elements. The second format is a\ list in curly braces and elements are separated by space. See examples section bellow for details. .PP A device is a path to file in /dev directory or in /sys/block directory. It may identify a block device, a \s-1RAID\s0 device or a container device. In case of a \s-1RAID\s0 device or a container device a state will be set for all block devices associated, respectively. .PP The LEDs of devices listed in \fIlist_of_devices\fR are set to the given pattern \fIpattern_name\fR and all other LEDs are turned off (unless \-\-listed\-only option is given). .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-l\fR or \fB\-\-log\fR=\fIpath\fR" 8 .IX Item "-l or --log=path" Sets a path to local log file. If this option is specified the global log file \fI/var/log/ledctl.log\fR is not used. .IP "\fB\-h\fR or \fB\-\-help\fR" 8 .IX Item "-h or --help" Prints this text out and exits. .IP "\fB\-v\fR or \fB\-\-version\fR" 8 .IX Item "-v or --version" Displays version of ledctl and information about the license and exits. .IP "\fB\-L\fR or \fB\-\-list\-controllers\fR" 8 .IX Item "-L or --list-controllers" Prints information (system path and type) of all controllers detected by ledmon and exits. .IP "\fB\-x\fR or \fB\-\-listed\-only\fR" 8 .IX Item "-x or --listed-only" With this option ledctl will change state only on devices listed in \s-1CLI.\s0 The rest of devices will not be touched. .SH "FILES" .IX Header "FILES" .IP "\fI/var/log/ledctl.log\fR" 8 .IX Item "/var/log/ledctl.log" Global log file, used by all instances of ledctl application. To force logging to user defined file use \fI\-l\fR option switch. .SH "EXAMPLES" .IX Header "EXAMPLES" The following example illustrates how to locate a single block device. .PP .Vb 1 \& ledctl locate=/dev/sda .Ve .PP The following example illustrates how to turn Locate \s-1LED\s0 off for the same block device. .PP .Vb 1 \& ledctl locate_off=/dev/sda .Ve .PP The following example illustrates how to locate disks of a \s-1RAID\s0 device and how to set rebuild pattern for two block devices at the same time. This example uses both formats of device list. .PP .Vb 1 \& ledctl locate=/dev/md127 rebuild={ /sys/block/sd[a\-b] } .Ve .PP The following example illustrates how to turn Status \s-1LED\s0 and Failure \s-1LED\s0 off for the given device(s). .PP .Vb 1 \& ledctl off={ /dev/sda /dev/sdb } .Ve .PP The following example illustrates how to locate a three block devices. This example uses the first format of device list. .PP .Vb 1 \& ledctl locate=/dev/sda,/dev/sdb,/dev/sdc .Ve .SH "LICENSE" .IX Header "LICENSE" Copyright (c) 2009\-2017 Intel Corporation. .PP This program is distributed under the terms of the \s-1GNU\s0 General Public License as published by the Free Software Foundation. See the built-in help for details on the License and the lack of warranty. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBledmon\fR\|(8), \fBledmon.conf\fR\|(5) .SH "AUTHOR" .IX Header "AUTHOR" This manual page was written by Artur Wojcik . It may be used by others.