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 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 


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:

tar -xzf ppp-2.4.6.tar.gz
cd ppp-2.4.6/
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.


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/
name <isp_username>
mtu 1492
mru 1492
ipv6 ,

To start your connection, simply run:

pppd eth0