Configuring PPPoE on NanoPi R5C with TIME

Hello!

My ISP is TIME and I am trying to put the ONT/Router/AP device into bridge mode and use my OpenWrt running on NanoPi R5C as my primary router and gateway.

Everything works great openwrt as a DHCP client behind ISP's device is in router mode, however with it in bridge mode, I cannot get PPPoE to work in openwrt.

Details about my OpenWrt device:
Model: FriendlyElec NanoPi R5C
Firmware Version: OpenWrt SNAPSHOT r0-a511a74 / LuCI Master git-23.158.78004-23a246e

The relevant WAN settings on my ISP router are:

I have my PPPoE credentials and expected this to be easy but the connection fails on OpenWRT.

How do I approach this? I probably need to set VLAN correctly in my router but I am not sure what I am doing wrong.

Happy to provide config/logs as needed.

When you configure your ISP device to bridge mode, does it allow you to select a VLAN ID? You can either:

  • Bridge VLAN 499 to the port and use PPPoE on your OpenWrt box on the wan interface (if possible)
  • Bridge the entire upstream connection to the port and use PPPoE on the WAN device with VLAN 499 on OpenWrt

On OpenWrt, you can just append .499 to the device you use for the PPPoE connection to have it VLAN-tagged.

When I configure the ISP device to bridge mode, this is the UI:

For the two suggested methods, can you please describe the changes on ISP device and openwrt device that I can follow? (maybe I am missing a small step)

In my attempts, I switched to bridge with VLAN=499 on the ISP device.
Then in Openwrt, I created a 802.1Q VLAN device with VLAN=499 and used that in my PPPoE interface.

Also tried:

On OpenWrt, you can just append .499 to the device you use for the PPPoE connection to have it VLAN-tagged.

Still did not work.

If you do this, you should be able to connect with PPPoE over the plain wan device without any VLAN handling on OpenWrt. I'm unsure how the port setup looks like on your R5C as it's not support by stock OpenWrt. I assume you have a device wan and a device lan. wan is, by default, defined with protocl "DHCP", you just have to change it to PPPoE and use the wan port as underlying device.

Does that work?

No.

/etc/config/network

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fd00::/64'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	option ipv6 '1'

config device
	option name 'eth0'
	option macaddr '16:71:03:68:59:b8'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.20.1'
	option netmask '255.255.255.0'
	option ip6assign '64'
	option delegate '0'

config device
	option name 'eth1'
	option macaddr '16:71:03:68:59:b7'

config interface 'wan'
	option device 'br-wan'
	option proto 'pppoe'
	option pppd_options 'debug'
	option username '*'
	option password '*'
	option ipv6 'auto'

config interface 'wan6'
	option device 'eth1'
	option proto 'dhcpv6'
	option reqaddress 'try'
	option reqprefix 'auto'

config interface 'docker'
	option device 'docker0'
	option proto 'none'
	option auto '0'

config device
	option type 'bridge'
	option name 'docker0'

config device
	option type 'bridge'
	option name 'br-wan'
	list ports 'eth1'

config bridge-vlan
	option device 'br-wan'
	option vlan '499'
	list ports 'eth1:t*'

logread -e pppd

Thu Jun 15 21:57:25 2023 daemon.info pppd[19395]: Plugin pppoe.so loaded.
Thu Jun 15 21:57:25 2023 daemon.info pppd[19395]: PPPoE plugin from pppd 2.4.9
Thu Jun 15 21:57:25 2023 daemon.notice pppd[19395]: pppd 2.4.9 started by root, uid 0
Thu Jun 15 21:57:25 2023 daemon.debug pppd[19395]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:25 2023 daemon.debug pppd[19395]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:25 2023 daemon.debug pppd[19395]:  [service-name] [host-uniq  c3 4b 00 00]
Thu Jun 15 21:57:30 2023 daemon.debug pppd[19395]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:30 2023 daemon.debug pppd[19395]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:30 2023 daemon.debug pppd[19395]:  [service-name] [host-uniq  c3 4b 00 00]
Thu Jun 15 21:57:35 2023 daemon.debug pppd[19395]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:35 2023 daemon.debug pppd[19395]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:35 2023 daemon.debug pppd[19395]:  [service-name] [host-uniq  c3 4b 00 00]
Thu Jun 15 21:57:40 2023 daemon.warn pppd[19395]: Timeout waiting for PADO packets
Thu Jun 15 21:57:40 2023 daemon.err pppd[19395]: Unable to complete PPPoE Discovery
Thu Jun 15 21:57:40 2023 daemon.info pppd[19395]: Exit.
Thu Jun 15 21:57:40 2023 daemon.info pppd[20445]: Plugin pppoe.so loaded.
Thu Jun 15 21:57:40 2023 daemon.info pppd[20445]: PPPoE plugin from pppd 2.4.9
Thu Jun 15 21:57:40 2023 daemon.notice pppd[20445]: pppd 2.4.9 started by root, uid 0
Thu Jun 15 21:57:40 2023 daemon.debug pppd[20445]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:40 2023 daemon.debug pppd[20445]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:40 2023 daemon.debug pppd[20445]:  [service-name] [host-uniq  dd 4f 00 00]
Thu Jun 15 21:57:45 2023 daemon.debug pppd[20445]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:45 2023 daemon.debug pppd[20445]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:45 2023 daemon.debug pppd[20445]:  [service-name] [host-uniq  dd 4f 00 00]
Thu Jun 15 21:57:50 2023 daemon.debug pppd[20445]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:50 2023 daemon.debug pppd[20445]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:50 2023 daemon.debug pppd[20445]:  [service-name] [host-uniq  dd 4f 00 00]
Thu Jun 15 21:57:55 2023 daemon.warn pppd[20445]: Timeout waiting for PADO packets
Thu Jun 15 21:57:56 2023 daemon.err pppd[20445]: Unable to complete PPPoE Discovery
Thu Jun 15 21:57:56 2023 daemon.info pppd[20445]: Exit.
Thu Jun 15 21:57:56 2023 daemon.info pppd[21083]: Plugin pppoe.so loaded.
Thu Jun 15 21:57:56 2023 daemon.info pppd[21083]: PPPoE plugin from pppd 2.4.9
Thu Jun 15 21:57:56 2023 daemon.notice pppd[21083]: pppd 2.4.9 started by root, uid 0
Thu Jun 15 21:57:56 2023 daemon.debug pppd[21083]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:57:56 2023 daemon.debug pppd[21083]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:57:56 2023 daemon.debug pppd[21083]:  [service-name] [host-uniq  5b 52 00 00]
Thu Jun 15 21:58:01 2023 daemon.debug pppd[21083]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:58:01 2023 daemon.debug pppd[21083]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:58:01 2023 daemon.debug pppd[21083]:  [service-name] [host-uniq  5b 52 00 00]
Thu Jun 15 21:58:06 2023 daemon.debug pppd[21083]: Send PPPOE Discovery V1T1 PADI session 0x0 length 12
Thu Jun 15 21:58:06 2023 daemon.debug pppd[21083]:  dst ff:ff:ff:ff:ff:ff  src 16:71:03:68:59:b7
Thu Jun 15 21:58:06 2023 daemon.debug pppd[21083]:  [service-name] [host-uniq  5b 52 00 00]
Thu Jun 15 21:58:11 2023 daemon.warn pppd[21083]: Timeout waiting for PADO packets
Thu Jun 15 21:58:11 2023 daemon.err pppd[21083]: Unable to complete PPPoE Discovery
Thu Jun 15 21:58:11 2023 daemon.info pppd[21083]: Exit.

Delete these two sections ....

... and set the interface in wan to eth1:

config interface 'wan'
	option device 'eth1'
	option proto 'pppoe'
	option pppd_options 'debug'
	option username '*'
	option password '*'
	option ipv6 'auto'

If the ISP device is configured properly, i.e. to bridge VLAN 499 to its LAN port, then this should work.

1 Like

I have tried, but the router firmware does not let me bridge VLAN 499 to its LAN. I am considering buying a cheap managed switch for this task.

I hoped I could configure OpenWrt for this device somehow to make this work.

Then you should be able to do this in OpenWrt instead:

config interface 'wan'
	option device 'eth1.499'
	option proto 'pppoe'
	option pppd_options 'debug'
	option username '*'
	option password '*'
	option ipv6 'auto'