HASS.IO -> transfer from SD card to SSD or USB

Let me start by saying Thank you to everyone that puts the time in around here. I use the forums a lot for help but have never posted. Without you guys/gals helping everyone there would be no HA.

Now the issue :grin:
I’m currently running HA on a raspberry Pi with an SD card and would really like to keep it on the Pi. I know some people complain about the slow reboot speeds etc. but honestly it’s been so stable I hate to ever move off the platform.
However I do want to move away from an SD card… I feel like I’m playing with fire at this point and want to stop a problem before it happens.
So my options are USB or SSD. Can I have some opinions on which is better AND are there any guides to move a HASS.IO build from an SD card to either a USB or SSD? I think I would prefer an SSD, but interested to hear what everyone says.
I have a zwave stick and have read about people having problems when making a transfer from one HA build to another. Honestly since I don’t even know how to go about making the swap I’m not sure if this might even be a problem i encounter.
Thanks for any and all help.

6 Likes

You cannot currently boot HassOS from a USB drive - it’s not supported.

What you can do is install Raspbian and then do a generic Linux install of Hass.io with docker and that runs really well from a USB.

If you make a snapshot of your setup via the snapshots addon, restoring that to a new Hass.io installation will restore all your config exactly as it was.

I believe with the 2.8 release of HassOS that just occurred, this is starting to come together… https://github.com/home-assistant/hassos/pull/318

Has anyone been able to do this?
I’m looking to move my Hass.io install on the SD-card of the RPi to an old 256Gb SSD and connect it over USB.

2 Likes

HELLO
any suggestion on how can i move sd to ssd on hassio?
thanks

I bet we start to see some momentum around this now that the Pi4 has USB3 support. We should be able to get full speed from SSDs over USB3. I’ve burned through several SD cards at this point so I’m eager to make the jump

4 Likes

Hello all!,

is the hassio .img for Pi3B+ works on Pi4 please?

This thread is the first Google result for “hassos ssd”, so…

I figured I should share what I will be experimenting with later today (when my ssd arrives in mail):

Usb bootable hassos looks to have been done already, and I will be one of the guinea pigs.

I installed HASS.IO (not HASSOS) on an SSD and documented the process here:

https://www.amalytix.com/en/home-assistant-with-conbee-ii-deconz-xiaomi-aqara-and-hass-io-from-scratch/#Installing_Hassio_on_a_SSD

Hope it helps!

3 Likes

trutz, that method uses a non-hassos system, which is very different when it comes to usb boot.

A quick update on my progress:
So far my initial experiments have been successful. This is with a pi3b+, startech usb3.1 to SATA3 adapter cable, and a Kingston 120GB ssd drive, using the above mentioned dev image for rpi usb boot. Just flashing that image to the ssd and plugging it in, hassos boots and reboots just fine. Next I’m going to play with restoring a snapshot and see how it behaves with everything working.

On a side note, hope someone can help me on this OT matter… When flashing a hassio image to a larger ssd (larger than 2GB I think) the system is not recognizing and therefore not using all the extra space. I tried to fix this with gparted… when I open gparted it warns me that it needs to ‘fix’ the mbr so it can use the unallocated space. I click yes twice, then it opens the gui. Then I resize the data partition to fill out the rest of the room and hit apply. All seems to work fine (all files and file sizes look correct), but when I do this it doesn’t boot up. There must be something I’m doing wrong; I figure it must be possible to increase the size of the data partition without screwing it up otherwise. Any advice/suggestions on how to ‘expand’ the data partition in this case?

[edit: Exciting update… the snapshot restore worked and now my no-sd card hassos system is humming along well. WOOT!!! …now I just need to make the data partition bigger so I can record 90days of data. :D!]
Look ma’, no drives, LOL! Weird how the ssd isn’t showing up in the hardware gui. If you look close, you can see the edge where it says HassOS 3.4… woot! :D!

3 Likes

Were you able to resolve the 2GB limitation?

I followed your instructions and now, for the first time, am running on a SSD! My system is HassOS, RPi3 B+ with a Crucial 240 GB drive. No 2GB limitation experienced. Thanks for being the “guinea pig” :smile:

@Jefe, glad my post helped you get it going. I wasn’t the only guinea pig for sure… in fact a few others claimed success with it months ago. I was a bit surprised to see nothing resembling instructions on how to do it on this site, so I posted about it to share. I know lots of folks have been waiting on this capability based on all the posts I’ve seen about in over the past 2 years all over the internet. I just hope these posts get around and more ppl try it (and please if you do, give feedback on github so rbray know’s if it’s working or not… help push this thing to release).

On the ‘2gb limitation’… already fixed itself and I didn’t even know it!
I just pulled the ssd from my pi, plugged it in my pc with gparted, and it showed the full 120GB is being used (~100GB for the data partition). I did it this way since the system monitor display on my ui shows only %, and I didn’t feel like configuring/rebooting to add non-% just to check. I saw that unallocated space in gparted before I booted up the drive (thus hassio isn’t yet installed automagically). So I think upon first bootup, besides hassos downloading and installing hassio, it must also do some drive prep, which resized the partition for me. This is exactly what I would expect from a ‘beginners’ setup… it works perfectly!

[edit: I just had a failed reboot today. Surprised me since it rebooted at least 10 times before without problems. I already solved the problem… copy bootcode.bin from the boot partition of the ssd on to the root of a small sd card (formatted fat32), and also add a blank file named “timeout”… put the sd in the pi and it reboots fine now. LOL, so now I can’t technically say ‘no sd card’ anymore, but of course the sd will not slow things down or die for a long time (just reads bootcode.bin once each bootup).

My understanding is this has to do with my specific usb sata adapter. There is a limited list of which ones will work flawlessly with pi usb boot. They’re cheap, so I’ll end up getting one off the list. Just wanted to mention this for those about to buy one for pi usage.]

Going into that project also! Hope it gets more popular and gets integrated in the official HassOS.

I’ll be installing this afternoon.

1 Like

Yes I hope it gets merged to the next release, if not soon after. One of the concerns the devs will have is dealing with user complaints due to incompatible hardware. They will probably need an easily accessible table of possible hardware they can point to that shows which specific adapter+ssd combos will and won’t work. Of course, there is plenty of motivation among the devs to release USB ssd boot to solve the sd issue for the many folks running hassos.

A friendly reminder to those who are trying this out… do not hit the ‘Update’ button on the system page yet! This will pull the latest release, which at the time of this post (release 2.12) does not have the USB boot feature. ‘Updating’ this way before USB boot is released will result in a failure to reboot.

[edit: Looks like our wish has already come true… should be on the next release: https://github.com/home-assistant/hassos/pull/440
]

Thanks for the write up - Im keen to replicate this myself, mainly so I can get setup correctly ahead of moving to a pi4 when they finally release the USB boot. Quick question - did you manage to find a list of devices that DO work well with uboot? Ive not been able to find out for sure and Im ready to buy my SSD.

Is there a document I can follow on that? It looks like I have a Rpi3b, not the + so I had to enable to USB boot from: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md

Then, on boot without SD, it now detect the SSD and starts (else, without SD, it wouldn’t start at all except for the power light). but it stays on a black screen

After 2 unplug/plug, it booted! Now at Preparing Hass.io

1 Like

Regarding a list of compatible hardware… I don’t think there is anything official yet, but the devs have been pointing to this as a starter:

That page also goes in to the how/why usb boot is compatible with some hardware but not others (has to do with uboot). The list so far only includes a limited number of 16 and 32gb usb drives. I think some work needs to be done with usb-sata3 adapters. Using such an adapter with a 2.5" ssd will be a popular choice, but my understanding is compatibility can be complicated. For example one particular adapter and ssd will work together, but use them with other parts (that also work with other combos) and they may not work. So it’s not as simple as listing all adapters that work separately from ssd’s that work. Each combo will have to be tested out. So I encourage all who have tested this (wait a few days, do some reboots to make sure you have accurate results) to report your results and hardware details to the github page so they can be added to the list (maybe I can actually contribute with a list… my yaml/js skills suck lol).

@godinperson, I think the reason it required plug/unplug to work is we are using the sd card to program the USB boot bit on the pi3b OTP memory. This requires a power cycle to complete. Same if you are programming a ‘timeout’ to the OTP memory; you first must power cycle for the the timeout to work.

1 Like

OK, it’s sloppy markdown (it’ll look better on github), but here’s a table I compiled from the site linked above (includes reports from the comments). I’ll add more hardware as info becomes available. I haven’t had time to fill in some missing info for some setups, and some of the spots I took liberty to fill out may be inaccurate (like an ssd labeled as flash etc)… any suggestions are welcome. Note uX=usbX, aX=usbX sata3 adapter:

* Raspberry Pi3b(+) USB Boot Compatibility
Type--|--HDD--|--Adapter--|--Boots?--|--Reboots?--|--Boot/reboot requirements--|--Notes--|--Reference
a3ssd--|--Crucial BX500 240GB--|--Orico USB 3.0 to SATA 3.0--|--Y--|--Y--|----|----|--https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/11?u=truglodite
a3ssd--|--Kingston A400 120GB SSD (SA400S37)--|--Startech USB3-SATA3 adapter (USB312SAT3CB)--|--Y--|--Y--|--bootcode.bin--|----|--
flash--|--Kingston Data Traveler 100 G3 32G--|----|--N--|--N--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Kingston Data Traveler 100 G3 8G (DT100G3/8GB)--|----|--N--|--N--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Kingston DataTraveler 2GB (DTI/2GB)--|----|--Y--|--Y--|----|--Slow--|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Kingston DataTraveler G2 4GB (DTIG2/4GB)--|----|--Y--|--Y--|----|--Slow--|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
a3SSD--|--Kingston SSDnow uv400 240GB ssd--|--ICY Box IB-AC603L usb3 adapter--|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Lexar 64GB USB 3.0--|----|--Y--|--Y--|----|--http://www.staples.com/Lexar-S45-64GB/product_2071237--|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Lexar 8GB JumpDrive S50--|----|--N--|--N--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
uHDD--|--MeCo 16GB USB 3.0--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
a3SSD--|--MyDigital 128GB SSD (MDMS-Sbe-128)--|--GungHo Labs USB adapter--|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
u3ssd--|--MyDigital 512GB SSD--|----|--Y--|--Y--|----|--ran hot--|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
a2ssd--|--"OCZ Agility 2 2.5"" 60GB SATA3 SSD"--|--Ebay USB2 Enclosure--|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
a3SSD--|--OCZ Vertex 30GB--|--NexStar USB3 enclosure (NST 21053)--|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
u3flash--|--Samsung 128GB USB3 (MUF-128BB/AM)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
uHDD--|--Samsung 32GB USB 3.0 drive--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--SanDisk 16GB Cruzer Glide (DCZ60-016G-Q461)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Sandisk Cruzer Blade 16GB--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Sandisk Cruzer Extreme 32GB (SDCZ80-032G-G46)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Sandisk Cruzer Extreme 64GB (SDCZ48-064G-U46)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Sandisk Cruzer Fit 16GB--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Sandisk Cruzer Fit 16GB (SDCZ43-016G-GAM46)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Sandisk Cruzer Ultra 32GB (SDCZ48-032G-U46)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
a3SSD--|--Sandisk SSD Z400s 128GB--|--Manhattan SATA-USB (130103 aka Super Top M6116)--|--Y--|--Y--|--bootcode.bin--|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
uHDD--|--Toshiba Canvia Basics 1TB--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Transcend 3.0 32GB USB stick--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
flash--|--Transcend JetFlash 32GB (TS32GJF510S)--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
a3ssd--|--Kingston 120GB A400 (SA400S37/120G)--|--Vantec USB3 2.5" SATA (CB-STU3-2PB)--|--Y--|--Y--|----|----|--https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/21?u=truglodite
flash--|--Verbatim Pinstripe 16GB--|----|--Y--|--Y--|----|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
???--|--WD 1TB PiDrive--|----|--Y--|--Y--|--early versions need timeout--|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
???--|--WD 314GB PiDrive--|----|--Y--|--Y--|--early versions need timeout--|----|--https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/

Since there are many flash drives on the list, I want to remind folks that a usb flash drive will be pretty much as failure prone as an sd card since they both use NAND type flash memory. There is really no point in moving from an sd card to a usb flash drive, other than it may be easier to access physically when it fails and needs replacement. For this reason, you should only look at ssd drives on the list.

[edit: @godinperson, since you got it working would you mind sharing the details of the hardware you used… so I can add it to the list? Thanks!]

4 Likes

@truglodite, I left out my adapter type. If you want to update my hardware on the list, with the Crucial BX500 my adapter is ‘Orico USB 3.0 to SATA 3.0’.

Thanks for the list!