Hello everyone,
I recently got 12x 10TB SATA HDDs and bought a refurbished HPE D3610 storage enclosure. The new storage shelf is actually a JBOD without any specific stuff in it - just a SAS expander with multi-path support, 2 PSU (for redundancy), one backplane and case fans. The shelf is connected to a LSI 9305-16e HBA (IT mode) using a single SAS-8644 → SAS-8644 cable, which is attached to the first IO module of the shelf (the second IO module is not attached at all, as the shelf should operate in single domain as I’m using SATA HDDs). It just works perfectly and I see all the 12 drives on my TrueNAS SCALE server ready to be assigned to my pool.
All is OK with the shelf, except the fans are loud by default. Its not like an airplane, but it is some crying noise (don’t know how to better explain it). The shelf itself shows that everything is green, no issues are reported.
I searched the Internet to find some related posts, but I couldn’t find anything to solve the issue with the loud fans. The most interesting Link I could get was HPE D3XXX JBOD Thread | ServeTheHome Forums. What catched my eye in that post was, that I could connect to serial console port of the shelf using an USB-B cable. I did that and was presented with four additional TTYs on my Linux machine. The first one represents the SEP and the second the ESP. The last two produce only an empty output from which I can get no information.
I played around with the SEP and ESP serial consoles and found out, that these allow to get lots of status information and also allows to configure little stuff. Entering ‘help’ shows the following output:
SEP:A> help
For more information on how to use the following targets and commands,
enter "help target" or "help command".
+-------------------+---------------------------------------------------------+
| TARGET | COMMAND |
+-------------------+---------------------------------------------------------+
| | help, echo, version, memory, setlog, sdkcli, sysstatus, |
| | blockpooldump |
+-------------------+---------------------------------------------------------+
| abmmodule | show |
+-------------------+---------------------------------------------------------+
| apmmodule | show |
+-------------------+---------------------------------------------------------+
| backuprestore | show, clearbackup |
+-------------------+---------------------------------------------------------+
| codeload | showstatus, release |
+-------------------+---------------------------------------------------------+
| daughtercard | show |
+-------------------+---------------------------------------------------------+
| display | show, set, get |
+-------------------+---------------------------------------------------------+
| drivebay | simulate, show, showstats, set |
+-------------------+---------------------------------------------------------+
| dynamiclog | level, reset, enable, disable, read, show, clear |
+-------------------+---------------------------------------------------------+
| enclosure | read, show |
+-------------------+---------------------------------------------------------+
| esp | codeload, reset, show, request, cli |
+-------------------+---------------------------------------------------------+
| expander | reset, show, smp |
+-------------------+---------------------------------------------------------+
| fanmodule | show |
+-------------------+---------------------------------------------------------+
| fanrotor | show |
+-------------------+---------------------------------------------------------+
| fpga | codeload, disable, show |
+-------------------+---------------------------------------------------------+
| gpio | read, show, showstats, set, clear |
+-------------------+---------------------------------------------------------+
| i2c | read, write, writeread |
+-------------------+---------------------------------------------------------+
| initiator | show |
+-------------------+---------------------------------------------------------+
| interlink | ping |
+-------------------+---------------------------------------------------------+
| iomodule | show, set |
+-------------------+---------------------------------------------------------+
| led | show, showstats, set |
+-------------------+---------------------------------------------------------+
| nvram | clear, modify, fixcrc, read, printtags, |
| | setbasenumbering, setsingledomain, setnebs, write, |
| | show, restore |
+-------------------+---------------------------------------------------------+
| partneresp | show |
+-------------------+---------------------------------------------------------+
| partneriomodule | show |
+-------------------+---------------------------------------------------------+
| partnersep | show |
+-------------------+---------------------------------------------------------+
| phy | enable, disable, show, hardreset, linkreset, |
| | setedgebuffering, showstats, clearerrorcounters, |
| | resetcoeff, setmc |
+-------------------+---------------------------------------------------------+
| phyerrormonitor | enable, disable, show |
+-------------------+---------------------------------------------------------+
| powersupply | show, set |
+-------------------+---------------------------------------------------------+
| rack | show |
+-------------------+---------------------------------------------------------+
| redriver | read, write |
+-------------------+---------------------------------------------------------+
| sasconnector | enable, disable, show |
+-------------------+---------------------------------------------------------+
| scsi | setjammer, disablejammer, showjammer |
+-------------------+---------------------------------------------------------+
| sep | assert, show, set, clock, crash, updatesesstatus, |
| | performance, forcescsiresponse, |
| | stopforcingscsiresponse, sobsize |
+-------------------+---------------------------------------------------------+
| ses | control, showinitiators, dump |
+-------------------+---------------------------------------------------------+
| smartcarrier | refresh, set, frr, reset, authenticate, reset, show, |
| | showstats |
+-------------------+---------------------------------------------------------+
| spi | read, write |
+-------------------+---------------------------------------------------------+
| taskmanager | hang, enable, disable, show |
+-------------------+---------------------------------------------------------+
| temperaturesensor | read, show, showstats |
+-------------------+---------------------------------------------------------+
| uart | read, write, showstats |
+-------------------+---------------------------------------------------------+
| vfs | newfile, cat, mkdir, write, erase, ls, read, seek, |
| | partition |
+-------------------+---------------------------------------------------------+
| watchdog | disable, enable, showstatus |
+-------------------+---------------------------------------------------------+
ESP:A> help
Commands:
help
version
dbg
ri2c
wi2c
rio
wio
ri2c2
wi2c2
rio2
wio2
setfan
disablewrfan
gettemp
psstat
power
rnvram
wnvram
rack
arbstats
reset
setthermal
hdlcmsg
mngled
simfail
plotevents
fixnvramcs
hangthisesp
setarbtimeout
getarbtimeout
heartbeat
Unfortunately, I could not find any documentation on how to use the commands from SEP or ESP. Though the SEP help text provides some more information as the ESP one. The help text, as shown above, is not very friendly to me giving me no information actually how to use the ESP commands and what they do.
What catched my eye on the ESP console is the setfan command and the setthermal command. It seems that setfan allows to set the speed of some fans, but it does not seem to make any difference. From the other I/O module, it seems to be required to also execute setfan command to have any effect. However, the setthermal command allows to set the thermal curve of the fans, but also requires to be executed on both I/O modules. It seems that executing disablewrfan on a single I/O module disables fan writing on that module causing only the other one to set the fans. I was able to change something there, to make the fans more quiet using the setthermal command.
Although I could make it more quiet, the main question is now how to make this persistent so it survives a reboot of the device. Does anyone know something about the HPE D3610 serial consoles to make my new thermal curve persistent?
Definitely some documentation would be helpful…
Thank you in advance!