When I wanted to add a second M.2 NVME drive to my Dell Inspiron 5502, I discovered that the laptop did not come with required hardware. I needed to buy Dell part KYMC9 to install the drive. But what are 3D printers for? After a little tinkering in Fusion 360, I designed and printed my own version of the bracket, and now I’m sharing the design with the world. From my understanding, this bracket is needed for Inspiron, Latitude, and Vostro laptops from the 5500, 5400, 4500, 3400, and 3500 series, but I only tested it with my 5502. If this bracket works for you, please leave a comment to let other people know.
Raspberry Pi Based OpenWRT Router/Firewall Using Tagged VLANs
Raspberry Pi’s main downside (as far as using it as a router) is that it has only one Ethernet port. This can be overcome by using a USB Ethernet dongle to get an additional Ethernet port. I did not like that idea, because USB dongles are not designed for 24/7 operation. I stumbled upon a forum post that suggested using VLAN tagging to carry two virtual interfaces through the only Ethernet port of the Raspberry Pi, thus eliminating the need for the USB dongle. This article is a quick how-to for setting that up.
Restoring SMS messages using mmssms.db file
My Nexus 5x phone died from the “bootloop” syndrome. I had unlocked bootloader on it and TWRP recovery image was installed, so I was trying hard to get at least some data off the phone. Most of the time it would not boot at all, but I managed to boot into TWRP recovery after leaving the phone in the freezer for a few hours.
Once in TWRP, I was able to pull some data using “adb pull”. This included a file that contains the SMS and MMS messages. On my Nexus 5x the path to that file was /data/user_de/0/com.android.providers.telephony/databases/mmssms.db. My plan was to restore that file onto my temporary phone running LineageOS (CyanogenMod 14). I was going to overwrite the file using “adb push” while booted into TWRP recovery.
Making SafetyNet happy with Cyanogenmod 14
I bought a couple of second-hand Moto X (XT1096) phones and discovered that I cannot sign into the Play Store using the stock firmware. Something must have become incompatible since the latest firmware was released, and I was left in a vicious circle when Google Play Store and services could not be updated because I am not signed in, and I could not add a Google account because Google Play services were crashing.
I figured that I would install Cyanogenmod 14 on the phones, which was pretty straight forward to do after unlocking the bootloader (and, from the first looks at it, seems to be pretty responsive on these older phones). However, CM comes rooted by default, and applications using SafetyNet check refuse to run. I don’t really need root on these phones, so here is a quick procedure I figured out to unroot CM to a condition that SafetyNet validation passes.
Storing 3.5″ hard drives in a Pelican case
I was looking for a watertight case to store a bunch of 3.5″ hard drives. The idea was to protect the off-line backups from water damge in case sprinklers get activated in the building. It was decided that water or dust damage was a more likely threat than fire, so the solution did not have to be fire safe.