other devices - artmg/MuGammaPi GitHub Wiki

see also:

  • [Audio Hub] for sound-related hardware extras and alternatives

How to outgrow the Pi hardware

What can you do when your application setup out-consumes the Raspberry Pi performance capabilities?

What are the stages of upgrading your hardware?

Reliability

  • Use a rock solid PSU ('official')
  • Move heavy write files out to USB

Reliability or Performance

  • Install an SSD (via USB)
    • will avoid issues writing to 'flakey' SD media, as SSD has protective firmware
    • should be a plug-in upgrade

Performance

  • Alternative arm SBCs (with SSD?)
  • x86 (Intel/AMD) SBCs
  • NUCs

SSDs on Pi

==Consider moving OUT== to Disks

First some general SSD notes

External SSD drives

External SSDs generally have USB sockets

  • These only need cables, not adaptors
  • Newest may have a USB-C
  • Many have USB 3 Micro-B socket
    • Like USB Micro B with a mini one attached, the other side of a groove
  • Older HDD drives may have USB B Micro or even USB Mini B, but not usually SSD

Internal SSD drives

Internal drives usually need adapters to connect to USB, like a SATA to USB adapter. Like 2.5inch HDD they should not need external power. Form Factors include:

  • 2.5" - enclosed with SATA power / data connectors - using the Serial ATA protocol up to SATA III
  • mSATA - mini SATA is an exposed board in a stubbier rectangle with connectors physically matching PCIe socket with a single notch
  • M.2 - exposed board with 2-notch connectors - longer and slimmer in its common 2280 form factor - the size and notch 'keying' varies (search Next Generation Form Factor - NGFF)
  • NVMe - protocol for intense CPU to memory operations, usually with the same physical characteristics of M.2 devices - older motherboard firmware might not support booting over NVMe

You can make your own 'external drive' by putting a 2.5" SATA inside an enclosure, which is a box with an integral USB to SATA bridging interface chipset. If you want to use an M2 form-factor externally, then to protect the circuitry you can use an M2 enclosure.

2.5" form-factor drives generally use SATA. M2 form-factor drives can use SATA, PCI Express (PCIe) without NVMe, and more recently PCIe supporting NVMe. However, the additional throughput of PCIe/NVMe is not needed in all use-cases, and you might consider balancing the cost.

If you want some technical troubleshooting for a USB to SATA or PCI Bridge Adaptor, see this article showing commands and typical outputs

Connecting SSD to Pi

Booting your Pi from an SSD

See also (/merge with?) notes from MuGammaPi Disks # Alternative disk configurations on the boot sequence Pi's go through.

This section looks at different scenarios for the bootloader, which is the mechanism that allows you to boot your Pi from a storage device, such as these SSDs.

If you have a newer model Raspberry, like a 3B or later, then all you need to do is to write your image to an SSD then plug it in and turn it on.

With some models you may may need to set a USB boot bit. Using the command line raspi-config choose Boot / Boot Order / USB Boot. Then restart.

Pi 4 onboard firmware

From Pi 4 (and its derivatives, and presumably successors) there is a permanent 'EEPROM' memory, where a bootloader and options are stored, so that you don't even need an microSD card to start up.

Note that this bootloader is very basic and lacks drivers, so it expects a wired Ethernet connection and a directly attached (wired) keyboard.

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-eeprom

Update Pi 4 onboard firmware

If your Pi is a newer model, but was bought a while ago, you may
need to update the firmware. Make sure you have booted with a recent version of the operating system. With the command line raspi-config, you should first use Update. Then use Advanced / Bootloader version / Latest. If you are not sure, then say No so you don't reset to defaults.

The ideal might be to say Yes, though, as some options and defaults may have changed in the new version but then you will have to reset then manually re-configure:

  • the USB changes above
  • any other you may have already set
  • any that are factory set

The pi eeprom docs shows commands to read and modify the configuration, as well as save all values to a file for later use and reloading.

The quick and simple way to edit the config is with the sudo -E rpi-eeprom-config --edit but beware because any of these commands are also a quick way to make your device stop working!

Legacy models

With even older models you should be able to boot mainly from your SSD, but you might need a microSD card bootloader. First create an empty FAT32 partition, then copy the bootloader file bootcode.bin from the SSD. Then insert both and plug in. The microSD card will start the boot and then hand off to the SSD for the rest. However you may get issues if you have multiple USB storage devices attached, as the bootloader might just try to use the first device it finds, whether or not there is an OS on that volume. For help see https://www.raspberrypi.org/forums/viewtopic.php?t=225812#p1385832

Performance over USB

Of course you may hit other performance limitations if you are on anything before a Pi 4. Lower spec devices, even the 3B+, use USB 2.0

The USB 3.0 interfaces on a Pi4 (everything else is slower USB 2) have a theoretical 5Gb throughput, which in theory should make disk IO fly. However, as this article explains not all adaptors and drives can make the most of this. The old fashioned 'Bulk Only Transport (BOT)' protocol for SCSI over USB creates a bottleneck that makes you think you're using a USB 2 interface. If you want a better speed both your adaptor AND your drive should support USB Attached SCSI Protocol (UASP).

You can tell if you have fallen back to BOT on your drive, as lsusb -t will show it with Driver=usb-storage. If on the other hand you see Driver=uas then your device-adaptor-port-driver chain is allowing the faster UASP. Note that Pi3 and earlier only have USB 2 and do NOT support UASP.

NB: if you still have issues refer to this Pi Forum sticky.

Device/Adaptor combos can improve performance with software and protcols:

  • USB Attached SCSI Protocol (UASP or sometimes UAS) will increase read and write speeds
    • lsusb -t to check if Class=Mass Storage, Driver=uas indicates the drive is using UASP
  • The TRIM command (in ATA and similar) can improve write throughput by housekeeping in quiet times
    • It's not alsways so easy to enable on Pi (e.g. this lot)

Alternative Single Board Computing (SBC) devices

These are essentially "the competition" for Raspberry Pi devices.

  • Arduino
    • more advanced electronic component add-ons
  • ODroid
    • better hardware specs
  • Wetek (play)
    • aimed at set-top and multimedia applications

x86 (Intel and AMD) maker boards are starting to arrive (e.g. Udoo x86). These are cheaper than NUC PCs, but still around £80-130.

Media Centre functional comparisons

  • Music & Video streaming only - £40 - Fire TV Stick or Raspberry Pi - Kodi only
  • Android TV streaming - £100 - Matricom G-Box Q2 + Remote Control - Kodi and any Android apps
  • Full Smart TV box - £110 - Wetek Play 2 - Kodi, Android, TV tuner (& PVR if you add a hard drive)
  • Mini Fanless PC (roku size) - £160 - Intel NUC various - Kodi, Browser, any PC apps you want

Current limitations with Browsing:

  • OpenElec unofficial Chromium addon requires x86 (not ARM) - see Media Centre
  • Raspberry Pi distro Raspbian supports Chromium browser app, but the OS is not optimised for media centre usage - might all be too much for the little Pi

NAS devices

Network Attached Storage (NAS) devices are a way to share data across the local network. Instead of plugging a USB drive into one of your computers, you 'share' a drive to one or more computers via the network. There are various protocols for sharing data, depending on how you want to use it.

Requirement

  • Linux-based extensible platform for serving file-based services
  • preferably a highly supported, popular community distro, like Raspberry OS
  • Perhaps with some nice management / maintenance interfaces on top?
    • e.g. statistics on performance, component temp and power consumption
  • Case to house components
    • assume small factor SSD and HDD
    • what about power?
  • Is Pi the most appropriate board?

NAS hardware options

  • Simply attach devices to a Pi
  • Pi 4 inside an Argon ONE M.2 case (case is £40)
    • case with M.2 adaptor and cooling built in
    • it still uses an M.2 to USB (via an external loop!)
    • but it makes a neat and robust footprint,
    • as long as that metal doesn't dampen your wireless signal.
  • Geekworm NASPi
    • alu case to hold Pi4 with 2.5" SATA
    • incl X823 storage shield, X-C1 adapter board
    • £55 for single or £70 for dual 'NASPi Gemini' model
      • uses integrated USB 3.1 Gen1 to SATA 6Gb/s bridge controllers
      • delivers all power (via add-on PSU 5V DC 4A 5.5x2.5mm)
      • includes power management (but not UPS)
    • This uses UASP for SATA, so TRIM is not supported
  • Radxa Taco
    • CM4 carrier with GigEthernet, 5xSATA, M2 NVMe & A+E slots
    • Incl case and CM4 c. 200usd
  • Kobol have folded
    • their 300usd bundle no longer available
  • Wiretrustee also stopped
    • four bay PiCM4 carrier n/a
    • wanted to exploit the PCIe x1 on-board

NAS software options

  • Stick to Debian-based vanilla Raspberry Pi OS plus manual config
  • Open Media Vault
    • layered on Debian using repos
  • RockStor
    • delivered as OS, but SUSE-based (previously CentOS)
    • open but latest tested components chargeable
    • prefers Btrfs
  • FreeNAS
    • FreeBSD underneath
    • prefers ZFS
  • Amahi?
  • see the table comparing features in ServerWatch