GuideHome Automation

Installing Home Assistant on Raspberry Pi 5 NVMe Storage

Argon NEO 5 NVMe pictured with NVMe drive and logos for Home Assistant and Raspberry Pi 5

With the introduction of PCIe connections on the Raspberry Pi 5, we are seeing the launch of new products that use this interface for fast NVMe storage. I previously documented my Home Assistant migration from SD-card to SSD on my Raspberry Pi 4 using an Argon ONE M.2 SSD case. I skipped moving from SSD to NVMe when the Argon ONE NVMe case was released, but with Home Assistant adding support for the Raspberry Pi 5 I decided to upgrade the heart of my Home Automation.

My starting point for my Home Assistant migration was a Raspberry Pi 4 4GB. Attached to the Pi 4 USB interfaces were the base of the Argon ONE case with the M.2 SSD storage, a Nortek GoControl HUSBZB-1 Zigbee controller and an RFXCOM RFXtrx433E transceiver.

My target new deployment of Home Assistant is a Raspberry Pi 5, 4GB version, installed into the Argon NEO 5 NVMe case with a Western Digitial WD SN570 250GB NVMe drive I had lying around from a previous project. The Argon NEO 5 NVMe case is a neater solution than an NVMe Base or HAT, like the Pimoroni NVMe Base I reviewed previously.

The NVMe drive is installed in the base of the Argon NEO 5 NVMe case and then covered by a metal heatsink and thermal pad to help dissipate heat from the NVMe drive. The top part of the case is aluminium providing sufficient passive cooling, though there is a 30mm PWM fan attached to the Raspberry PI 5 fan header, it’s unclear if HassOS can control the fan at this time.

Preparation

Original Raspberry Pi 4 System

There are a few things to do to prepare for the move:

  • Navigate to Settings -> Add-ons and remove any old add-ons you’re no longer using
  • Navigate to Settings -> Devices and Integrations and remove any old integrations you’re no longer using
  • Navigate to Settings -> System -> Backups and delete any old backups you no longer need.
  • Whilst in the Backups section, click the button to Create Backup. Enter a name and select Full backup as the backup type, then press Create.

Once the backup is complete, you’ll need to copy the backup of the Raspberry Pi 4 onto your computer. You can do this via scp or if you’ve configured the samba add-on. Alternatively, if you’ve configured an add-on like Home Assistant Google Drive Backup, the backup will be automatically copied from the Pi 4 into your Google Drive account.

New Raspberry Pi 5 System

The Raspberry Pi 5 bootloader has been updated since the initial release with fixes to improve compatibility with NVMe drives attached to the PCIe interface, see release notes. Depending on when you read this, the firmware may already be rolled out as a default, but as of 17 Feb it’s required to switch to the lastest stream to get the bootloader dated 5 Feb 2024 that includes a fix for the Western Digital drive I’m using not allowing the system to boot.

First, we want to boot Raspberry Pi OS from an SD-card. This can easily be accomplished using the Raspberry Pi Imager (download), select Raspberry Pi 5 as the device type, selecting the operating system Raspberry Pi OS (64-bit) and write the OS to your SD-card. Insert the card into the Raspberry Pi 5 and boot it up.

Once booted we want to get the system running on the latest updates for the OS:

sudo apt update
sudo apt dist-upgrade -y
sudo reboot

Once rebooted you can check the version of the bootloader you are running:

sudo rpi-eeprom-update
BOOTLOADER: up to date
   CURRENT: Fri  5 Jan 15:57:40 UTC 2024 (1704470260)
    LATEST: Fri  5 Jan 15:57:40 UTC 2024 (1704470260)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader-2712/default)
            Use raspi-config to change the release.

We can see from the output above that the default bootloader configuration is only offering a bootloader from 5 Jan 2024. To get a newer bootloader we need to switch from default to latest this is done by running sudo raspi-config navigate to Advanced Options -> Bootloader Version -> Latest Use the latest version boot ROM software. Checking the available bootloader firmware available now:

sudo rpi-eeprom-update
*** UPDATE AVAILABLE ***
BOOTLOADER: update available
   CURRENT: Fri  5 Jan 15:57:40 UTC 2024 (1704470260)
    LATEST: Mon  5 Feb 14:38:34 UTC 2024 (1707143914)
   RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2712/latest)
            Use raspi-config to change the release.

To switch to the 5 Feb bootloader run the command sudo rpi-eeprom-update -a and then reboot sudo reboot. After the reboot the rpi-eeprom-update will show the current and latest bootloader are the same.

Install Home Assistant

With the NVMe drive installed into the Raspberry Pi and booting into the Raspberry Pi OS desktop, it should continue to boot from the SD-card. From the desktop menu in Raspberry Pi OS open Raspberry Pi Imager from the Accessories sub-menu.

Select the hardware as Raspberry Pi 5. For the Operating System, you’ll find Home Assistant under Other specific-purpose OS -> Home assistants and home automation -> Home Assistant. Finally, select the NVMe drive as the storage and write the OS.

Once the Home Assistant OS is written we need to reconfigure the Raspberry Pi 5 to boot from the NVMe drive. Run sudo raspi-config and select Advanced Options -> Boot Order -> NVMe/USB Boot Boot from NVMe if available, otherwise boot from SD Card. Once selected, exit from raspi-config but don’t reboot.

Next shutdown your Raspberry Pi 5 (sudo shutdown now) and once shutdown, remove the SD-card.

Setting up Home Assistant

With the SD-card removed the system should boot from the NVMe drive with HomeAssistant installed. During the initial setup, HomeAssistant requires a physical network connection on the Raspberry Pi, we can enable WiFi later once the initial setup is complete. The initial setup on first boot of Home Assistant can take a while, so go grab a cup of tea and wait for HomeAssistant to come up. If you have a display connected to your Raspberry Pi 5, you’ll see when the initial setup is complete and what IP address has been allocated. Depending on your network it should be accessible at: http://homeassistant.local:8123.

Once HomeAssitant has initialised, you can restore the backup we took and downloaded earlier.

Choose Restore From Backup and uploaded the backup tar file. You’ll be prompted to restore the backup, ensure you select to restore the full backup.

After several minutes the restore will be completed and you’ll be presented with a login screen. Given you’ve restored from a backup, login with the credentials you used on your previous HomeAssistant installation.

Configuring Network

If you want to use a static IP or switch from a wired to a WiFi network, you’ll need to navigate to Settings -> System -> Network. Under Configure network interfaces, select the wired or WLAN0 (Wireless) interface. Under IPv4, choose between automatic, static, disabled. Configuring parameters as necessary. Under Wi-Fi, you can scan for access points then select your SSID and likely need to select WPA-PSK and enter your WiFi password. If you switch from wired to the wireless network, you’ll want to disconnect your ethernet cable, reboot and confirm you can access HomeAssistant over WiFi.

Cleanup The Restored Backup

In my case, I was moving from an Argon One M.2 case to the Argon NEO 5 NVMe case. I had previously installed a HomeAssistant add-on HassOSArgonOneAddon to enable me to measure and control the fan on the Argon One. Now that I’m using a Raspberry Pi 5, and the NEO 5 uses the standard Pi 5 fan header, we don’t need this add-on. So I can remove this add-on from and cleanup the UI where I reported the fan speed.

As of HomeAssistant versions below, the Fan Speed of fans attached to the Raspberry Pi 5 was not reported and don’t believe they are controlled either.

  • Core: 2024.2.2
  • Supervisor: 2024.01.1
  • OS: 11.5
  • Frontend: 20240207.1

Once unused add-ons are removed you’re good to go with your new Raspberry Pi 5 setup. You can now connect USB devices, like my Zigbee and RFX433E interfaces to my new HomeAssistant installation now running on a Raspberry Pi 5.

Performance

The NVMe storage I’ve previously benchmarked and it’s much faster than running from an SD-card. My HomeAssistant interface feels marginally snappier but that could just be because I expect it to be faster. A full backup took just 31 seconds, with CPU peaking at 25%, compared to 2m20s on the Pi 4 using M.2 SSD. The Raspberry Pi 5 running HomeAssistant now idles at around 2% CPU, compared to 6% with the Pi 4, with temperatures running about 5°C higher at around 45-50°C, this increase in temperature is attributable to the higher power demand of the Raspberry Pi 5 and the reduced thermal mass of smaller NEO 5 NVMe case compared to the Argon ONE M.2 case I’d used previously.

Product Links

Amazon links are affiliate links which help support the site, where possible I’ve used links which should take you to the product in the Amazon store in your region. Links to other suppliers are included for your convenience.

Disclaimer: The Argon NEO 5 NVMe enclosure was supplied for review by Argon40, they do not have any editorial influence.

9 thoughts on “Installing Home Assistant on Raspberry Pi 5 NVMe Storage

  • THX for this post, helped me a lot going from rpi3 to rpi5. Booting on a 2tb m.2

    Reply
    • Glad you found it helpful!

      Reply
  • Thanks for this post, made upgrading from a Pi4 to a Pi5 with Argon One V3 case and SSD a breeze.

    Did you get anywhere the getting the fan on the case to work with Home Assistant?

    Reply
    • My Pi is running right now at 46.9 and peaked at 52 degC earlier today. So not needed the fan to run, so not worried about it. Suspect it would require HassOS to implement specific support for controlling the PWM fan.

      Reply
  • Great post, helped me get a Pi 5 with NVMe in no time!

    Reply
  • Thanks for the clear instructions! Quick question, I read that the Pi5 defaults to PCIe-gen2 but does, experimentally, support gen3. What would you recommend? Does it improve the performance or is it overkill? Thanks!

    Reply
    • There is a gain, but also compatibility issues with some drives. For Home Assistant which isn’t super storage intensive, I don’t see a need to experiment with gen3. Take a look at Pimoroni NVMe Base for Raspberry Pi 5 where I show some performance differences.

      Reply
  • Thank you! works like a charm.

    Reply
  • Thank you very much. I have a raspberry pi 5 running HA. I got a starter kit just to see if I liked HA. Now that I do, I wanted to get rid of the SD card and put a NVME drive in. This guid helped me a lot.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.