david meissner


Raspberry Pi 3B Case

Date: []
Categories: [Tech]
Tags: [Raspberry Pi]

Update January 2026: much of the information in the original article below applies to Debian Bookworm, and isn’t accurate for Debian Trixie.

I recently decided I wanted to upgrade the Pi to Trixie. The simplest way to upgrade was to back up what little I needed, flash a new SD card, swap the cards and follow my notes to get the add-on board that comes with the Element14 case working. The notes helped, but the exact procedure I described isn’t valid for Trixie.

I said I was surprised that the Element14 case wasn’t successful, but this reminded me why. It really is quite a pain to disassemble the case just to get to the SD card. The add-on board has to be pulled off of the GPIO pins, and the tight space in the case makes this difficult. They could have added a small slot to allow access to the card, as on most other cases I’ve seen.

Getting the board working: Trixie doesn’t have hwclock-set, but it doesn’t seem to be needed. I used raspi-config to enable I2C, modified config.txt and rebooted, and as best as I can tell the real-time clock is working. i2cdetect and timedatectl both return the expected results for the RTC.

I removed all the scripts related to the RTC from the .deb package, along with the other scripts mentioned in the original article. The add-on board has a power button, which is lacking on the Pi 3B, and the remaining scripts enable the button and the power service. I rebuilt and installed the .deb package.

The procedure for cloning the SD card to the SSD and configuring to boot from the SSD is the same. My original notes say to use raspi-config to expand the SSD partition, but that was done automatically; I think that was true for Bookworm as well.

Everything seems to be working well, and I shouldn’t have to do this again for a while.


Original article:

I have an older Raspberry Pi 3B that I use when I want a local, non-virtual Linux server for something I’m working on. I may purchase a newer model at some point, but the 3B works well as a basic web server or a Pico-8 computer, among other things.

I purchased an Element14 case for the Pi quite a while ago. The case is no longer being made, which surprises me a little since it’s a fairly good product. Most cases for the Pi are just enclosures, but the Element14 case adds an expansion board with a real-time clock, and a connector for a solid-state drive. It also has an accessible power button, a slot for the Pi camera, and a cool blue LED power light.

The main drawback of the case is that it has to be completely disassembled to get to the SD card slot of the Pi. This is less of a problem once the SSD is installed and the Pi is configured to boot from it, but it’s kind of a pain if you want to remove the SD card or reflash it for some reason.

I didn’t install an SSD in the case when I first started using it, and I haven’t been using the Pi lately, but I recently revived the Pi for some projects I had in mind, and I decided to finally add the SSD to improve performance and make full use of the case.

I purchased a Transcend 256 GB SSD from B&H Photo (I don’t use Amazon). My preferred Raspberry Pi vendor Adafruit is selling SSDs now, but I don’t remember seeing them on Adafruit when I started working on this.

The scripts provided for the Element 14 to set up the real-time clock and the SSD don’t work on the current version of the Raspberry PI OS (Debian Bookworm), but it wasn’t too hard to get everything working. The rest of this article is to document my process in case I ever need to rebuild the system.

The product page for the case lists some Github repos:

I used the Unofficial package, which fixes some issues in the original package.

The package includes Python 2 scripts that make changes to OS configuration files. The scripts don’t work with Python 3, but in the end I didn’t need to use them; instead I removed them from the .deb file, commented out any calls to them in the postinst script, and made the configuration changes manually.

I then rebuilt the .deb file, and installed the package with dpkg. Everything seems to be working well, and as expected, performance with the SSD is much improved.

Here is a more detailed description of the process I followed.

/boot/firmware/config.txt
/boot/firmware/cmdline.txt
/lib/udev/hwclock-set
pidesktop-master/pidesktop-base/usr/share/pidesktop/python
[all]
dtoverlay=i2c-rtc,pcf8563
gpio=6=op,pn,dl
# if [ -e /run/systemd/system ] ; then
# exit 0
# fi
pidesktop-master/pidesktop-base/DEBIAN
# sudo ln -sv /usr/share/pidesktop/python/pd-fixrtc.py /usr/bin/pd-fixrtc
# sudo /usr/share/pidesktop/python/pd-fixrtc.py
# sudo rm -f /usr/bin/pd-fixrtc
cd pidesktop-master
mv pidesktop-base.deb pidesktop-base.deb.bak
make clean
make
sudo dpkg -i pidesktop-base.deb
sudo reboot
root=/dev/<some text>

to:

root=/dev/sda2