1
0
SmartArrayControllerTool/README.md

25 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2023-06-25 16:07:15 +02:00
# HP Array Configuration Utility - Reverse Engineering
## About
Trying to figure out which requests the [HP ProLiant Array Configuration Utility for Windows 64-bit](https://support.hpe.com/connect/s/softwaredetails?language=en_US&softwareId=MTX_669f83062c7b492083c2aa7125) 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 🔥
2023-06-25 16:46:11 +02:00
## Details
2023-06-25 16:56:47 +02:00
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.
2023-06-25 16:46:11 +02:00
2023-06-26 07:50:45 +02:00
So far trying to get a `IOCTL_SCSI_PASS_THROUGH` for controller identification to work results in a `ERROR_IO_DEVICE` 1117 (0x45D).
2023-07-12 12:23:18 +02:00
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](./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.
2023-06-25 16:07:15 +02:00
## 3rd party sources
- [HP ProLiant Array Configuration Utility for Windows 64-bit](https://support.hpe.com/connect/s/softwaredetails?language=en_US&softwareId=MTX_669f83062c7b492083c2aa7125)
- [CCISS](https://sourceforge.net/projects/cciss/)
- [cciss_defs.h](https://github.com/torvalds/linux/blob/a92b7d26c743b9dc06d520f863d624e94978a1d9/include/uapi/linux/cciss_defs.h)
- [cciss_ioctl.h](https://github.com/torvalds/linux/blob/a92b7d26c743b9dc06d520f863d624e94978a1d9/include/uapi/linux/cciss_ioctl.h)
- [SCSI Pass-Through Interface Tool](https://github.com/microsoft/Windows-driver-samples/tree/f5fe952f1fc90cfcff535407d56f49953d22e8da/storage/tools/spti)
2023-06-25 16:46:11 +02:00
- [HPSA - Hewlett Packard Smart Array driver](https://kernel.org/doc/html/v6.4-rc7/scsi/hpsa.html)