S.M.A.R.T smartctl in HAOS

I installed HA a while ago (a year or two ago) on bare metal and it has been working pretty nicely since. However, it died a couple of days ago and after a hard reset of the computer it came back online. I checked the logs and I see a ton of errors like this:
homeassistant kernel: I/O error, dev sda, sector 49109360 op 0x0:(READ) flags 0x0 phys_seg 1 prio class

This tells me that the ssd is probably about dead, but I wanted to use smartctl to check it out. Does smartctl really not exist for HAOS? I have been searching all night trying to find a way to install it, but it doesn’t seem to exist for HAOS. That cant be right? I’m surely not the first person that wanted to check their drives.

Not sure but probably not. It’s a fairly streamlined OS just for running Home Assistant.

There’s an add-on for S.M.A.R.T you can use: Home assistant addon : Scrutiny (SMART dashboard)

1 Like
[home_assistant - /dev/sda - sat - Samsung SSD 870 EVO 1TB]

Last Updated on March 26, 2025 - 17:50

Status            Temperature          Capacity        Powered On

Failed            30°C                 931.5 GiB       3 years

Thank you! You were spot on!! After turning off protection mode for the addon, I was able to get it running and unfortunately it proves that the drive is “mostly dead”. Still under warranty, so I guess I’ll have to replace it with something else while I wait for them to send me another drive.

Thinking of installing HA as a supervised installation this time so I can more easily use standard Linux packages without installing addons. Seems to be about as much work as installing it as HAOS with the added benefit of being able to run native Linux commands.

Just FYI, you are not permitted to install extra packages in a supervised install. The only install methods you can do that to are a core installation or a VM.

Personally I’d go VM. There are discussions about dropping support for core and supervised installs as they take up a disproportionate amount of support compared to their userbase. Nothing set in stone, just a discussion at this stage.

Oh wow, I wasn’t aware of that. Thanks for pointing that out as I might need to change direction then. Do you happen the know the rationale for that decision? I know that HA is trying to cater to everyone and maybe is trying to take the Apple approach and make it just “work”, but I can’t be the only one that wants to run HA directly on hardware for the best performance and ease of use.

This thread alone is kind of proof that we need the flexibility to install regular Linux applications to troubleshoot and administer our installations. This situation was a hardware failure and thankfully someone was kind enough to create a docker container that was compatible with home assistant, but if I had the ability to install packages, it would have taken 10 seconds to install smartctl and do the maintenance myself without having to worry about installing another docker container and configuring it (and that is assuming that the needed functionality was already created by someone other than HA).

Maybe I am looking at this the wrong way and you could help me figure out the best way forward? My goals are to never have a hardware failure like this without being able to diagnose and fix the error easily using standard commands. According to the HA Installation page, if I want to get all the features of HA I need to run it as either HA OS (which is what I am currently running) or Supervised. Container and Core loses out on Addons/easy updates so those aren’t installation methods I would consider. I have a 3050 SFF PC that is dedicated to HA, so my options would be:

  1. Install Debian on bare metal and install HAOS as a supervised installation. This seems ideal because I would have full control of the hardware and can install packages (well I thought I could).
  2. Install Proxmox on bare metal and run HA as a VM. This would be do-able, but I would have to pass through all the hardware devices and the performance would suffer.
  3. Install HA on bare metal like I have now with the same limitations.

Is that correct? I would like to do option 1 after this experience, but am confused about nothing being able to install other packages.

I don’t see any real issue. The backup and restore methods available should make your HAOS disk swap pretty easy.

I just installed SCRUNITY on my HAOS.
no problems on the add-on install, but do not see any stats and/or disks showing up.

what am I missing here?

in the startup logs

time="2026-01-14T09:18:53-07:00" level=info msg="Verifying required tools" type=metrics

time="2026-01-14T09:18:53-07:00" level=info msg="Executing command: smartctl --scan --json" type=metrics

time="2026-01-14T09:18:53-07:00" level=info msg="Executing command: smartctl --info --json /dev/sda" type=metrics

time="2026-01-14T09:18:54-07:00" level=error msg="Could not retrieve device information for sda: exit status 2" type=metrics

time="2026-01-14T09:18:54-07:00" level=info msg="Sending detected devices to API, for filtering & validation" type=metrics

quick update… missed the post about disabling the Protection mode.
I wouldn’t recommend keeping this on. my intentions are to enable it maybe quarterly (for a day) to allow for some testing to run, then disable it and then turn off the add-on to reduce resources.

But after enabling it, I was able to see my SSD and get stats.

For anyone landing here — SMART Sniffer App is an HA add-on that handles this gracefully.

It bundles smartctl inside the container, handles the SYS_RAWIO capability automatically, and reports to the SMART Sniffer integration (via HACS). You get HA sensors for temperature, health, power-on hours, and early warning alerts — so instead of running Scrutiny quarterly for spot checks, you have continuous monitoring with persistent notifications when something starts looking off.

If you also want to monitor drives on other machines, the same integration supports remote agents.

Requires: smartmontools on each monitored machine

Is that installed on or can that be installed on HAOS?

1 Like

Hm… i installed it on my HAOS machine, but hacs add-on finds no sensor values (all are unknown).
is that connected with tom’s question about smartmontools? Note that haos by itself doesn’t have smartctl installed.

1 Like

If the “smart-sniffer-app” doesn’t detect your local HA-OS drive correctly then the “smart-sniffer-integration” can’t show anything.

Look at the “smart-sniffer-app” - logs.

For me it’s not working (Pi5 / PCIe M.2 HAT für Raspberry Pi 5, M-Key, Compact / Raspberry Pi SSD, 256GB).

2026/03/25 09:56:58 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 09:56:58 cache refreshed: 1 drive(s)
1 Like

Pretty much similar/same error here, yep…

Hey tom_l ~ good question.

For the local HAOS drive, no ~ smartmontools is bundled inside the add-on container, so there’s nothing to install on the host.

The add-on is fully self-contained.

The smartmontools requirement only applies to the standalone remote agent ~ for monitoring drives on other machines (a NAS, a separate Linux box, etc.).

Those machines need smartctl installed because the agent calls it directly.

~DAB

Hey Protoncek ~ thanks for trying it out and taking the time to comment!

“Unknown” values usually means the add-on found your drive but smartctl couldn’t read the SMART data from it. That’s actually working as designed ~ the integration marks those as UNSUPPORTED.

A couple questions so I can help narrow it down:

  • What hardware are you running HAOS on? (Pi, mini PC, VM, etc.)
  • What kind of drive? (SATA SSD, NVMe, USB, virtual disk?)
  • Can you check the SMART Sniffer App logs (Settings → Add-ons → SMART Sniffer App → Log tab) and share what you see?

Some setups just won’t work with SMART ~ virtual disks in VMs, USB-attached drives, and certain NVMe controllers can all block the passthrough.

Once I know your setup I can tell you if it’s a limitation or something we can fix. We’re in beta, so I want to iron out all the cases we can. :slight_smile:

~DAB

Hey Baxxy13 ~ thanks for the logs, and congrats on being one of our first Pi 5 users! We just added ARM support in this release so your feedback is really valuable. :heart:

I have a strong suspicion about what’s going on. The add-on container currently requests SYS_RAWIO privileges, which is enough for SATA drives but NVMe drives need SYS_ADMIN as well. Your Pi 5 is running NVMe over PCIe, so the container likely can’t send the admin commands smartctl needs.

Can you do me a favor and check one thing? In your SMART Sniffer App log (Settings → Add-ons → SMART Sniffer App → Log tab) ~ do you see a line that says cache refreshed: X drive(s)? I need to know if X is 0 or 1. If you could share your whole log, that would really help, too.

I’m fairly confident this is a container permissions issue on my end. The add-on currently requests SYS_RAWIO which covers SATA drives, but NVMe drives also need SYS_ADMIN to send admin passthrough commands. We had this on our roadmap. I’ll push an update with the fix ~ if you can confirm that drive count for me I’ll get it out faster.

~DAB

I’m running haos directly on (older) intel nuc skull canyon (i7 cpu), disc is m.2 ssd 512gb - some noname one (taken from chinese mini pc, bought recently on banggood) but scrutiny sees it, also smart data are there. And, as you said, your addon sees one disc, just smart data is not there.

Hey Protoncek ~ thanks for the details, that tells me some great clues. Your M.2 SSD on the NUC is almost certainly NVMe, and the fact that Scrutiny can read it confirms the drive supports SMART just fine ~ the issue was on our end.

We just pushed v0.2.5 of the app with the fix. The container was missing the SYS_ADMIN capability that NVMe drives need. We’re intentionally building with the least amount of access required at each level for security reasons ~ so we’re testing this targeted fix rather than just throwing full access at it. Go to Settings → Add-ons → SMART Sniffer App and you should see the update.

Give it a restart after updating and let me know if your data comes through.

Thanks for helping!!!

~DAB

No, still the same. No smart data here…

No problem. Logs from 0.2.5

[17:56:29] INFO: Running preflight checks...
[17:56:29] INFO: smartctl version: 7.5
[17:56:29] INFO: Drives detected by smartctl: 1
[17:56:29] INFO: mDNS name: smartha-HA45-Pi5-4GB-Test (from HA hostname: HA45-Pi5-4GB-Test)
[17:56:29] INFO: Starting SMART Sniffer agent on port 9099...
[17:56:29] INFO: Starting web UI proxy on port 8099...
[17:56:29] INFO: ─────────────────────────────────────────
[17:56:29] INFO: SMART Sniffer App v0.2.3
2026/03/25 17:56:29 smartctl 7.5 detected
[17:56:29] INFO: Agent: running on port 9099
[17:56:29] INFO: mDNS: smartha-HA45-Pi5-4GB-Test
[17:56:29] INFO: Auth: disabled
[17:56:29] INFO: Mock: disabled
[17:56:29] INFO: Web UI: http://localhost:8099 (via ingress)
[17:56:29] INFO: Drives detected: 1
[17:56:29] INFO: ─────────────────────────────────────────
2026/03/25 17:56:29 SMART Sniffer Agent v0.4.28
2026/03/25 17:56:29 smartctl version: 7.5
2026/03/25 17:56:29 Drives detected: 1
2026/03/25 17:56:29 Listening on: 0.0.0.0:9099
2026/03/25 17:56:29 Auth: disabled
2026/03/25 17:56:29 mDNS: enabled
[webui] Serving on port 8099
[webui] Proxying /api/* → 127.0.0.1:9099
[webui] Proxying /mock/* → 127.0.0.1:9100
2026/03/25 17:56:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 17:56:29 cache refreshed: 1 drive(s)
2026/03/25 17:56:29 mDNS: interfaces: eth0
2026/03/25 17:56:29 mDNS: using custom instance name: smartha-HA45-Pi5 4GB-Test
2026/03/25 17:56:29 mDNS: preferred IP: 172.30.33.4
2026/03/25 17:56:29 mDNS: advertising smartha-HA45-Pi5-4GB-Test._smartha._tcp.local. on port 9099
2026/03/25 17:57:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 17:57:29 cache refreshed: 1 drive(s)
2026/03/25 17:58:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 17:58:29 cache refreshed: 1 drive(s)
2026/03/25 17:59:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 17:59:29 cache refreshed: 1 drive(s)
2026/03/25 18:00:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 18:00:29 cache refreshed: 1 drive(s)
2026/03/25 18:01:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 18:01:29 cache refreshed: 1 drive(s)
2026/03/25 18:02:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 18:02:29 cache refreshed: 1 drive(s)
2026/03/25 18:03:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 18:03:29 cache refreshed: 1 drive(s)
2026/03/25 18:04:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 18:04:29 cache refreshed: 1 drive(s)
2026/03/25 18:05:29 smartctl -a /dev/nvme0 exited with error (may be normal): exit status 2
2026/03/25 18:05:29 cache refreshed: 1 drive(s)