[Samsung Epic 4G Touch] TalynOne:
Purpose:

Tutorial to describe how to install and configure an OpenVPN client on a rooted Epic 4G Touch. This "how to" assumes you know what OpenVPN is and have a verified working OpenVPN server.

Client Requirements:

Rooted Epic 4G Touch with either:

A kernel with built-in tun support (stock kernel)

A kernel with a seperate tun.ko module (Rogue Desperado).

Tested Rom/Kernel Combinations:

Blazer 1.2 ROM (EG30 Base) with included Kernel :

Blazer 1.2 ROM (EG30 Base) with Rogue v1.3.0 "Desperado" Kernel (comes with seperate tun.ko module)

Tested Server Configurations:

Windows OpenVPN server (Bridged mode UDP).

Windows OpenVPN server (Bridged mode TCP).

Asus RT-N16 router running DD-WRT v24-sp2 (06/14/11) mega - build 17201 (Bridged mode TCP)

Install BusyBox:

If you already have BusyBox this step may be unnecessary, if you do have it BusyBox Installer should tell you where.

On your device download and install "BusyBox Installer" (by JRummy16):

https://market.android.com/details?id=com.jrummy.busybox.installer

Run the BusyBox Installer and accept the default version (BusyBox v1.19.3) and location (/system/xbin/)

Scroll down to the bottom and press the "Install" button.

Install OpenVPN Installer:

When I first installed OpenVPN I used Freidrich Schäuffelhut's installer which let me connect, however the client never got an IP address from the OpenVPN DHCP server. I had to go through the manual step of opening a terminal window on my device after I connected and typing the command "netcfg tap0 dhcp". This is due to Schäuffelhut's installer putting an OpenVPN binary that's not fully compatible with BusyBox, this can fixed by using Sascha Volkenandt's installer instead.

On your device download "OpenVPN Installer" (from Sascha Volkenandt NOT Friedrich Schäuffelhut):

https://market.android.com/details?id=de.akvsoft.droid.ovpninstall

Run the installer, keep the default path values (OpenVPN Targe Location: /system/xbin, Busybox Install Path: /system/xbin), unless you have an existing Busybox installed in an alternate location, then obviously change the Busybox install path value to that location.

Verify that "Your device is rooted" and "Busybox is installed" status lines are checked. You can ignore the yellow exlamation mark on the "TAP/TUN module is NOT installed" line, the installer said that for both kernels that I tested which worked fine, so obviously the installer's tap module detection method isn't quite flawless.

Press the Install button.

Install OpenVPN Settings:

On your device download and install "OpenVPN Settings" (Friedrich Schäuffelhut):

https://market.android.com/details?id=de.schaeuffelhut.android.openvpn

Configure OpenVPN Settings to use the tun.ko module:

The following procedure is only needed for kernels that have an external tun.ko module such as the Rogue v1.3.0 "Desperado" Kernel, not kernels with built-in tun support, such as the stock kernel.

Run OpenVPN Settings

Press the "menu"

Press the item labeled "Advanced"

Check the "Load tun kernel module" option

Press "TUN module settings"

Press item labeled "Path to tun module"

Set the textbox value to the path of your tun.ko module, for the Desperado Kernel the installed location is "/lib/modules/tun.ko", then press the "OK" button

Press item labeled "Load module using"

Choose the "insmod" option

Connect and test the VPN connection:

Make sure you have transfered your .ovpn client connection configuration file(s) and certificates to your device. The default location that the OpenVPN settings application looks for these files is in the "/sdcard/openvpn" folder (folder location can be specified in the advanced settings).

Start the OpenVPN Settings application

Make sure "OpenVPN" is checked.

Pick the .ovpn client config from list of OpenVPN configurations

After you're connected the status line should tell your IP address on the remote network.

Test your connection by pinging an IP address and/or host name on the remote network. I use Ping & DNS as my ping application.

Note: The OpenVPN Settings client doesn't pick up the remote DNS server DHCP push option so you must configure the DNS per connection configuration manually by:

Tap and Holding the OpenVPN configuration from the list.

Choosing "Preferences" from the popup menu.

Checking the "Use VPN DNS Server" option.

Press the "VPN DNS Sever" item and set it to your desired DNS server.

Troubleshooting:

Install and run Android Terminal Emulator by Jack Palevich:

https://market.android.com/details?id=jackpal.androidterm

Check for an active tap0 interface

Open terminal

type "su"

type "netcfg", one of the entries should be labeled "tap0" with a valid IP address.

Sample Client .ovpn connection configuration: