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

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!]

3 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!

@truglodite I went for:

Vantec USB 3.0 to 2.5" SATA HDD Adapter with case (CB-STU3-2PB) with
Kingston 120GB A400 SSD 2.5’’ SATA 7MM 2.5-Inch SA400S37/120G

So far so good!

2 Likes

@Jefe & @godinperson, thanks… list updated.

1 Like

Do you guys notice considerable performance improvements with ssd drives? Also is it easy to move from sd card that already has hassos installed to ssd drive? Basically wondering if the juice is worth the squeeze :slight_smile:

It is faster, and it won’t corrupt. I’ve burned 4 SD cards before switching. As of moving it, you should be able to restore a snapshot. On my side, it didn’t work. I copied my configuration.yaml and that was it.

Thanks

I have actually noticed a huge improvement in speed as the database gets large. Before, my pi would run smooth for about 7days (about 0.2 load average), then load averages would shoot way up to 1.5+ and hass would become very sluggish. The history would take minutes to load, and some automations would be ‘missed’ presumably because the pi was too busy talking to the sd (indicated by the high load average). Since moving to ssd, my database is now 1.4GB, well over a week of data, and it still runs snappy as a fresh install. Even loading 1week history takes just seconds to display… try that on sd! …and of course I won’t have to go down that depressing road of potential sd card failures either (which was my #1 motivation to go ssd). The only downside (for now until this gets merged in a hassos release image) is the update button doesn’t work, so any updates have to be done manually or through the dev channel.

Moving from sd to ssd for me was simple. I took a full snapshot and saved it to a PC. I flashed the ssd with the pi bootable image, booted up and let hassos complete install (my adapter required adding bootcode.bin and timeout to the otp memory). Once hass finished install, I setup my admin account, logged in, installed ssh plugin with a temporary password so I could ssh in to transfer my snapshot file from the PC to “/backup” (I avoid samba wherever possible, but you can use that if you prefer). Hit refresh on the snapshot screen (snapshot now displays), then did a restore (not wipe/restore). Then the pi rebooted and all was back to normal. The restore saved all of my complex configs… SSL certs, ssh tokens, and of course configuration.yaml stuff (and all of the linked files it may reference… like sensors.yaml, customization.yaml, secrets.yaml… etc files you have linked in your configuration.yaml). Note that some features you may be using may require a reboot or 2 to get up and running fully. So don’t start over from scratch just because say your mqtt sensors show as unavailable after the first reboot… they will show up after another reboot.

Thank you sooo much for such a detailed response. You just convinced me to go the SSD route. I have the same issue with everything slowing down after 7 days and i am running mango db as well, so really excited about finally fixing this now.
You are running this on pi3 or on a pi4?

1 Like

You are very welcome! I am happy to promote this feature in hopes that the devs seeing interest and success among many ppl will encourage them to push this to release sooner. Fingers crossed that it gets released very soon!

I’m running a pi3b+ for now.

I would certainly not mind buying a pi4 for it, but from what I’ve seen so far nobody has tested this on a pi4 yet. AFAIK there isn’t a USB boot image available for the pi4 yet. A dev posted on github page mentioning something about pi4 USB boot having some fundamental complications that will need to be worked out. He also mentioned that pi4 may be stuck with USB 2.0 performance for some time (I guess the drivers aren’t currently ready for USB 3.0).

On the upside, I believe someone sent a pi4 to rbray not long ago… he appears to be our pointman for getting this feature released. He needed one for testing… now that he has one fingers crossed pi4 USB boot comes soon for hassos.

1 Like

Well this guy got it running on his Rpi4 by first booting of sd and then OS uses USB SSD: https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/

I have my NVME drive coming this weekend excited to migrate to pi4+try the usb boot

1 Like

Hey! great!

Next step is hassio on PI4 + SSD? hope so…

@skynet01, hope all goes well when you get around to playing with the pi4. I am not sure how hassos would have to be changed to allow pi4 usb boot. I posted before, but again to round out this post, here’s hassio pr #440:

At the top you can see this pr has been merged to the hassio dev branch, which is currently at release 3.4:

Of course, since pi4 is new and thus under heavy development, there are images for the pi4 available for testing (expand “assets”)… in particular the 32bit image can be downloaded here:

https://github.com/home-assistant/hassos/releases/download/3.4/hassos_rpi4-3.4.img.gz

It would be a fair assumption that the devs would prefer hassos usb boot to be implemented with the same install procedure as the pi3. So maybe it will just work like it does on pi3? There is at least one way to find out. :wink:

Is your pi3 rebooting reliably now after the initial issue?

Any one teste the X825 USB SATA board for the pi4? Is it working? https://www.aliexpress.com/item/4000050043559.html?algo_pvid=23160da8-a2ba-4998-b73b-61677bc782de&algo_expid=23160da8-a2ba-4998-b73b-61677bc782de-0&btsid=24d8c0c3-a2a3-43e2-9bd2-a50e3d874109&ws_ab_test=searchweb0_0,searchweb201602_7,searchweb201603_60

@Crhass, yes it has been 100% reliable since I fixed it with the bootcode.bin file on the sd card. In fact, I was able to successfully update from 97.2 to 98.1 this morning using the web ui dashboard button.

[edit: On a related note, I was able to make my smooth running hass instance even faster by adjusting ozw logging levels (I had some energy meter plugs that were spamming the ozw log). After moving to ssd my load averages with a large database (>1GB) dropped from 1.5ish down to 0.2ish… with the tweaks to my zwave logging that is now down to 0.05ish!!! That is awesome given my not so small network of 50 or so devices (easily 200+ entities recorded). So the pi3b+ is now looking like overkill for an ‘average’ size network when paired with an ssd, LOL.

Also, based on my calcs from the past weeks usage (database grew 1GB in 7 days), my 120GB ssd should be able to handle 1 years worth of data. It would take 2 years to fill the 100GB free space, but I believe when hass purges the database it needs at least enough free space to save a copy of the database. Hence, the db should not be allowed to grow larger than 1/2 of it’s storage size.]