Wednesday, February 11, 2015

OpenWRT on Pogoplug Mobile

Booting OpenWRT from internal flash on Pogoplug Mobile

In this tutorial we're replacing the original Pogoplug OS on the internal flash with OpenWRT. OpenWRT is a lightweight but feature rich Linux distribution for embedded devices. 

The Pogoplug is arguably one of the best OpenWRT platform for the price and performance. You can use OpenWRT on the Pogoplug as your main Linux distro skipping the need for a USB flash drive or SD Card, or just use it as a Rescue System (for fixing corrupt disk or reinstallation) if something goes wrong with your ALARM or Debian installation.

This tutorial assumes you have completed my previous tutorial - Hacking the Pogoplug v4 (Series 4 and Mobile) with Linux (Debian or Arch) - and already running Debian or ArchLinuxARM (from a USB drive or SD Card) on the Pogoplug Mobile.

Note that for the Series 4, the USB3 ports does not work properly yet with OpenWRT. Hopefully this will get resolved in the near future. [Edit] - Looks like the USB3 ports work with USB3 devices and if you plug in a USB3 device, the other USB3 port will work with a USB2 device.

WARNING: There is no going back to the Pogoplug OS. You will not be able to use the service. Please proceed at your own risk.


Boot up Debian or ArchLinuxARM on your Pogoplug. All commands below assumes you're running Debian or ALARM.

#Update mtdparts so we have one continuous partition to work with.
cd /tmp
chmod +x fw_setenv

#setup fw_env.config
echo "/dev/mtd0 0xc0000 0x20000 0x20000">/etc/fw_env.config

#1MB for the uBoot, the rest for rootfs (~122MB)
/tmp/fw_setenv mtdparts 'mtdparts=orion_nand:1M(u-boot),-(rootfs)'

#This reboot is important

After rebooting double check the mtdpart is correct.

cat /proc/mtd

#root@debian:~# cat /proc/mtd
#dev: size erasesize name
#mtd0: 00100000 00020000 "u-boot"
#mtd1: 07f00000 00020000 "rootfs"
#mtd2: 00010000 00008000 "spi0.0"

#download firmware/nand utilities
cd /tmp

#make executable
chmod +x fw_printenv fw_setenv ubiattach ubimkvol ubiformat   

#format mtd1 (rootfs)
#Will be prompted for confirmation three times.
/tmp/ubiformat /dev/mtd1

/tmp/ubiattach -p /dev/mtd1
/tmp/ubimkvol /dev/ubi0 -m -N rootfs

#mount ubi rootfs to /tmp/ubi
mkdir /tmp/ubi
mount -t ubifs ubi0:rootfs /tmp/ubi

#We're using the snapshot trunk release.
#Barrier Breaker 14.07 doesn't work.
cd /tmp

#check that zImage and rootfs.tar.gz are OK
md5sum -c md5sums

#extract rootfs.tar.gz to ubi rootfs at 
cd /tmp/ubi
tar xvzf /tmp/openwrt-kirkwood-generic-rootfs.tar.gz

mkdir boot
mv /tmp/openwrt-kirkwood-zImage ./boot/zImage

#FDT from,12096
cd boot


cd /

umount /tmp/ubi

#Setup uBoot Environment

#Cut and Paste this whole section
/tmp/fw_setenv fdt_file '/boot/kirkwood-pogoplug_v4.dtb'
/tmp/fw_setenv loadaddr '0x800000'
/tmp/fw_setenv zimage '/boot/zImage'
/tmp/fw_setenv fdt_addr '0x1c00000'
/tmp/fw_setenv loadubi 'echo Trying to boot from NAND ...;if run mountubi; then run loadubizimage;run loadubifdt;ubifsumount;run bootzubi;fi'
/tmp/fw_setenv mountubi 'ubi part rootfs; ubifsmount ubi0:rootfs'
/tmp/fw_setenv loadubizimage 'ubifsload ${loadaddr} ${zimage}'
/tmp/fw_setenv loadubifdt 'ubifsload ${fdt_addr} ${fdt_file}'
/tmp/fw_setenv bootzubi 'echo Booting from nand ...; run setargsubi; bootz ${loadaddr} - ${fdt_addr};'
/tmp/fw_setenv setargsubi 'setenv bootargs console=${console},${baudrate} ${optargs} ubi.mtd=1 root=ubi0:rootfs rw rootfstype=ubifs rootwait ${mtdparts}'

#Setup boot order.
/tmp/fw_setenv bootcmd 'run bootcmd_usb; run bootcmd_mmc; run bootcmd_sata; run loadubi; reset'

#poweroff Pogoplug and remove SD Card and USB flash drive.

At this point, we're ready to boot into OpenWRT. Note that by default, OpenWRT will default to and will act as a DHCP Server. Plug a network cable from your computer directly into the Pogoplug and power it on. You should now be able to Telnet into the Pogoplug at (username and password not required). Note that SSH is disabled and will automatically start after a root password is set.

#####Initial Boot via Telnet######
#set passwd and enable ssh

#Reconfigure Network to DHCP Client

#disable dhcp server on lan
uci set dhcp.lan.ignore=1
uci commit dhcp
/etc/init.d/dnsmasq restart

#set wired ethernet interface to dhcp client
uci set network.lan.proto=dhcp
uci commit network

Plug the Pogoplug and your computer back into your network. Check your router for the IP Address assigned to your Pogoplug. You should now be able to SSH into the Pogoplug.

Note that since we're using the daily snapshot trunk build of OpenWRT, you'll need to install your kernel packages right away (kmod-xxx), otherwise it will get out of sync.

#####Initial OpenWRT configuration#####
opkg update

#Install some essential packages
opkg install nano wget luci uboot-envtools pciutils usbutils 
kmod-usb2 kmod-usb3 kmod-mmc kmod-usb-storage block-mount kmod-fs-ext4 kmod-fs-vfat kmod-fs-ntfs kmod-nls-cp437 kmod-nls-iso8859-1 e2fsprogs fdisk 

#SAMBA - configure via luci web gui
opkg install samba36-server samba36-client luci-app-samba

Major credit goes to @moonman on the ArchLinuxArm Forum -

Wednesday, November 26, 2014

Debian on Pogoplug Tutorial - Webmin Installation

This is a continuation of my Hacking the Pogoplug v4 (Series 4 and Mobile) with Linux (Debian or Arch) Tutorial.

Webmin Installation

#Install required packages
apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

#downloand and install webmin
cd /tmp
dpkg --install webmin_1.720_all.deb

#Webmin will automatically start on boot up.
#To stop Webmin from starting at bootup
update-rc.d -f webmin remove

#Auto Start Webmin on Boot
update-rc.d webmin defaults

Access Webmin @ https://IPAddress:10000


Debian on Pogoplug Tutorial - MJPG-Streamer (WebCam) Installation

This is a continuation of my Hacking the Pogoplug v4 (Series 4 and Mobile) with Linux (Debian or Arch) Tutorial.

Tested WebCams:
MJPG-Streamer Installation

#Install required packages
apt-get install unzip subversion libv4l-dev libjpeg8-dev imagemagick build-essential psmisc

#build mjpg-streamer
mkdir /tmpbuild
cd /tmpbuild
cd mjpg-streamer-code-182/mjpg-streamer
make install
cd /
rm -rf /tmpbuild

#Test - start mjpg_streamer on port 8088
mjpg_streamer -i "/usr/local/lib/ -f 15 -r 640x480 -d /dev/video0" -o "/usr/local/lib/ -w /usr/local/www -p 8088"

#Download service file for auto start on bootup
cd /etc/init.d
wget --no-check-certificate
chmod +x mjpg_streamerd
update-rc.d mjpg_streamerd defaults

Motion (webcam security software) installation and configuration to come in another tutorial

Debian on Pogoplug Tutorial - Wireless Configuration

This is a continuation of my Hacking the Pogoplug v4 (Series 4 and Mobile) with Linux (Debian or Arch) Tutorial.

Tested Wi-Fi Adapters:

Wi-Fi Configuration for Debian on Pogoplug

#Add "non-free" repo
echo "deb wheezy main contrib non-free">>/etc/apt/sources.list

#Update repo
apt-get update

#Install required Wi-Fi packages and common non-free Wi-Fi adapter firmware
apt-get install wireless-tools wpasupplicant usbutils firmware-ralink firmware-realtek firmware-atheros

#Bring up Wi-Fi adapter. If you get an error, try rebooting.
ifconfig wlan0 up

#Scan available Wi-Fi networks
iwlist wlan0 scanning

#Update interfaces file with Wi-Fi configuration
nano /etc/network/interfaces

#Add the following to the end of the /etc/network/interfaces file
#Update "YourWiFiNetworkName" and "YourWiFiPassword" with appropriate values.

#auto wlan0
#iface wlan0 inet dhcp
#   wpa-ssid "YourWiFiNetworkName"
#   wpa-psk "YourWiFiPassword"

#Restart Networking Service
/etc/init.d/networking restart

#Check if Wi-Fi configuration successful
#Note the IP Address assigned to wlan0

At this point, you should be able to reboot and unplug the Ethernet network cable from the Pogoplug.

Notes: I don't use wireless with my Pogoplugs so have not tested Wi-Fi extensively. If you don't have a stable Wi-Fi connection, you may want to look into a Wi-Fi auto reconnect script. If I find a good script or method for Wi-Fi auto reconnect, I'll post it. If you have a good solution, please share via the comments.

If you lose Wi-Fi connection, plugging in the Ethernet network cable should work, but note that it may take 2-3 minutes for the Pogoplug to pick up a IP Address.


Sunday, July 27, 2014

Hacking the Pogoplug v4 (Series 4 and Mobile) with Linux (Debian or Arch)

This is a quick publish tutorial on hacking the Pogoplug V4 - Series 4 or Mobile - with Debian or Arch Linux ARM. Last updated 02/11/2015.

Major credit to @bodhi on Jeff Doozan's Forum (and Jeff himself) for the uBoot, Debian rootfs, instructions and support. Note that I re-hosted some of @bodhi's files for an easier install.

This tutorial assumes you're starting with a brand new, never modified Pogoplug Mobile or Series 4. However, if you have a previously modified Pogoplug V4, the uBoot instructions will work under Debian/ALARM if you want to upgrade your uBoot for SD Card booting and want to boot the default Pogoplug OS.

At the end of this tutorial your Pogoplug will be booting Debian (or ALARM) from a SD Card. Instructions for booting off a USB Hard/Flash Drive is also included.

My recommendation is to boot via SD Card to keep the USB port free for a USB Hard Drive, USB DAC (for MPD, Airplay and/or SqueezeLite), WebCam, Wi-Fi Adapter or printer.

WARNING: You can potentially brick your Pogoplug following this tutorial. Your warranty will be voided. Proceed at your own risk.

If you made a mistake, bricked your Pogoplug or simply didn't understand what you got yourself into or want to start fresh, you're in luck! Here is a ~$13 solution.

Outline of Steps:
  1. Enable SSH access to Pogoplug
  2. uBoot Installation via SSH Console 
    • Kill Pogoplug Service and Download uBoot Flashing Utilities
    • Download and Flash New uBoot
    • Download and Flash Default uBoot Environment Parameters
    • Update uBoot Environment Parameters
  3. Setup Netconsole (optional but highly recommended)
  4. Boot default Pogoplug OS when USB/SD Card not attached
  5. Debian/ALARM Installation on SD Card (or USB Hard/Flash Drive)

Enable SSH Access to Pogoplug

There are two methods to enable SSH on your Pogoplug.

1) Official Method - Activate on and then enable SSH

2) Backdoor Method (credit to

Make sure your Pogoplug is connected to your network and has internet access.

Check your router or use a  network scanning tool (iNet Network Scanner on iPhone) to determine the IP Address of the Pogoplug. 

From a Linux computer (e.g. another Pogoplug running Debian/Alarm) run the below curl command.

curl -k "https://root:ceadmin@[PogoplugIPAddress]/sqdiag/HBPlug?action=command&command=dropbear%20start";

Note that the backdoor method is not persistent (SSH access not available after a reboot).

SSH/Putty into Pogoplug V4 and Perform Installation

Use Putty or your favorite SSH client to connect to your Pogoplug.

If you used the "Official Method" for activating and enabling SSH on your Pogoplug, then the username will be "root" and the password will be whatever you set (note that it's not the same password used to log into

For the "Backdoor Method", the username and password is root/ceadmin.

From here, everything is done via the SSH console. Here is a complete console installation log. Open it up and compare with what you're seeing on your ssh console screen as you're going through the tutorial.

Kill Pogoplug Service and Download uBoot Flashing Utilities

#stop service
killall hbwd

#download firmware utilities

cd /tmp

#make execuable
chmod +x flash_erase fw_printenv fw_setenv nanddump nandwrite

#remount '/' as read/write
#by default the Pogoplug OS (internal flash) is read only
#skip if running from Debian/ALARM
mount -o remount,rw /

#setup fw_env.config
echo "/dev/mtd0 0xc0000 0x20000 0x20000">/etc/fw_env.config

Download and Flash new uBoot

#download uboot and md5

#check md5sum
md5sum -c uboot.2014.07-tld-1.pogo_v4.bodhi.tar.md5

#extract uboot
tar -xf uboot.2014.07-tld-1.pogo_v4.bodhi.tar

#Erase and flash uboot on mtd0
/tmp/flash_erase /dev/mtd0 0 4
/tmp/nandwrite /dev/mtd0 /tmp/uboot.2014.07-tld-1.pogo_v4.mtd0.kwb

Download and Flash uBoot Environment Parameters

#download default uboot env settings and md5

#check md5 sum
md5sum -c uboot.2014.07-tld-1.environment.img.bodhi.tar.md5

#extract uboot env settings
tar -xf uboot.2014.07-tld-1.environment.img.bodhi.tar

#Flash default uboot env setting
/tmp/flash_erase /dev/mtd0 0xc0000 1
/tmp/nandwrite -s 786432 /dev/mtd0 uboot.2014.07-tld-1.environment.img

Update uBoot Environment Parameters

/tmp/fw_setenv ethaddr "$(cat /sys/class/net/eth0/address)"

#double check the MAC Address matches with 
#what is on the bottom of your Pogoplug
/tmp/fw_printenv ethaddr

#set archNumber and machid (for LED)
/tmp/fw_setenv arcNumber 3960
/tmp/fw_setenv machid F78

#set rootfs file system type
/tmp/fw_setenv usb_rootfstype ext3

#set to original mtd partition layout
/tmp/fw_setenv mtdparts 'mtdparts=orion_nand:2M(u-boot),3M(uImage),3M(uImage2),8M(failsafe),112M(root)'

#print out all uboot environment parameters
#make sure there are no errors

Setup Netconsole (Optional but highly recommended)

More info here -,14,14
Just run the below commands if you're not sure.

#Update IP Addresses as needed
/tmp/fw_setenv serverip

/tmp/fw_setenv ipaddr
/tmp/fw_setenv if_netconsole 'ping $serverip'
/tmp/fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
/tmp/fw_setenv preboot 'run if_netconsole start_netconsole'

Boot default Pogoplug OS when USB/SD Card not attached

Note that this section only works on a new unmodified Pogoplug. It assumes the command are all executed from within the default Pogoplug OS and not from Arch Linux or Debian.

If you previously installed the uBoot from and/or already running ALARM or Debian, use these instructions instead - Pogoplug v4 - Add option to boot default Pogoplug OS when USB/SD Card is Not Attached.

To boot the default Pogoplug OS, we will need to chain load the original (dockstar) uboot which we'll download and store on the internal flash. The boot order will be USB, MMC/SD, SATA (Series 4 only) and then last, the original uBoot which will then load the default Pogoplug OS.

Don't forget that you'll need to activate the Pogoplug on if you plan on SSHing into the default Pogoplug OS.

#remount '/' as read/write
mount -o remount,rw /

#download original uboot
cd /

#update boot order to include pogoplug OS
/tmp/fw_setenv bootcmd 'run bootcmd_usb; run bootcmd_mmc; run bootcmd_sata; run bootcmd_pogo; reset'

#chain load original uboot
/tmp/fw_setenv bootcmd_pogo 'if ubi part root 2048 && ubifsmount ubi:rootfs && ubifsload 0x800000 uboot.mtd0.dockstar.original.kwb ; then go 0x800200; fi'

Debian/ALARM Installation on SD Card (or USB Hard/Flash Drive)

Insert SD Card or USB Hard/Flash Drive. The commands below are for Debian on a SD Card. However, I've noted the difference for USB Hard/Flash Drive and Arch Linux.

#stop service (just in case)
killall hbwd

#make device node for mmc/sd card
#skip command for usb install
mknod /tmp/mmcblk0 b 179 0

#Partition your SD Card
/sbin/fdisk /tmp/mmcblk0

#OR Partition your USB Flash/Hard Drive
#/sbin/fdisk /dev/sda

# Type in the following commands to erase
# and re-partition SD Card/USB Flash/Hard Drive
# p # list current partitions
# o # to delete all partitions
# n # new partition
# p # primary partition
# 1 (one) # first partition
# <enter> # default start block
# <enter> # default end block (to use the whole drive)
# If you're using a hard drive, create a small
# 4GB partition instead of using the whole drive,
# leaving the rest for a data partition
# +4G # create a 4GB partition
# w # write new partition to disk

#make device node for partition
#command not needed for USB install
mknod /tmp/mmcblk0p1 b 179 1

#download format utility
cd /tmp
chmod +x mke2fs

#format newly created partition
#ext3 with "rootfs" as label
/tmp/mke2fs -L rootfs -j /tmp/mmcblk0p1

#OR format USB Flash/Hard Drive
#/tmp/mke2fs -L rootfs -j /dev/sda1

#create mount point
mkdir /tmp/mnt

#mount SD Card
mount /tmp/mmcblk0p1 /tmp/mnt

#OR mount USB Flash/Hard Drive
#mount /dev/sda1 /tmp/mnt

#download Debian rootfs and md5
cd /tmp/mnt

#check md5
md5sum -c Debian-3.14.0-kirkwood-tld-1-rootfs-bodhi.tar.bz2.md5

#extract and delete

tar -xjf Debian-3.14.0-kirkwood-tld-1-rootfs-bodhi.tar.bz2
rm Debian-3.14.0-kirkwood-tld-1-rootfs-bodhi.tar.bz2
rm Debian-3.14.0-kirkwood-tld-1-rootfs-bodhi.tar.bz2.md5

#OR For Arch Linux ARM
#cd /tmp/mnt
#tar -xzvf ArchLinuxARM-kirkwood-latest.tar.gz
#rm ArchLinuxARM-kirkwood-latest.tar.gz

#Make SD Card first boot device (optional)
#Default boot order is USB->MMC/SD->SATA->POGO_OS
/tmp/fw_setenv bootcmd 'run bootcmd_mmc; run bootcmd_usb; run bootcmd_sata; run bootcmd_pogo; reset'

#Sync and reboot, cross your fingers
cd ..
umount /tmp/mnt

At this point, your Pogoplug should boot back up into Debian or Arch Linux ARM. Note that the IP Address of your Pogoplug may have changed. Double check your router for the IP Address assigned to your Pogoplug or use a network scanning tool (iNet Network Scanner on iPhone) to determine the IP Address of the Pogoplug.

For both Debian or Arch Linux, the default username and password is root/root.

Initial Debian Setup

#Change password

#Generate New OpenSSH Keys
rm /etc/ssh/ssh_host*
ssh-keygen -A

#Initial update
apt-get update
apt-get upgrade

#Set hostname to DebianPlug or whatever you like
echo DebianPlug>/etc/hostname

#Set Time Zone

Upgrade Debian to 3.18.5 kernel (optional)
Latest kernel and instructions here -,12096

#backup original kernel files
cd /boot
mkdir backup
mv *3.14* backup
mv uImage backup/uImage3.14
mv uInitrd backup/uInitrd3.14

#download from bodhi's dropbox
wget --no-check-certificate

#check md5
echo "68c96df62427c69bc7599ff31859b9b4  linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2" |md5sum -c

tar -xvjf linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2
tar -xvf  linux-dtb-3.18.5-kirkwood-tld-1.tar

#install kernel and headers
dpkg -i linux-image-3.18.5-kirkwood-tld-1_1_armel.deb
dpkg -i linux-headers-3.18.5-kirkwood-tld-1_1_armel.deb

#generate new uImage and uInitrd with fdt file. No need to modify uboot env
cp -a zImage-3.18.5-kirkwood-tld-1  zImage.fdt
cat dts/kirkwood-pogoplug_v4.dtb  >> zImage.fdt
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-3.18.5-kirkwood-tld-1 -d zImage.fdt uImage
mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-3.18.5-kirkwood-tld-1 -d initrd.img-3.18.5-kirkwood-tld-1 uInitrd
rm zImage.fdt

#clean up
rm linux-3.18.5-kirkwood-tld-1-bodhi.tar.bz2
rm linux-dtb-3.18.5-kirkwood-tld-1.tar

#reboot and verify
uname -a

Install SAMBA for a simple NAS (Network Attached Storage) - Debian

Plug in your USB Hard Drive and partition and format the drive as ext3.

mkdir -p /media/usb/share
mount /dev/sda1 /media/usb/share

apt-get install samba
cd /etc/samba
mv smb.conf smb.conf.bak

#download example smb.conf for public share
#no authentication require, everyone has
#read/write access to / (root$) and usb (/media/usb/share)
wget --no-check-certificate
/etc/init.d/samba restart

Debian Pogoplug Tutorials:


On the Series 4, only the top USB port is bootable. The blue USB 3.0 ports on the back of the Series 4 are not bootable.

Not all SD cards and USB flash drive are equal. If you're having issues booting into ALARM or Debian, try using a different SD card or USB flash drive.

Double check that you're SD Card is not in the "locked" (read only) position.

Cannot SSH back into the Pogoplug - double check the IP Address assigned to your Pogoplug. After booting Debian/ALARM, chances are your router will assign the Pogoplug a different IP Address. Check your router or use a network scanning tool to help figure out what IP Address was assigned to your Pogoplug.

Use Netconsole to see what's going on. Hopefully you followed my recommendation and setup netconsole.

Reinstallation - If you need to setup a new SD Card or USB Flash Drive, what you need to do is use a Linux computer or boot a Live Linux CD to partition, format (please make sure to use ext3 and not ext4), download and extract the rootfs to your SD Card or USB Flash Drive. Here is a basic outline of the steps from the website. Note for Debian, you'll want to use the link to the tarball in this tutorial.

Note that it's fairly difficult or nearly impossible to truly brick the Pogoplug v4. The most risky part of this tutorial is the four uBoot erasing/flashing lines (highlighted red). Even if somehow that went wrong (bad blocks for instance), you can recover via a serial connection and UART booting. More info here -,7852,7852

Miscellaneous Links and Reference
Self Promotion

Three Pogoplugs gave their lives bringing you this tutorial and countless hours. If you would like to show your support for this blog, please check out my AirEnabler or buy me a cup of coffee (link above). Thank you for your support.

Monday, March 31, 2014

DIY Portable AirPlay Speaker System

DIY Portable AirPlay Speaker System:

This is something I've been working off/on for over a year now. Originally inspired by the Boominator. However, I lack the carpentry skills and tools, so I decided to build this instead. I believe it's fairly unique in that it's totally portable (battery operated) and supports AirPlay.

Another photo of the back with captions on Amazon

YouTube Video:

  • AirPlay support provided by AirEnabler - broadcast it's own Wi-Fi network and allows iOS device to automatically maintain 3G/LTE connection for internet radio streaming from Pandora or iTunes Radio.
  • Battery operated; 6-8 hours on low-medium volume.
  • Runs off battery or AC wall charger and support charging while playing
  • Expandable to stereo (add 2nd speaker)
  • Switch out li-ion battery for 12v motorcycle battery for extended play (camping).

Friday, December 27, 2013

iPhone/Android VPN to PPTP VPN Server on TomatoUSB Router

iPhone/Android Phone Home - PPTP VPN Server for iPhone or Android on TomatoUSB Router

This is a quick tutorial on how to setup a PPTP VPN Server on your TomatoUSB Router. A PPTP VPN is ideal because it's fairly secure, simple to setup and both Android and iOS has built in PPTP VPN Clients which makes it convenient.

A VPN is a secure way for an iPhone or Android device to access local network resources such as internal web sites (SSL not required for secure access), samba shares, and SqueezeBox Server without the need to open up additional network ports on the router.

If you're looking for a router for this project, check out my [Tutorial] Apple AirPlay on TomatoUSB Router.


1) You're running Shibby's BIG-VPN build of TomatoUSB
2) Dynamic DNS is setup (Required for Client Setup). See my
[Tutorial - 30 Minutes or Less] Site to Site VPN with TomatoUSB and OpenVPN post for instructions on setting up Dynamic DNS Address.


1) Configure PPTP Server
2) Configure iPhone (iOS 7) VPN Client and Connect
3) Configure Android VPN Client and Connect - In Progress

Configure PPTP Server

Log into your TomatoUSB Router and go to VPN Tunneling->PPTP Server.

On the PPTP Server Configuration Page:

- Check Enable
- For Remote IP Address Range, pick a small IP Address range that is outside the scope of your DHCP Server but on the same network segment. For instance, I'm using 192.168.200.X as my network segment. My DHCP Server IP Adddress Range is So I used (outside the DHCP Range), giving me two IP Addresses (for two incoming iPhone).
- Set Broadcast Relay Mode to Both
- Set Encryption to MPPE-128
- Leave DNS Servers, WINS Servers, MTU and MRU at the default values.
- Under PPTP User List, add a user and set a password. You will need this info during the next step, Configure iPhone VPN Client.
- Save

Configure iPhone VPN Client and Connect

On your iPhone, go to Settings->General->VPN->Add VPN Configuration.
Select PPTP
Fill in the Description
For Server use your Dynamic DNS Address
Account name ("pptpuser" in this tutorial) and password.
Leave everything else as default.

Settings->General->VPN->Add VPN Configuration

Turn on VPN by going to Settings and sliding on "VPN". Note the "VPN" icon next to the clock when connected to VPN.

Turn iPhone VPN on by going to Settings and sliding on VPN

Configure Android VPN Client and Connect

Go to "Wireless and network" settings -> VPN settings.
Select "Add PPTP VPN"
Set VPN server name
Enable Encryption