RPI3B+ not booting from mSATA SSD (not pihole specific)

Hi Guys

Addded a 60 GB msata SSD (DOgfish Shark) via Geekworms X850 mSATA expansion board yesterday then cloned my SD card to the drive using RPI-Clone. (Have also added their X735 power management/cooling board and popped it all in one of their metal cases)

Rebooted the Pi(with the SD card still in) and then confirmed that I was indeed now using the SSD rather than the SD card .

When booting from SD power light is red, green light flashes then goes out device boots and runs from SSD (blue light disk activity flashing)

When SD card removed and Pi booted power light is red, green light doesn’t flash and blue light stays solid

NB understand that running RPI-Clone with the -l option means it does the initial boot from the card mounts the USB drive then leaves the SD card unmounted .

the RPI is definitely USB boot enabled

pi@Heimdall:~ $ vcgencmd otp_dump | grep 17:
17:3020000a

Confirmation using SSD


pi@Heimdall:~ $ sudo lsblk -o UUID,NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,MODEL
UUID                                 NAME        FSTYPE  SIZE MOUNTPOINT LABEL  MODEL
                                     sda                59.6G                   DOGFISH_SSD_64GB
ABFB-279B                            ├─sda1      vfat    256M /boot
a583607f-97c9-4e91-9447-2882c7e85b1f └─sda2      ext4   59.4G /
                                     mmcblk0            14.9G
F661-303B                            ├─mmcblk0p1 vfat    256M            boot
8d008fde-f12a-47f7-8519-197ea707d3d4 └─mmcblk0p2 ext4   14.6G            rootfs


pi@Heimdall:~ $ sudo df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  3.3G   52G   6% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           464M  4.7M  459M   2% /dev/shm
tmpfs           464M   14M  450M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/sda1       253M   40M  213M  16% /boot
tmpfs            93M  4.0K   93M   1% /run/user/112
tmpfs            93M     0   93M   0% /run/user/999
tmpfs            93M     0   93M   0% /run/user/1000



As you noted, this is not a Pi-Hole issue. You may have better success with a resolution on one of the Pi forums

Posted over at the main Raspberry Pi forums as well however given that this "General " forum is listed as “General discussion about Pi-hole, Raspberry Pi’s, or anything else.” then thought I would ask the erudite people here as well :smiley:

1 Like

I’m suspecting there may just be an issue with the SSD (possibly power related??) as I just cloned the SSD back to a fresh SD card but without the -l option (ie leaving the SD card bootable). Verified it would boot & run from the SD card then recloned back to the SSD this time without the -l option.

Powered down, removed SD card and just sits there as it did previously.

Power off i, insert original SD card and it all boots up and mounts and runs from the SSD as previously.

Guess it’s not too march of a hardship to leave it like this given once the Pi is up and running the SD card can be removed safely given it’s not mounted.

sudo nano /boot/config.txt

program_usb_boot_mode=1

From https://www.tomshardware.com/news/boot-raspberry-pi-from-usb,39782.html

not required for the later PIs as enabled by default and confirmed by running the below

https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md

Cant remeber what it returns if its not set but IIRC its 1020000a

pi@Heimdall:~ $ vcgencmd otp_dump | grep 17:
17:3020000a

I use a SSD om my pi via the usb and it just boot normal.

fyi an answer I got from the main forums

Not all devices can successfully boot a Pi 3B or 3B+. Sometimes this is due to timing problems. If you have a spare SD card, you can copy just ‘bootcode.bin’ from a working SD card and add an empty file named ‘timeout’ to an otherwise blank SD card, then use that to boot the Pi. With that setup the Pi will load the bootcode from the SD card, wait a bit longer than usual, then try Ethernet boot, then USB mass storage boot.

Note that the card needs to be FAT32 (or FAT16 for really small older cards), not ExFAT. Since 64GB and larger cards are ExFAT by default, these would need reformatted to FAT32 first.

The advantage of the bootcode.bin only method is that there is less chance of corrupting the SD card, and if it does get corrupted you’ve not lost anything - just copy bootcode.bin back on and add the timeout file again.

so having had a think about this I think I’m going to leave it “as is” if only for the most basic reason, “it’s working” lol

Actually what I’ve also done is set up a cron job to run " rpi-clone -q -l mmcblk0" every night so that the SSD (64Gb) is cloned back to the SD card (also 64GB) as a backup.

if needs be its relatively simple to pop the SD card back into my laptop , rename “cmdline.txt” to cmdline.txt.ssdboot then rename "cmdline.boot " to “cmdline.txt” then boot the Pi back from the SD card rather than mounting the SSD