---
title: "W55RP20 PPPoE Example"
url: "https://maker.wiznet.io/Hannah/projects/w55rp20-pppoe-example/"
markdown_url: "https://maker.wiznet.io/Hannah/projects/w55rp20-pppoe-example/md"
type: "WCC: WIZnet Created Content"
author: "Hannah Lee"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Hannah Lee"
published: "2025-01-23"
language: "en"
hardware: ["WIZnet W55RP20-EVB-Pico"]
likes: 0
views: 1166
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# W55RP20 PPPoE Example

> PPPoE is a method of transporting Point-to-Point Protocol (PPP) over Ethernet.

Original author: Hannah Lee

## Components

- **WIZnet W55RP20-EVB-Pico** x 1 ([docs](https://wiznet.io/products/powered-by-raspberry-pi/w55rp20-evb-pico))

## Documents and links

- [PPPoE example](https://github.com/WIZnet-ioNIC/WIZnet-PICO-C/tree/main/examples/pppoe) (code)

## Article

### Introduction to PPPoE

Point-to-Point Protocol over Ethernet (PPPoE) is a network protocol that encapsulates Point-to-Point Protocol (PPP) frames inside Ethernet frames. This combination allows traditional dial-up protocols, such as authentication, encryption, and compression, to be used over high-speed Ethernet networks. PPPoE is widely used by Internet Service Providers (ISPs) to manage connections and allocate IP addresses dynamically to end users.

PPPoE works by establishing a virtual point-to-point connection between a client device and an ISP's access concentrator. This is done through two primary phases:

1. **Discovery Phase**: The client device discovers a PPPoE server (access concentrator) on the network, identifying itself and initiating a session.

2. **Session Phase**: Once a session is established, PPP frames are transmitted over the Ethernet link, enabling secure communication and IP address assignment.

This protocol is commonly used in DSL and fiber-to-the-home networks to authenticate users and manage bandwidth allocation effectively. Its integration into various embedded systems, such as the W55RP20-EVB-Pico, makes it a versatile solution for implementing PPPoE in lightweight, resource-constrained environments.

The rest of this guide will cover how to set up a PPPoE server on Linux and configure the W55RP20-EVB-Pico to dial in and acquire an IP address. By the end, you’ll have a fully functional system demonstrating practical use of PPPoE in embedded applications.

#### Setting Up a PPPoE Server

**Download the PPPoE Software**
Download the `rp-pppoe-3.12.tar.gz` package, which contains the necessary software for setting up a PPPoE server.

**Extract the Package**
Extract the downloaded package using the following command:

`tar -xvzf rp-pppoe-3.12.tar.gz`

**Install Required Packages**
Install the essential development tools and dependencies:

- **Make**:

`apt-get install make`

- **GCC (GNU Compiler Collection)**:

`apt-get install gcc`

**Build the PPPoE Software**
Navigate to the source directory and configure the build environment:

`cd src/`

`./configure`

**Configure PPPoE Settings**
After building the software, proceed to configure your PPPoE environment to suit your network requirements.

#### Editing the PPPoE Server Configuration File

To configure the PPPoE server, you need to edit the `pppoe-server-options` file. This file defines the server's options and behavior.

$ sudo nano /etc/ppp/pppoe-server-options

![](https://maker.wiznet.io/upload/ckeditor5/14104316%5F1737566003%2Epng)

#### Configuring CHAP or PAP Authentication for PPPoE Server

To set up CHAP or PAP authentication, you need to modify the PPPoE server's configuration files to specify which authentication method to use and provide valid user credentials.

To ensure the PPPoE ID and password are set the same in the `main` code of your PPPoE example, you need to locate the section where the PPPoE credentials are defined and configure them accordingly.

![](https://maker.wiznet.io/upload/ckeditor5/227906607%5F1737638023%2Epng)

- For **CHAP** (Challenge Handshake Authentication Protocol):

![](https://maker.wiznet.io/upload/ckeditor5/14104316%5F1737566280%2Epng)

- For **PAP** (Password Authentication Protocol):

![](https://maker.wiznet.io/upload/ckeditor5/14104316%5F1737566144%2Epng)

#### Running and Monitoring the PPPoE Server

- Start the PPPoE Server

$ sudo pppoe-server -I eth0 -L 192.168.11.1 -R 192.168.11.200 -N 20

- Check if the Server is Running

$ ps aux | grep pppoe-server

- Stop the PPPoE Server

$ sudo pkill pppoe-server

### Demonstration Results

The W55RP20-EVB-Pico successfully dialed into the PPPoE server and obtained an IP address.

![success_dialing.png](https://github.com/WIZnet-ioNIC/WIZnet-PICO-C/blob/main/static/images/pppoe/success_dialing.png?raw=true)

---

Source: https://maker.wiznet.io/Hannah/projects/w55rp20-pppoe-example/
