Fork 0
HP Array Configuration Utility - Reverse Engineering
Go to file
Benjamin Höglinger-Stelzer f84c44b493 Added hpssacli 2023-07-12 12:51:55 +02:00
docs Create 2023-06-25_example_capture.log 2023-06-25 18:43:00 +02:00
drivers Added hpssacli 2023-07-12 12:51:55 +02:00
src Update SmartArrayControllerTool.cpp 2023-06-26 10:47:46 +02:00
.gitattributes Added ACU setup 2023-06-25 18:34:41 +02:00
.gitignore Add .gitattributes and .gitignore. 2023-06-23 02:21:33 +02:00
NOTES.md More docs 2023-07-12 12:23:18 +02:00
README.md More docs 2023-07-12 12:23:18 +02:00
SmartArrayControllerTool.sln Renamed directory 2023-06-26 10:06:56 +02:00


HP Array Configuration Utility - Reverse Engineering


Trying to figure out which requests the HP ProLiant Array Configuration Utility for Windows 64-bit sends to my HP Smart Array P410 RAID Controller, so that I can script it to e.g. fetch disk alerts etc.

Heavily work in progress 🔥


The ACU sends a couple of IOCTL_SCSI_MINIPORT IOCTLs with custom payloads on controller selection; this is received and handled by the HpSAMD.sys driver. So far cross-checking the payload format with the well-known Linux sources hasn't yielded any success; I assume when IOCTL_SCSI_MINIPORT is used, the payload isn't what 1:1 gets sent to the controller, unlike IOCTL_SCSI_PASS_THROUGH which isn't what the ACU uses. Next step might be trying to port over the Linux CCISS example requests to the Windows SCSI API by using IOCTL_SCSI_PASS_THROUGH to try if the controller then responds with the same packet structure as it would under Linux.

So far trying to get a IOCTL_SCSI_PASS_THROUGH for controller identification to work results in a ERROR_IO_DEVICE 1117 (0x45D).

I was able to get some packet captures of IOCTL_SCSI_PASS_THROUGH_DIRECT requests directly to the virtual LUNs exposed by the SCSI adapter (see NOTES.md), but observing state changes in ACU I do not think that the controller state and properties of interest are proxied through them, so far I haven't found how exactly the ACU and controller exchange data like array recovery and rebuild status and progress, license keys etc.

3rd party sources