About This Project
This is something I wanted for a long time. I have a couple of these Mediasonic HFR2-SU3S2 Proraid boxes. These are 4-bay hardware RAID boxes that are pretty cheap and reliable. They work well, but it’s traditionally been difficult or impossible to get status of the array and the individual drives except on Windows. I want to hook one of these up to my Synology NAS via USB to extend my storage, but I’m not comfortable with letting this thing run for months without ever laying eyes on it, and no way to monitor its health.
The maker of Hard Disk Sentinel - a fantastic piece of software for Windows - does offer a much pared Linux utility (for free, too!), but out of the box it cannot detect the individual drive status. If your internet spelunking skills are good you can find an add-on that will actually let you get individual drive status using his utility, but it comes with some rather scary warnings, and it’s closed source. Also, it only reports SMART status, and does not provide any other health information about the overall state of the array. Other than this, the only information I could find anywhere online that is helpful is JMRaidCon, a tool that has some basics of the protocol implemented but not much else.
With a lot of help from Claude Code, I was able to whip up this utility. It can retrieve all the SMART data for the drives, get some RAID status information, and more importantly, it’s open source so it doesn’t feel like a terrifying black box. I am hoping it can be improved over time with support for other devices, or identification of already supported devices.
Features
Basic features are:
- Can detect complete SMART status of RAID member drives
- Can detect when array is in a rebuilding state
- Cannot directly detect a degraded state, but by providing it with an expected number of drives, will report an unhealthy state if SMART status falls below thresholds or a drive is missing
- Can output in human readable or JSON format
- Includes a tool to aggregate data from other sources (right now,
smartctl) and provide overall system health and complete drive status in a consistent format - Mitigates the scariness by refusing to do anything destructive unless it appears safe - see the sector usage discussion in the repo for how this communicates with the controller and why it could be sketchy
I’m hoping to reverse engineer more data; it seems like it should be possible to obtian the actual RAID status (e.g. healthy or degraded) in a way other than counting drives. The hardware itself obviously knows when it’s in a degraded state and has lights that show when a drive is missing/degraded/rebuilding, so it seems reasonable that the SATA to USB controlled might expose it. However this process involves intentionally braking my array; I did this once to get the data I have so far but may need to test other configurations to better understand the data.
Resources
Other things related to this chipset that I found:
- JM Raid Status on Github - this project
- JMRaidCon - original implementation of JMS576 protocol
- Linux Firmware flasher when the offiical one doesn’t work
- Discussion - firmware supporting SMART for JMS567 - this appears to be relevant for single drive enclosures. I did flash this to one of my boxes, and it didn’t work, but it was possible to reflash it to the original FW
- Repository of various JMS567 firmwares - these appear to be extracted from different devices. FW22.01.00.07 is recognized as valid for my Mediasonic boxes. The factory firmare on mine was both JMS567_FW20.05.02.03. Since they both appear to use the same versioning, I updated it on mine. Works fine, can’t tell any difference. I will probably try downgrading again and see if there’s any performance or other difference noted.
- Hard Disk Sentinel dev’s post about HD Sentinel linux tool for JMicron and risk