Multimedia Library Server

I’ve always used iTunes to manage my sharing and remote playing of my media library within my home.

As you no doubt know, iTunes sucks at sharing/streaming media. I used iTunes because it was the path of least resistance despite all the verbal abuse I’ve hurled at it…it’s bloated, slow, crashes etc…but that’s a whole different article…. ;-)

Enter Plex. My Padawan at work turned me on to the Plex Media Server and my media consumption has been upgraded beyond my wildest imagination.

Continue reading

Allow Root to SSH for Ubuntu

This is the most insecure thing you can do to your linux system. That said however, when working on development systems at home I like to logon as SSH. Granted this is behind a firewall to a linux system with no access from the internet.

This was tested on Ubuntu 14.x on a Raspberry Pi.

I do this out of laziness. NEVER do this to an internet accessible system.

Continue reading

Text To Email Addresses

I often need to send text messages but my only way to send is via email. No worries. All carriers have a email version of your phone number that convert emails to texts. Here is how to figure out your email to text address:

  • AT&T –
  • Verizon –
  • T-Mobile –
  • Sprint PCS –
  • Virgin Mobile –
  • US Cellular –
  • Nextel –
  • Boost –
  • Alltel –

Some Cellular Device Terminology

Cellular devices have many numbers associated with them, especially with respect to the SIM cards. Here’s a short list to keep them straight:

IMEI stands for International Mobile Station Equipment Identity and is used to identify 3GPP (also known as GSM (AT&T, TMobile, UMTS and LTE devices/networks) and iDEN mobile phones, as well as some satellite phones. It is usually found printed inside the battery compartment of the phone and often on the box the phone came in (think iPhone), but can also be displayed on-screen on most phones by entering *#06# on the dial pad, or alongside other system information in the settings menu on smartphone operating systems.

The IMEI is part of the phone, not the SIM card so swapping SIM cards won’t change the IMEI. (Kind of like a serial number)

ICCID stands for Integrated Circuit Card ID. This is the identifier of the actual SIM card itself – i.e. an identifier for the SIM chip. It is possible to change the information contained on a SIM (including the IMSI), but the identify of the SIM itself remains the same.

This allows you to swap SIM cards between phones and makes GSM style phones more convenient to use when you break your phone and want to swap it with a spare.

SIM stands for subscriber identification module and is basically the serial number of the card that you put in your GSM phone.

SIM cards come in many sizes, currently they are:

SIM card Introduced Standard reference Length (mm) Width (mm) Thickness (mm) Volume (mm3)
Full-size (1FF) 1991 ISO/IEC 7810:2003, ID-1 85.60 53.98 0.76 3511.72
Mini-SIM (2FF) 1996 ISO/IEC 7810:2003, ID-000 25.00 15.00 0.76 285.00
Micro-SIM (3FF) 2003 ETSI TS 102 221 V9.0.0, Mini-UICC 15.00 12.00 0.76 136.80
Nano-SIM (4FF) early 2012 ETSI TS 102 221 V11.0.0 12.30 8.80 0.67 72.52
Embedded-SIM JEDEC Design Guide 4.8, SON-8 6.00 5.00 <1.0

UICC is the physical card most users refer to as a SIM. It stands for Universal Integrated Circuit Card. The SIM is a circuit component of this card.

Hope that helps. It’s shocking how the carrier customer service reps have no idea what any of this is an always ask you to read the longest number possible when they know full well the don’t need it….

Auto running terminal applications (non GUI) on Raspberry PI


This info will likely work for general linux as well, but my focus here is on the Pi.

You can set it up directly by editing the rc.local file:

sudo nano /etc/rc.local

After the initial comments (lines beginning with ‘#’) add the following lines:

# Auto run our application
sudo /home/pi/projects/my_project.a &

“sudo” assumes you want your application run with root user privileges (remove if not) and the “&” says do it in the background.

Save it by pressing Ctrl+X, ” Y”, ENTER

Re-boot your RPi and it will run.

To kill the program

If you need to kill your program running in the background you can use this

sudo killall my_project.a

Running multiple items

You can use brackets around multiple commands each separated by a ‘;’ followed by the ‘&’ to run the set of commands all in the background.

If you use the ‘&’ you can also run multiple lines as each is run in the background.

Running as a non root user

By default rc.local runs as the root user.  You can change to a different user using su – USERNAME -c before the command and surrounding it with quotes.

In the example below the following occurs:

After a 2 second pause my_app.a is run in the background.

After a 5 second delay VLC is started to stream video camera.  VLC won’t run as the root user so su -c is used to make it run as the user “pi”

#Auto run our application
(sleep 2;sudo /home/pi/projects/my_project/my_project.a)&
#Auto run VLC video streaming
(sleep 5;su - pi -c "raspivid -o - -t 0 -n -w 640 -h 480 -fps 15 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264")&

For my purposes I want motionEye to run on a Raspberry Pi. This is the line I added to rc.local to accomplish this:

python /home/pi/motioneye/ > /home/pi/motioneye/run/motioneye.log 2>&1 &

In the case of the Pi, the last line of the rc.local is

exit 0

You want to ensure that your modifications are above this.

Configure WiFi on your Pi

I’m using the “official” Wi-Pi USB WiFi dongle and need to configure it. I’m going to do it via terminal over the wired ethernet port to start with.


To scan for WiFi networks, use the command

sudo iwlist wlan0 scan | grep 'ESSID\|IE: IEEE'

This will list all available WiFi network names and their encryption methods. Look for yours in the list:

  1. ESSID:"yournetwork". This is the name of the WiFi network, find the one that you want to use.
  2. IE: IEEE 802.11i/WPA2 Version 1.
    1. This is the authentication used; in this case it is WPA2, the newer and more secure wireless standard which replaces WPA1. This guide should work for WPA or WPA2, but may not work for WPA2 enterprise; for WEP hex keys.


Open the wpa-supplicant configuration file in nano:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Go to the bottom of the file and add the following:


In the case of the example network, we would enter:


Now save the file by pressing ctrl+x then y, then finally press enter.

At this point, wpa-supplicant will normally notice a change has occurred within a few seconds, and it will try and connect to the network. If it does not, either manually restart the interface with

sudo ifdown wlan0


sudo ifup wlan0

or reboot your Raspberry Pi with

sudo reboot

You can verify if it has successfully connected using ifconfig wlan0. If the inet addr field has an address beside it, the Pi has connected to the network. If not, check your password and ESSID are correct.

You can also check your DHCP server to see if it gave out a new IP address.

Enable the Raspberry Pi Camera

I got one of the cameras that use the port on the Pi. Here’s how to enable it:

Open the raspi-config tool from your Terminal:

sudo raspi-config

Select Enable camera and hit Enter, then go to Finish and you’ll be prompted to reboot.

You can refer to more documentation here on how to test and use it.