Current Status of SmushBox and Smush Mobile

My original review of the SmushBox is over here.

As I’m writing this I’ve currently just gotten my SmushBox back online after 6 months of downtime.  What happened?  A lot.  The most significant event occurred in the fall of 2014, when Tom Ketola announced to the Smushbox Forums (now offline), and to the various backers, that their business model of unlimited SMS texting and the agreement with T-Mobile was not going to work out.  There were too many logistics with invoicing, billing, and chasing people down for payments.  I can only imagine.  He notified everyone that they would be terminating their contract with T-Mobile and that we were on our own going forward for Texting Plans.

Smush Mobile’s website appears to still be online, and is in fact offering SmushBoxes for sale for $399.00 (approximately $150 more than I paid, and $100 more than the “RETAIL” pricing listed on the KickStarter page), with an unlimited texting plan of $29.99.  However, I doubt you’ll be able to buy one, or get a plan.  I’m guessing everything is dead.

Smush Mobile posted a YouTube video showing how to take the SmushBox apart and replace the SIM card (as the T-Mobile SIMs installed were all going to be dead).  I followed the video and promptly broke the SIM-chip holder on the GSM module, (it’s very fragile) rendering my SmushBox useless.  I tried a bunch of fixes (even finding a reference to the original part (ADH8066 GSM Module, actually a TLTACM8066 by AMOD Technology Co.), no longer available), and never was able to get any of them to work satisfactorily, so it went on a shelf.  Unfortunately, I had already signed up for an AT&T GoPhone SIM chip, with a very expensive voice plan, and texting at $0.20/each.  However, the money rolled over every month, and I wasn’t going to be using any voice, so it seemed like a good idea at the time.  Six months later, I was still paying, and accumulating money in my account, and I decided to get it working.

Fortunately, a fellow SmushBox backer contacted me to get his SmushBox working, and after discussing the challenges in doing so (see below), we agreed to a price and I bought his SmushBox (I now own SmushBox #1 and #18).  That replacement box allowed me to have a working SmushBox, except mine wouldn’t boot, and his was running v0.809 of the SmushBox code (the last release was v0.822), and there were a LOT of changes between that version and the one I had last been running (v0.820).

Challenges to Upgrading a SmushBox

The main challenge to managing a SmushBox now is that everything is offline.  Tom took down (and let expire) the smushbox.com domain, so all of the links you find are now defunct (including forums.smushbox.com).  Further, the SmushBox itself will notify you if there is an upgrade available by connecting to http://lunaticlabs.com/smushbox/smushboxUpdate which is still online, oddly; however, all of the firmware updates point to deviceupdate.smushbox.com which is no longer valid.  Also, there’s a good chance that the lunatic labs links will go dead at any time (see below).

So, the primary challenge is getting the recent firmware and/or performing upgrades.  Here’s how I did those things:

Performing Upgrades

The first process I attempted with my new SmushBox was upgrading.  When I booted it, I saw that there was a v0.822 upgrade available, so on a wing and a prayer, I clicked it.  Nothing happened.  So, I shut the box down, removed the microSD card, and mounted it on my MacBook Pro (you’ll need something like Paragon Software’s ExtFS for Mac to mount/write to the partitions other than the FAT partition).  I started reverse-engineering the system and was able to locate the above smushboxUpdate URL which is how the SmushBox locates available updates for the system.  It also contains the URLs to the firmware updates, as well as all previous updates.  Unfortunately, it was hard-coded to use deviceupdate.smushbox.com which is offline, so you’ll never be able to retrieve them, or perform an upgrade.  I then noted that the URLs for the firmware updates (http://deviceupdate.smushbox.com/smushbox/firmware_update_0.822.tgz) used the same /smushbox path as the lunaticlabs.com smushboxUpdate.  On a whim, I tried replacing deviceupdate.smushbox.com with lunaticlabs.com and loe and behold, it worked!  I was then able to pull down all of the updates available there.  The only problem was, after unpacking them, they were not images, they are the actual file updates for each version.  That wasn’t going to help me, unless I could get an actual SmushBox to use them…

Enter DNSForwarder, a capability of pfSense firewalls to map a DNS domain to an IP address, overriding the actual DNS response from the Internet.  So, I set up a DNSForwarder entry on my firewall to map deviceupdate.smushbox.com to the IP address of lunaticlabs.com and then tested an update on my SmushBox.  It appeared the process worked!  Unfortunately, upgrading from v0.809 to v0.822 proved too much for the SmushBox and it corrupted itself.  Now I had a new problem, I needed a full SmushBox image.

It took me several hours of pouring through backups, NAS drives, and various folders, but I eventually found smushbox_0.814.rar, a full image for the SmushBox of v0.814.  I burned this to the microSD card and booted my SmushBox.  It worked, but something was wrong with it as I could not send SMS text messages using this version, so I decided to upgrade.  The upgrade also failed, probably because the jump from v0.814 was too far to v0.822.  I was now dead in the water without a later version of the firmware.  So, I started some Internet research, and was able to contact Tom directly.  I explained my issue, and he provided me a link to the v0.820 firmware (he told me he didn’t have v0.822 anywhere, and didn’t have a SmushBox to image it (ironic huh)).  However, I was grateful for the link to the firmware, pulled it and burned it.  I now had a working SmushBox on v0.820 and testing with an SMS text message and my AT&T GoPhone SIM proved that I was up and running.

I then ran the v0.822 upgrade, and my DNSForwarder worked, and the SmushBox upgraded to v0.822 just fine.

Next Steps

My next steps with my SmushBox(es) are:

  1. ✔ Get a clean image of v0.822 that can be burned and used to restore a SmushBox (since it doesn’t exist)
  2. ✔ Modify the running image on a SmushBox so that I can access it over the network with SSH
  3. ✔ Re-install my local scripts on the SmushBox to give it some features (like texting me it’s IP at boot, and notifying me if it loses its network connection)
  4. Possibly create a custom firmware that modifies the hard-coded update URL to use a domain under my control, and offering it to others so they can upgrade (as I’ve pulled all of the updates to date)
  5. Possibly modify the update process to allow for upgrading from your current version to incremental versions to allow for working updates regardless of your version
  6. Possibly begin providing upgrades beyond v0.822 that allow for easier management (like opening up SSH for everyone)

Happy to hear from other SmushBox backers (there are 168 of us out there!).

Next Step Updates

As I am able to accomplish tasks above, I will update them here and provide instructions.

Clean v0.822 image

I have a clean v0.822 image.  I was able to take the v0.820 image that Tom provided, use my “hack” to point it to the correct upgrade servers, and upgraded it cleanly to v0.822.  I then shut the box down, and imaged the card.  I will make the image available upon request, just private message me using my Contact Form and I’ll get back to you with a link.  Fortunately, I’ll be able to replicate this in the future by intercepting the static domain with my own web server to enable me to get back to this point, even if the lunaticlabs.com stuff is taken down.

Access to SmushBox via SSH (with root)

I was pulling my hair out on this one.  I’ll give some instructions, but I’ll warn you now, I kept performing these using my Macintosh with ExtFS installed, and every time I booted the image, it was corrupted.  I finally mounted the microSD card to one of my linux boxes (a RaspberryPI to be precise) and performed the below steps, and it worked like a champ.

  1. Pull the microSD card from the SmushBox
  2. Insert it into a USB card reader, and install on a Linux box (others may work, this is what I did)
  3. Determine the proper drive that your microSD card is associated with, I used dmesg
  4. Mount the second partition to /mnt/rootfs:  sudo mount /dev/sda2 /mnt/rootfs
  5. Edit the /etc/passwd file to create yourself an account:  vi /mnt/rootfs/etc/passwd
  6. Account line should look like:  username:x:1002:1003:My SmushBox User:/home/username:/bin/bash
  7. Create your home directory:  mkdir /mnt/rootfs/home/username
  8. Set the permissions:  chown -R 1002:1003 /mnt/rootfs/home/username
  9. Edit the /etc/shadow file to create a valid password, you’ll probably have to steal a line from another Linux box you have, which has a password you know:  vi /rootfs/mnt/etc/shadow
  10. Password line should look like:  username:$6$yL/gad44$Z13QTp/oRHmJ73cpCQucYdBiNMcmGkJZ/IaU/qeHLRpaIwMZDeGkCqKl4ak7nq66uWn1gsmGg6SJC1Y0Kglxe.:16103:0:99999:7:::
  11. Modify the /etc/group file to grant yourself sudo privileges:  vi /mnt/rootfs/etc/group
  12. Add yourself to the admin line, it should look like:  admin:x:1000:smushadmin,username
  13. While you’re there, go ahead and add a line for your own group:  username:x:1003:
  14. At this point, you can probably unmount the drive, and put it back into the SmushBox and boot it:  umount /mnt/rootfs
  15. I opted to go a bit further and also add my SSH key, just in case the password was borked.  You do this by adding your public SSH key to the /mnt/rootfs/home/username/.ssh/authorized_keys file

At this point, I can now SSH into the box, then do sudo su – and have a root shell.

Re-install my local scripts

The above enabled me to install my crontab entry from my original article to check my Internet gateway and page me if it was offline automatically.  The install instructions for my scripts are over on my Github area.