summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bortolin <simonebortolin@users.noreply.github.com>2022-08-05 06:59:56 +0200
committerSimone Bortolin <simonebortolin@users.noreply.github.com>2022-12-19 22:55:58 +0100
commit04e593565d0f69ec54923fb66a167eecc48f6e50 (patch)
treea770cf7b174d3ba9c235d412b0449a40481394af
parentadd images (diff)
downloadhack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.tar
hack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.tar.gz
hack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.tar.bz2
hack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.tar.lz
hack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.tar.xz
hack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.tar.zst
hack-gpon.github.io-04e593565d0f69ec54923fb66a167eecc48f6e50.zip
-rw-r--r--404.md (renamed from 404.html)22
-rw-r--r--LICENCE21
-rw-r--r--README.md6
-rw-r--r--_config.yml14
-rw-r--r--_includes/danger.html3
-rw-r--r--_includes/image.html1
-rw-r--r--_includes/info.html3
-rw-r--r--_includes/success.html3
-rw-r--r--_includes/warning.html3
-rw-r--r--_layouts/default.html437
-rw-r--r--_sass/color_schemes/light.scss2
-rw-r--r--_sass/custom/custom.scss252
-rw-r--r--ascii-hex.md12
-rw-r--r--assets/js/modal.js26
-rw-r--r--assets/static/ascii-hex.html72
-rw-r--r--assets/static/speed-gpon-eth.html209
-rw-r--r--index.md12
-rw-r--r--ont-CarlitoxxPro-CPGOS03-0490-v2.md50
-rw-r--r--ont-D-LINK-DPN-100-Rev-A.md50
-rw-r--r--ont-D-LINK-DPN-100-Rev-C1.md33
-rw-r--r--ont-DFP-34X-2C2.md52
-rw-r--r--ont-Halny-HL-GSFP.md44
-rw-r--r--ont-Hilink-HL23446.md44
-rw-r--r--ont-Huawei-HG8010H.md52
-rw-r--r--ont-Nokia-G-010S-A.md48
-rw-r--r--ont-Nokia-G-010S-Q.md42
-rw-r--r--ont-Nokia-g-010g-q.md19
-rw-r--r--ont-ODI-DFP-34X-C2C.md50
-rw-r--r--ont-Sercomm-FGS202.md52
-rw-r--r--ont-SourcePhotonics-SPS-34-24T-HP-TDFO.md49
-rw-r--r--ont-TWCGPON657.md52
-rw-r--r--ont-UFiber-UF-Instant.md52
-rw-r--r--ont-ZTE-F6005.md47
-rw-r--r--ont-ZTE-F601.md58
-rw-r--r--ont-Zyxel-PMG3000-D20B.md48
-rw-r--r--ont-huawei-cm5671a.md23
-rw-r--r--ont-huawei-ma5671a.md51
-rw-r--r--ont-nokia-g-s010s-p.md49
-rw-r--r--ont-technicolor-afm0002.md83
-rw-r--r--ont-vsol-V2801F.md52
-rw-r--r--ont.md19
-rw-r--r--privacy-policy.md69
-rw-r--r--quick-start.md9
-rw-r--r--speed-gpon-eth.md12
44 files changed, 1544 insertions, 763 deletions
diff --git a/404.html b/404.md
index b3efccd..1927e0b 100644
--- a/404.html
+++ b/404.md
@@ -1,11 +1,11 @@
----
-layout: default
-title: 404
-permalink: /404
-nav_exclude: true
-search_exclude: true
----
-
-<h1>Page not found</h1>
-
-<p>The page you requested could not be found. Try using the navigation {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to this <a href="{{ '/' | absolute_url }}">site's home page</a>.</p>
+---
+layout: default
+title: Page not found
+permalink: /404
+nav_exclude: true
+search_exclude: true
+description: Opps. The page you are looking for got lost.
+
+---
+
+<p>The page you requested could not be found. Try using the navigation {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to this <a href="{{ '/' | absolute_url }}">site's home page</a>.</p>
diff --git a/LICENCE b/LICENCE
new file mode 100644
index 0000000..585b4cf
--- /dev/null
+++ b/LICENCE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 hack-gpon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..71fd9c1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+# hack-gpon.github.io
+
+
+Based on just-the-docs theme:
+- [GitHub](https://github.com/just-the-docs/just-the-docs)
+- [Demo](https://just-the-docs.github.io/just-the-docs/) \ No newline at end of file
diff --git a/_config.yml b/_config.yml
index 34b1af9..207a48f 100644
--- a/_config.yml
+++ b/_config.yml
@@ -42,13 +42,9 @@ aux_links:
back_to_top: true
back_to_top_text: "Back to top"
-footer_content: "Copyright &copy; 2022"
+footer_content: "Copyright &copy; 2022. Distributed by an <a href=\"https://github.com/hack-gpon/hack-gpon.github.io/blob/main/LICENCE\">MIT License</a>. <a href=\"privacy-policy\">Privacy Policy</a>."
-last_edit_timestamp: true
-last_edit_time_format: "%D at %R"
-
-last-modified-at:
- date-format: '%D at %R'
+last_edit_timestamp_script: true
gh_edit_link: true # show or hide edit this page link
gh_edit_link_text: "Edit this page on GitHub"
@@ -56,7 +52,5 @@ gh_edit_repository: "https://github.com/hack-gpon/hack-gpon.github.io" # the git
gh_edit_branch: "main" # the branch that your docs is served from
# gh_edit_source: docs # the source that your files originate from
gh_edit_view_mode: "tree"
-
-
-
-
+gh_owner_name: hack-gpon
+gh_repository_name: hack-gpon.github.io \ No newline at end of file
diff --git a/_includes/danger.html b/_includes/danger.html
new file mode 100644
index 0000000..83e7efb
--- /dev/null
+++ b/_includes/danger.html
@@ -0,0 +1,3 @@
+<div markdown="span" class="alert alert-danger" role="alert"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" role="img" aria-label="Warning:">
+ <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
+ </svg><span> <b>Important:</b> {{include.content}}</span></div>
diff --git a/_includes/image.html b/_includes/image.html
new file mode 100644
index 0000000..6389d3a
--- /dev/null
+++ b/_includes/image.html
@@ -0,0 +1 @@
+<figure>{% if {{include.url}} %}<a class="no_icon" target="_blank" rel="noopener" href="{{include.url}}">{% endif %}<img class="docimage" src="../assets/img/{{include.file}}" alt="{{include.alt}}" {% if {{include.max-width}} %}style="max-width: {{include.max-width}}px"{% endif %} />{% if {{include.url}} %}</a>{% endif %}{% if {{include.caption}} %}<figcaption>{{include.caption}}</figcaption>{% endif %}</figure>
diff --git a/_includes/info.html b/_includes/info.html
new file mode 100644
index 0000000..831dd3e
--- /dev/null
+++ b/_includes/info.html
@@ -0,0 +1,3 @@
+<div markdown="span" class="alert alert-info" role="alert"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" role="img" aria-label="Warning:">
+ <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
+</svg><span><b>Note:</b> {{include.content}}</span></div>
diff --git a/_includes/success.html b/_includes/success.html
new file mode 100644
index 0000000..828fc5a
--- /dev/null
+++ b/_includes/success.html
@@ -0,0 +1,3 @@
+<div markdown="span" class="alert alert-success" role="alert"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" role="img" aria-label="Warning:">
+ <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
+ </svg><span> <b>Tip:</b> {{include.content}}</span></div>
diff --git a/_includes/warning.html b/_includes/warning.html
new file mode 100644
index 0000000..a517518
--- /dev/null
+++ b/_includes/warning.html
@@ -0,0 +1,3 @@
+<div markdown="span" class="alert alert-warning" role="alert"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" role="img" aria-label="Warning:">
+ <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
+ </svg><span> <b>Warning:</b> {{include.content}}</span></div>
diff --git a/_layouts/default.html b/_layouts/default.html
index 7aaec28..2daef0d 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -7,210 +7,265 @@ layout: table_wrappers
<html lang="{{ site.lang | default: 'en-US' }}">
{% include head.html %}
<body>
- <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
- <symbol id="svg-link" viewBox="0 0 24 24">
- <title>Link</title>
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
- <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
- </svg>
- </symbol>
- <symbol id="svg-search" viewBox="0 0 24 24">
- <title>Search</title>
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
- <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
- </svg>
- </symbol>
- <symbol id="svg-menu" viewBox="0 0 24 24">
- <title>Menu</title>
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
- <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
- </svg>
- </symbol>
- <symbol id="svg-arrow-right" viewBox="0 0 24 24">
- <title>Expand</title>
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
- <polyline points="9 18 15 12 9 6"></polyline>
- </svg>
- </symbol>
- <symbol id="svg-doc" viewBox="0 0 24 24">
- <title>Document</title>
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
- <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
- </svg>
- </symbol>
- </svg>
+ <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+ <symbol id="svg-link" viewBox="0 0 24 24">
+ <title>Link</title>
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
+ <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
+ </svg>
+ </symbol>
+ <symbol id="svg-search" viewBox="0 0 24 24">
+ <title>Search</title>
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
+ <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
+ </svg>
+ </symbol>
+ <symbol id="svg-menu" viewBox="0 0 24 24">
+ <title>Menu</title>
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
+ <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
+ </svg>
+ </symbol>
+ <symbol id="svg-arrow-right" viewBox="0 0 24 24">
+ <title>Expand</title>
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
+ <polyline points="9 18 15 12 9 6"></polyline>
+ </svg>
+ </symbol>
+ <symbol id="svg-doc" viewBox="0 0 24 24">
+ <title>Document</title>
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
+ <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
+ </svg>
+ </symbol>
+ </svg>
- <div class="side-bar">
- <div class="site-header">
- <a href="{{ '/' | absolute_url }}" class="site-title lh-tight">{% include title.html %}</a>
- <a href="#" id="menu-button" class="site-button">
- <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg>
- </a>
- </div>
- <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav">
- {% if site.just_the_docs.collections %}
- {% assign collections_size = site.just_the_docs.collections | size %}
- {% for collection_entry in site.just_the_docs.collections %}
- {% assign collection_key = collection_entry[0] %}
- {% assign collection_value = collection_entry[1] %}
- {% assign collection = site[collection_key] %}
- {% if collection_value.nav_exclude != true %}
- {% if collections_size > 1 %}
- <div class="nav-category">{{ collection_value.name }}</div>
- {% endif %}
- {% include nav.html pages=collection %}
- {% endif %}
- {% endfor %}
- {% else %}
- {% include nav.html pages=site.html_pages %}
- {% endif %}
- </nav>
- <footer class="site-footer">
- This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.
- </footer>
- </div>
- <div class="main" id="top">
- <div id="main-header" class="main-header">
- {% if site.search_enabled != false %}
- <div class="search">
- <div class="search-input-wrap">
- <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search {{ site.title }}" aria-label="Search {{ site.title }}" autocomplete="off">
- <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label>
- </div>
- <div id="search-results" class="search-results"></div>
+ <div class="side-bar">
+ <div class="site-header">
+ <a href="{{ '/' | absolute_url }}" class="site-title lh-tight">{% include title.html %}</a>
+ <a href="#" id="menu-button" class="site-button">
+ <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg>
+ </a>
</div>
- {% endif %}
- {% include header_custom.html %}
- {% if site.aux_links %}
- <nav aria-label="Auxiliary" class="aux-nav">
- <ul class="aux-nav-list">
- {% for link in site.aux_links %}
- <li class="aux-nav-list-item">
- <a href="{{ link.last }}" class="site-button"
- {% if site.aux_links_new_tab %}
- target="_blank" rel="noopener noreferrer"
- {% endif %}
- >
- {{ link.first }}
- </a>
- </li>
- {% endfor %}
- </ul>
+ <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav">
+ {% if site.just_the_docs.collections %}
+ {% assign collections_size = site.just_the_docs.collections | size %}
+ {% for collection_entry in site.just_the_docs.collections %}
+ {% assign collection_key = collection_entry[0] %}
+ {% assign collection_value = collection_entry[1] %}
+ {% assign collection = site[collection_key] %}
+ {% if collection_value.nav_exclude != true %}
+ {% if collections_size > 1 %}
+ <div class="nav-category">{{ collection_value.name }}</div>
+ {% endif %}
+ {% include nav.html pages=collection %}
+ {% endif %}
+ {% endfor %}
+ {% else %}
+ {% include nav.html pages=site.html_pages %}
+ {% endif %}
</nav>
- {% endif %}
- <nav class="aux-nav"><ul class="aux-nav-list">
- <li class="aux-nav-list-item"><span class="site-button "><a class="btn js-toggle-dark-mode">Dark mode</a></span></li>
- {% if
- site.gh_edit_link and
- site.gh_edit_link_text and
- site.gh_edit_repository and
- site.gh_edit_branch and
- site.gh_edit_view_mode
- %}
- <li class="aux-nav-list-item"><a class="site-button github-edit" href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}" id="edit-this-page" title="{{ site.gh_edit_link_text }}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg></a>
- </li>
- {% endif %}
- </ul></nav>
+ <footer class="site-footer">
+ This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.
+ </footer>
</div>
- <div id="main-content-wrap" class="main-content-wrap">
- {% unless page.url == "/" %}
- {% if page.parent %}
- {%- for node in pages_list -%}
- {%- if node.parent == nil -%}
- {%- if page.parent == node.title or page.grand_parent == node.title -%}
- {%- assign first_level_url = node.url | absolute_url -%}
- {%- endif -%}
- {%- if node.has_children -%}
- {%- assign children_list = pages_list | where: "parent", node.title -%}
- {%- for child in children_list -%}
- {%- if page.url == child.url or page.parent == child.title -%}
- {%- assign second_level_url = child.url | absolute_url -%}
- {%- endif -%}
- {%- endfor -%}
- {%- endif -%}
- {%- endif -%}
- {%- endfor -%}
- <nav aria-label="Breadcrumb" class="breadcrumb-nav">
- <ol class="breadcrumb-nav-list">
- {% if page.grand_parent %}
- <li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.grand_parent }}</a></li>
- <li class="breadcrumb-nav-list-item"><a href="{{ second_level_url }}">{{ page.parent }}</a></li>
- {% else %}
- <li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.parent }}</a></li>
- {% endif %}
- <li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
- </ol>
- </nav>
- {% endif %}
- {% endunless %}
- <div id="main-content" class="main-content" role="main">
- {% if site.heading_anchors != false %}
- {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %}
- {% else %}
- {{ content }}
- {% endif %}
-
- {% if page.has_children == true and page.has_toc != false %}
- <hr>
- <h2 class="text-delta">Table of contents</h2>
- <ul>
- {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
- {% for child in children_list %}
- <li>
- <a href="{{ child.url | absolute_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
- </li>
- {% endfor %}
- </ul>
- {% endif %}
-
- {% capture footer_custom %}
- {%- include footer_custom.html -%}
- {% endcapture %}
- {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
- <hr>
- <footer>
- {% if site.back_to_top %}
- <p><a href="#top" id="back-to-top">{{ site.back_to_top_text }}</a></p>
+ <div class="main" id="top">
+ <div id="main-header" class="main-header">
+ {% if site.search_enabled != false %}
+ <div class="search">
+ <div class="search-input-wrap">
+ <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search {{ site.title }}" aria-label="Search {{ site.title }}" autocomplete="off">
+ <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label>
+ </div>
+ <div id="search-results" class="search-results"></div>
+ </div>
+ {% endif %}
+ {% include header_custom.html %}
+ {% if site.aux_links %}
+ <nav aria-label="Auxiliary" class="aux-nav">
+ <ul class="aux-nav-list">
+ {% for link in site.aux_links %}
+ <li class="aux-nav-list-item">
+ <a href="{{ link.last }}" class="site-button"
+ {% if site.aux_links_new_tab %}
+ target="_blank" rel="noopener noreferrer"
+ {% endif %}
+ >
+ {{ link.first }}
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+ </nav>
{% endif %}
+ <nav class="aux-nav"><ul class="aux-nav-list">
+ <li class="aux-nav-list-item"><span class="site-button "><a class="btn js-toggle-dark-mode">Dark mode</a></span></li>
+ </ul></nav>
+ </div>
+ <div id="main-content-wrap" class="main-content-wrap">
+ {% unless page.url == "/" %}
+ {% if page.parent %}
+ {%- for node in pages_list -%}
+ {%- if node.parent == nil -%}
+ {%- if page.parent == node.title or page.grand_parent == node.title -%}
+ {%- assign first_level_url = node.url | absolute_url -%}
+ {%- endif -%}
+ {%- if node.has_children -%}
+ {%- assign children_list = pages_list | where: "parent", node.title -%}
+ {%- for child in children_list -%}
+ {%- if page.url == child.url or page.parent == child.title -%}
+ {%- assign second_level_url = child.url | absolute_url -%}
+ {%- endif -%}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- endif -%}
+ {%- endfor -%}
+ <nav aria-label="Breadcrumb" class="breadcrumb-nav">
+ <ol class="breadcrumb-nav-list">
+ {% if page.grand_parent %}
+ <li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.grand_parent }}</a></li>
+ <li class="breadcrumb-nav-list-item"><a href="{{ second_level_url }}">{{ page.parent }}</a></li>
+ {% else %}
+ <li class="breadcrumb-nav-list-item"><a href="{{ first_level_url }}">{{ page.parent }}</a></li>
+ {% endif %}
+ <li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
+ </ol>
+ </nav>
+ {% endif %}
+ {% endunless %}
+ <div id="main-content" class="main-content" role="main">
+ <header class="page-header" role="banner">
+ {% if
+ site.gh_edit_link and
+ site.gh_edit_link_text and
+ site.gh_edit_repository and
+ site.gh_edit_branch and
+ site.gh_edit_view_mode
+ %}
+ <a class="site-button github-edit" href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}" id="edit-this-page" title="{{ site.gh_edit_link_text }}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"></path></svg></a>
+ {% endif %}
+ <h1 class="fs-9">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>
+ {% if site.last_edit_timestamp_script == true %}
+ <ul class="metadata text-small">
+ <li id="last-modified">Last Modified</li>
+ <li><a id="contributors" data-toogle="modal" data-target="#contributors-modal">Contributor</a></li>
+ </ul>
+ <div class="modal" data-modal="contributors-modal" id="contributors-modal">
+ <div class="modal-content">
+ <div class="modal-header">
+ <span class="close">&times;</span>
+ <h2>Contributor to this article</h2>
+ </div>
+ <ul class="modal-body" id="contributors-modal-list">
+
+ </ul>
+ </div>
+ </div>
+ {% endif %}
+ {% if page.description %}
+ <h2 class="fs-6 fw-300">{{ page.description }}</h2>
+ {% endif %}
+ </header>
+ <hr>
+ {% if site.heading_anchors != false %}
+ {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><use xlink:href=\"#svg-link\"></use></svg>" anchorClass="anchor-heading" anchorAttrs="aria-labelledby=\"%html_id%\"" %}
+ {% else %}
+ {{ content }}
+ {% endif %}
- {% if site.last_edit_timestamp or site.gh_edit_link %}
- <div class="d-flex mt-2">
- {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}
- <p class="text-small text-grey-dk-000 mb-0 mr-2">
- Page last modified: <span class="d-inline-block">{{ page.last_modified_date | date: site.last_edit_time_format }}</span>.
- </p>
+ {% if page.has_children == true and page.has_toc != false %}
+ <hr>
+ <h2 class="text-delta">Table of contents</h2>
+ <ul>
+ {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
+ {% for child in children_list %}
+ <li>
+ <a href="{{ child.url | absolute_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
+ </li>
+ {% endfor %}
+ </ul>
{% endif %}
- {% if
- site.gh_edit_link and
- site.gh_edit_link_text and
- site.gh_edit_repository and
- site.gh_edit_branch and
- site.gh_edit_view_mode
- %}
- <p class="text-small text-grey-dk-000 mb-0">
- <a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
- </p>
+
+ {% capture footer_custom %}
+ {%- include footer_custom.html -%}
+ {% endcapture %}
+ {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
+ <hr>
+ <footer>
+ {% if site.back_to_top %}
+ <p><a href="#top" id="back-to-top">{{ site.back_to_top_text }}</a></p>
+ {% endif %}
+
+ {% if site.last_edit_timestamp or site.gh_edit_link %}
+ <div class="d-flex mt-2">
+ {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}
+ <p class="text-small text-grey-dk-000 mb-0 mr-2">
+ Page last modified: <span class="d-inline-block">{{ page.last_modified_date | date: site.last_edit_time_format }}</span>.
+ </p>
+ {% endif %}
+ {% if
+ site.gh_edit_link and
+ site.gh_edit_link_text and
+ site.gh_edit_repository and
+ site.gh_edit_branch and
+ site.gh_edit_view_mode
+ %}
+ <p class="text-small text-grey-dk-000 mb-0">
+ <a href="{{ site.gh_edit_repository }}/{{ site.gh_edit_view_mode }}/{{ site.gh_edit_branch }}{% if site.gh_edit_source %}/{{ site.gh_edit_source }}{% endif %}/{{ page.path }}" id="edit-this-page">{{ site.gh_edit_link_text }}</a>
+ </p>
+ {% endif %}
+ </div>
+ {% endif %}
+
+ {{ footer_custom }}
+ </footer>
{% endif %}
- </div>
+
+ </div>
+ </div>
+
+ {% if site.search_enabled != false %}
+ {% if site.search.button %}
+ <a href="#" id="search-button" class="search-button">
+ <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-search"></use></svg>
+ </a>
{% endif %}
- {{ footer_custom }}
- </footer>
+ <div class="search-overlay"></div>
{% endif %}
-
- </div>
</div>
+ <script src="{{ base.url | prepend: site.url }}/assets/js/theme-switch.js"></script>
+ <script src="{{ base.url | prepend: site.url }}/assets/js/modal.js"></script>
+
+ {%if site.last_edit_timestamp_script and site.gh_owner_name and site.gh_repository_name and page.path %}
+ <script>
+ function setModifiedDate() {
+ if (document.getElementById('last-modified')) {
+ fetch("https://api.github.com/repos/{{ site.gh_owner_name }}/{{ site.gh_repository_name }}/commits?path={{ page.path }}")
+ .then((response) => {
+ return response.json();
+ })
+ .then((commits) => {
+ var date = new Date(commits[0]['commit']['committer']['date']);
+ var modified = date.toLocaleDateString(undefined);
+
+ var authors = commits.flatMap(x => [{...x.commit.author, ...x.author},{...x.commit.committer, ...x.committer}]).map(({date, ...keepAttrs}) => keepAttrs).filter((value, index, self) =>
+ index === self.findIndex((t) => (
+ t.place === value.place && t.name === value.name
+ ))
+ );
+ document.getElementById('last-modified').textContent = "Last Modified: " + modified;
+ document.getElementById('contributors').textContent = authors.length + " "+ ( authors.length == 1? "Contributor" : "Contributors");
- {% if site.search_enabled != false %}
- {% if site.search.button %}
- <a href="#" id="search-button" class="search-button">
- <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-search"></use></svg>
- </a>
- {% endif %}
+ document.getElementById('contributors-modal-list').innerHTML = authors.map(x => "<li><a href='"+x.html_url+"'><img class='avatar' src='"+x.avatar_url+"'><span>"+x.name+"</span<</a></li>").join('');
+ });
+ }
+ }
- <div class="search-overlay"></div>
- {% endif %}
- </div>
- <script src="{{ base.url | prepend: site.url }}/assets/js/theme-switch.js"></script>
+ window.addEventListener('load', function () {
+ setModifiedDate()
+ });
+</script>
+{% endif %}
</body>
</html> \ No newline at end of file
diff --git a/_sass/color_schemes/light.scss b/_sass/color_schemes/light.scss
new file mode 100644
index 0000000..7526fcd
--- /dev/null
+++ b/_sass/color_schemes/light.scss
@@ -0,0 +1,2 @@
+$link-color: $blue-000;
+$btn-primary-color: $blue-200; \ No newline at end of file
diff --git a/_sass/custom/custom.scss b/_sass/custom/custom.scss
index fb31338..5ee5683 100644
--- a/_sass/custom/custom.scss
+++ b/_sass/custom/custom.scss
@@ -1,19 +1,249 @@
-.github-edit {
- color: $nav-child-link-color;
-
- &:hover {
- color: $link-color;
+$purple-400: #2A1264 !default;
+$blue-400: #122664 !default;
+$green-400: #025341 !default;
+$yellow-400: #AD8305 !default;
+$red-400: #A62323 !default;
+
+.page-header {
+
+ .github-edit {
+ color: $nav-child-link-color;
+ float: right;
+
+ &:hover {
+ color: $link-color;
+
+ svg {
+ fill: $link-color ;
+ }
+ }
svg {
- fill: $link-color ;
+ display: inline;
+ vertical-align: top;
+ width: 1.5 * $spacing-unit;
+ height: 1.5 * $spacing-unit;
+ fill: $nav-child-link-color;
+ }
+ }
+
+ h1 {
+ margin-right: 3.5 * $spacing-unit;
+ }
+}
+
+
+.avatar {
+ border-radius: 50%;
+ width: 1.5 * $spacing-unit;
+ height: 1.5 * $spacing-unit;
+}
+
+
+
+ul.metadata {
+ flex-wrap: wrap;
+ list-style: none;
+ display: flex;
+ margin: 0!important;
+ padding: 0.125rem 0 0!important;
+ >li{
+ flex-basis: auto;
+ align-items: center;
+ list-style: none;
+ display: flex;
+
+ &:not(:last-of-type):not(:only-of-type)::after {
+ content: "•";
+ padding-left: 5px;
+ padding-right: 5px;
+ color: $grey-dk-000;
+ }
+
+ &::before {
+ content: "";
+ }
+ }
+}
+
+[data-toogle] {
+
+ cursor: pointer;
+}
+
+.modal {
+ display: none;
+ position: fixed;
+ z-index: 100;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ overflow: auto;
+ background-color: rgba(0,0,0,0.4);
+
+ .modal-content {
+ border: $border $border-color;
+ position: relative;
+ background-color: $body-background-color;
+ width: min(500px, calc(100vw - 40px));
+ padding: 0;
+ margin: 40px auto;
+ animation-name: animatetop;
+ animation-duration: 0.4s;
+
+
+
+
+ .modal-header {
+ padding: 2px $spacing-unit;
+ margin-left: 1.5 * $spacing-unit;
+
+ h2, .close {
+ font-size: 1.5 * $spacing-unit !important;
+ margin-top: 1.5 * $spacing-unit;
+ margin-bottom: 1.5 * $spacing-unit;
+ line-height: 1;
+ }
+ h2 {
+ margin-right: 1.5 * $spacing-unit;
+ }
+
+ .close {
+ color: $nav-child-link-color;
+ float: right;
+ font-weight: bold;
+ cursor: pointer;
+
+ &:hover {
+ color: $link-color;
+ }
+ }
+ }
+
+ div.modal-body {padding: 2px $spacing-unit;}
+
+ .modal-footer {
+ padding: 2px $spacing-unit;
+ color: $body-text-color;
+ }
+
+ ul.modal-body {
+ padding: 0;
+ margin: 0;
+
+ >li{
+
+ padding: 10px;
+ margin: -1px;
+ border-width: 1px 1px 1px 3px;
+ border-style: solid;
+ border-color: $border-color;
+
+ &:hover {
+ border-left-color: $link-color;
+ }
+
+ &::before {
+ content: '';
+ }
+
+
+ >a {
+ color: $body-text-color;
+ text-decoration: none;
+ border: 0;
+ background: none;
+ display: flex;
+ align-items: center;
+
+ &:hover {
+ color: $link-color;
+ }
+
+ img {
+ margin-right: 10px;
+ }
+ }
+
+ }
}
}
+}
+
+/* Add Animation */
+@keyframes animatetop {
+ from {top: -300px; opacity: 0}
+ to {top: 0; opacity: 1}
+}
+
+.alert {
+ padding: $sp-3;
+ margin-bottom: $sp-3;
+ overflow: auto;
+ border: $border $border-color;
+ border-radius: $border-radius;
+
svg {
- display: inline;
- vertical-align: top;
- width: 1.5rem;
- height: 1.5rem;
- fill: $nav-child-link-color;
+ height: $spacing-unit;
+ margin-right: 0.5 * $spacing-unit;
+ width: $spacing-unit;
+ }
+
+ &.alert-warning {
+ background-color: $yellow-000;
+ color: $yellow-400;
+ border-color: $yellow-100;
+ svg {
+ fill: $yellow-400;
+ }
+ }
+
+ &.alert-danger {
+ background-color: $red-000;
+ color: $red-400;
+ border-color: $red-100;
+ svg {
+ fill: $red-400;
+ }
+ }
+
+ &.alert-info {
+ background-color: $blue-000;
+ color: $blue-400;
+ border-color: $blue-100;
+ svg {
+ fill: $blue-400;
+ }
+ }
+
+ &.alert-success {
+ background-color: $green-000;
+ color: $green-400;
+ border-color: $green-100;
+ svg {
+ fill: $green-400;
+ }
+ }
+}
+
+.btn-yellow {
+ @include btn-color($white, $yellow-100);
+}
+
+figure {
+ border: $border $border-color;
+ border-radius: $border-radius;
+ display: table;
+
+ figcaption {
+ background-color: $code-background-color;
+ padding: 8px;
+ }
+ img{
+ vertical-align: middle;
+ border-top-left-radius: $border-radius;
+ border-top-right-radius: $border-radius;
}
} \ No newline at end of file
diff --git a/ascii-hex.md b/ascii-hex.md
new file mode 100644
index 0000000..ea87571
--- /dev/null
+++ b/ascii-hex.md
@@ -0,0 +1,12 @@
+---
+title: ASCII and Hex converter
+has_children: false
+nav_order: 5
+description: Tool for converter ASCII and Hex
+
+---
+
+<iframe src="https://hack-gpon.github.io/assets/static/ascii-hex" title="ASCII and Hex converter" style="
+ width: 100%;
+ height: 50vh;
+"></iframe>
diff --git a/assets/js/modal.js b/assets/js/modal.js
new file mode 100644
index 0000000..2cae945
--- /dev/null
+++ b/assets/js/modal.js
@@ -0,0 +1,26 @@
+var modals = document.querySelectorAll("[data-modal]");
+var modalToogles = document.querySelectorAll("[data-toogle=modal]");
+
+
+[...modals].forEach(modal => {
+ var closeBtns = modal.getElementsByClassName("close");
+ [...closeBtns].forEach(closeBtn => {
+ closeBtn.addEventListener("click", (event) => {
+ modal.style.display = "none";
+ });
+ })
+});
+
+[...modalToogles].forEach(toogle => {
+ toogle.addEventListener("click", (event) => {
+ var modal = document.querySelector(toogle.getAttribute('data-target'));
+ modal.style.display = "block";
+ });
+});
+
+window.addEventListener("click", function(event) {
+ if ([...modals].includes(event.target)) {
+ event.target.style.display = "none";
+ }
+});
+
diff --git a/assets/static/ascii-hex.html b/assets/static/ascii-hex.html
new file mode 100644
index 0000000..7599353
--- /dev/null
+++ b/assets/static/ascii-hex.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>ASCII - Hex conversion</title>
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
+ </head>
+ <body>
+ <div class="container">
+ <h1>ASCII To Hex</h1>
+ <form id="ascii-to-hex">
+ <div class="form-floating mb-3">
+ <input type="text" class="form-control" placeholder="ASCII" name="ascii-to-hex" id="ascii-to-hex" min="1000" max="10000">
+ <label for="ascii-to-hex">ASCII</label>
+ </div>
+ <div class="form-floating mb-3">
+ <input type="text" class="form-control" placeholder="Glue" name="ascii-to-hex-glue" id="ascii-to-hex-glue" value=" ">
+ <label for="ascii-to-hex-glue">Glue</label>
+ </div>
+ <div class="mb-3">
+ <input type="submit" class="btn btn-primary" value="Calculate!">
+ </div>
+ <div class="form-floating mb-3">
+ <input readonly class="form-control" type="text" id="hex-result" placeholder="HEX Result">
+ <label for="hex-result">HEX Result</label>
+ </div>
+ </form>
+ <h1>Hex To ASCII</h1>
+ <form id="hex-to-ascii">
+ <div class="form-floating mb-3">
+ <input type="text" class="form-control" placeholder="HEX" name="hex-to-ascii" id="hex-to-ascii">
+ <label for="hex-to-ascii">HEX</label>
+ </div>
+ <div class="form-floating mb-3">
+ <input type="text" class="form-control" placeholder="Separator" name="hex-to-ascii-separator" id="hex-to-ascii-separator" value=" ">
+ <label for="hex-to-ascii-separator">Separator</label>
+ </div>
+ <div class="mb-3">
+ <input type="submit" class="btn btn-primary" value="Calculate!">
+ </div>
+ <div class="form-floating mb-3">
+ <input readonly class="form-control" type="text" id="ascii-result" placeholder="ASCII Result">
+ <label for="ascii-result">ASCII Result</label>
+ </div>
+ </form>
+ </div>
+ </body>
+
+ <script>
+ var asciiToHexForm = document.getElementById('ascii-to-hex');
+ asciiToHexForm.addEventListener('submit',(event) => {
+ event.preventDefault();
+ var fomrdata = new FormData(asciiToHexForm);
+ var str = fomrdata.get('ascii-to-hex');
+ var glue = fomrdata.get('ascii-to-hex-glue');
+ var hex = [...str].map((elem, n) => "0x"+Number(str.charCodeAt(n)).toString(16)).join(glue);
+ document.getElementById('hex-result').value = hex;
+ });
+
+ var hexToAsciiForm = document.getElementById('hex-to-ascii');
+ hexToAsciiForm.addEventListener('submit',(event) => {
+ event.preventDefault();
+ var fomrdata = new FormData(hexToAsciiForm);
+ var str = fomrdata.get('hex-to-ascii');
+ var separator = fomrdata.get('hex-to-ascii-separator');
+ var ascii = str.split(separator).map(el => String.fromCharCode(Number(el))).join('');
+ document.getElementById('ascii-result').value = ascii;
+ });
+
+</script>
+</html> \ No newline at end of file
diff --git a/assets/static/speed-gpon-eth.html b/assets/static/speed-gpon-eth.html
new file mode 100644
index 0000000..8c8f41a
--- /dev/null
+++ b/assets/static/speed-gpon-eth.html
@@ -0,0 +1,209 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Theoretical maximum speed calculator</title>
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
+ </head>
+ <body>
+ <div class="container">
+ <h1>Ethernet calculator</h1>
+ <form id="eth-speed-mtu">
+ <div class="form-floating mb-3">
+ <input type="number" class="form-control" placeholder="MTU L2" name="mtu" id="mtu" value="1500" min="1000" max="10000">
+ <label for="mtu">MTU L2 (no overhead for PPPoE/MAP, only Ethernet PPPoE)</label>
+ </div>
+ <div class="form-floating mb-3">
+ <div class="mb-3">
+ <div class="form-check form-check-inline">
+ <input class="form-check-input" type="radio" id="ip4" name="ip" value="4" checked>
+ <label class="form-check-label" for="ip4">IPv4</label>
+ </div>
+ <div class="form-check form-check-inline">
+ <input class="form-check-input" type="radio" id="ip6" name="ip" value="6">
+ <label class="form-check-label" for="ip6">IPv6</label>
+ </div>
+ </div>
+ </div>
+ <select class="form-select mb-3" placeholder="IPv4 L2 protocol" name="ipv4protocol" id="ipv4protocol">
+ <option disabled selected>Select a Protocol</option>
+ <option value="ipoe">IPoE</option>
+ <option value="pppoe">PPPoE</option>
+ <option value="map-t">MAP-T</option>
+ <option value="map-e">MAP-E/4in6</option>
+ </select>
+ <select class="form-select mb-3" placeholder="IPv6 L2 protocol" name="ipv6protocol" id="ipv6protocol" disabled>
+ <option disabled selected>Select a Protocol</option>
+ <option value="ipoe">IPoE</option>
+ <option value="pppoe">PPPoE</option>
+ </select>
+ <select class="form-select mb-3" placeholder="Speed" name="speed">
+ <option disabled selected>Select a link speed</option>
+ <option value="10">10 Mbps</option>
+ <option value="100">100 Mbps</option>
+ <option value="200">200 Mbps</option>
+ <option value="500">500 Mbps</option>
+ <option value="1000">1 Gbps</option>
+ <option value="2500">2.5 Gbps</option>
+ <option value="5000">5 Gbps</option>
+ <option value="10000">10 Gbps</option>
+ </select>
+ <div class="mb-3">
+ <input type="submit" class="btn btn-primary" value="Calculate!">
+ </div>
+ <div class="form-floating mb-3">
+ <input readonly class="form-control" type="number" id="maxSpeed" placeholder="Theoretical maximum speed">
+ <label for="maxSpeed">Theoretical maximum speed (Gbps)</label>
+ </div>
+ <div class="form-floating mb-3">
+ <input readonly class="form-control" type="number" id="overhead" placeholder="Ethernet overhead (%)">
+ <label for="overhead">Ethernet overhead (%)</label>
+ </div>
+
+ </form>
+ <h1>Gpon calculator</h1>
+ <form id="gpon-speed-mtu">
+ <div class="form-floating mb-3">
+ <input step="1" type="number" class="form-control" placeholder="ONT number" name="gpon-ont" id="gpon-ont" value="10" min="1" max="128" required>
+ <label for="gpon-ont">ONT number</label>
+ </div>
+ <div class="form-floating mb-3">
+ <input step="1" type="number" class="form-control" placeholder="GEM frame number" name="gpon-gem" id="gpon-gem" value="26" min="1" max="40" required>
+ <label for="gpon-gem">GEM frame number</label>
+ </div>
+ <div class="mb-3">
+ <div class="form-check form-check-inline">
+ <input class="form-check-input" type="radio" id="gpon-ip4" name="gpon-ip" value="4" checked>
+ <label class="form-check-label" for="gpon-ip4">IPv4</label>
+ </div>
+ <div class="form-check form-check-inline">
+ <input class="form-check-input" type="radio" id="gpon-ip6" name="gpon-ip" value="6">
+ <label class="form-check-label" for="gpon-ip6">IPv6</label>
+ </div>
+ </div>
+ <select class="form-select mb-3" placeholder="IPv4 L2 protocol" name="gpon-ipv4protocol" id="gpon-ipv4protocol" required>
+ <option disabled selected>Select a Protocol</option>
+ <option value="ipoe">IPoE</option>
+ <option value="pppoe">PPPoE</option>
+ <option value="map-t">MAP-T</option>
+ <option value="map-e">MAP-E/4in6</option>
+ </select>
+ <select class="form-select mb-3" placeholder="IPv6 L2 protocol" name="gpon-ipv6protocol" id="gpon-ipv6protocol" disabled required>
+ <option disabled selected>Select a Protocol</option>
+ <option value="ipoe">IPoE</option>
+ <option value="pppoe">PPPoE</option>
+ </select>
+ <div class="mb-3">
+ <input type="submit" class="btn btn-primary" value="Calculate!">
+ </div>
+ <div class="form-floating mb-3">
+ <input type="number" class="form-control" placeholder="GPON Average Ethernet Frame Size (Byte)" name="gpon-average-packet-size" id="gpon-average-packet-size" readonly>
+ <label for="gpon-average-packet-size">GPON Average Ethernet Frame Size (Byte) must be inside 1000-1500</label>
+ </div>
+ <div class="form-floating mb-3">
+ <input type="number" class="form-control" placeholder="Theoretical maximum speed (Gbps)" name="gpon-maxSpeed" id="gpon-maxSpeed" readonly>
+ <label for="gpon-maxSpeed">Theoretical maximum speed (Gbps)</label>
+ </div>
+ <div class="form-floating mb-3">
+ <input type="number" class="form-control" placeholder="GPON overhead (%)" name="gpon-overhead" id="gpon-overhead" readonly>
+ <label for="gpon-overhead">GPON overhead (%)</label>
+ </div>
+ </form>
+ </div>
+ </body>
+
+ <script>
+ var form = document.getElementById('eth-speed-mtu');
+ var radioIp = document.getElementsByName('ip');
+ [...radioIp].forEach(el => {el.addEventListener('change', (event) => {
+ var ip = document.querySelector('input[name="ip"]:checked').value;
+ document.getElementById('ipv4protocol').disabled = (ip === '6');
+ document.getElementById('ipv6protocol').disabled = (ip === '4');
+
+ });
+ });
+ form.addEventListener('submit',(event) => {
+
+ var formdata = new FormData(form);
+ event.preventDefault();
+ var overheadipv4 = {
+ "ipoe" : 20,
+ "pppoe" : 28,
+ "map-t" : 40,
+ "map-e" : 60,
+ };
+ var overheadipv6 = {
+ "ipoe" : 40,
+ "pppoe" : 48,
+ };
+ var overheadtcp = 20;
+ var overheadeth = 14;
+ var overheadfcs = 4;
+ var overheadgap = {
+ '10' : 5.875,
+ '100' : 12,
+ '200' : 8,
+ '500' : 8,
+ '1000' : 8,
+ '2500' : 5,
+ '5000' : 5,
+ '10000' : 5,
+ };
+ var preamble = 8;
+ var cip = formdata.get('ip');
+ var coverheadip = formdata.get('ip') === '4' ? overheadipv4[formdata.get('ipv4protocol')] : overheadipv6[formdata.get('ipv6protocol')];
+ var mtu = formdata.get('mtu');
+ var mss = mtu - coverheadip;
+ var overhead = overheadtcp + overheadeth + overheadfcs + overheadgap[formdata.get('speed')] + preamble + coverheadip;
+ document.getElementById('overhead').value = overhead/mss * 100;
+ var th = mss /(overhead + mss);
+
+ document.getElementById('maxSpeed').value = th * formdata.get('speed');
+
+ });
+ var formgpon = document.getElementById('gpon-speed-mtu');
+ var radioIp = document.getElementsByName('gpon-ip');
+ [...radioIp].forEach(el => {el.addEventListener('change', (event) => {
+ var ip = document.querySelector('input[name="gpon-ip"]:checked').value;
+ document.getElementById('gpon-ipv4protocol').disabled = (ip === '6');
+ document.getElementById('gpon-ipv6protocol').disabled = (ip === '4');
+
+ });
+ });
+ formgpon.addEventListener('submit',(event) => {
+
+ var formdata = new FormData(formgpon);
+ event.preventDefault();
+ var gtc = 38880;
+ var overheadgem = 5;
+ var overheadpcbd = 30 + 8*formdata.get('gpon-ont');
+ var overheadipv4 = {
+ "ipoe" : 20,
+ "pppoe" : 28,
+ "map-t" : 40,
+ "map-e" : 60,
+ };
+ var overheadipv6 = {
+ "ipoe" : 40,
+ "pppoe" : 48,
+ };
+ var overheadtcp = 20;
+ var overheadeth = 14;
+ var overheadfcs = 4;
+ var cip = formdata.get('gpon-ip');
+ var coverheadip = formdata.get('gpon-ip') === '4' ? overheadipv4[formdata.get('gpon-ipv4protocol')] : overheadipv6[formdata.get('gpon-ipv6protocol')];
+ var overheadframeeth = overheadtcp + overheadeth + overheadfcs + coverheadip;
+ var overheadgtc = overheadgem + formdata.get('gpon-gem') * (overheadpcbd+overheadframeeth);
+ var payload = gtc - overheadgtc;
+ document.getElementById('gpon-average-packet-size').value = payload/formdata.get('gpon-gem');
+
+
+ document.getElementById('gpon-overhead').value = overheadgtc/payload * 100;
+ var th = payload /gtc;
+
+ document.getElementById('gpon-maxSpeed').value = th * 2.48832;
+
+ });
+</script>
+</html> \ No newline at end of file
diff --git a/index.md b/index.md
index 05145b1..bab20f8 100644
--- a/index.md
+++ b/index.md
@@ -5,8 +5,14 @@ nav_order: 1
description: Worldwide wiki for to access, change and edit ONT
---
+Most of ONT run customized firmware implementing vendor and ISP-specific integrations and get locked down in functionality to match service requirements.
+Often ONTs perform differently depending on the OLT and various settings applied by the ISP in the ONT, often for convenience it is necessary to switch from an external ONT to an SFP or vice versa, despite which most OLTs perform too many checks on the ONT and this makes a simple replacement impossible.
-# Worldwide wiki for to access, change and edit ONT
+This wiki contains links, codes, tutorials for accessing, editing and changing ONT.
+Are you ready?
-resources to access and modify ONTs
-{: .fs-6 .fw-300 } \ No newline at end of file
+<span class="fs-8">
+[Yes](ont.md){: .btn .btn-green } [Quick start](quick-start.md){: .btn .btn-blue }
+</span>
+
+{% include warning.html content="Playing with ONTs can cause: serial/ploam ban, optics breakage and ONT/OLT breakage. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed." %}
diff --git a/ont-CarlitoxxPro-CPGOS03-0490-v2.md b/ont-CarlitoxxPro-CPGOS03-0490-v2.md
index d2f9af5..7b981d7 100644
--- a/ont-CarlitoxxPro-CPGOS03-0490-v2.md
+++ b/ont-CarlitoxxPro-CPGOS03-0490-v2.md
@@ -4,27 +4,25 @@ has_children: false
parent: ONT
---
-# CarlitoxxPro CPGOS03-0490 v2
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | CarlitoxxPro |
-| Model | CPGOS03-0490 v2 |
-| Alias | |
-| Chipset | Realtek RTL9601CI |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | Linux (Luna SDK) |
-| HSGMII | No |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | ✅ |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | ----------------- |
+| Vendor | CarlitoxxPro |
+| Model | CPGOS03-0490 v2 |
+| Alias | |
+| Chipset | Realtek RTL9601CI |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | Linux (Luna SDK) |
+| HSGMII | No |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | ✅ |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [ODI DFP-34X-C2C](ont-ODI-DFP-34X-C2C)
- [VSOL V2801F](ont-vsol-V2801F)
@@ -33,14 +31,14 @@ parent: ONT
- [DFP-34X-2C2](ont-DFP-34X-2C2)
- [CarlitoxxPro CPGOS03-0490 v2](ont-CarlitoxxPro-CPGOS03-0490-v2)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)
-## Bugs
+# Bugs
VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII
diff --git a/ont-D-LINK-DPN-100-Rev-A.md b/ont-D-LINK-DPN-100-Rev-A.md
index 5176629..5c35a4e 100644
--- a/ont-D-LINK-DPN-100-Rev-A.md
+++ b/ont-D-LINK-DPN-100-Rev-A.md
@@ -4,36 +4,34 @@ has_children: false
parent: ONT
---
-# D-LINK DPN-100 Rev A
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | D-LINK |
-| Model | DPN-100 Rev A |
-| Alias | |
-| Chipset | Lantiq PEB98035 |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | |
-| HSGMII | |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | |
-| SSH | |
-| Form Factor | miniONT SFP |
-
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | --------------- |
+| Vendor | D-LINK |
+| Model | DPN-100 Rev A |
+| Alias | |
+| Chipset | Lantiq PEB98035 |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | |
+| HSGMII | |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | |
+| SSH | |
+| Form Factor | miniONT SFP |
+
+
+## Interchangeable firmware with
- [Zyxel PMG3000-D20B](ont-Zyxel-PMG3000-D20B)
- [Halny HL-GSFP](ont-Halny-HL-GSFP)
- [D-LINK DPN-100-Rev-A](ont-D-LINK-DPN-100-Rev-A)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
diff --git a/ont-D-LINK-DPN-100-Rev-C1.md b/ont-D-LINK-DPN-100-Rev-C1.md
new file mode 100644
index 0000000..10a80ff
--- /dev/null
+++ b/ont-D-LINK-DPN-100-Rev-C1.md
@@ -0,0 +1,33 @@
+---
+title: D-LINK DPN-100 Rev C1
+has_children: false
+parent: ONT
+---
+
+# Hardware Specifications
+
+| | |
+| ----------- | ----------------- |
+| Vendor | D-LINK |
+| Model | DPN-100 Rev C1 |
+| Alias | |
+| Chipset | Realtek RTL9601C1 |
+| Flash | |
+| RAM | B |
+| System | |
+| HSGMII | |
+| Optics | SC/APC |
+| IP address | 192.168.100.1 |
+| Web Gui | |
+| SSH | |
+| Telnet | ✅ |
+| Form Factor | miniONT SFP |
+
+
+## Interchangeable firmware with
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
+
+- [https://github.com/Anime4000/RTL960x/issues/2](https://github.com/Anime4000/RTL960x/issues/2)
diff --git a/ont-DFP-34X-2C2.md b/ont-DFP-34X-2C2.md
index 4ba3c49..ffc3c7e 100644
--- a/ont-DFP-34X-2C2.md
+++ b/ont-DFP-34X-2C2.md
@@ -4,44 +4,42 @@ has_children: false
parent: ONT
---
-# DFP-34X-2C2
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | |
-| Model | DFP-34X-2C2 |
-| Alias | |
-| Chipset | Realtek RTL9601CI |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | Linux (Luna SDK) |
-| HSGMII | No |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | ✅ |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | ----------------- |
+| Vendor | |
+| Model | DFP-34X-2C2 |
+| Alias | |
+| Chipset | Realtek RTL9601CI |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | Linux (Luna SDK) |
+| HSGMII | No |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | ✅ |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [ODI DFP-34X-C2C](ont-ODI-DFP-34X-C2C)
- [VSOL V2801F](ont-vsol-V2801F)
- [TWCGPON657](ont-TWCGPON657)
-- [UFiber UF-Instant](ont-UFiber-UF-Instant) can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1) - needed for Laser controller
+- [UFiber UF-Instant](ont-UFiber-UF-Instant)
- [DFP-34X-2C2](ont-DFP-34X-2C2)
- [CarlitoxxPro CPGOS03-0490 v2](ont-CarlitoxxPro-CPGOS03-0490-v2)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)
-## Bugs
+# Bugs
VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII
diff --git a/ont-Halny-HL-GSFP.md b/ont-Halny-HL-GSFP.md
index b15dc18..82efd45 100644
--- a/ont-Halny-HL-GSFP.md
+++ b/ont-Halny-HL-GSFP.md
@@ -4,34 +4,32 @@ has_children: false
parent: ONT
---
-# Halny HL-GSFP
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | --------------- |
+| Vendor | Halny |
+| Model | MA5671A |
+| Alias | |
+| Chipset | Lantiq PEB98035 |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | eCOS |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | |
+| SSH | |
+| Form Factor | miniONT SFP |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Halny |
-| Model | MA5671A |
-| Alias | |
-| Chipset | Lantiq PEB98035 |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | eCOS |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | |
-| SSH | |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+## Interchangeable firmware with
- [Zyxel PMG3000-D20B](ont-Zyxel-PMG3000-D20B)
- [Halny HL-GSFP](ont-Halny-HL-GSFP)
- [D-LINK DPN-100-Rev-A](ont-D-LINK-DPN-100-Rev-A)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
diff --git a/ont-Hilink-HL23446.md b/ont-Hilink-HL23446.md
index f874f15..600256f 100644
--- a/ont-Hilink-HL23446.md
+++ b/ont-Hilink-HL23446.md
@@ -4,35 +4,33 @@ has_children: false
parent: ONT
---
-# Hilink HL23446
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | ---------------------------- |
+| Vendor | Hilink |
+| Model | HL23446 |
+| Alias | CarlitoxxPro CPGOS03-0490 v1 |
+| Chipset | Lantiq PEB98035 |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | OpenWRT |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | |
+| Form Factor | miniONT SFP |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Hilink |
-| Model | HL23446 |
-| Alias | CarlitoxxPro CPGOS03-0490 v1 |
-| Chipset | Lantiq PEB98035 |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | OpenWRT |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+## Interchangeable firmware with
- [Huawei MA5671A](ont-huawei-ma5671a)
- [Nokia G-010S-P](ont-nokia-g-s010s-p)
- [SourcePhotonics SPS-34-24T-HP-TDFO](ont-SourcePhotonics-SPS-34-24T-HP-TDFO)
- [Hilink HL23446](ont-Hilink-HL23446)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
diff --git a/ont-Huawei-HG8010H.md b/ont-Huawei-HG8010H.md
index 523eb72..3f41fe4 100644
--- a/ont-Huawei-HG8010H.md
+++ b/ont-Huawei-HG8010H.md
@@ -4,29 +4,27 @@ has_children: false
parent: ONT
---
-# Huawei HG8010H
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Huawei |
-| Model | HG8010H |
-| Alias | |
-| Chipset | Realtek |
-| Flash | |
-| RAM | |
-| System | |
-| HSGMII | No |
-| Optics | SC/APC and SC/UPC |
-| IP address | 192.168.100.1 |
-| Web Gui | ✅ user `telecomadmin`, password `admintelecom` |
-| SSH | |
-| Form Factor | ONT |
-
-![](../../assets/img/HG8010H.jpg)
-
-### Hardware revision
+# Hardware Specifications
+
+| | |
+| ----------- | ----------------------------------------------- |
+| Vendor | Huawei |
+| Model | HG8010H |
+| Alias | |
+| Chipset | Realtek |
+| Flash | |
+| RAM | |
+| System | |
+| HSGMII | No |
+| Optics | SC/APC and SC/UPC |
+| IP address | 192.168.100.1 |
+| Web Gui | ✅ user `telecomadmin`, password `admintelecom` |
+| SSH | |
+| Form Factor | ONT |
+
+{% include image.html file="HG8010H.jpg" alt="HG8010H" caption="HG8010H: port pon horizontal (left, middle), pon vertical (right)" %}
+
+## Hardware revision
- v1: port pon horizontal
- v2: port pon horizontal
- v3: port pon vertical
@@ -34,10 +32,10 @@ parent: ONT
- v5: port pon vertical
- v6: port pon vertical
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Exploring the Huawei HG8010H GPON ONT](https://www.linux.it/~md/text/gpon-sha2017.pdf)
diff --git a/ont-Nokia-G-010S-A.md b/ont-Nokia-G-010S-A.md
index 5bdbf55..d6148ef 100644
--- a/ont-Nokia-G-010S-A.md
+++ b/ont-Nokia-G-010S-A.md
@@ -4,44 +4,42 @@ has_children: false
parent: ONT
---
-# Nokia G-010S-A
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | ---------------------------------------- |
+| Vendor | Nokia |
+| Model | G-010S-A |
+| Alias | Alcatel G-010S-A |
+| Chipset | Lantiq PEB98035 |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | OpenWRT |
+| HSGMII | Yes |
+| Optics | SC/UPC |
+| IP address | 192.168.1.10 |
+| Web Gui | ✅ user `adminadmin`, password `ALC#FGU` |
+| SSH | ✅ user `ONTUSER`, password `SUGAR2A041` |
+| Form Factor | miniONT SFP |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Nokia |
-| Model | G-010S-A |
-| Alias | Alcatel G-010S-A |
-| Chipset | Lantiq PEB98035 |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | OpenWRT |
-| HSGMII | Yes |
-| Optics | SC/UPC |
-| IP address | 192.168.1.10 |
-| Web Gui | ✅ user `adminadmin`, password `ALC#FGU` |
-| SSH | ✅ user `ONTUSER`, password `SUGAR2A041` |
-| Form Factor | miniONT SFP |
+{% include image.html file="G-010S-A.jpg" alt="G-010S-A" caption="G-010S-A" %}
-![](../../assets/img/G-010S-A.jpg)
-
-### Interchangeable firmware with
+## Interchangeable firmware with
Is it possibile to turn a [Nokia G-010S-P](ont-nokia-g-s010s-p) into an [Nokia G-010S-A](ont-nokia-g-s010s-A)
-### List of software version
+## List of software version
- [https://github.com/hwti/G-010S-A/tree/main/firmwares](https://github.com/hwti/G-010S-A/tree/main/firmwares)
-### List of partition
-### List of firmware and files
+## List of partition
+## List of firmware and files
-## HW Mod
+# HW Mod
- [Nokia G-010S-A Pin 6 Iusse - Rsaxvc.net](https://rsaxvc.net/blog/2020/8/15/Nokia_G-010S-A_Pin_6_Issue.html)
-## Miscellaneous Links
+# Miscellaneous Links
- [https://github.com/hwti/G-010S-A](https://github.com/hwti/G-010S-A)
diff --git a/ont-Nokia-G-010S-Q.md b/ont-Nokia-G-010S-Q.md
index 21c3eda..d6988b8 100644
--- a/ont-Nokia-G-010S-Q.md
+++ b/ont-Nokia-G-010S-Q.md
@@ -4,29 +4,27 @@ has_children: false
parent: ONT
---
-# Nokia G-010S-Q
+# Hardware Specifications
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Nokia |
-| Model | RTL9601CI |
-| Alias | |
-| Chipset | |
-| Flash | |
-| RAM | |
-| System | |
-| HSGMII | |
-| Optics | |
-| IP address | |
-| Web Gui | |
-| SSH | |
+| | |
+| ----------- | ----------- |
+| Vendor | Nokia |
+| Model | RTL9601CI |
+| Alias | |
+| Chipset | |
+| Flash | |
+| RAM | |
+| System | |
+| HSGMII | |
+| Optics | |
+| IP address | |
+| Web Gui | |
+| SSH | |
| Form Factor | miniONT SFP |
-### Interchangeable firmware with
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## Interchangeable firmware with
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
diff --git a/ont-Nokia-g-010g-q.md b/ont-Nokia-g-010g-q.md
index dc8e42f..fc08bf3 100644
--- a/ont-Nokia-g-010g-q.md
+++ b/ont-Nokia-g-010g-q.md
@@ -4,9 +4,7 @@ has_children: false
parent: ONT
---
-# ZTE F601
-
-## Hardware Specifications
+# Hardware Specifications
| | |
|-------------|-------------------------------------------------|
@@ -24,15 +22,16 @@ parent: ONT
| SSH | |
| Form Factor | ONT |
-![](../../assets/img/g-010g-q.jpg)
-![](../../assets/img/g-010g-q.png)
+{% include image.html file="g-010g-q.jpg" alt="G-010G-Q " caption="G-010G-Q: ventilation grid version" %}
+{% include image.html file="g-010g-q.png" alt="G-010G-Q " caption="G-010G-Q: square version with relief circle" %}
+
-### Hardware revision
+## Hardware revision
- ventilation grid version
- square version with relief circle
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
diff --git a/ont-ODI-DFP-34X-C2C.md b/ont-ODI-DFP-34X-C2C.md
index f8d4eeb..0d7c86b 100644
--- a/ont-ODI-DFP-34X-C2C.md
+++ b/ont-ODI-DFP-34X-C2C.md
@@ -4,46 +4,44 @@ has_children: false
parent: ONT
---
-# ODI DFP-34X-C2C
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | ---------------- |
+| Vendor | ODI |
+| Model | DFP-34X-C2C |
+| Alias | |
+| Chipset | Realtek RTL9601D |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | Linux (Luna SDK) |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | ✅ |
+| Form Factor | miniONT SFP |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | ODI |
-| Model | DFP-34X-C2C |
-| Alias | |
-| Chipset | Realtek RTL9601D |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | Linux (Luna SDK) |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | ✅ |
-| Form Factor | miniONT SFP |
+{% include image.html file="odi.jpg" alt="ODI DFP-34X-C2C" caption="ODI DFP-34X-C2C" %}
-![](../../assets/img/odi.jpg)
-
-### Interchangeable firmware with
+## Interchangeable firmware with
- [ODI DFP-34X-C2C](ont-ODI-DFP-34X-C2C)
- [VSOL V2801F](ont-vsol-V2801F)
- [TWCGPON657](ont-TWCGPON657)
-- [UFiber UF-Instant](ont-UFiber-UF-Instant) can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1) - needed for Laser controller
+- [UFiber UF-Instant](ont-UFiber-UF-Instant)
- [DFP-34X-2C2](ont-DFP-34X-2C2)
- [CarlitoxxPro CPGOS03-0490 v2](ont-CarlitoxxPro-CPGOS03-0490-v2)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)
-## Bugs
+# Bugs
VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII
diff --git a/ont-Sercomm-FGS202.md b/ont-Sercomm-FGS202.md
index 8117ad5..7a1f2ea 100644
--- a/ont-Sercomm-FGS202.md
+++ b/ont-Sercomm-FGS202.md
@@ -4,41 +4,41 @@ has_children: false
parent: ONT
---
-# Sercomm FGS202
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Sercomm |
-| Model | FGS202 |
-| Alias | |
-| Chipset | Lantiq PEB98036 |
-| Flash | 8 MB |
-| RAM | 32 MB |
-| System | eCos |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | NO |
-| SSH | NO |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | --------------- |
+| Vendor | Sercomm |
+| Model | FGS202 |
+| Alias | |
+| Chipset | Lantiq PEB98036 |
+| Flash | 8 MB |
+| RAM | 32 MB |
+| System | eCos |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | NO |
+| SSH | NO |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [Huawei MA5671A](ont-huawei-ma5671a)
- [Nokia G-010S-P](ont-nokia-g-s010s-p)
- [SourcePhotonics SPS-34-24T-HP-TDFO](ont-SourcePhotonics-SPS-34-24T-HP-TDFO)
- [Hilink HL23446](ont-Hilink-HL23446)
-### List of software version
-### List of partition
-### List of firmware and files
+## List of software version
+## List of partition
+## List of firmware and files
-## HW Mod
+# HW Mod
- Pin 7 GND -> VCC [https://forum.fibra.click/d/27574-faq-25gbps-su-singolo-dispositivo-su-timvodafonefastwebjustspeed/18](https://forum.fibra.click/d/27574-faq-25gbps-su-singolo-dispositivo-su-timvodafonefastwebjustspeed/18)
- Only for Ubiquiti [https://forum.openwrt.org/t/support-for-gpon-sfp-fgs202/42641/47](https://forum.openwrt.org/t/support-for-gpon-sfp-fgs202/42641/47)
-## Miscellaneous Links
+# Miscellaneous Links
+
+- [Support for GPON SFP FGS202](https://forum.openwrt.org/t/support-for-gpon-sfp-fgs202/42641/60)
diff --git a/ont-SourcePhotonics-SPS-34-24T-HP-TDFO.md b/ont-SourcePhotonics-SPS-34-24T-HP-TDFO.md
index b564403..266db05 100644
--- a/ont-SourcePhotonics-SPS-34-24T-HP-TDFO.md
+++ b/ont-SourcePhotonics-SPS-34-24T-HP-TDFO.md
@@ -4,37 +4,34 @@ has_children: false
parent: ONT
---
-# SourcePhotonics SPS-34-24T-HP-TDFO
-
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | SourcePhotonics |
-| Model | SPS-34-24T-HP-TDFO |
-| Alias | Stick GPON FS.com |
-| Chipset | Lantiq PEB98035 |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | OpenWRT |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | 192.168.1.10 |
-| Web Gui | |
-| SSH | ✅, user `ONTUSER`, password `7sp!lwUBz1.` |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | ------------------------------------------ |
+| Vendor | SourcePhotonics |
+| Model | SPS-34-24T-HP-TDFO |
+| Alias | Stick GPON FS.com |
+| Chipset | Lantiq PEB98035 |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | OpenWRT |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | 192.168.1.10 |
+| Web Gui | |
+| SSH | ✅, user `ONTUSER`, password `7sp!lwUBz1.` |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [Huawei MA5671A](ont-huawei-ma5671a)
- [Nokia G-010S-P](ont-nokia-g-s010s-p)
- [SourcePhotonics SPS-34-24T-HP-TDFO](ont-SourcePhotonics-SPS-34-24T-HP-TDFO)
- [Hilink HL23446](ont-Hilink-HL23446)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [FS.com](https://www.fs.com/it/products/133619.html)
diff --git a/ont-TWCGPON657.md b/ont-TWCGPON657.md
index c119562..155c463 100644
--- a/ont-TWCGPON657.md
+++ b/ont-TWCGPON657.md
@@ -4,43 +4,41 @@ has_children: false
parent: ONT
---
-# TWCGPON657
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | |
-| Model | TWCGPON657 |
-| Alias | |
-| Chipset | Realtek RTL9601CI |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | Linux (Luna SDK) |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | ✅ |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | ----------------- |
+| Vendor | |
+| Model | TWCGPON657 |
+| Alias | |
+| Chipset | Realtek RTL9601CI |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | Linux (Luna SDK) |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | ✅ |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [ODI DFP-34X-C2C](ont-ODI-DFP-34X-C2C)
- [VSOL V2801F](ont-vsol-V2801F)
- [TWCGPON657](ont-TWCGPON657)
-- [UFiber UF-Instant](ont-UFiber-UF-Instant) can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1) - needed for Laser controller
+- [UFiber UF-Instant](ont-UFiber-UF-Instant)
- [DFP-34X-2C2](ont-DFP-34X-2C2)
- [CarlitoxxPro CPGOS03-0490 v2](ont-CarlitoxxPro-CPGOS03-0490-v2)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)
-## Bugs
+# Bugs
VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII
diff --git a/ont-UFiber-UF-Instant.md b/ont-UFiber-UF-Instant.md
index 2a8847e..1b0b94b 100644
--- a/ont-UFiber-UF-Instant.md
+++ b/ont-UFiber-UF-Instant.md
@@ -4,48 +4,44 @@ has_children: false
parent: ONT
---
-# UFiber UF-Instant
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | ----------------- |
+| Vendor | UFiber |
+| Model | UFiber UF-Instant |
+| Alias | |
+| Chipset | Realtek RTL9601CI |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | Linux (Luna SDK) |
+| HSGMII | No |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | ✅ |
+| Form Factor | miniONT SFP |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | UFiber |
-| Model | UFiber UF-Instant |
-| Alias | |
-| Chipset | Realtek RTL9601CI |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | Linux (Luna SDK) |
-| HSGMII | No |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | ✅ |
-| Form Factor | miniONT SFP |
+## Interchangeable firmware with
-### Interchangeable firmware with
+{% include warning.html content="UFiber UF-Instant can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1): needed for Laser controller." %}
-Warning
-{: .label .label-red }
-
-can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1) - needed for Laser controller
- [ODI DFP-34X-C2C](ont-ODI-DFP-34X-C2C)
- [VSOL V2801F](ont-vsol-V2801F)
- [TWCGPON657](ont-TWCGPON657)
-- [UFiber UF-Instant](ont-UFiber-UF-Instant) can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1) - needed for Laser controller
+- [UFiber UF-Instant](ont-UFiber-UF-Instant)
- [DFP-34X-2C2](ont-DFP-34X-2C2)
- [CarlitoxxPro CPGOS03-0490 v2](ont-CarlitoxxPro-CPGOS03-0490-v2)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)
-## Bugs
+# Bugs
VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII
diff --git a/ont-ZTE-F6005.md b/ont-ZTE-F6005.md
index d5ad93c..29f723f 100644
--- a/ont-ZTE-F6005.md
+++ b/ont-ZTE-F6005.md
@@ -4,34 +4,33 @@ has_children: false
parent: ONT
---
-# ZTE F6005
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | ---------------------- |
+| Vendor | ZTE |
+| Model | F6005 |
+| Alias | |
+| Chipset | Realtek |
+| Flash | |
+| RAM | |
+| System | Linux (ZTE custom SDK) |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | 192.168.1.1 |
+| Web Gui | ✅ |
+| SSH | |
+| Form Factor | ONT |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | ZTE |
-| Model | F6005 |
-| Alias | |
-| Chipset | Realtek |
-| Flash | |
-| RAM | |
-| System | Linux (ZTE custom SDK) |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | 192.168.1.1 |
-| Web Gui | ✅ |
-| SSH | |
-| Form Factor | ONT |
+{% include image.html file="f6005_of.jpg" alt="F601 v1" caption="F6005 OF" %}
+{% include image.html file="f6005_tim.jpg" alt="F601 v3" caption="F6005 TIM" %}
-![f6005_of](../../assets/img/f6005_of.jpg)
-![f6005_tim](../../assets/img/f6005_tim.jpg)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
-## Bugs
+# Bugs
buffers are not optimally created and therefore there are problems with uploads if the server is far away. no problem with multiple connections
diff --git a/ont-ZTE-F601.md b/ont-ZTE-F601.md
index c78eaf1..5776042 100644
--- a/ont-ZTE-F601.md
+++ b/ont-ZTE-F601.md
@@ -4,37 +4,35 @@ has_children: false
parent: ONT
---
-# ZTE F601
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | ZTE |
-| Model | F601 |
-| Alias | |
-| Chipset | Realtek |
-| Flash | |
-| RAM | |
-| System | |
-| HSGMII | No |
-| Optics | SC/APC |
-| IP address | 192.168.1.1 |
-| Web Gui | ✅ |
-| SSH | |
-| Form Factor | ONT |
-
-![f601_v1](../../assets/img/f601_v1.jpg)
-![f601_v3](../../assets/img/f601_v3.jpg)
-
-
-### Hardware revision
+# Hardware Specifications
+
+| | |
+| ----------- | ----------- |
+| Vendor | ZTE |
+| Model | F601 |
+| Alias | |
+| Chipset | Realtek |
+| Flash | |
+| RAM | |
+| System | |
+| HSGMII | No |
+| Optics | SC/APC |
+| IP address | 192.168.1.1 |
+| Web Gui | ✅ |
+| SSH | |
+| Form Factor | ONT |
+
+{% include image.html file="f601_v1.jpg" alt="F601 v1" caption="F601 v1" %}
+{% include image.html file="f601_v3.jpg" alt="F601 v3" caption="F601 v3" %}
+
+
+## Hardware revision
- v1: big
-- v2: small, simil huawei, self-destructs
+- v2: small, simil huawei, some lots have self-destruction functionality
- v3: small, simil huawei
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
diff --git a/ont-Zyxel-PMG3000-D20B.md b/ont-Zyxel-PMG3000-D20B.md
index 3662165..c15fafa 100644
--- a/ont-Zyxel-PMG3000-D20B.md
+++ b/ont-Zyxel-PMG3000-D20B.md
@@ -4,36 +4,34 @@ has_children: false
parent: ONT
---
-# Zyxel PMG3000-D20B
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Zyxel |
-| Model | PMG3000-D20B |
-| Alias | |
-| Chipset | Lantiq PEB98035 |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | OpenWRT |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | 10.10.1.1 |
-| Web Gui | ✅ username `admin`, password `1234` |
-| SSH | ✅ username `admin`, password `1234` |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | ------------------------------------ |
+| Vendor | Zyxel |
+| Model | PMG3000-D20B |
+| Alias | |
+| Chipset | Lantiq PEB98035 |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | OpenWRT |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | 10.10.1.1 |
+| Web Gui | ✅ username `admin`, password `1234` |
+| SSH | ✅ username `admin`, password `1234` |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [Zyxel PMG3000-D20B](ont-Zyxel-PMG3000-D20B)
- [Halny HL-GSFP](ont-Halny-HL-GSFP)
- [D-LINK DPN-100-Rev-A](ont-D-LINK-DPN-100-Rev-A)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [https://github.com/xvzf/zyxel-gpon-sfp](https://github.com/xvzf/zyxel-gpon-sfp)
diff --git a/ont-huawei-cm5671a.md b/ont-huawei-cm5671a.md
new file mode 100644
index 0000000..fad22e1
--- /dev/null
+++ b/ont-huawei-cm5671a.md
@@ -0,0 +1,23 @@
+---
+title: Huawei CM5671A
+has_children: false
+parent: ONT
+---
+
+# Hardware Specifications
+
+| | |
+| ----------- | ----------- |
+| Vendor | Huawei |
+| Model | CM5671A |
+| Alias | |
+| Chipset | Realtek |
+| Flash | |
+| RAM | |
+| System | |
+| HSGMII | |
+| Optics | |
+| IP address | |
+| Web Gui | |
+| SSH | |
+| Form Factor | miniONT SFP |
diff --git a/ont-huawei-ma5671a.md b/ont-huawei-ma5671a.md
index c06853b..f2ff3c2 100644
--- a/ont-huawei-ma5671a.md
+++ b/ont-huawei-ma5671a.md
@@ -4,41 +4,39 @@ has_children: false
parent: ONT
---
-# Huawei MA5671A
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Huawei |
-| Model | MA5671A |
-| Alias | |
-| Chipset | Lantiq PEB98035 |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | OpenWRT |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | 192.168.1.10 |
-| Web Gui | After root |
-| SSH | |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | --------------- |
+| Vendor | Huawei |
+| Model | MA5671A |
+| Alias | |
+| Chipset | Lantiq PEB98035 |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | OpenWRT |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | 192.168.1.10 |
+| Web Gui | After root |
+| SSH | |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [Huawei MA5671A](ont-huawei-ma5671a)
- [Nokia G-010S-P](ont-nokia-g-s010s-p)
- [SourcePhotonics SPS-34-24T-HP-TDFO](ont-SourcePhotonics-SPS-34-24T-HP-TDFO)
- [Hilink HL23446](ont-Hilink-HL23446)
-### List of software version
+## List of software version
-### List of partition
+## List of partition
- mtd2
- mtd5
-### List of firmware and files
+## List of firmware and files
- [Carlito MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mtd2.bin){: .btn } md5hash: d3cb6f7efec201b37931139feb4bb23b
- [Huawei Rooted MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd2.img){: .btn } md5hash: 3138d2dd06a32bb92bc63610fec6fcd6
@@ -46,9 +44,10 @@ parent: ONT
- [Huawei Rooted MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd5.img){: .btn } md5hash: 0e4cfdc1b96be6581869b26b48789556
- [1224abort.bin](https://ma5671a.s3.nl-ams.scw.cloud/1224ABORT.bin){: .btn } md5hash: 10e94a4b4acdc82dec20c7904b69e5c0
-## Miscellaneous Links
+# Miscellaneous Links
- [Support MA5671A SFP GPON - OpenWRT forum](https://forum.openwrt.org/t/support-ma5671a-sfp-gpon/48042)
- [u boot lantiq falcon - GitHub](https://github.com/minhng99/u-boot_lantiq_falcon)
- [Custom Firmware - right.com.cn](https://www.right.com.cn/forum/thread-8220173-1-1.html)
-- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate - fibra.click Forum](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate) \ No newline at end of file
+- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate - fibra.click Forum](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)
+- [GPON SFP Tools](https://github.com/MokkaSchnalle/GPON-SFP-Tools)
diff --git a/ont-nokia-g-s010s-p.md b/ont-nokia-g-s010s-p.md
index 16a4120..31ab729 100644
--- a/ont-nokia-g-s010s-p.md
+++ b/ont-nokia-g-s010s-p.md
@@ -4,29 +4,27 @@ has_children: false
parent: ONT
---
-# Nokia G-010S-P
+# Hardware Specifications
-## Hardware Specifications
+| | |
+| ----------- | ---------------- |
+| Vendor | Nokia |
+| Model | G-010S-P |
+| Alias | Alcatel G-010S-P |
+| Chipset | Lantiq PEB98035 |
+| Flash | 16 MB |
+| RAM | 64 MB |
+| System | OpenWRT |
+| HSGMII | Yes |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | |
+| Form Factor | miniONT SFP |
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | Nokia |
-| Model | G-010S-P |
-| Alias | Alcatel G-010S-P |
-| Chipset | Lantiq PEB98035 |
-| Flash | 16 MB |
-| RAM | 64 MB |
-| System | OpenWRT |
-| HSGMII | Yes |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | |
-| Form Factor | miniONT SFP |
+{% include image.html file="g-s010s-p.jpg" alt="G-010S-P" caption="G-010S-P" %}
-![](../../assets/img/g-s010s-p.jpg)
-
-### Interchangeable firmware with
+## Interchangeable firmware with
- [Huawei MA5671A](ont-huawei-ma5671a)
@@ -37,7 +35,10 @@ parent: ONT
Is it possibile to turn a [Nokia G-010S-P](ont-nokia-g-s010s-p) into an [Nokia G-010S-A](ont-nokia-g-s010s-A)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
+
+- [alcatel_lucent-lantiq_falcon](https://github.com/minhng99/alcatel_lucent-lantiq_falcon)
+- [uboot lantiq falcon](https://github.com/minhng99/u-boot_lantiq_falcon)
diff --git a/ont-technicolor-afm0002.md b/ont-technicolor-afm0002.md
index a8adb16..f5e52af 100644
--- a/ont-technicolor-afm0002.md
+++ b/ont-technicolor-afm0002.md
@@ -4,12 +4,10 @@ has_children: false
parent: ONT
---
-# Technicolor AFM0002TIM/FWB/WND
-
-## Hardware Specifications
+# Hardware Specifications
| | |
-|-------------|-------------------------------------------------|
+| ----------- | ----------------------------------------------- |
| Vendor | Technicolor |
| Model | AFM0002TIM/FWB/WND |
| Alias | |
@@ -24,32 +22,33 @@ parent: ONT
| SSH | ✅ user `admin`, password `system` |
| Form Factor | miniONT SFP |
-![](../../assets/img/afm0002tim.jpg)
+{% include image.html file="afm0002tim.jpg" alt="AFM0002TIM" caption="AFM0002TIM" %}
+
-## Hardware revision
+# Hardware revision
- AFM0002TIM (IP address: 192.168.2.1)
- AFM0002FWB (IP address: 169.0.0.1)
- AFM0002WND
-Warning
-{: .label .label-red }
+{% include warning.html content="On this page we discuss AFM0002TIM" %}
+{% include info.html content="The AFM0002FWB can be transformed into AFM0002TIM. The AFM0002FWB has an older sw version." %}
+
+
+# Serial
-- On this page we discuss AFM0002TIM.
-- The AFM0002FWB can be transformed into AFM0002TIM.
-- The AFM0002FWB has an older sw version.
-## List of software versions
+# List of software versions
- V1_7_8_180122
- V1_7_8_180725
- V1_7_8_181123
- V1_7_8_210928
- V1_7_8_210412
-## List of partitions
+# List of partitions
| dev | size | erasesize | name |
-|-------------|-------------------------------------------------|-----------|-----------------|
+| ----- | -------- | --------- | --------------- |
| mtd0 | 00040000 | 00001000 | "boot" |
| mtd1 | 00002000 | 00001000 | "env" |
| mtd2 | 00002000 | 00001000 | "env2" |
@@ -69,13 +68,13 @@ This stick supports dual boot.
`k0` and `r0` contains respectively the kernel and firmware of the first image, `k1` and `r1` of the second one
-## List of firmware and files
-### Useful files
+# List of firmware and files
+## Useful files
- `/var/config/lastgood.xml` - Contains the user portion of the configuration
- `/var/config/lastgood-hs.xml` - Contains the "hardware" configuration (i.e. that _should_ not be changed)
- `/tmp/omcilog` - OMCI messages logs (must be enabeled, see below)
-### Useful binaries
+## Useful binaries
- `/etc/scripts/flash` - Used to manipulate the config files in a samewhat safe manner
- `xmlconfig` - Used to low-level manipulate the XML config files. Called by `flash`
- `nv` - Used to manipulate the nvram storage, including persistent config entries via `nv setenv`/`nv getenv`
@@ -83,14 +82,14 @@ This stick supports dual boot.
- `omci_app` - The OMCI daemon
- `diag` - Used to run low-level diagnostics commands on the stick
-## Useful commands
+# Useful commands
-### Enable the Web UI
+## Enable the Web UI
```sh
# /bin/iptables -D INPUT -p tcp --dport 80 -j DROP
```
-### Check the currently active image
+## Check the currently active image
```sh
# nv getenv sw_active
sw_activ=1
@@ -100,35 +99,40 @@ sw_version0=V1_7_8_210412
sw_version1=V1_7_8_210412
```
-### Boot to a different image
+## Boot to a different image
```sh
# nv setenv sw_commit 0|1
# reboot
```
-### Get/Set the ONT S/N
+## Get/Set the ONT S/N
```sh
# /etc/scripts/bin flash get GPON_SN
GPON_SN=TMBB00000000
# /etc/scripts/bin flash set GPON_SN TMBB0A1B2C3D
```
-### Get/Set the ONT PLOAM password
-Note: the password is in ASCII format
+## Get/Set the ONT PLOAM password
+
+{% include info.html content="The PLOAM password is in ASCII format" %}
+
```sh
# /etc/scripts/bin flash get GPON_PLOAM_PASSWD
GPON_PLOAM_PASSWD=AAAAAAAAAA
# /etc/scripts/bin flash set GPON_PLOAM_PASSWD AAAAAAAAAA
```
-### Query a particular OMCI ME
+## Query a particular OMCI ME
```sh
# omcicli mib get MIB_IDX
```
-## Low level modding
-Note: this section is based on version `V1_7_8_210412` of the stick
-### Trasnfer files from/to the stick
+# Low level modding
+
+{% include warning.html content="This section is based on version `V1_7_8_210412` of the stick" %}
+
+
+## Trasnfer files from/to the stick
Works with binary files too, just run md5sum on source and destination to make sure you are not corrupting anything...
From the stick to the PC:
```sh
@@ -138,14 +142,19 @@ From the PC to the stick
```sh
# cat lastgood.xml | ssh admin@192.168.2.1 "cat > /var/config/lastgood.xml"
```
-**Note:** on windows replace type with cat and run the commands from cmd (not powershell)
-### Extract and repack the rootfs
+
+{% include warning.html content="on windows replace type with cat and run the commands from cmd (not powershell)" %}
+
+## Extract and repack the rootfs
```sh
# unsquashfs mtd5.bin
# mksquashfs squashfs-root rootfs -b 131072 -comp lzma -no-recovery
```
-### Flash a new rootfs
-**Note: you can only flash the inactive image**. So mtd4/5 if you are on image1, mtd6/7 if you are on image0.
+## Flash a new rootfs
+
+{% include info.html content="you can only flash the inactive image" %}
+
+So mtd4/5 if you are on image1, mtd6/7 if you are on image0.
The follwing examples flashes a new rootfs to image1 and boots to it
```sh
@@ -154,7 +163,7 @@ The follwing examples flashes a new rootfs to image1 and boots to it
# nv setenv sw_commit=1
# reboot
```
-### Add support to configurable SW and HW versions, VENDOR ID and much more
+## Add support to configurable SW and HW versions, VENDOR ID and much more
We can patch `/etc/scripts/flash` in order to add support for some variables implemented in `omci_app` but removed from `xmlconfig`. The patch is below (change the values to suit your needs)
```patch
--- squashfs-root/etc/scripts/flash 2021-09-28 10:38:52.000000000 +0200
@@ -188,7 +197,7 @@ We can patch `/etc/scripts/flash` in order to add support for some variables imp
if [ "$?" = "0" ]; then
exit 0
```
-### Increase the length of the software version from 13 to 14 characters
+## Increase the length of the software version from 13 to 14 characters
`omci_app` has an hard-coded limit of 13 characters for the software version, which is too low. We can binary patch it to increase it to 14 (or more, if you dare/need)
```
JVhEWjAwNCUAAAAIAAgACAAAAAAAAAAAAAAAAAAAAABvbWNpX2FwcG9tY2lfYXBwH4sIAAAAAAAA
@@ -212,7 +221,7 @@ For reference, the patch changes the follwing section of the omci_app:
The original file md5sum is: `4aea2f72bacc11256b7e2c1583d2ad4f`
The patched file md5sum is: `da20327c4c002e4c27f82f6ee63dbc1a`
-### Enable PLOAM logging
+## Enable PLOAM logging
```sh
/etc/scripts/bin flash set OMCI_DBGLVL 1
/etc/scripts/bin flash set OMCI_DBGLOGFILE 1
@@ -225,4 +234,6 @@ reboot
If you want to log everything since the stick boots, you can create a custom rootfs. Place the last command inside `etc/runomci.sh` as the last line of the file
-## Miscellaneous Links \ No newline at end of file
+
+
+# Miscellaneous Links \ No newline at end of file
diff --git a/ont-vsol-V2801F.md b/ont-vsol-V2801F.md
index 26ed1ea..a32ebd5 100644
--- a/ont-vsol-V2801F.md
+++ b/ont-vsol-V2801F.md
@@ -4,44 +4,42 @@ has_children: false
parent: ONT
---
-# VSOL V2801F
-
-## Hardware Specifications
-
-| | |
-|-------------|-------------------------------------------------|
-| Vendor | VSOL |
-| Model | V2801F |
-| Alias | |
-| Chipset | Realtek RTL9601CI |
-| Flash | 8 MB |
-| RAM | 64 MB |
-| System | Linux (Luna SDK) |
-| HSGMII | No |
-| Optics | SC/APC |
-| IP address | |
-| Web Gui | ✅ |
-| SSH | ✅ |
-| Form Factor | miniONT SFP |
-
-### Interchangeable firmware with
+# Hardware Specifications
+
+| | |
+| ----------- | ----------------- |
+| Vendor | VSOL |
+| Model | V2801F |
+| Alias | |
+| Chipset | Realtek RTL9601CI |
+| Flash | 8 MB |
+| RAM | 64 MB |
+| System | Linux (Luna SDK) |
+| HSGMII | No |
+| Optics | SC/APC |
+| IP address | |
+| Web Gui | ✅ |
+| SSH | ✅ |
+| Form Factor | miniONT SFP |
+
+## Interchangeable firmware with
- [ODI DFP-34X-C2C](ont-ODI-DFP-34X-C2C)
- [VSOL V2801F](ont-vsol-V2801F)
- [TWCGPON657](ont-TWCGPON657)
-- [UFiber UF-Instant](ont-UFiber-UF-Instant) can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1) - needed for Laser controller
+- [UFiber UF-Instant](ont-UFiber-UF-Instant)
- [DFP-34X-2C2](ont-DFP-34X-2C2)
- [CarlitoxxPro CPGOS03-0490 v2](ont-CarlitoxxPro-CPGOS03-0490-v2)
-### List of software version
-### List of partition
-### List of firmware and files
-## Miscellaneous Links
+## List of software version
+## List of partition
+## List of firmware and files
+# Miscellaneous Links
- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)
-## Bugs
+# Bugs
VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII
diff --git a/ont.md b/ont.md
index 84ffd4b..5248a2a 100644
--- a/ont.md
+++ b/ont.md
@@ -2,9 +2,22 @@
title: ONT
has_children: true
nav_order: 2
----
+description: Resources to access and modify ONTs
-# ONT
+---
resources to access and modify ONTs
-{: .fs-6 .fw-300 } \ No newline at end of file
+{: .fs-6 .fw-300 }
+
+{% include warning.html content="Playing with ONTs can cause: serial/ploam ban, optics breakage and ONT/OLT breakage. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed." %}
+
+
+{% include info.html content="The material and information contained on this website is for general information purposes only. You should not rely upon the material or information on the website as a basis for making any business, legal or any other decisions. Whilst we endeavour to keep the information up to date and correct, hack-gpon.github.io makes no representations or warranties of any kind, express or implied about the completeness, accuracy, reliability, suitability or availability with respect to the website or the information, products, services or related graphics contained on the website for any purpose. Any reliance you place on such material is therefore strictly at your own risk. We do not take responsibility for broken, bricked, unusable or become doorstops. To the extent not prohibited by law, in no circumstances shall hack-gpon.github.io be liable to you or any other third parties for any loss or damage (including, without limitation, damage for loss of business or loss of profits) arising directly or indirectly from your use of or inability to use, this site or any of the material contained in it." %}
+
+{% include danger.html content="Certain links in this website will lead to websites which are not under the control of hack-gpon.github.io. When you activate these you will leave the hack-gpon.github.io website. hack-gpon.github.io has no control over and accepts no liability in respect of materials, products or services available on any website which is not under the control of hack-gpon.github.io." %}
+
+{% include warning.html content="This site is maintained and updated by a community of ONT and SFP stick enthusiasts, and therefore in no way replaces or replaces official vendor and provider guides. Use of this content is at your own risk." %}
+
+{% include success.html content="You can also collaborate on the content of this site, on each page you will find a button to edit on GitHub." %}
+
+
diff --git a/privacy-policy.md b/privacy-policy.md
new file mode 100644
index 0000000..cad335f
--- /dev/null
+++ b/privacy-policy.md
@@ -0,0 +1,69 @@
+---
+layout: default
+title: Privacy Policy
+permalink: /privacy-policy
+nav_exclude: true
+search_exclude: true
+---
+
+# Privacy Policy for hack-gpon.github.io
+
+At hack-gpon.github.io, accessible from hack-gpon.github.io, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by hack-gpon.github.io and how we use it.
+
+If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us.
+
+This Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to the information that they shared and/or collect in hack-gpon.github.io. This policy is not applicable to any information collected offline or via channels other than this website.
+
+# Consent
+
+By using our website, you hereby consent to our Privacy Policy and agree to its terms.
+
+# Information we collect
+
+No personal information is stored in hack-gpon.github.io, hack-gpon.github.io exclusively uses the information, personal or otherwise, in the GitHub repository [github.com/hack-gpon/hack-gpon.github.io](https://github.com/hack-gpon/hack-gpon.github.io)
+
+If you make changes, PRs, commits to the git repository your personal information may be displayed on hack-gpon.github.io.
+
+# How we use your information
+
+We use the information we collect in various ways, including to:
+
+- Provide, operate, and maintain our website
+- Improve, personalize, and expand our website
+- Understand and analyze how you use our website
+- Develop new products, services, features, and functionality
+- Communicate with you, either directly or through one of our partners, including for customer service, to provide you with updates and other information relating to the website, and for marketing and promotional purposes
+- Send you emails
+- Find and prevent fraud
+
+# Log Files
+
+hack-gpon.github.io follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services’ analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users’ movement on the website, and gathering demographic information.
+
+
+# Advertising Partners Privacy Policies
+
+There no exists Advertising Partners
+
+# Third Party Privacy Policies
+
+hack-gpon.github.io’s Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more detailed information. It may include their practices and instructions about how to opt-out of certain options.
+
+You can choose to disable cookies through your individual browser options. To know more detailed information about cookie management with specific web browsers, it can be found at the browsers’ respective websites.
+
+- [GitHub Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement)
+
+
+# CCPA Privacy Rights (Do Not Sell My Personal Information)
+Under the CCPA, among other rights, California consumers have the right to: Request that a business that collects a consumer’s personal data disclose the categories and specific pieces of personal data that a business has collected about consumers. Request that a business delete any personal data about the consumer that a business has collected. Request that a business that sells a consumer’s personal data, not sell the consumer’s personal data. If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us.
+
+# GDPR Data Protection Rights
+We would like to make sure you are fully aware of all of your data protection rights. Every user is entitled to the following: The right to access – You have the right to request copies of your personal data. We may charge you a small fee for this service. The right to rectification – You have the right to request that we correct any information you believe is inaccurate. You also have the right to request that we complete the information you believe is incomplete. The right to erasure – You have the right to request that we erase your personal data, under certain conditions. The right to restrict processing – You have the right to request that we restrict the processing of your personal data, under certain conditions. The right to object to processing – You have the right to object to our processing of your personal data, under certain conditions. The right to data portability – You have the right to request that we transfer the data that we have collected to another organization, or directly to you, under certain conditions. If you make a request, we have one month to respond to you. If you would like to exercise any of these rights, please contact us.
+
+# Children’s Information
+Another part of our priority is adding protection for children while using the internet. We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity.
+
+hack-gpon.github.io does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.
+
+
+
diff --git a/quick-start.md b/quick-start.md
new file mode 100644
index 0000000..267145c
--- /dev/null
+++ b/quick-start.md
@@ -0,0 +1,9 @@
+---
+title: Quick Start
+has_children: true
+nav_order: 3
+description:
+
+---
+
+{% include warning.html content="Playing with ONTs can cause: serial/ploam ban, optics breakage and ONT/OLT breakage. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed." %}
diff --git a/speed-gpon-eth.md b/speed-gpon-eth.md
new file mode 100644
index 0000000..5e513ba
--- /dev/null
+++ b/speed-gpon-eth.md
@@ -0,0 +1,12 @@
+---
+title: Theoretical maximum speed calculator
+has_children: false
+nav_order: 4
+description: Tool for calculating maximum speeds
+
+---
+
+<iframe src="https://hack-gpon.github.io/assets/static/speed-gpon-eth.html" title="Theoretical maximum speed calculator" style="
+ width: 100%;
+ height: 50vh;
+"></iframe>