From cd77918796ade5b8ac9d87e854d90ed41381ffd0 Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 18:54:23 +0100 Subject: [PATCH 1/7] Rename \ script to swiper so windows users can checkout --- "\\" => swiper.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "\\" => swiper.js (100%) diff --git "a/\\" b/swiper.js similarity index 100% rename from "\\" rename to swiper.js From 6dea752f157fa715fdb9f6d794f6c3d05438d53e Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 19:21:24 +0100 Subject: [PATCH 2/7] Add YouFibre (Netomnia) post --- ...oufibre-adtran-sdx621i-with-the-was-110.md | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md diff --git a/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md b/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md new file mode 100644 index 00000000..d245fab3 --- /dev/null +++ b/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md @@ -0,0 +1,103 @@ +--- +date: 2025-05-12 +categories: + - XGS-PON + - YouFibre + - Netomnia + - WAS-110 + - 8311 Firmware + - OPNsense + - Better Internet Store +description: Configure the WAS-110 on YouFibre / Netomnia XGS-PON with a preloaded 8311 firmware +slug: connect-to-youfibre-xgs-pon-with-the-was-110 +--- + +# Connect to YouFibre / Netomnia XGS-PON with the WAS-110 + + + + + + +## What you need + +- A [WAS-110] module, preferably pre-flashed with [8311 firmware](https://github.com/djGrrr/8311-was-110-firmware-builder) +- SC/APC to LC/APC cable or coupler (check which side your socket terminates with). My YouFibre install came **pre-terminated with SC/APC**, which fits directly into the WAS-110. No extra patch cables or adapters were needed. +- Your provisioned **PON Serial Number** +- A router or firewall (e.g. OPNsense) with SFP+ WAN (or an isolated VLAN for WAN) +- Optional: ability to clone MAC address (for static IP assignment from YouFibre) + +!!! question "Do I need to flash the firmware?" + This guide assumes your module comes preloaded with 8311 firmware. Flashing instructions are available separately. + +--- + +## Configuration overview + +Once the WAS-110 is connected to your fiber socket and inserted into an SFP+ port, follow these steps: + +### 1. Access the 8311 web UI + +- Assign your PC an IP like `192.168.11.3/24` +- Connect directly or via switch to the ONT +- Navigate to: `https://192.168.11.1/cgi-bin/luci/admin/8311/config` + +--- + +## 8311 Configuration + +### Configuration tab + +| Attribute | Value | Mandatory | Notes | +| --------------------------|------------------------------|------------|--------------------------------| +| PON Serial Number (ONT ID)| *Your original ONT serial* | ✅ | Bottom of ONT | +| Equipment ID | `ADTN` | ✅ | Matches ZTE ONTs | +| Hardware Version | `1.2.1b` | optional | Can be left as-is | +| Sync Circuit Pack Version | `1` | optional | Sometimes required by OLT | +| Software Version A | `3.7.4-2306.5` | ✅ | Confirmed working | +| Software Version B | `3.7.4-2306.5` | ✅ | Matches A | +| MIB File | `/etc/mibs/prx300_1U.ini` | ✅ | Required +for VEIP and OLT match| +| MAC | Cloned from original ONT | ✅ | Required + +!!! bug "Empty VLAN table or no WAN IP?" + Disable `Fix VLANs` under the *ISP Fixes* tab and reboot. Without this, DHCP may silently fail. + +--- + +## Real-world usage notes + +### 💬 My user report + +> I managed to get PLOAM to O5.1 (Associated), but my OPNsense WAN didn’t get a DHCP IP until I: +> +> - Disabled `Fix VLANs` +> - Rebooted OPNsense +> + +> The 8311 UI was unaccessible after moving it into the WAN VLAN, tried adding a static route but no use. + +> I successfully replaced the ISP ADTRAN SDX621i ONT. + +--- + +## Performance + +Running at **1 Gbps symmetric**, reports: + +> I saw about a 50 Mbps increase in speed, though the main win was space-saving in the network cabinet by eliminating the external ONT. + +--- + +## Resources + +- [8311 Discord Community](https://discord.gg/X7ES6Vu6gJ) +- [WAS-110 Product Page](../xgs-pon/ont/bfw-solutions/was-110.md) +- [Troubleshooting Fake O5](../guides/troubleshoot-connectivity-issues-with-the-was-110.md#fake-o5) + +--- + +## Thanks + +Special thanks to [Better Internet Store](https://www.betterinternet.ltd) for support and supplying the pre-flashed module. + From 6df5d314449b8305b612df443ad326c2ff42ad3c Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 19:22:08 +0100 Subject: [PATCH 3/7] Make version of MiB explicit --- ...asquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md b/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md index d245fab3..8362399d 100644 --- a/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md +++ b/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md @@ -56,7 +56,7 @@ Once the WAS-110 is connected to your fiber socket and inserted into an SFP+ por | Sync Circuit Pack Version | `1` | optional | Sometimes required by OLT | | Software Version A | `3.7.4-2306.5` | ✅ | Confirmed working | | Software Version B | `3.7.4-2306.5` | ✅ | Matches A | -| MIB File | `/etc/mibs/prx300_1U.ini` | ✅ | Required +| MIB File | `/etc/mibs/prx300_1U.ini` | ✅ | Required. Note **1U Not 1V** for VEIP and OLT match| | MAC | Cloned from original ONT | ✅ | Required From 6883b723c91ca6f4a337ef9cc3bafae39a57eb09 Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 19:23:07 +0100 Subject: [PATCH 4/7] Update equip provider note --- ...asquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md b/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md index 8362399d..585874fd 100644 --- a/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md +++ b/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md @@ -51,7 +51,7 @@ Once the WAS-110 is connected to your fiber socket and inserted into an SFP+ por | Attribute | Value | Mandatory | Notes | | --------------------------|------------------------------|------------|--------------------------------| | PON Serial Number (ONT ID)| *Your original ONT serial* | ✅ | Bottom of ONT | -| Equipment ID | `ADTN` | ✅ | Matches ZTE ONTs | +| Equipment ID | `ADTN` | ✅ | Matches ADTRAN ONTs | | Hardware Version | `1.2.1b` | optional | Can be left as-is | | Sync Circuit Pack Version | `1` | optional | Sometimes required by OLT | | Software Version A | `3.7.4-2306.5` | ✅ | Confirmed working | From 58230544eae59a34ffe7bc457af4c1a1e5e1611f Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 23:10:49 +0100 Subject: [PATCH 5/7] Rename YF to Adtran --- ...10.md => masquerade-as-the-adtran-sdx621i-with-the-was-110.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/posts/{masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md => masquerade-as-the-adtran-sdx621i-with-the-was-110.md} (100%) diff --git a/docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md b/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md similarity index 100% rename from docs/posts/masquerade-as-the-youfibre-adtran-sdx621i-with-the-was-110.md rename to docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md From 871b3280199710fd17cd0013c74e6ca3422574c6 Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 23:14:11 +0100 Subject: [PATCH 6/7] Remove YF ref and optional columns --- ...-as-the-adtran-sdx621i-with-the-was-110.md | 96 +++++++++---------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md b/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md index 585874fd..29a8100b 100644 --- a/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md +++ b/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md @@ -1,46 +1,50 @@ --- -date: 2025-05-12 +date: + created: 2025-05-12 +draft: true categories: - XGS-PON - - YouFibre - - Netomnia + - ADTRAN - WAS-110 - 8311 Firmware - OPNsense - Better Internet Store -description: Configure the WAS-110 on YouFibre / Netomnia XGS-PON with a preloaded 8311 firmware -slug: connect-to-youfibre-xgs-pon-with-the-was-110 +description: Replace an ADTRAN ONT with a WAS-110 preloaded with 8311 firmware on XGS-PON +slug: replace-adtran-ont-with-was-110 --- -# Connect to YouFibre / Netomnia XGS-PON with the WAS-110 - - +# Replace an ADTRAN SDX ONT with the WAS-110 on XGS-PON +This guide outlines how to replace an **ADTRAN SDX621i** ONT on an XGS-PON line using a [WAS-110] module pre-flashed with 8311 firmware. + +This has been successfully tested by a user on **Netomnia / YouFibre** in the UK, who received a static IP via DHCP using a cloned MAC and VLAN 911 tagging. + +--- + ## What you need -- A [WAS-110] module, preferably pre-flashed with [8311 firmware](https://github.com/djGrrr/8311-was-110-firmware-builder) -- SC/APC to LC/APC cable or coupler (check which side your socket terminates with). My YouFibre install came **pre-terminated with SC/APC**, which fits directly into the WAS-110. No extra patch cables or adapters were needed. -- Your provisioned **PON Serial Number** -- A router or firewall (e.g. OPNsense) with SFP+ WAN (or an isolated VLAN for WAN) -- Optional: ability to clone MAC address (for static IP assignment from YouFibre) +- A [WAS-110] module, pre-flashed with [8311 firmware](https://github.com/djGrrr/8311-was-110-firmware-builder) +- Your provisioned **PON Serial Number** (from your ISP) +- A router or firewall (e.g. OPNsense) with a VLAN-capable WAN interface (e.g. VLAN 911) +- Optional: ability to clone MAC address (required for static IP from some ISPs) -!!! question "Do I need to flash the firmware?" - This guide assumes your module comes preloaded with 8311 firmware. Flashing instructions are available separately. +!!! note "Fiber connector" + The original ONT in this case was connected using **SC/APC**, which plugged directly into the WAS-110 — no patch cables or adapters were necessary. --- ## Configuration overview -Once the WAS-110 is connected to your fiber socket and inserted into an SFP+ port, follow these steps: +Once the WAS-110 is inserted into an SFP+ port and connected to the fiber socket: ### 1. Access the 8311 web UI -- Assign your PC an IP like `192.168.11.3/24` -- Connect directly or via switch to the ONT -- Navigate to: `https://192.168.11.1/cgi-bin/luci/admin/8311/config` +- Assign your computer a static IP (e.g., `192.168.11.3/24`) +- Connect to the module directly or via switch +- Visit: `https://192.168.11.1/cgi-bin/luci/admin/8311/config` --- @@ -48,56 +52,50 @@ Once the WAS-110 is connected to your fiber socket and inserted into an SFP+ por ### Configuration tab -| Attribute | Value | Mandatory | Notes | -| --------------------------|------------------------------|------------|--------------------------------| -| PON Serial Number (ONT ID)| *Your original ONT serial* | ✅ | Bottom of ONT | -| Equipment ID | `ADTN` | ✅ | Matches ADTRAN ONTs | -| Hardware Version | `1.2.1b` | optional | Can be left as-is | -| Sync Circuit Pack Version | `1` | optional | Sometimes required by OLT | -| Software Version A | `3.7.4-2306.5` | ✅ | Confirmed working | -| Software Version B | `3.7.4-2306.5` | ✅ | Matches A | -| MIB File | `/etc/mibs/prx300_1U.ini` | ✅ | Required. Note **1U Not 1V** -for VEIP and OLT match| -| MAC | Cloned from original ONT | ✅ | Required - -!!! bug "Empty VLAN table or no WAN IP?" - Disable `Fix VLANs` under the *ISP Fixes* tab and reboot. Without this, DHCP may silently fail. +| Attribute | Value | Mandatory | Notes | +|---------------------------|------------------------------|------------|---------------------------------------| +| PON Serial Number (ONT ID)| From original ONT | ✅ | Found on label of ADTRAN device | +| Equipment ID | `ADTN` | ✅ | Matches expected ID for ADTRAN ONTs | +| Hardware Version | `1.2.1b` | | | +| Sync Circuit Pack Version | `1` | | | +| Software Version A | `3.7.4-2306.5` | ✅ | Confirmed working version | +| Software Version B | `3.7.4-2306.5` | ✅ | Matches A | +| MIB File | `/etc/mibs/prx300_1U.ini` | ✅ | Note: use `1U`, not `1V`, for VEIP | +| MAC Address | Cloned from original ONT | ✅ | Required for static IP on some ISPs | --- -## Real-world usage notes +## Real-world example -### 💬 My user report +A UK-based user successfully replaced their **ADTRAN SDX621i** on **YouFibre (Netomnia)** using a WAS-110 from the [Better Internet Store]. -> I managed to get PLOAM to O5.1 (Associated), but my OPNsense WAN didn’t get a DHCP IP until I: +### Observations: + +> PLOAM state reached **O5.1 (Associated)**, but no WAN IP was received until: > -> - Disabled `Fix VLANs` -> - Rebooted OPNsense +> - `Fix VLANs` was disabled +> - OPNsense was rebooted > - -> The 8311 UI was unaccessible after moving it into the WAN VLAN, tried adding a static route but no use. - -> I successfully replaced the ISP ADTRAN SDX621i ONT. +> The 8311 UI became unreachable after assigning it to the WAN VLAN — a static route attempt was unsuccessful. For ongoing access, it's best to configure the ONT before attaching it to your WAN. --- ## Performance -Running at **1 Gbps symmetric**, reports: +Reported speeds were slightly improved: -> I saw about a 50 Mbps increase in speed, though the main win was space-saving in the network cabinet by eliminating the external ONT. +> On a 1 Gbps symmetric connection, speed tests showed a 50 Mbps improvement. More importantly, space was freed in the network cabinet by removing the external ONT. --- ## Resources -- [8311 Discord Community](https://discord.gg/X7ES6Vu6gJ) -- [WAS-110 Product Page](../xgs-pon/ont/bfw-solutions/was-110.md) -- [Troubleshooting Fake O5](../guides/troubleshoot-connectivity-issues-with-the-was-110.md#fake-o5) +- [WAS-110 Documentation](../xgs-pon/ont/bfw-solutions/was-110.md) +- [Troubleshooting fake O5](../guides/troubleshoot-connectivity-issues-with-the-was-110.md#fake-o5) +- [8311 Firmware Builder on GitHub](https://github.com/djGrrr/8311-was-110-firmware-builder) --- ## Thanks -Special thanks to [Better Internet Store](https://www.betterinternet.ltd) for support and supplying the pre-flashed module. - +Thanks to [Better Internet Store](https://www.betterinternet.ltd) for supplying the pre-flashed module and to the 8311 community for collective testing efforts. From 80eac26436699d85fb217ba1fbf7d373aa12d12e Mon Sep 17 00:00:00 2001 From: Christopher Law Date: Mon, 12 May 2025 23:39:11 +0100 Subject: [PATCH 7/7] Minor adjustments + label example --- ...de-as-the-adtran-sdx621i-with-the-was-110.md | 11 ++++++++++- .../adtran.webp | Bin 0 -> 33176 bytes 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110/adtran.webp diff --git a/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md b/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md index 29a8100b..3f4f5b35 100644 --- a/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md +++ b/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110.md @@ -9,6 +9,8 @@ categories: - 8311 Firmware - OPNsense - Better Internet Store + - YouFibre + - Netomnia description: Replace an ADTRAN ONT with a WAS-110 preloaded with 8311 firmware on XGS-PON slug: replace-adtran-ont-with-was-110 --- @@ -20,7 +22,7 @@ slug: replace-adtran-ont-with-was-110 This guide outlines how to replace an **ADTRAN SDX621i** ONT on an XGS-PON line using a [WAS-110] module pre-flashed with 8311 firmware. -This has been successfully tested by a user on **Netomnia / YouFibre** in the UK, who received a static IP via DHCP using a cloned MAC and VLAN 911 tagging. +This has been successfully tested by a user on **Netomnia / YouFibre** in the UK, who received a static IP via DHCP using a cloned MAC. --- @@ -50,6 +52,13 @@ Once the WAS-110 is inserted into an SFP+ port and connected to the fiber socket ## 8311 Configuration +### Masquerade setup + +To successfully masquerade on XGS-PON, the original ONT serial number and MAC is mandatory. It, along with other key +identifiers are available on the bottom label of the ADTRAN SDX621i, shown by the arrows in the following depiction: + +![ADTRAN SDX621i label](masquerade-as-the-adtran-sdx621i-with-the-was-110/adtran.webp) + ### Configuration tab | Attribute | Value | Mandatory | Notes | diff --git a/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110/adtran.webp b/docs/posts/masquerade-as-the-adtran-sdx621i-with-the-was-110/adtran.webp new file mode 100644 index 0000000000000000000000000000000000000000..1f2e32cf2de6c4ac39336348d2e2a0682d7d5575 GIT binary patch literal 33176 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 R0VS@KaVY}s8c?qUfB>;c9eDr% literal 0 HcmV?d00001