Your Own $130 High Powered Unlimited Device Linux Hotspot Router

What is this?

This is a guide on how to build your own $130 LTE router that connects as many devices as you like.

Why use this setup?

2 reasons, control, and flexibility. Want to just take the LTE stick for some portable travels? you can do that, plug your stick into your laptop and away you go. Need emergency internet when the whole house loses connection? Problem solved! Don’t want LTE and just want to use your residential internet? Unplug the LTE stick, and plug your modem in! OpenWRT gives your power from their vast array of available packages to download.

Equipment Used:


Test your modem in Windows or Mac, make sure it works, and write down your provider’s APN

Update the Firmware

Download latest firmware (Currently version 141113 (11/13/2014) and flash it on the WDR4300 using the web interface.

No need to do this if you’re already running V141113.
Router IP:
Default User: admin
Default Pass: admin

Go to System Tools -> Firmware Upgrade and browse to the firmware file extracted from Wait for it to reboot, then continue on.
Firmware Update

Flash Rooter MultiWeb firmware

Download the latest version of Multiweb.
The WDR4300 Rooter firmware can be downloaded here.
Extract is and flash it by using the TP-Link router’s web interface like before*

*Note that versions of Multiweb older than 2015-01-04 have trouble detecting the Sierra Aircard stick

Configure Rooter

Go to and login with the defaults (root as username, blank password).
Rooter Login

Now go to System -> Administration and set your password
Rooter Set Password

Set Your APN

Go to Modem -> Connection Info
Enter in your APN settings in Modem 1 Information:
For Rogers: set “APN” to lteinternet.apn
Rooter Set APN

Scroll down and hit Save

Set Your Wifi

Go to Network -> Wifi
Click the Edit button under Generic MAC80211 802.11bgn(radio0)
Rooter Wireless Overview

Set your channel (I prefer auto), and your ESSID (this will be what your network shows up as)
Rooter Set Wifi 1

Next, click on Wireless Security, set Encryption to WPA2-PSK, and your Key to whatever you’d like the password to be.
Rooter Set Wifi 2
Now click Save and apply changes

Note: If you have a Broadcomm wireless adapter, uncheck “WMM Mode” as it interferes with connections

Finishing Up

Power off your router, then plug in your LTE stick into the “USB1” port on the back of the router.
Wait 1 minute, then check the overview page to make sure the device is detected. The status indicator is near the bottom of the page.
Rooter Check Overview

You can see more details under Modem -> Network Status to verify it has been connected.
Rooter Network Status LTE


Sometimes LTE can be faster than cable internet.
LTE (Good signal):
Rooter Good Signal Speedtest
Cable (Shaw 25Mbps down, 2.5Mbps up):
Rooter Wired Speedtest
LTE (Poor signal):
Rooter Poor Signal Speedtest

Want console access to your router?

Download a telnet client (or use the Windows built-in one). Download the portable version of KiTTY (a souped up PuTTY fork) from here. Choose the kitty_portable option. Choose SSH and enter as the host. Username is root, and the password will be the one you set up above.


Hats off to the Rooter Firmware team and the OpenWRT. If you’d like to donate, please send some money their way as a thank you to their hard work.

Dynamic DNS with Cloudflare and Tomato Firmware

How to set up Dynamic DNS with free Cloudflare DNS service using Tomato Firmware

  1. Login to Cloudflare:
  2. Go to DNS Settings under your domain and add an “A” DNS entry for Dynamic DNS (ddns used in this example)
  3. Get your API key from
  4. Example Curl code to test if its working (Optional)

    curl \
    -d 'a=rec_edit' \
    -d 'tkn=YOUR_API_KEY_HERE' \
    -d 'id=YOUR_DNS_ENTRY_ID' \
    -d 'email=YOUR_CLOUDFLARE_EMAIL' \
    -d 'type=A' \
    -d 'content=' \
    -d 'service_mode=0' \
    -d 'ttl=1'
  5. Get DNS entry ID – requires your API key, domain, and email address. Make sure you replace the parameters with your own.

    (Note – Open URL in a different browser, otherwise you’ll get errors):
  6. Search the page for “ddns”, or whatever you named your dns entry. Make sure your copy the {“rec_id”: that is at the top of the block.
  7. Test updating the IP in your browser. Look for success at the bottom.
  8. Refresh your domain’s DNS entries page to see if the IP became
  9. Copy and paste your modified URL from step 6 into Tomato
    Make sure to replace with @IP in the URL
  10. Refresh your domain’s DNS entries page again to verify that the IP has been set.
  11. That’s it :)
  12. Additional Info:

1 Click Replace Notepad with Notepad++ Windows 7/8/8.1 Batch Script

Just a quick tip to replace the basic Windows Notepad with the much handier Notepad++


If you don’t have Notepad++ already, you can download it here.

No file ownership changes, replacements or backups necessary, just a quick registry fix and command line trick.


[cryout-button-color url=”” color=”#47AFFF”]Replace Notepad++ Batch Script[/cryout-button-color]


  1. Run the notepad++replace.bat as Administrator.
  2. Open “notepad” using the Run command and see if Notepad++ starts.
  3. Tell the world about it 😛

Compatible with 32bit and 64bit editions of Windows 7, 8, and 8.1 (including Update 1).

Original and further info at Grahame Scott-Douglas‘ blog.

Moving my scripts over to Github

A mini news flash here, I’ve created a Github account that will be hosting all my scripts.

The first to be moved over is my automated PPTP setup script, now called ezpptp.

The LNMP (Nginx, PHP, MySQL) script has been depreciated in favor of Xeoncross’s lowendscript that I’ve contributed some patches to.

My OpenVPN setup script will soon be joining the other bunch in the near future.

Hopefully with the scripts now being hosted on Github, I’ll see some patches and commits to make them even better 😀

OpenVPN Debian/Ubuntu Setup Script for OpenVZ

An new awesomer script is now available! Check it out!

I have edited a script (credits below as well as a CentOS/RHEL version) for automated OpenVPN setup. OpenVPN server on your OpenVZ VPS can be set up in under a couple of minutes. Port forwarding, client config, key archiving, and config setup is all done for you. Note that setting the port to 53 can be used to bypass captive portals as an alternative to using iodine. Feedback is appreciated.

Make sure that your VPS has it’s TUN/TAP modules enabled by your provider first. To verify it is working, enter the command below:

cat /dev/net/tun

If you receive this message, your TUN/TAP device is ready for use:

cat: /dev/net/tun: File descriptor in bad state

If you receive this message, contact your provider for assistance:

cat: /dev/net/tun: No such file or directory

To install the script, copy and paste this into your SSH client of choice:

chmod +x

Continue reading

Rebuild Icon Cache Guide

1. Close any My Computer windows. This command will kill explorer.

2. Open the Start Menu, and type cmd in the search box and press enter (make sure you run as Administrator if you have UAC on).

3. In the command prompt, Copy and Paste the commands below:

For Windows Vista/2008/7/2008R2:

TASKKILL /IM explorer.exe /F
DEL /A:H IconCache.db

For Windows NT/2000/XP/2003/2003R2:

TASKKILL /IM explorer.exe /F
CD /d %USERPROFILE%\Local Settings\Application Data
DEL /A:H IconCache.db

4. The IconCache.db file has now been rebuilt.

Bypassing Captive Portals/Airport Pay Restrictions with Iodine on a Debian VPS Guide

This guide is intended for those who want to set up a Iodine on a Debian or Ubuntu VPS. Lots of time has been spent through trial and error trying to figure it out. Insight and portions of this guide have been taken

Server Setup:

1. Run one of the following scripts on your server below.
SSH into your server/VPS and run one of the below scripts:

1a. Ubuntu only installation!

cat >> /etc/apt/sources.list <<END
deb natty main restricted universe
apt-get update
apt-get -t natty install iodine
sed -i '$d' /etc/apt/sources.list

1b. Debian only installation!

cat >> /etc/apt/sources.list <<END
deb sid main
apt-get update
apt-get -t sid install iodine
sed -i '$d' /etc/apt/sources.list

Continue reading