Cross Compiling Kernel Mode PPPoE & PPPD for ARM

PPPoE is a Point-to-Point Protocol over Ethernet client used to connect to many ADSL Internet Service Providers. The RP-PPPoE client started out as a usermode application and has since been superseded by a Kernel Mode PPPoE client.

Kernel Configuration

To use PPPD and the rp-pppoe.so Kernel Mode client, you must ensure the following Kernel features have been enabled:

Device Drivers -> Network device support -> PPP (point-to-point protocol) support
Device Drivers -> Network device support -> PPP Deflate compression
Device Drivers -> Network device support -> PPP over Ethernet 

PPPD

The PPPoE client requires the host to have the PPPd (Point-to-Point Protocol Daemon) and the PPP-generic kernel module installed.

To build and install PPPd:

wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.6.tar.gz
tar -xzf ppp-2.4.6.tar.gz
cd ppp-2.4.6/
./configure 
make CC=arm-linux-gnueabi-gcc
make install DESTDIR=<Destination Root Directory> INSTALL="install --strip-program=arm-linux-gnueabi-strip"

Many of the makefiles are set up to strip the symbol tables using a X86 version of install -s and throws an error. We pass install the arm-linux-gnueabi-strip executable and where install has not been called without -s (strip), install is likely to display a WARNING: ignoring --strip-program option as -s option was not specified.

Configuration

Create /etc/ppp/pap-secrets and /etc/ppp/chap-secrets containing your username and password:

"isp_username"       *       "password"

Create /etc/ppp/options containing the following:

plugin /lib/pppd/2.4.6/rp-pppoe.so
name <isp_username>
noipdefault
defaultroute
mtu 1492
mru 1492
lock
ipv6 ,
usepeerdns

To start your connection, simply run:

pppd eth0